[Cbc] Problem with root cuts when LP relaxation is integer optimal

John Forrest john.forrest at fastercoin.com
Sat May 18 08:37:09 EDT 2019


James,

The problem is that the final solve does not use presolve so problem is 
large.  Normally this doesn't matter but in your case it does.  I am 
thinking about the best thing to do, but here are two solutions -

1) In CbcSolver.cpp look for

originalSolver->setBasis(*basis);

and add

originalSolver->setHintParam(OsiDoPresolveInResolve, true, OsiHintTry);

This may be what will be changed in code.

2) I have committed to trunk/Cbc/examples presolveBefore.cpp

This also works.  If you add
#define SAVE_MEMORY

then it should use less memory which may fix your other problems.

John Forrest

On 17/05/2019 16:09, James Levis wrote:
> I am reading a problem where the LP relaxation is also integer 
> optimal. clp solves the problem in ~12 s. CPLEX solves the whole 
> problem in several seconds.
>
> CBC finds the LP solution in 1.8 s, and acknowledges that it is the 
> optimal solution (|Cbc3007W No integer variables - nothing to do|), 
> but then the root cuts change the optimal value by ~300 orders of 
> magnitude (|Cuts at root node changed objective from 1.25864e+08 to 
> -1.79769e+308|). It then starts the search with a large negative value 
> (|200 Obj -1.0630244e+15 Primal inf 3.6043524e+12 (98)|), and works 
> back to the actual optimal value over the course of nearly an hour 
> (3119 s).
>
> It also states that zero nodes were enumerated and zero iterations 
> were performed.
>
> Can anyone tell me what is going on and how to avoid it? In general, 
> the LP relaxation will not be integer optimal, so I can't just use clp.
>
> Selected prompt inputs and outputs are provided 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:import SF_STD.lp Coin:solv Continuous objective value is 
> 1.25864e+08 - 1.83 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 .... Perturbing problem by 0.001% of 0.0057290012 - 
> largest nonzero change 0 ( 0%) - largest zero change 1.0005696e-05 0 
> Obj 1.2586431e+08 Primal inf 3829487.6 (43) Dual inf 636.78239 (1) 
> w.o. free dual inf (0) 200 Obj -1.0630244e+15 Primal inf 3.6043524e+12 
> (98) ... 272255 Obj 1.2586085e+08 Optimal - objective value 
> 1.2586431e+08 Optimal - objective value 1.2586431e+08 Result - Optimal 
> solution found Objective value: 125864307.31267282 Enumerated nodes: 0 
> Total iterations: 0 Time (CPU seconds): 3119.13 Time (Wallclock 
> seconds): 3119.13|
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> https://list.coin-or.org/mailman/listinfo/cbc


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20190518/c0dd2386/attachment.html>


More information about the Cbc mailing list