<br><font size=2 face="sans-serif">Stefan,</font>
<br>
<br><font size=2 face="sans-serif">I will correspond with you directly
as it is getting technical (and maybe boring to coin-lpsolver).</font>
<br>
<br><font size=2 face="sans-serif">The enableSimplexInterface was an attempt
to let users build their own algorithms in the way you are doing but it
gets very complex and maybe was not such a good idea.</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>Stefan Vigerske &lt;stefan@mathematik.hu-berlin.de&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/10/2006 03:42 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">Re: [Coin-lpsolver] optimality of a
dual solution after rhs change</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>Hi,<br>
<br>
&gt; As I thought checkSolution was not doing quite what you wanted. &nbsp;It
left<br>
&gt; the slack variable super basic at it's original value so complementarity<br>
&gt; was lost. &nbsp;What you wanted was for all non-basic variables to
be at<br>
&gt; indicated bound and then the values of the basic variables computed.<br>
&gt;<br>
&gt; I have modified checkSolution() to checkSolution(int setAtBounds=0).
&nbsp;This<br>
&gt; means that default behavior is same but if setAtBounds is 1 then values<br>
&gt; will be recomputed if any primal values moved while ==2 will always<br>
&gt; recompute. &nbsp;So try checkBounds(1) and see if that helps.<br>
<br>
Thanks a lot for the effort. Yes, now the dual infeasiblity is vanished
after <br>
a checkBounds(1). That's great. :-)<br>
But actually not all I needed. I also would like to know if this dual point
is <br>
optimal. I've tried several ways now to force Clp to make just one step
and <br>
to check if the dual changes by that.<br>
1. When I call ClpSimplex::dualPivotResult() it ends in an abort in <br>
ClpSimplexDual::pivotResult().<br>
2. When I switch off the scaling by ClpModel::scaling(0) and call <br>
ClpSimplex::pivot(), then this calls ClpSimplex::unpack() in line 6474,
this <br>
calls ClpPackedMatrix::unpack() in line 2441, this calls <br>
CoinIndexedVector::add() in line 2114, which crashes somehow.<br>
3. When I set the iteration limit to 1, and make a resolve, I can see no
<br>
change in the primal infeasiblities or dual value. Increasing the limit
to 5 <br>
or 10 does not change anything too. Not limiting it, so doing a complete
<br>
resolve, shows that he requires around 40-50 iterations.<br>
<br>
Is there any method to see if he needs to make a change in the dualBasis
to <br>
improve optimality of the dual solution?<br>
<br>
Thanks a lot of the help,<br>
I hope it don't take too much time. If so, I might be able to live with
a <br>
complete presolve and comparision of the dual values afterwards :-),<br>
Stefan<br>
<br>
-- <br>
Stefan Vigerske<br>
Humboldt University Berlin, Numerical Mathematics<br>
http://www.math.hu-berlin.de/~stefan<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>