I'm running CBC on problems for which not always an integer solution can be found in a given time, so the command line option sec 120
is set (2 minutes maximum). The random seeds are also set to avoid that the same run returns different results (randomCbcSeed 42 randomSeed 42
).
However, I found that this still returns non-deterministic results as the the 2min timeout is pretty sensitive to CPU load (~CPU time ~solve time). In fact, I noticed that when running lots of independent CBC runs in parallel (on a CI server which is also shared across other users), this issue is exacerbated. Slower hardware may also return different results than faster hardware which is also a problem for my use case.
Is there any another definitely deterministic way to terminate CBC prematurely so that it always returns the same results (I don't mind if it's a few seconds or minutes more or less than the specified timeout, but stable results are pretty essential for me)?