-
Hi Everybody, I saw some inconsistency between python-mip and CBC command line in terms of run time. CBC command line results:
python-mip results:
We didn't change the default value to any parameter.. Any suggestions for why it might happen? Thanks! To Reproduce
Expected behavior Desktop (please complete the following information):
Additional context Few more logs from the CBC command line process:
More logs for python-mip process:
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Hi @RanAbram , These deviations (for more or less time) are expected in individual instances. The main reason is that python-mip uses some specific cbc git revisions for its releases. Also, binaries for the python-mip library were probably compiled with different options/gcc version than your cbc command line binary. Does it means that python-mip library is slower than your cbc binary ? Probably not, as we can only conclude it by running experiments on a large set of instances. Many deviations for faster/slower executions are expected. Why ? This happens because MIP solvers are chaotic systems, they are extremely sensitive to the initial conditions. To know more about this topic I recomment the paper ˝Exploiting Erraticism in Search˝ (https://pubsonline.informs.org/doi/abs/10.1287/opre.2013.1231). A short explanation is that, in the beginning of the tree search there are many options on how to proceed and even though many options seem similar, they can have large impact on the total running time. For example, for branching, one solver may try to select always the most fractional variable. This criterion may be deterministic, but usually there many variables with the same fractional value in some fractional solution. At first sight, it may seem that the impact of selecting each one of these first may not be too influential, but it is. In python-mip you can enter different random seeds for the solver to introduce small perturbations for the solver. You can easily see that even for the same instance you usually can obtain different running times. If you observe that this slowdown is consistent in a large set of problems, it may be worth investigate it, otherwise this is an expected deviation. Talking about large set of instances, can I add your mip to our set of test problems ? Cheers |
Beta Was this translation helpful? Give feedback.
Hi @RanAbram ,
These deviations (for more or less time) are expected in individual instances. The main reason is that python-mip uses some specific cbc git revisions for its releases. Also, binaries for the python-mip library were probably compiled with different options/gcc version than your cbc command line binary.
Does it means that python-mip library is slower than your cbc binary ? Probably not, as we can only conclude it by running experiments on a large set of instances. Many deviations for faster/slower executions are expected. Why ? This happens because MIP solvers are chaotic systems, they are extremely sensitive to the initial conditions. To know more about this topic I recomme…