[Cbc] [CBC] gomory makes problem infeasible (even in version 2.9.5)

John Forrest john.forrest at fastercoin.com
Wed Aug 12 10:26:54 EDT 2015


Marco,

The bad cut looks like -

cut has violation of 0.666667 value 1.66667
  [9,0.333333] [11,-0.333333] [15,-3.33333] [4,0.666667] [8,-2] 
[12,0.666667] [13,0.666667] [14,0.666667] [17,0.666667] <= -18

Of course the numbers are not exactly that and four entries are for 
continuous variables.  If they had all been integral then I think cut 
would have been cleaned up.  As it is the cut made the problem 
infeasible by 4e-7.

If there had been more variables in cut and some non integer then the 
cut would have been relaxed a tiny bit.

As I don't want to make sudden changes, I have changed the code a bit so 
that you can define the number of variables in cut (with some non 
integer) when the cut will be relaxed a bit.

To do this you have to configure with -DGOMORY_RELAX_NUMBER=n. (n==5) 
works for you.  This only affects cuts with non integer variables.

John

On 10/08/15 07:50, mg wrote:
> Sorry, here's the missing attachment
>
> Regards,
> Marco
>
> 2015-07-28 15:36 GMT+02:00 John Forrest <john.forrest at fastercoin.com 
> <mailto:john.forrest at fastercoin.com>>:
>
>     Attached????????????
>
>
>     On 24/07/15 08:29, mg wrote:
>>     Hi All,
>>     if I remember correctly in version 2.9.4, gomory cuts generator
>>     started to give some problems causing false infeasibilities. In
>>     theory, version 2.9.5 contains some fixes for this issue, but I
>>     think it's not completely corrected since I've found a model that
>>     appears infeasible unless you disable gomory cuts.
>>
>>     Attached you can find the LP file. Please note that I'm running
>>     this model through callCbc(), and you need to disable heuristics
>>     otherwise DiveCoefficient will find a solution before gomory cuts
>>     "too much"..
>>
>>     Here's a piece of code to reproduce the problem :
>>
>>     OsiClpSolverInterface solver;
>>     CbcModel model(solver);
>>     model.solver()->readLp("infeas.lp");
>>     std::string args("-heur off -solve"); // using "-gomory off
>>     -solve" it works
>>     callCbc(args, model);
>>
>>     Thanks in advance,
>>     Marco
>>
>>
>>     _______________________________________________
>>     Cbc mailing list
>>     Cbc at list.coin-or.org  <mailto:Cbc at list.coin-or.org>
>>     http://list.coin-or.org/mailman/listinfo/cbc
>
>
>     _______________________________________________
>     Cbc mailing list
>     Cbc at list.coin-or.org <mailto:Cbc at list.coin-or.org>
>     http://list.coin-or.org/mailman/listinfo/cbc
>
>

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


More information about the Cbc mailing list