[Cbc] Infeasible problem (bad cut)

John Forrest john.forrest at fastercoin.com
Fri Oct 31 06:48:59 EDT 2014


By changing compilers, I managed to reproduce Yves's infeasible problem.

It was due to some loss of accuracy in Gomory cuts giving a cut

-12.1428746880448486 >= -4.25000784432430034*x0 -12.1428733623240479*x1 
-12.1428733623240479*x2 -12.1428733623240479*x3 -11.1428733623240479*x4

The optimal solution had x1 at 1.0 and the others at 0.0 so the cut was 
infeasible by 1.0e-6.

Now if there had been continuous variables in that cut - or even two 
nonzero integer variables, then the code would probably be OK - but with 
just one fixed to 1.0 it is going to say infeasible.

It seems to me that the answer is to test the ratios of elements in cut 
to rhs of cut and if they are very close to integral but just the wrong 
side of rhs - then make them exact.  So in this case three elements go 
exactly to the rhs value.

It fixes problem and on some very limited tests reduces the time taken - 
maybe because the constraint is "cleaner".

I may modify CglGomory in trunk, but I thought I would see if people 
agreed with my analysis.

John Forrest

I also found and fixed Yves' segFault.


More information about the Cbc mailing list