Writing solution problem in StandAlone Cbc 2.9.9
Hi,
First of all, thank you for all the great work on Cbc, it is a really powerful solver.
I have a very large MIP (700k+ variables) that I try to solve using the stand-alone executable on a Debian machine using multipleRootPasses=000000 and threads=3. When first solution is found after several nodes, the solver stops and writes a solution to a txt file (-solu option).
However :
- Objective value and gap are incorrectly printed in the output
- Solution printed to the txt file is wrong (integer variables are not integer, etc.)
Here is the end of the output :
Cbc0010I After 26700 nodes, 14854 on tree, 1e+50 best solution, best possible 27948023 (29226.67 seconds)
Cbc0010I After 26800 nodes, 14923 on tree, 1e+50 best solution, best possible 27948023 (29292.20 seconds)
Cbc0010I After 26900 nodes, 14992 on tree, 1e+50 best solution, best possible 27948023 (29348.34 seconds)
Cbc0010I After 27000 nodes, 15057 on tree, 1e+50 best solution, best possible 27948023 (29418.72 seconds)
Cbc0010I After 27100 nodes, 15125 on tree, 1e+50 best solution, best possible 27948023 (29514.06 seconds)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355805 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355805 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355806 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355805 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355806 Primal inf 2.9972826 (1)
Clp0006I 0 Obj 28355725 Primal inf 2.0884317 (1)
Clp0006I 0 Obj 28355725 Primal inf 2.0884317 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.0022592 (1)
Clp0006I 0 Obj 28355803 Primal inf 2.0022592 (1)
Cbc0010I After 27200 nodes, 15172 on tree, 1e+50 best solution, best possible 27948023 (29940.20 seconds)
Cbc0010I After 27300 nodes, 15252 on tree, 1e+50 best solution, best possible 27948023 (30136.22 seconds)
Clp0006I 0 Obj 28408107 Primal inf 2.1075543 (1)
Clp0006I 0 Obj 28458176 Primal inf 2.1075543 (1)
Clp0006I 0 Obj 28411051 Primal inf 2.1075543 (1)
Cbc0004I Integer solution of 28411056 found after 10208101 iterations and 27361 nodes (30619.75 seconds)
Cbc0012I Integer solution of 28411056 found by heuristic after 10208101 iterations and 27362 nodes (30619.78 seconds)
Clp0006I 0 Obj 28458176 Primal inf 0.47337339 (1)
Cbc0030I Thread 0 used 9130 times, waiting to start 167.85166, 62655 locks, 454.91759 locked, 257.29478 waiting for locks
Cbc0030I Thread 1 used 9057 times, waiting to start 266.6034, 62023 locks, 330.34265 locked, 363.08716 waiting for locks
Cbc0030I Thread 2 used 9179 times, waiting to start 286.1983, 62796 locks, 400.39252 locked, 280.09146 waiting for locks
Cbc0030I Main thread 29567.471 waiting for threads, 55036 locks, 0.60718918 locked, 26.759674 waiting for locks
Cbc0011I Exiting as integer gap of 463033.51 less than 1e-10 or 3.5%%
Cbc0001I Search completed - best objective 28411056.18731436, took 10208113 iterations and 27364 nodes (30706.94 seconds)
Cbc0032I Strong branching done 239776 times (5835389 iterations), fathomed 18 nodes and fixed 10 variables
Cbc0035I Maximum depth 3459, 0 variables fixed on reduced cost
0 Obj 28411056 Primal inf 2.3414063e-06 (1)
0 Obj 28411056 Primal inf 2.3414063e-06 (1)
0 Obj 28411056 Primal inf 2.3414063e-06 (1)
Primal infeasible - objective value 28411056
Cuts at root node changed objective from 2.78109e+07 to 2.78774e+07
Probing was tried 29109 times and created 15738 cuts of which 0 were active after adding rounds of cuts (12849.888 seconds)
Gomory was tried 29109 times and created 6948 cuts of which 0 were active after adding rounds of cuts (55767.976 seconds)
MixedIntegerRounding2 was tried 29109 times and created 2622715 cuts of which 0 were active after adding rounds of cuts (27703.808 seconds)
FlowCover was tried 29109 times and created 21849 cuts of which 0 were active after adding rounds of cuts (7490.376 seconds)
TwoMirCuts was tried 29109 times and created 6704 cuts of which 0 were active after adding rounds of cuts (9412.616 seconds)
Result - Optimal solution found (within gap tolerance)
Objective value: 100000000000000007629769841091887003294964970946560.00000000
Lower bound: 27948022.681
Gap: 3578070661476734473508088284048005837881344.00
Enumerated nodes: 27364
Total iterations: 10208113
Time (CPU seconds): 88979.61
Time (Wallclock seconds): 30735.82
Total time (CPU seconds): 88985.40 (Wallclock seconds): 30741.79
And here is part of the txt solution file; variables starting with i are supposed to be integers and equal to 0 or 1 :
Optimal - objective value 27810854.45021408
0 a 928.92 0
1 b 700 0
691420 i1 0.11935294 0
691454 i2 1 0
691501 i3 0.20941176 0
691517 i4 0.70284706 0
691521 i5 0.087741176 0
691554 i6 0.13083333 0
691565 i7 1 0
904548 c 671.28205 0
904578 d 272 0
904586 e 225 0
904593 f 225 0
904601 h 500 0
** 904925 j -2.4414063e-06 0
904943 k 566.66667 0
904950 l 131 0
904984 m 261.53846 0
904997 n 90.615385 0
I use standalone mode of Coin Cbc 2.9.9 compiled from sources enabling parallel computations on Debian. I have already solved several huge problems (1M+ variables) with Coin Cbc in 10+ hours with no problems displaying and writing solution.
Thanks for your help.
This will be very difficult to debug without the ability to replicate. If you can provide a way to replicate the issue, it will probably get more attention. Also, 2.9 is quite old now. You should try 2.10 or even master.