<br><font size=2 face="sans-serif">Ariel,</font>
<br>
<br><font size=2 face="sans-serif">Vernon Austel has looked into this and
determined that it does no harm taking out the abort() and your submitted
problem solves.</font>
<br>
<br><font size=2 face="sans-serif">So, as simple is good, the aborts have
vanished.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>"Ariel Landau"
<ariel1127@gmail.com></b> </font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">03/01/2007 05:21 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">coin-lpsolver@list.coin-or.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">[Coin-lpsolver] ClpSimplex::crash ()
aborts on an MPS with free variables</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=3>Hello!<br>
<br>
I've recently come across an MPS file that causes ClpSimplex::crash() to
call abort ().<br>
The exact place of the abort call is shown in the following excerpt from
ClpSimplex.cpp (with row numbers as of March 1st) <br>
<br>
6405 switch(getColumnStatus(iColumn))
{<br>
6406<br>
6407 case basic:<br>
6408 thisWay=0;<br>
6409 case isFixed:<br>
6410 break;<br>
6411 case isFree: <br>
6412 case superBasic:<br>
6413 if (djValue<-dualTolerance)<br>
6414 thisWay = 1;<br>
6415 else if (djValue>dualTolerance)<br>
6416 thisWay = -1;<br>
6417 else <br>
6418 { thisWay =0; abort();} <---------------
EXECUTION ABORTS HERE WITH djValue == 0 && dualTolerance == 1e-07<br>
6419 break;
<br>
6420 case atUpperBound: <br>
6421 if (djValue>dualTolerance)<br>
6422 { thisWay =-1; abort();}<br>
6423 else if (djValue<-dualTolerance)<br>
6424 thisWay = -3;<br>
6425 else<br>
6426 thisWay = -2; <br>
6427 break;<br>
6428 case atLowerBound:<br>
6429 if (djValue<-dualTolerance)<br>
6430 { thisWay =1; abort();}<br>
6431 else if (djValue>dualTolerance)<br>
6432 thisWay = 3;<br>
6433 else<br>
6434 thisWay = 2;<br>
6435 break;<br>
6436 }<br>
<br>
For anyone that wants to take a look, my MPS is available online at </font><a href=http://ar.geocities.com/ariellandau/test_mps.zip><font size=3 color=blue><u>http://ar.geocities.com/ariellandau/test_mps.zip</u></font></a><font size=3><br>
As it might be expected from the code excerpt above, my MPS does indeed
contain a bunch of FR variable bounds.<br>
And if I replace these FR bounds by very large negative lower bounds (
e.g., larger in magnitude than any of my negative variables at the optimal
solution) the abort disappears.<br>
<br>
Any insight will be much appreciated.<br>
<br>
Sincerely,<br>
<br>
Ariel Landau<br>
</font><tt><font size=2>_______________________________________________<br>
Coin-lpsolver mailing list<br>
Coin-lpsolver@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
</font></tt>
<br>