<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>&quot;Ariel Landau&quot;
&lt;ariel1127@gmail.com&gt;</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 &nbsp; &nbsp; &nbsp; &nbsp;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 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;switch(getColumnStatus(iColumn))
{<br>
6406<br>
6407 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case basic:<br>
6408 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay=0;<br>
6409 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case isFixed:<br>
6410 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
6411 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case isFree: <br>
6412 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case superBasic:<br>
6413 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (djValue&lt;-dualTolerance)<br>
6414 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = 1;<br>
6415 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (djValue&gt;dualTolerance)<br>
6416 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = -1;<br>
6417 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else <br>
6418 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ thisWay =0; abort();} &lt;---------------
EXECUTION ABORTS HERE WITH djValue == 0 &amp;&amp; dualTolerance == 1e-07<br>
6419 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
6420 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case atUpperBound: <br>
6421 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (djValue&gt;dualTolerance)<br>
6422 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ thisWay =-1; abort();}<br>
6423 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (djValue&lt;-dualTolerance)<br>
6424 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = -3;<br>
6425 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br>
6426 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = -2; <br>
6427 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
6428 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;case atLowerBound:<br>
6429 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (djValue&lt;-dualTolerance)<br>
6430 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ thisWay =1; abort();}<br>
6431 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if (djValue&gt;dualTolerance)<br>
6432 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = 3;<br>
6433 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br>
6434 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;thisWay = 2;<br>
6435 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br>
6436 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<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>