Closed Tr1ple-F closed 10 months ago
Not a bug - more a feature of integer programming. I don't know java or or-tools, which makes it more difficult to investigate. I wrote out an mps file from the long running Cbc run. This slightly changes the accuracy - but in this case made it harder for a code to solve. I killed the Cbc run and let Scip run overnight! It took ten hours and the maximum depth was over 4000! Modifying your code to give exactly the same model to both Scip and Cbc, I can see a variation of up to 5000 in value of objective due to tolerances etc. It is probably mainly the need to prove absolute optimality that make some runs take a long time. I don't have enough knowledge of or-tools to know how to pass parameters to code - but if you can pass allowable gap and multiplerootpasses
allowableGap was changed from 1e-12 to 10000 multipleRootPasses was changed from 0 to 4
even the long running problem from mps file solved in a few seconds (at the root node). The multiple parameter just runs all the heuristics four times with slightly different parameters - I chose 4 as they are normally done in parallel.
Thank you so much! The performance now is absolutely fantastic! I have another question though: it there any other resource you could recommend aside the user guide (https://coin-or.github.io/Cbc/)? I could not find any reference to multipleRootPasses in that documentation.
There is not much documentation for the more exotic commands. You can do - cbc allcommands all ?
which will list all commands to see more enter multiple??
or other ones on list e.g. pumptune??
I am using Google OR-Tools as interface in Java for the following problem:
I have a number of loans and want to split them into two similar size portfolios with certain restrictions on the terms for portfolio composition.
When I use SCIP as a solver it takes anywhere between 25s and 75s. However, when I replace SCIP with CBC it either takes 3-4s or 300s+, sometimes as much as 600s+. I am not familiar with the details of the CBC implementation but this just seems like a bug to me. Maybe someone smarter could take a look.
Appendix
Code For Test Case:
Time measurements:
Code to run test:
System Specs
SDK: Java 17.0.9 DEV: Dell XPS 15 9560, Win 10 Home MEM: 16 GB RAM CPU: Intel i7-7700 HQ @ 2.8 GHz, 4 cores GPU: Nvidia GeForce GTX 1050