[Cbc] [CBC] Solving partially fixed MIP problem iteratively do not converge to best
John Forrest
john.forrest at fastercoin.com
Thu Feb 27 04:42:04 EST 2014
Marco,
On my first try, I was unable to reproduce the problem. Trying slightly
different versions and compiler optimization settings I could. However
by playing around I could also get a single solve to fail to get correct
answer.
I think I have tracked down problem - in a cut generator - CglGomory.
In some situations it was producing a bad cut - a long cut with small
elements.
So -
a) try switching off Gomory cuts to see if it then gets correct answer.
b) use modified CglGomory.cpp which is now in Cbc/stable
Hope that fixes problem.
John Forrest
On 26/02/14 11:20, mg wrote:
> Hi John,
> thanks for the fast reply.
>
> Attached you can find a zip containing a piece of code that reproduce
> the problem.
> Basically int the main function I load the problem from model.lp file
> then apply the strategy described in the previous mail.
>
> The main assumptions for this strategy are:
>
> - I know a set of variables (variables2workon array in the code) that
> I can set to 1 to get a feasible (even if not really good) solution.
> - Then, iteratively I try to set one of those variable to zero and
> resolve the forced problem until I don't get any further improvement.
> - Since those variables are in the objective function with a quite
> important cost, if we reduce the number of ones in this set, we arrive
> really close to the optimum.
>
>
> If we solve it fully (i.e not iteratively, by setting fullsolve=true
> in the code) we get an obj=381.86216, while with the iterative
> approach we get obj=383.118855
>
> I hope I have been clear enough, anyway the code is commented and
> should be pretty self-explanatory.
>
> The version of CBC is the release 2.8.9.
>
> Thanks,
>
> Marco
>
>
> 2014-02-26 12:10 GMT+01:00 mg <giunto.cardanico at gmail.com
> <mailto:giunto.cardanico at gmail.com>>:
>
> Hi John,
> thanks for the fast reply.
>
> Attached you can find a small piece of code that reproduce the
> problem.
> Basically int the main function I load the problem from model.lp
> file then apply the strategy described in the previous mail.
>
> The main assumptions for this strategy are:
>
> - I know a set of variables (variables2workon array in the code)
> that I can set to 1 to get a feasible (even if not really good)
> solution.
> - Then, iteratively I try to set one of those variable to zero and
> resolve the forced problem until I don't get any further improvement.
> - Since those variables are in the objective function with a quite
> important cost, if we reduce the number of ones in this set, we
> arrive really close to the optimum.
>
>
> If we solve it fully (i.e not iteratively, by setting
> fullsolve=true in the code) we get an obj=381.86216, while with
> the iterative approach we get obj=383.118855
>
> I hope I have been clear enough, anyway the code is commented and
> should be pretty self-explanatory.
>
> Thanks,
>
> Marco
>
>
>
>
> Anyway, the code should be commented enough.
>
>
>
>
>
>
>
> 2014-02-25 16:51 GMT+01:00 John Forrest
> <john.forrest at fastercoin.com <mailto:john.forrest at fastercoin.com>>:
>
> Marco,
>
>
> On 25/02/14 14:22, mg wrote:
>>
>>
>> I suspect that restoring only the column bounds between each
>> intermediate solve is not enough to guarantee that the
>> problem remains equal to the original...
>> should I also remove the cuts added during the intermediate
>> steps ?
>
> Any cuts generated will be invalid - but they may be removed
> anyway.
>> Something else ?
> Very likely.
>
> I can try and code something to reproduce problem - if you
> have some code you can send me then I would be more likely to
> get around to checking things out.
>
>> Thanks in advance,
>> Marco
>>
> John Forrest
>
>
> _______________________________________________
> 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/20140227/d111c984/attachment.html>
More information about the Cbc
mailing list