[Cbc] [CBC] Preprocess causing infeasibility

John Forrest john.forrest at fastercoin.com
Tue Sep 29 10:44:09 EDT 2015


Marco,

Yes - I don't think other presolve functions change bounds in same way.

John

On 29/09/15 14:57, mg wrote:
> Ok, so if I understood correctly you've only changed 
> CoinPresolveDoubleton.cpp, am I right ?
>
> Thanks a lot for the quick fix !
>
> Marco
>
> 2015-09-29 15:41 GMT+02:00 John Forrest <john.forrest at fastercoin.com 
> <mailto:john.forrest at fastercoin.com>>:
>
>     Marco,
>
>     Should be fixed.
>
>     The dual code correctly thought it should push a variable all the
>     way to its upper bound.  Unhappily the upper bound was 1.3.  Then
>     a later part of presolve worked out that that was infeasible for
>     an integer variable.
>
>     The error occurred in CoinPresolveDoubleton which changed bounds
>     from 0,infinity to 0,1.3 without checking whether it was integer. 
>     I have corrected code so bounds would be 0,1.
>
>     John Forrest
>
>
>     On 28/09/15 23:46, Haroldo Gambini Santos wrote:
>>     Hi Marco,
>>
>>     I found out that the problem is related to a presolving procedure
>>     which tries to fix bounds using dual information.
>>
>>     A /quick and dirty/ fix is to change in
>>
>>     Osi/src/OsiPresolve.cpp   line    988
>>
>>     if (dual) {
>>     to
>>     if ((dual)&&0) {
>>
>>     to temporarily disable this processing...
>>
>>     Hoping that a better fix comes soon,
>>
>>     Cheers,
>>
>>     Haroldo
>>
>>     On 28-09-2015 06:22, mg wrote:
>>>     Hi all,
>>>     I've found a case where preprocess says the problem is
>>>     infeasible, but if I turn preprocess off, the problem is
>>>     correctly solved.
>>>
>>>     Attached you can find the LP file (m3.lp). To reproduce the
>>>     problem you can use the following code (I use callCbc):
>>>
>>>     OsiClpSolverInterface solver;
>>>     CbcModel model(solver);
>>>     model.solver()->readLp("m3.lp");
>>>     std::string args("-heur off -cuts off -solve");
>>>     // using these arguments instead it works
>>>     // std::string args("-heur off -cuts off -preprocess off -solve");
>>>     callCbc(args, model);
>>>
>>>     The problem happens in both 2.9.5 releaseand 2.9.6 release versions.
>>>
>>>     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
>>
>>     -- 
>>     ==================================================
>>     Haroldo Gambini Santos
>>     D.Sc, Computer Science
>>     Universidade Federal de Ouro Preto
>>     http://www.decom.ufop.br/haroldo/
>>
>>
>>     _______________________________________________
>>     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/20150929/4f59455d/attachment.html>


More information about the Cbc mailing list