I formulated a two-stage stochastic problem and implemented Benders' Decomposition method via Gurobi callback. I add several lazy cuts at each iteration ("where == GRB.Callback.MIPSOL"). The master problem (MP) gets very large after a while and it takes a lot of time to solve it. However, it is not necessary to solve the MP to optimality at every iteration in order to achieve global convergence.
1) Is there a way to set dynamic termination criteria for MP, e.g. solve MP optimally once in every 10 iterations?
2) About MP size management: I know that I cannot remove any constraints in the callback. Could you provide any recommendations about how to remove some lazy cuts?
- I tried storing the cuts and adding only when they improve the incumbent solution but the algorithm converges to a wrong optimal solution.
Note: All the cuts are optimality cuts since any solution is feasible.
Thank you in advance
Please sign in to leave a comment.