<br><font size=2 face="sans-serif">Francois,</font>
<br>
<br><font size=2 face="sans-serif">I will look at it next week - maybe
just a tolerance issue.</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>Francois Margot &lt;fmargot@andrew.cmu.edu&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">04/10/2006 10:19 AM</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] Precision for Clp solution</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2><br>
What precision can we expect for the results obtained from Clp, using<br>
Lapack and Blas libraries on a Linux machine? Is 10e-3 too much to<br>
expect? (I just updated my copy of COIN this morning.)<br>
<br>
I am solving an LP (admittedly with a numerically suspect formulation,<br>
with some coefficients smaller than 10e-10) using:<br>
<br>
 &nbsp; OsiClpSolverInterface *clp = new OsiClpSolverInterface;<br>
 &nbsp; clp-&gt;readMps(&quot;bc1.mps&quot;);<br>
 &nbsp; clp-&gt;initialSolve();<br>
<br>
 &nbsp; const double *lb = clp-&gt;getColLower();<br>
 &nbsp; const double *ub = clp-&gt;getColUpper();<br>
 &nbsp; const double *rc = clp-&gt;getReducedCost();<br>
<br>
 &nbsp; int ncol = clp-&gt;getNumCols();<br>
 &nbsp; int nrow = clp-&gt;getNumRows();<br>
<br>
 &nbsp; for(int i=0; i&lt;ncol; i++) {<br>
 &nbsp; &nbsp; if((rc[i] &gt; 1e-4) &amp;&amp; (ub[i] - lb[i] &gt; 1e-4)
&amp;&amp; (x[i] &gt; lb[i] + 1e-4)) {<br>
 &nbsp; &nbsp; &nbsp; printf(&quot;### ERROR: var: %d &nbsp;rc: %f &nbsp;
lb: %f &nbsp;ub: %f &nbsp;x: %f\n&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; i, rc[i], lb[i], ub[i], x[i]);<br>
 &nbsp; &nbsp; &nbsp; exit(1);<br>
 &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; if((rc[i] &lt; -1e-4) &amp;&amp; (ub[i] - lb[i] &gt; 1e-4)
&amp;&amp; (x[i] &lt; ub[i] - 1e-4)) {<br>
 &nbsp; &nbsp; &nbsp; printf(&quot;### ERROR: var: %d &nbsp;rc: %f &nbsp;
lb: %f &nbsp;ub: %f &nbsp;x: %f\n&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; i, rc[i], lb[i], ub[i], x[i]);<br>
 &nbsp; &nbsp; &nbsp; exit(1);<br>
 &nbsp; &nbsp; }<br>
 &nbsp; }<br>
<br>
<br>
I get:<br>
<br>
### ERROR: var: 8 &nbsp;rc: -0.002807 &nbsp; lb: 0.000000 &nbsp;ub: 10.000000
&nbsp;x: 0.000000<br>
<br>
Regardless of the initial formulation, the precision of the result seems<br>
to be at most 10e-2. The mps file bc1.mps is available from<br>
<br>
http://plato.asu.edu/ftp/milp/<br>
<br>
Francois<br>
<br>
_______________________________________________<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>