[Coin-discuss] Cbc crashes when solving this mps file

Esben Mose Hansen esben at ange.dk
Sat Mar 3 05:23:18 EST 2007


On Thursday March 1 2007 23:20, John J Forrest wrote:
> Esben,
>
> Code was trying to recreate original row indices for processed problem -
> but CglPreProcess had added rows rather than just reducing - don't really
> know why error hadn't happened before.  Row indices were never used - it
> was just a by-product of getting original column indices - which were
> correct.
>
> So I have just moved some code around so just column indices computed.
> Should be OK now.

Thank you. Now cbc can solve the problem, but my "custom" solver (which is 
mostly a copy of cbc) attempts to save the original column and row names 
after preprocessing. However, now when calling 

process.originalRows()

CglPreprocess crashes in createOriginalIndices() in this line

        originalRow_[i]=originalRows[originalRow_[i]];

This happens on the last pass for me (iPass has decreased all the way to 0).

No wonder, since originalRow_[i] is huge and negative. It seems to be the size 
of the array since the precedent indices (like originalRow_[i-1]) seems 
reasonble, but the following are off.

I'll continue to see if I can spot what goes wrong. However, much of these 
problems could be mitigated and the code made much simpler if you used the 
std::vector<double> instead of raw pointers. I'd urge you to consider using 
the STL some more :)

Again, thanks for your invaluable help :)

-- 
regards, Esben

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the Coin-discuss mailing list