Question about Fluctuations in Bounds with Benders Decomposition and Callback
OngoingHi Gurobi community!
I have implemented Benders decomposition for my MILP using a callback in Gurobi. I've been monitoring the upper and lower bounds at each callback and have noticed significant fluctuations (see attached figure). I'm wondering if this behavior is expected when using a callback. If so, could you please provide guidance on what termination criteria would be suitable for Benders decomposition with a callback? To use (ub-lb)/ub does not seem to work. The Benders decomposition is converging towards the correct solution.
Any insights or advice would be greatly appreciated!
Best regards,
Sten
-
Hi,
Which callback codes are you using to retrieve the \(\texttt{OBJBST}\) and \(\texttt{OBJBND}\)?
You may want to employ the absolute value of the difference similar to What is the MIPGap?
Cheers,
David0 -
Thank you for the answer! Since I use Benders Decomposition I have been using the objective value of the subproblem and the estimated objective value of the subproblem in the master problem. If I would use OBJBST and OBJBND this would only give me the MIPGap for the master problem which is not relevant here? The code is:
LB = master.cbGet(GRB.Callback.MIPSOL_OBJ)
UB = sub_model.ObjVal
gap = np.absolute((UB-LB)/UB)0
Please sign in to leave a comment.
Comments
2 comments