0

I am trying to use CBC to solve an mps file. It frequently hangs for long periods of time and it will exit without any message.

It will also hang even after it has found the optimal solution. I don't know why it isn't returning to prompt.

I've reinstalled the latest version 2.10, and I've tried on multiple Windows 10 machines.

Prompt inputs and outputs below.

C:\my_directory>cbc
Welcome to the CBC MILP Solver
Version: Trunk (unstable)
Build Date: May  3 2019

CoinSolver takes input from arguments ( - switches to stdin)
Enter ? for list of commands or help
Coin:verbose 15
verbose was changed from 0 to 15
Coin:import SF_STD.mps
At line 8 NAME          swolf_co
At line 9 ROWS
At line 179948 COLUMNS
At line 539250 RHS
At line 539271 BOUNDS
At line 539402 ENDATA
Problem swolf_co has 179937 rows, 191943 columns and 619924 elements
Coin0008I swolf_co read with 0 errors
Coin:stat
Presolve 18316 (-161621) rows, 19174 (-172769) columns and 138258 (-481666) elements
Statistics for presolved model
Original problem has 24 integers (24 of which binary)


Problem has 18316 rows, 19174 columns (2 with objective) and 138258 elements
There are 1 singletons with objective
Column breakdown:
19165 of type 0.0->inf, 6 of type 0.0->up, 0 of type lo->inf,
0 of type lo->up, 1 of type free, 0 of type fixed,
0 of type -inf->0.0, 2 of type -inf->up, 0 of type 0.0->1.0
Row breakdown:
9660 of type E 0.0, 0 of type E 1.0, 0 of type E -1.0,
1 of type E other, 6 of type G 0.0, 0 of type G 1.0,
1 of type G other, 8646 of type L 0.0, 0 of type L 1.0,
2 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other,
0 of type Free
Coin:solv
Continuous objective value is 1.25864e+08 - 1.81 seconds
Cgl0002I 6 variables fixed
Cgl0004I processed model has 18298 rows, 19156 columns (0 integer (0 of which binary)) and 137182 elements
Cbc3007W No integer variables - nothing to do
Cuts at root node changed objective from 1.25864e+08 to -1.79769e+308
Probing was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Gomory was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Knapsack was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
Clique was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
MixedIntegerRounding2 was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
FlowCover was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
TwoMirCuts was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)
ZeroHalf was tried 0 times and created 0 cuts of which 0 were active after adding rounds of cuts (0.000 seconds)

Result - Optimal solution found

Objective value:                125864301.49648696
Enumerated nodes:               0
Total iterations:               0
Time (CPU seconds):             905.83
Time (Wallclock seconds):       905.85

Everything before Result - Optimal solution found ran quickly, but then it prints Cuts at root node changed objective from 1.25864e+08 to -1.79769e+308, and runs for a very long time. Turning cuts off did not change anything. That specific line no longer appears, but the objective still goes from 1.25864e+08 to -1.06e15. The model then takes about an hour to get back to the actual objective value of 1.25864e+08, which is the integer optimal solution as well as the solution to LP relaxation.

It solves in clp in several seconds. The mps file was written by glpk, and solves in several seconds in CPLEX.

Any guidance you could provide would be greatly appreciated.

I've tried multiple version of cbc and I still get this long hang time for relatively simply problems. I've tried .lp and .mps formats (clp seems to solve .lp faster), but nothing changes.

Jim
  • 105
  • 1
  • 7
  • 1
    I don't know CBC but is there a way to increase the log output verbosity? From the output my guess is that it is solving the initial LP. Is there away to enable LP solving output? Like for example showing the simplex iterations performed? – Daniel Junglas May 16 '19 at 20:21
  • If I increase the verbosity of the output, it does show that it's doing something, but I'm not sure what. The solution to LP relaxation (objective = 1.2586430150e+008) is the integer solution. I've checked with CPLEX, and CBC also says this: `Continuous objective value is 1.25864e+08 - 1.81 seconds Cgl0002I 6 variables fixed Cgl0004I processed model has 18298 rows, 19156 columns (0 integer (0 of which binary)) and 137182 elements Cbc3007W No integer variables - nothing to do` – Jim May 17 '19 at 11:56
  • 1
    There may be something off with CBC. You have this line: `Cuts at root node changed objective from 1.25864e+08 to -1.79769e+308` That number `-1.79769e+308` looks pretty fishy. Do things improve if you just disable cuts? Is your problem unbounded? Is it expected that your problem has no integer variables? Like I said, I don't know CBC and I was only making a wild guess. Maybe it is best to take this up directly with the CBC people. – Daniel Junglas May 17 '19 at 12:53
  • Yeah, I think that is the problem. There are integer variables, but they all take integer values when solving the LP relaxation. So the optimal solution is 1.25864e+08. It seems to recognize this when it says ```Cbc3007W No integer variables - nothing to do``` I've posted on their GitHub page and mailing list asking about it. – Jim May 17 '19 at 14:54

0 Answers0