Skip to content

Instantly share code, notes, and snippets.

@rschwarz
Last active June 1, 2022 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rschwarz/1e55cef8e02072f48895eb8544dbbe83 to your computer and use it in GitHub Desktop.
Save rschwarz/1e55cef8e02072f48895eb8544dbbe83 to your computer and use it in GitHub Desktop.
Cbc error with SOS2 and (partial) MIP Start
Welcome to the CBC MILP Solver
Version: devel
Build Date: Nov 10 2020
command line - /home/rs/src/coinbrew/dist/bin/cbc invalid_index.lp mips invalid_index.mst solve (default strategy 1)
### CoinLpIO::readLp(): Variable u_0 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_1 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_2 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_3 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_4 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_5 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_6 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_7 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_8 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_9 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_10 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_11 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_12 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_13 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_14 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_15 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_16 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_17 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_18 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_19 does not appear in objective function or constraints
opening mipstart file ./invalid_index.mst.
MIPStart values read for 8 variables.
Continuous objective value is -34 - 0.00 seconds
0 variables in SOS1 sets made integer, 0 non integer in SOS1, 10 in SOS2
Cgl0004I processed model has 11 rows, 19 columns (9 integer (9 of which binary)) and 37 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.564%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cutoff increment increased from 0.0001 to 0.9999
Cbc0045I Trying just fixing integer variables (and fixingish SOS).
Cbc0045I MIPStart provided solution with cost 0
Cbc0012I Integer solution of 0 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -30 found by strong branching after 1 iterations and 1 nodes (0.01 seconds)
Cbc0001I Search completed - best objective -30, took 7 iterations and 2 nodes (0.01 seconds)
Cbc0032I Strong branching done 4 times (16 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Cuts at root node changed objective from -34 to -34
Probing was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Gomory was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Knapsack was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Clique was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
OddWheel was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
MixedIntegerRounding2 was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
FlowCover was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
TwoMirCuts was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
ZeroHalf was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
2 bounds tightened after postprocessing
Result - Optimal solution found
Objective value: -30.00000000
Enumerated nodes: 2
Total iterations: 7
Time (CPU seconds): 0.01
Time (Wallclock seconds): 0.01
Total time (CPU seconds): 0.01 (Wallclock seconds): 0.01
Welcome to the CBC MILP Solver
Version: 2.9.9
Build Date: Aug 21 2017
command line - cbc invalid_index.lp mips invalid_index.mst solve (default strategy 1)
### CoinLpIO::readLp(): Variable u_0 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_1 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_2 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_3 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_4 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_5 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_6 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_7 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_8 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_9 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_10 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_11 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_12 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_13 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_14 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_15 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_16 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_17 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_18 does not appear in objective function or constraints
### CoinLpIO::readLp(): Variable u_19 does not appear in objective function or constraints
opening mipstart file ./invalid_index.mst.
MIPStart values read for 8 variables.
Continuous objective value is -34 - 0.00 seconds
Cgl0004I processed model has 11 rows, 19 columns (9 integer (9 of which binary)) and 37 elements
Cutoff increment increased from 1e-05 to 0.9999
Cbc0045I Trying just fixing integer variables.
Cbc0045I MIPStart provided solution with cost 0
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0010I After 0 nodes, 1 on tree, 0 best solution, best possible -34 (0.00 seconds)
Cbc0016I Integer solution of -30 found by strong branching after 0 iterations and 1 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -30, took 1 iterations and 2 nodes (0.00 seconds)
Cbc0032I Strong branching done 6 times (10 iterations), fathomed 2 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 6 variables fixed on reduced cost
Cuts at root node changed objective from -34 to -34
Probing was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Gomory was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Knapsack was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Clique was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
MixedIntegerRounding2 was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
FlowCover was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
TwoMirCuts was tried 1 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
2 bounds tightened after postprocessing
Result - Optimal solution found
Objective value: -30.00000000
Enumerated nodes: 2
Total iterations: 1
Time (CPU seconds): 0.00
Time (Wallclock seconds): 0.00
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
## Solve with SOS2, without warm start:
Welcome to the CBC MILP Solver
Version: devel
Build Date: Nov 10 2020
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -32 found by strong branching after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -32, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0032I Strong branching done 2 times (7 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
5 bounds tightened after postprocessing
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve without SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 10 rows, 17 columns (9 integer (9 of which binary)) and 34 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 3.193%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0012I Integer solution of -34 found by DiveCoefficient after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -34, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.01
OptimizationStatus.OPTIMAL
## Solve with SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Illegal index 30 in OsiClpSolverInterface::setColUpper
Cbc_solve ERROR: OsiClpSolverInterface::setColUpper, Illegal index
ERROR while running Cbc. Signal SIGABRT caught. Getting stack trace.
/home/rs/src/coinbrew/dist/lib/libCbcSolver.so(_Z15CbcCrashHandleri+0x157) [0x7f28ec98e21d]
/lib/x86_64-linux-gnu/libc.so.6(+0x37840) [0x7f2904874840]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x10b) [0x7f29048747bb]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x121) [0x7f290485f535]
/home/rs/src/coinbrew/dist/lib/libCbcSolver.so(Cbc_solve+0x1309) [0x7f28ec8ccb2d]
/home/rs/src/litic/loadflowopt/env/lib/python3.7/site-packages/cffi.libs/libffi-806b1a9d.so.6.0.4(ffi_call_unix64+0x4c) [0x7f2903ed9dec]
[...]
\Problem name:
Minimize
OBJROW: -10 x_0 -16 x_1 -12 x_2 -18 x_3 -10 x_4 -2 x_5 -11 x_6 -6 x_7 -14 x_8
Subject To
constr(0): 5 x_0 + 15 x_1 + 4 x_2 + x_3 + x_4 + 4 x_5 + 4 x_6 + 2 x_7 + 17 x_8 + 2 x_9
<= 18
constr(1): - x_0 + 2 y_0 >= -0
constr(2): - x_1 + 2 y_1 >= -0
constr(3): - x_2 + 2 y_2 >= -0
constr(4): - x_3 + 2 y_3 >= -0
constr(5): - x_4 + 2 y_4 >= -0
constr(6): - x_5 + 2 y_5 >= -0
constr(7): - x_6 + 2 y_6 >= -0
constr(8): - x_7 + 2 y_7 >= -0
constr(9): - x_8 + 2 y_8 >= -0
constr(10): - x_9 + 2 y_9 >= -0
constr(11): y_0 + y_1 + y_2 + y_3 + y_4 + y_5 + y_6 + y_7 + y_8 + y_9
= 1
Bounds
0 <= u_0 <= 1
0 <= u_1 <= 1
0 <= u_2 <= 1
0 <= u_3 <= 1
0 <= u_4 <= 1
0 <= u_5 <= 1
0 <= u_6 <= 1
0 <= u_7 <= 1
0 <= u_8 <= 1
0 <= u_9 <= 1
0 <= u_10 <= 1
0 <= u_11 <= 1
0 <= u_12 <= 1
0 <= u_13 <= 1
0 <= u_14 <= 1
0 <= u_15 <= 1
0 <= u_16 <= 1
0 <= u_17 <= 1
0 <= u_18 <= 1
0 <= u_19 <= 1
0 <= x_0 <= 1
0 <= x_1 <= 1
0 <= x_2 <= 1
0 <= x_3 <= 1
0 <= x_4 <= 1
0 <= x_5 <= 1
0 <= x_6 <= 1
0 <= x_7 <= 1
0 <= x_8 <= 1
0 <= x_9 <= 1
Integers
u_0 u_1 u_2 u_3 u_4 u_5 u_6 u_7 u_8 u_9
u_10 u_11 u_12 u_13 u_14 u_15 u_16 u_17 u_18 u_19
x_0 x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9
sos
set(1): S2:: y_0:0 y_1:1 y_2:2 y_3:3 y_4:4 y_5:5 y_6:6 y_7:7 y_8:8 y_9:9
End
Feasible solution - objective 0.0
0 x_0 0.0 0.0
1 x_1 0.0 0.0
2 x_2 0.0 0.0
3 x_3 0.0 0.0
4 x_4 0.0 0.0
5 x_5 0.0 0.0
6 x_6 0.0 0.0
7 x_7 0.0 0.0
$ python run.py
## Versions
Python: 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110]
mip: 1.13.0
## Solve with SOS2, without warm start:
Welcome to the CBC MILP Solver
Version: devel
Build Date: Nov 15 2020
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -32 found by strong branching after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -32, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0032I Strong branching done 2 times (7 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
5 bounds tightened after postprocessing
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve without SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 10 rows, 17 columns (9 integer (9 of which binary)) and 34 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 3.193%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0012I Integer solution of -34 found by DiveCoefficient after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -34, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve with SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -32 found by strong branching after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -32, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0032I Strong branching done 2 times (7 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
5 bounds tightened after postprocessing
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
$ python run.py
## Versions
Python: 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110]
mip: 1.13.0
## Solve with SOS2, without warm start:
Welcome to the CBC MILP Solver
Version: devel
Build Date: Nov 15 2020
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -32 found by strong branching after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -32, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0032I Strong branching done 2 times (7 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
5 bounds tightened after postprocessing
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve without SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 10 rows, 17 columns (9 integer (9 of which binary)) and 34 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 3.193%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0012I Integer solution of -34 found by DiveCoefficient after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -34, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve with SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
python: malloc.c:4036: _int_malloc: Assertion `(unsigned long) (size) >= (unsigned long) (nb)' failed.
ERROR while running Cbc. Signal SIGABRT caught. Getting stack trace.
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(_Z15CbcCrashHandleri+0x14c) [0x7f6194e0283c]
/lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f6195f82d60]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f6195f82ce1]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f6195f6c537]
/lib/x86_64-linux-gnu/libc.so.6(+0x85a38) [0x7f6195fcca38]
/lib/x86_64-linux-gnu/libc.so.6(+0x89386) [0x7f6195fd0386]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x74) [0x7f6195fd1164]
./libstdc++.so.6(_Znwm+0x15) [0x7f61935c11f5]
./libCoinUtils.so.0(_ZN17CoinIndexedVector7reserveEi+0xcb) [0x7f6193bfa0cb]
./libClp.so.0(_ZN10ClpSimplex9createRimEibi+0x520) [0x7f61942173c0]
./libClp.so.0(_ZN10ClpSimplex7startupEii+0xe0) [0x7f619422f190]
./libClp.so.0(_ZN14ClpSimplexDual12startupSolveEiPdi+0x2d) [0x7f61942456dd]
./libClp.so.0(_ZN14ClpSimplexDual4dualEii+0x1d8) [0x7f6194249378]
./libClp.so.0(_ZN10ClpSimplex4dualEii+0x65) [0x7f6194220c05]
./libOsiClp.so.0(_ZN21OsiClpSolverInterface12initialSolveEv+0xebd) [0x7f619451446d]
./libCbc.so.0(_ZN8CbcModel13checkSolutionEdPdid+0x425) [0x7f6194af6015]
./libCbc.so.0(_ZN8CbcModel15setBestSolutionE11CBC_MessageRdPKdi+0x129) [0x7f6194aecc69]
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(_Z8CbcMain1iPPKcR8CbcModelPFiPS2_iER19CbcSolverUsefulData+0x123b9) [0x7f6194e1eba9]
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(Cbc_solve+0x11e3) [0x7f6194dae333]
/home/rs/in/env/lib/python3.9/site-packages/cffi.libs/libffi-9c61262e.so.8.1.0(+0x8052) [0x7f619561f052]
/home/rs/in/env/lib/python3.9/site-packages/cffi.libs/libffi-9c61262e.so.8.1.0(+0x6c07) [0x7f619561dc07]
/home/rs/in/env/lib/python3.9/site-packages/_cffi_backend.cpython-39-x86_64-linux-gnu.so(+0x1cd87) [0x7f6195841d87]
python(_PyObject_MakeTpCall+0x39b) [0x51d89b]
python(_PyEval_EvalFrameDefault+0x5b2a) [0x5175ba]
python() [0x510fe7]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x702) [0x512192]
python() [0x5106ed]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x702) [0x512192]
python() [0x510fe7]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x525) [0x511fb5]
python() [0x5106ed]
python(_PyEval_EvalCodeWithName+0x47) [0x510497]
python(PyEval_EvalCode+0x23) [0x5f5be3]
python() [0x619de7]
python() [0x615610]
python() [0x619d79]
python(PyRun_SimpleFileExFlags+0x196) [0x619816]
python(Py_RunMain+0x2b3) [0x60d4e3]
python(Py_BytesMain+0x29) [0x5ea6e9]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xea) [0x7f6195f6dd0a]
python(_start+0x2a) [0x5ea5ea]
ERROR while running Cbc. Signal SIGABRT caught. Getting stack trace.
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(_Z15CbcCrashHandleri+0x14c) [0x7f6194e0283c]
/lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f6195f82d60]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f6195f82ce1]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f6195f6c537]
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(+0x3f96e) [0x7f6194d9e96e]
/lib/x86_64-linux-gnu/libc.so.6(+0x3bd60) [0x7f6195f82d60]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f6195f82ce1]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f6195f6c537]
/lib/x86_64-linux-gnu/libc.so.6(+0x85a38) [0x7f6195fcca38]
/lib/x86_64-linux-gnu/libc.so.6(+0x89386) [0x7f6195fd0386]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x74) [0x7f6195fd1164]
./libstdc++.so.6(_Znwm+0x15) [0x7f61935c11f5]
./libCoinUtils.so.0(_ZN17CoinIndexedVector7reserveEi+0xcb) [0x7f6193bfa0cb]
./libClp.so.0(_ZN10ClpSimplex9createRimEibi+0x520) [0x7f61942173c0]
./libClp.so.0(_ZN10ClpSimplex7startupEii+0xe0) [0x7f619422f190]
./libClp.so.0(_ZN14ClpSimplexDual12startupSolveEiPdi+0x2d) [0x7f61942456dd]
./libClp.so.0(_ZN14ClpSimplexDual4dualEii+0x1d8) [0x7f6194249378]
./libClp.so.0(_ZN10ClpSimplex4dualEii+0x65) [0x7f6194220c05]
./libOsiClp.so.0(_ZN21OsiClpSolverInterface12initialSolveEv+0xebd) [0x7f619451446d]
./libCbc.so.0(_ZN8CbcModel13checkSolutionEdPdid+0x425) [0x7f6194af6015]
./libCbc.so.0(_ZN8CbcModel15setBestSolutionE11CBC_MessageRdPKdi+0x129) [0x7f6194aecc69]
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(_Z8CbcMain1iPPKcR8CbcModelPFiPS2_iER19CbcSolverUsefulData+0x123b9) [0x7f6194e1eba9]
/home/rs/in/env/lib/python3.9/site-packages/mip/libraries/lin64/libCbcSolver.so(Cbc_solve+0x11e3) [0x7f6194dae333]
/home/rs/in/env/lib/python3.9/site-packages/cffi.libs/libffi-9c61262e.so.8.1.0(+0x8052) [0x7f619561f052]
/home/rs/in/env/lib/python3.9/site-packages/cffi.libs/libffi-9c61262e.so.8.1.0(+0x6c07) [0x7f619561dc07]
/home/rs/in/env/lib/python3.9/site-packages/_cffi_backend.cpython-39-x86_64-linux-gnu.so(+0x1cd87) [0x7f6195841d87]
python(_PyObject_MakeTpCall+0x39b) [0x51d89b]
python(_PyEval_EvalFrameDefault+0x5b2a) [0x5175ba]
python() [0x510fe7]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x702) [0x512192]
python() [0x5106ed]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x702) [0x512192]
python() [0x510fe7]
python(_PyFunction_Vectorcall+0x361) [0x528d21]
python(_PyEval_EvalFrameDefault+0x525) [0x511fb5]
python() [0x5106ed]
python(_PyEval_EvalCodeWithName+0x47) [0x510497]
python(PyEval_EvalCode+0x23) [0x5f5be3]
python() [0x619de7]
python() [0x615610]
python() [0x619d79]
python(PyRun_SimpleFileExFlags+0x196) [0x619816]
python(Py_RunMain+0x2b3) [0x60d4e3]
python(Py_BytesMain+0x29) [0x5ea6e9]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xea) [0x7f6195f6dd0a]
python(_start+0x2a) [0x5ea5ea]
## Solve with SOS2, without warm start:
Welcome to the CBC MILP Solver
Version: devel
Build Date: Sep 8 2020
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0036I Heuristics switched off as 1 branching objects are of wrong type
Cbc0013I At root node, 0 cuts changed objective from -34 to -34 in 1 passes
Cbc0014I Cut generator 0 (Probing) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 1 (Gomory) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 2 (Knapsack) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 3 (Clique) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 4 (OddWheel) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 5 (MixedIntegerRounding2) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0014I Cut generator 6 (FlowCover) - 0 row cuts average 0.0 elements, 0 column cuts (0 active) in 0.000 seconds - new frequency is -100
Cbc0016I Integer solution of -32 found by strong branching after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -32, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0032I Strong branching done 2 times (7 iterations), fathomed 1 nodes and fixed 0 variables
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
5 bounds tightened after postprocessing
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve without SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 10 rows, 17 columns (9 integer (9 of which binary)) and 34 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 3.193%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
Cbc0012I Integer solution of -34 found by DiveCoefficient after 0 iterations and 0 nodes (0.00 seconds)
Cbc0001I Search completed - best objective -34, took 0 iterations and 0 nodes (0.00 seconds)
Cbc0035I Maximum depth 0, 0 variables fixed on reduced cost
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
OptimizationStatus.OPTIMAL
## Solve with SOS2, with warm start:
Starting solution of the Linear programming relaxation problem using Dual Simplex
Coin0506I Presolve 2 (-10) rows, 9 (-31) columns and 18 (-22) elements
Clp0000I Optimal - objective value 34
Coin0511I After Postsolve, objective 34, infeasibilities - dual 0 (0), primal 0 (0)
Clp0032I Optimal objective 34 - 2 iterations time 0.002, Presolve 0.00
Starting MIP optimization
Cgl0004I processed model has 11 rows, 18 columns (9 integer (9 of which binary)) and 36 elements
Coin3009W Conflict graph built in 0.000 seconds, density: 2.853%
Cgl0015I Clique Strengthening extended 0 cliques, 0 were dominated
Cbc0045I MIPStart provided solution with cost 14
Cbc0012I Integer solution of 14 found by Reduced search after 0 iterations and 0 nodes (0.00 seconds)
corrupted size vs. prev_size
ERROR while running Cbc. Signal SIGABRT caught. Getting stack trace.
import mip
import sys
def run(with_sos=True, with_warmstart=True):
model = mip.Model()
# Some variables to be eliminated by presolve, moving the column index in LP
u = [model.add_var(name=f"u_{i}", var_type=mip.BINARY) for i in range(20)]
# Some binary variables to make MIP start non-trivial
x = [model.add_var(name=f"x_{i}", var_type=mip.BINARY) for i in range(10)]
# Some continuous variables for SOS2
y = [model.add_var(name=f"y_{i}") for i in range(10)]
# Add knapsack component to make it non-trivial
weights = [ 5., 15., 4., 1., 1., 4., 4., 2., 17., 2.]
values = [10., 16., 12., 18., 10., 2., 11., 6., 14., 0.]
model += sum(weights[i]*x[i] for i in range(10)) <= 18
model.objective = mip.maximize(sum(values[i]*x[i] for i in range(10)))
# Add some dummy constraints for coupling
for i in range(10):
model += x[i] <= 2*y[i]
model += sum(y) == 1.0
if with_sos:
model.add_sos(list(zip(y, range(5))), 2)
if with_warmstart:
# Partial solution
model.start = [(x[i], 0.0) for i in range(8)]
status = model.optimize()
print(status)
print("## Versions")
print("Python:\t", sys.version)
print("mip:\t", mip.version)
print()
print("\n## Solve with SOS2, without warm start:\n")
run(True, False)
print("\n## Solve without SOS2, with warm start:\n")
run(False, True)
print("\n## Solve with SOS2, with warm start:\n")
run()
@rschwarz
Copy link
Author

Small example to recreate a problem I had with Cbc via python-mip: In a MIP model, I use both SOS2 and MIP start, but then encounter a crash.

I suspect the reason is that several variables are removed during presolve in Cbc, so that Clp only sees a much smaller number of columns.
But the SOS2 objects store references to the original column indices, which have now been moved.

@rschwarz
Copy link
Author

normal.log shows the output when I use the Cbc library that is shipped with python-mip. Even though the error message promises "Getting strack trace", no further output is shown.

debug.log is the output after I build Cbc (and dependencies) from source in debug mode.

@rschwarz
Copy link
Author

The run function is executed three times. The error only occurs when both SOS2 and the MIP start are added.

@rschwarz
Copy link
Author

I tried recreating the problem with Cbc directly, by writing the data to .lp and .mst files.
But neither the stable, nor the development version of Cbc find any problem.

Maybe this is because the mipstart is loaded before the presolve, or the CoinLpIO::readLp() directly discards the u variables.

@rschwarz
Copy link
Author

But even after adding another constraint on the u variables, the behavior of Cbc doesn't change.

@rschwarz
Copy link
Author

rschwarz commented Jun 1, 2022

Updated log files, using mip-1.13. It looks like the behaviour is not deterministic, sometines running OK, sometimes crashing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment