<br><font size=2 face="sans-serif">Jan-Willem,</font>
<br>
<br><font size=2 face="sans-serif">isDualObjectiveLimitReached is more
complex. &nbsp;It is possible that the current coding is incorrect but
it may break people's code if it is changed.</font>
<br>
<br><font size=2 face="sans-serif">Clp returns the same primal infeasible
code when it is primal infeasible and when it is infeasible because dual
limit exceeded. &nbsp;When that code was written there was no secondary
status to tell the difference. &nbsp;The primal version checks to see if
an objective limit was set - if not it returns false. &nbsp;At present
the dual version always returns true if primal infeasible, even if the
dual limit has not been set.</font>
<br>
<br><font size=2 face="sans-serif">I am quite happy to make changes but
I am worried that people may just be doing a single test on dual limit
rather than a test on dual limit and a test for primal infeasible, in which
case their code will break.</font>
<br>
<br><font size=2 face="sans-serif">I will sit back for a day or two and
see if I get any comments.</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;Jan-Willem Goossens&quot;
&lt;j.goossens@t75.nl&gt;</b> </font>
<br><font size=1 face="sans-serif">Sent by: coin-discuss-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">03/14/2006 12:04 PM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
Discussions about open source software for Operations Research &nbsp; &nbsp;
&nbsp; &nbsp;&lt;coin-discuss@list.coin-or.org&gt;</font></div></table>
<br>
<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">&quot;Discussions about open source
software for Operations Research&quot; &lt;coin-discuss@list.coin-or.org&gt;</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-discuss] osiclpsolver optimal
for infeasible problem?</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>Hi,<br>
<br>
John, thanks for the immediate fix!<br>
<br>
This little problem is part of my own unit tests, which I only just<br>
implemented. I 'borrowed' the example from<br>
http://www.mosek.com/products/3/tools/doc/html/tools/node13.html#sec-priduainf-expdinf<br>
<br>
I tested the new sources, and, indeed, the problem doesnt show up as<br>
IsProvenOptimal anymore.<br>
<br>
Now, however, next to IsProvenPrimalInfeasible, also<br>
IsDualObjectiveLimitReached is &quot;true&quot;. Since the dual of the
problem is<br>
infeasible, this doesnt seem right.<br>
<br>
<br>
Jan-Willem<br>
<br>
<br>
&gt; Rather embarrassing.<br>
&gt;<br>
&gt; The problem started on this tiny example because it is also unbounded
on<br>
&gt; x2 but it could have happened on other problems - the code somehow
forgot<br>
&gt; that it was modifying an infeasibility weight and thought it had got
in a<br>
&gt; loop! &nbsp;Even then it should not said optimal.<br>
&gt;<br>
&gt; I should have it fixed now. &nbsp;Jan-Willem, I hope that fixes your
problems<br>
&gt; and thanks for taking the time to create such a small example.<br>
&gt;<br>
&gt; John<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &quot;Jan-Willem Goossens&quot; &lt;j.goossens@t75.nl&gt;<br>
&gt; Sent by: coin-discuss-bounces@list.coin-or.org<br>
&gt; 03/13/2006 10:43 AM<br>
&gt; Please respond to<br>
&gt; Discussions about open source software for Operations Research<br>
&gt; &lt;coin-discuss@list.coin-or.org&gt;<br>
&gt;<br>
&gt;<br>
&gt; To<br>
&gt; coin-discuss@list.coin-or.org<br>
&gt; cc<br>
&gt;<br>
&gt; Subject<br>
&gt; [Coin-discuss] osiclpsolver optimal for infeasible problem?<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Hi all,<br>
&gt;<br>
&gt; I tried to enter the following simple problem through the<br>
&gt; OsiClpSolverInterface:<br>
&gt;<br>
&gt; min &nbsp;x1 - x2<br>
&gt; s.t. x1 == -1<br>
&gt;<br>
&gt; x1 &gt;= 0, x2 &gt;= 0<br>
&gt;<br>
&gt; This problem is primal infeasible and also dual infeasible.<br>
&gt; I enter it as follows<br>
&gt;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OsiClpSolverInterface
*s = new OsiClpSolverInterface();<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;double
inf = s-&gt;getInfinity();<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinPackedVector
empty;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s-&gt;addCol(empty,
0.0, inf, 1.0);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s-&gt;addCol(empty,
0.0, inf, &nbsp;-1.0);<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CoinPackedVector
r0;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;r0.insert(0,
1);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s-&gt;addRow(r0,
-1.0, -1.0);<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s-&gt;setObjSense(1);<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s-&gt;initialSolve();<br>
&gt;<br>
&gt; So the &quot;x1 == -1&quot; is entered as -1 &lt;= x1 &lt;= -1.<br>
&gt;<br>
&gt; The output is as follows:<br>
&gt;<br>
&gt; Coin0508I Presolve thinks problem is unbounded<br>
&gt; Clp3003W Analysis indicates model infeasible or unbounded<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0006I 0 &nbsp;Obj 0 Primal inf 1 (1) Dual inf 1 (1)<br>
&gt; Clp0032I Optimal objective 0 - 0 iterations time 0.052<br>
&gt;<br>
&gt; The s-&gt;getColSolution() shows x1 = x2 = 0.0, and of all the &quot;s-&gt;is...()&quot;<br>
&gt; functions, only s-&gt;isProvenOptimal() returns true.<br>
&gt;<br>
&gt;<br>
&gt; Not unimportantly, I'm running this using Visual Studio .NET 2003,
so<br>
&gt; there might be something there.<br>
&gt; I'm wondering if others get the same results?<br>
&gt; Or am I missing something?<br>
&gt;<br>
&gt; Regards,<br>
&gt;<br>
&gt; Jan-Willem Goossens<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Coin-discuss mailing list<br>
&gt; Coin-discuss@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
&gt;<br>
<br>
_______________________________________________<br>
Coin-discuss mailing list<br>
Coin-discuss@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/coin-discuss<br>
</font></tt>
<br>