Multi seed solving
回答済みHello,
I have noticed that depending on the seed, gurobi is solving my models faster or slower, this can lead up to difference between model being rather fast or completely unsolvable.
Is there any way how to optimize the same model with different seeds in parallel and then choose the calculation with the best gap after a minute or so and stop the others?
-
正式なコメント
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?. -
Hi Daniel,
Unfortunately, solution variability is often unavoidable. To mitigate it to some extent, you could use the concurrent optimizer. Models suffering from solution variability often also have some numerical issues. Maybe using a different scaling and/or improving the numerics might help reduce the variability you experience. You can find general hints for numerics in our Guidelines for Numerical Issues.
Best regards,
Jaromił0 -
Thanks, from what I've read it seems like concurrent optimizer always stops once the first one finishes but I don't see a way how the solves that are obviously slower can be stopped before this point to free threads. Let's say I have 16 cores and would run MIP model with 4 solves each on 4 cores. Now if the first one reaches 10% gap within a minute while other three solves are still at 50% I want to stop them and run the first one on all 16 cores or use those free cores for solving another problems, because otherwise the best solve has to be 4 times faster than average to make this an effective option.
0 -
This option is currently not available. Maybe you could use multiprocessing to run 4 runs in parallel with different seeds and use callbacks to check which one is best after X seconds. Then terminate all of them and re-start the good one.
Best regards,
Jaromił0 -
I've done some statistics running the same computation on multiple seeds and it seems like 70% seeds run in reasonable ammount of time and then other 30% might take up to 10 times longer. Is this behaviour expected or it means there is some issue with my model? I ve gone through numerical and robustness guidelines and it seems to be alright.

The first picture is 3-multiobjective model and the second one is its 2-multiobjective equivalent, x is seed y is work units to solve.0 -
Hi Daniel,
The observation you made is an effect of Performance Variability. You could isolate a few bad seeds and try to find tuning parameter in order to overcome the poor performance in this case. Of course you then have to check whether these parameters have a negative effect on the good runs. You could try running Gurobi's tuning tool for 1-2 days (or longer depending on how long one solve takes).
In order to possibly speed up the process, you could try to find tuning parameters for the good runs and check whether these parameters improve the poor performance with bad seeds.
Best regards,
Jaromił0
投稿コメントは受け付けていません。
コメント
6件のコメント