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?
-
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
Please sign in to leave a comment.
Comments
3 comments