[Cbc] Options to prevent CBC from "stalling" in presolve / root node processing

John Forrest john.forrest at fastercoin.com
Fri Jan 25 11:06:09 EST 2013


Troy,

Yes.  I could have put an #if/endif around entire loop - it was only 
meant as a very very temporary fix for Jean-Paul (or others with lots 
and lots of such cuts).

Basically on his problem >95% of time was being spent seeing if cut was 
duplicate!

I have now updated Cgl/trunk to do a better job of duplicates. Affects 
CglPreProcess.?pp

John
On 25/01/13 15:23, Daniels, Troy (US SSA) wrote:
>
>> -----Original Message-----
>> From: cbc-bounces at list.coin-or.org [mailto:cbc-bounces at list.coin-or.org]
>> On Behalf Of John Forrest
>> Sent: Friday, January 25, 2013 9:40 AM
>> To: cbc at list.coin-or.org
>> Subject: Re: [Cbc] Options to prevent CBC from "stalling" in presolve / root
>> node processing
>>
>> Jean-Paul,
>>
>> The problem is due to a rather naive implementation of
>> insertCutIfNotDuplicate used in preprocessing.  I will modify Cgl trunk code -
>> maybe to use a version of my code in CglProbing.  That will take a day or so.
>>
>> Meanwhile change line 350 of OsiCuts.cpp from
>>
>>    for ( int i =0; i<numberRowCuts;i++) {
>>
>> to
>>
>>    for ( int i =0; i<numberRowCuts-numberRowCuts;i++) {
>>
> Is that what you meant to write?  Unless I'm misreading something, that is equivalent to
>
> for ( int i =0; i<0;i++) {
>
> which is also equivalent to
>
> if (0) {
>
> Troy
>
>> this will insert lots of duplicates but that will be sorted out at end of
>> preprocessing.
>>
>> You will find a slight difference in speed!
>>
>> John
>> _______________________________________________
>> Cbc mailing list
>> Cbc at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/cbc
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/cbc
>
>



More information about the Cbc mailing list