[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