Issues calling cbStopOneMultiObj
AnsweredI'm trying to run each step in a multi-objective optimization problem for the longer of 100s or 5 seconds after solving the root node. It seemed like the best way to implement that was with a callback, and calling cbStopOneMultiObj when both conditions have been met. However, I'm experiencing a number of problems.
Should the function only be called one time, or should it be called in every callback invocation until it takes effect?
I've seen it raise:
File "callback.pxi", line 180, in gurobipy.CallbackClass.callback
File "partitioned_binary.py", line 61, in timeoutcallback
model.cbStopOneMultiObj(current_objectivenum)
File "model.pxi", line 5829, in gurobipy.Model.cbStopOneMultiObj
gurobipy.GurobiError
Exception gurobipy.GurobiError: GurobiError() in 'gurobipy.callbackstub' ignored
I've seen it segfault, and I've seen it take >1000 seconds to take effect.
Is using cbStopOneMultiObj the best way to do this? Would it be better to send my own process a SIGINT signal and let Gurobi catch it?
-
Official comment
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?. -
I'm still working on getting a simple reproducer for the segfault, but it seems like if you call cbStopOneMultiObj, send a SIGINT signal (i.e. press Ctrl-C), and then call cbStopOneMultiObj again, it tries to dereference a null pointer (address 0x00000030), which causes the SEGV.
0 -
Hi Philip,
We would like to investigate this. I'll open up a support ticket for you in our online support portal.
Thanks,
Eli
0 -
Thanks for letting us know about this. This issue has been fixed with the recent release of Gurobi 9.0.3.
0
Post is closed for comments.
Comments
4 comments