Complementary Slackness: Issues with Big-M
AnsweredHi,
I’m using the Big-M technique to linearize the complementary slackness conditions from the KKT system, which turns my optimization model into a MIP (the only integer variables come from these complementary slackness constraints).
When I set M too large, I end up getting only a relaxed solution; but if I set it smaller, Gurobi fails to converge and keeps iterating without termination.
Is there a smarter way to handle this? For example, can using addGenConstrIndicator avoid having to manually choose a Big-M value? Or do you have any other suggestions?
Thanks a lot!
-
Hi Zhisheng,
You can use addGenConstrIndicator to avoid choosing a Big M value, but I don't expect this would resolve your problem.
Your best bet is to try and tune the solver. I would first try with different combinations of MIPFocus and Presolve and if you want to dive deeper then the following video may help: Introduction to Performance Tuning.
- Riley
0 -
Hi Riley,
Thanks for your valuable information. I have checked the code examples and video, and now have some ideas in mind. I will try running my optimization again.
Since the solution of the KKT system is used to generate cuts in a decomposition algorithm, if the solution quality is poor, the cuts will be weak—or worse, the whole algorithm may converge prematurely.
0
Please sign in to leave a comment.
Comments
2 comments