Using ConcurrentMIP
AnsweredHello.
Since it took quite a long time to solve a model on a 4-core machine (one week), I also started it on a 24-core machine and set the ConcurrentMIP parameter to 4. Apart from the time advantage, Gurobi also found a slightly better solution this way! I wondered why. As far as I understood, setting ConcurrentMIP=4 means that Gurobi explores four completely different parts of the branch-and-bound tree simultaneously, using 6 threads each? Is it possible that the optimizer finds a parameter setting in the process that is a bit better - like the global optimum rather than a local one (even if it is non-determenistic)?
Thank You.
-
Hi Tessa,
What you described as four machines exploring different parts of the B&B tree is distributed optimization. The concurrent optimizer solves the same model on multiple cores/machines with different settings/seeds and finishes whenever one of the runs solves the model to optimality. Due to the different settings/seeds used, a different optimal solution can be found due to different optimization paths if you don't set the MIPGap parameter to 0%.
As far as I understood, setting ConcurrentMIP=4 means that Gurobi explores four completely different parts of the branch-and-bound tree simultaneously, using 6 threads each?
Since your machine has 24 cores, this is correct.
Is it possible that the optimizer finds a parameter setting in the process that is a bit better - like the global optimum rather than a local one (even if it is non-determenistic)?
It is only possible if you don't set the MIPGap parameter to 0%, because this leaves some room for improvement and given the different optimization paths of the concurrent optimizer, it is possible to find a better solution than by a default run.
Given your situation and the fact that the Concurrent MIP performs better than the default run, you should consider looking for a few parameters which might improve your performance. You can find information in the documentation of most important parameters for MIPs. Given the long solution time of your model, running the automatic parameter tuning tool does not seem feasible.
Best regards,
Jaromił0 -
Thank you for your answer and I have one last question.
The concurrent optimizer solves the same model on multiple cores/machines with different settings. . .
What kind of settings are changed?
0 -
Hi Tessa,
Typically, only the random seed is different for the single runs. In most cases, this already provides enough variability compared to the non-concurrent optimization.
You can also set custom parameters for every single environment using the ConcurrentSettings parameter.
I hope that answers your question.
Cheers,
Matthias0
Please sign in to leave a comment.
Comments
3 comments