I am currently implementing a Benders decomposition algorithm. I would like to add benders cut with model.cbLazy() both in MIPSOL and MIPNODE because it helps a lot to find better bounds and heuristic solutions.
However, I can't seem to be able to control the number of times the callback function is called at each node (MIPNODE). In some post I have seen that for the root node, one can change the values of the parameter Cuts and CutPasses but even with aggressive values the optimizer only makes a few calls to the callback function before starting to branch. Anyway, the root is not to much of a problem because I can craft my own benders loop to solve the root node prior to optimization.
My real problem is for the subsequent nodes, if I understood correctly there is no way to have more than one call to the callback function for each node of the branch and bound tree. So my question are the following :
1) Did I miss something? And then what is the right way to have several call to callbacks per tree node?
2) If there is no way, will this feature be added to Gurobi someday ? ( would be very useful for benders decomposition)
3) Is there a way to make my own loop as for the root node without having to recreate an entire branch and bound procedure (where I would loose access to all gurobi features like heuristics, cuts, ...)
Thanks for your help !
Please sign in to leave a comment.