<br><font size=2 face="sans-serif">George,</font>
<br>
<br><font size=2 face="sans-serif">Difficult to analyze unless you can
send me code that will duplicate problem.</font>
<br>
<br><font size=2 face="sans-serif">But looking at code the problem status
is set to -1 in 15 relevant places but after a quick look only one looks
as if it would give this problem. &nbsp;To check for the most likely set
modelPtr_-&gt;setLogLevel(63) and see if &quot;looks like trouble&quot;
&nbsp;occurs. &nbsp;If it does (from ClpSimplexDual.cpp:4433) then it means
what it says - in this case dual finished with slight negative reduced
costs and primal took too long to clear up. &nbsp;</font>
<br>
<br><font size=2 face="sans-serif">If this is the case then I need to improve
code or tell the user the problem is not well posed. &nbsp;If you have
logLevel at 63 then you will see scaling information - if some initial
elements are very small then you may wish to take out small elements from
your cuts (and relax rhs to compensate). &nbsp;Another possibility to try
is to set the hint to use primal rather than dual in the second resolve.</font>
<br>
<br><font size=2 face="sans-serif">As I said I can only throw out a few
suggestions without being able to duplicate problem.</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>Georges Kolomvos &lt;Kolomvos.Georgios@lgi.ecp.fr&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/01/2006 10:14 AM</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">coin-discuss@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-discuss] OsiClpSolverInterface::isAbandoned()</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>Hi folks,<br>
<br>
I'm using COIN since 2years now, but i still consider myself a newbie.
I get<br>
straight to the problem: I'm solving many LPs in a row with the Clp solver
using<br>
Osi to construct them from scratch. Although they're all supposed to be<br>
solvable, some of them are unexpectedly abandoned. Searching where the
violent<br>
isAbandoned() signal comes from, i realized that isAbandoned() turns true
due to<br>
the &quot;status_=-1&quot; of my LP which seems to be peculiar. I append
the following<br>
lines from OsiClpSolverInterface.cpp (updated a week ago):<br>
bool OsiClpSolverInterface::isAbandoned() const<br>
{<br>
 &nbsp;// not sure about -1 (should not happen) &nbsp;<br>
 &nbsp;return (modelPtr_-&gt;status()==4||modelPtr_-&gt;status()==-1);<br>
}<br>
<br>
Let me describe you the context of the implementation i'm working on, which
may<br>
give a clue where the problem might come from. I'm currently coding some
variant<br>
of the &quot;Nested Benders Decomposition&quot; method widely known in
Stochastic<br>
Programming. The method requires solving at every iteration many LPs (some<br>
hundreds of thousands, that are only in a small part identical to each
other)<br>
which are modified at every iteration by appending new cuts (outer linearization<br>
s of the cost-to-go function) and changing the RHS. I've tried two ways
of<br>
representing these LPs and by the way any suggestions about what should
be more<br>
efficient/proper are welcome : (a) I created different OsiClpSolverInterfaces<br>
(one per LP) and (b) I created only one OsiClpSolverInterface but many<br>
OsiRowCuts (one per LP). I've experienced the described &quot;bug&quot;
in both<br>
representations, but i'll focus on the second one. At a given iteration,
say<br>
&quot;i&quot;, i treat, say the &quot;n&quot; LP; i restore the problem
from the previous &quot;n-1&quot; LP<br>
(the part which is identical), i applyRowCuts(...) &nbsp;corresponding
to that LP, i<br>
proceed to any necessary modifications (in the objective and the RHS) and
i<br>
resolve(). Once i'm done with that LP, i deleteRows(...) corrsponding to
the<br>
cuts i applied and i pass to the next &quot;n+1&quot; LP. When all LPs
are treated, i go<br>
on to the &quot;i+1&quot; iteration.<br>
<br>
During this process, typically after the 2nd itération, i come across a<br>
progressively larger number of abandoned LPs. I should note that if i instruct<br>
the program to retry once more -i.e to resolve() the LP once more-, it<br>
*sometimes* returns the expected isProvenOptimal() signal. But as the iterations<br>
go by, this instruction seems to be of no use, as it keeps on belieiving
that<br>
the LP should be abandoned. If i export the model of such an abandoned
LP in mps<br>
format, the &quot;interactive optimizer&quot; clp finds the optimal solution.<br>
<br>
Thanks a lot for your time,<br>
<br>
Cheers, <br>
<br>
George<br>
<br>
----------------------------- <br>
 &nbsp;<br>
Georges Kolomvos &nbsp;<br>
Laboratoire Génie Industriel &nbsp;<br>
Ecole Centrale Paris &nbsp;<br>
 &nbsp;<br>
e-mail: kolomvos@lgi.ecp.fr &nbsp;<br>
Tel.: +33(0)689088790 &nbsp;<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>