<br><font size=2 face="sans-serif">Sebastian,</font>
<br>
<br><font size=2 face="sans-serif">With finite accuracy, it is possible
for Clp to think it is feasible when starting from one solution/basis and
not from another.</font>
<br>
<br><font size=2 face="sans-serif">Normally variables which are not in
the basis should be at a bound. &nbsp;However it is possible with your
program that you are introducing problems for yourself by adding and deleting
constraints as you are doing. &nbsp;If the initial basis is non-singular
then adding constraints will keep it non-singular as the slack on each
new constraint will be put in basis. &nbsp;However, when the constraints
are deleted some of the constraints will probably be tight. &nbsp;So you
will have more variables in basis than there are rows. &nbsp;On the next
pass some variables will be thrown out of basis and the basis may be singular.
&nbsp;If a variable is -1.0e-8 when in basis and leaves basis it may still
be set to -1.0e-8 which could lead to rounding errors.</font>
<br>
<br><font size=2 face="sans-serif">If you do an initial solve, save the
basis and column solution then you could set these back each time. &nbsp;This
may avoid the problem.</font>
<br>
<br><font size=2 face="sans-serif">John Forrest</font>
<br>
<br>
<br>
<table width=100%>
<tr>
<td><img src=cid:_1_0EDCC2040EDCBE1C006360068525763A>
<td width=100%>
<table width=100%>
<tr valign=top>
<td width=100%><font size=2 face="sans-serif"><b>[Clp] Accumulating rounding
errors cause solution to become &nbsp; &nbsp; &nbsp; &nbsp;infeasible</b></font></table>
<br>
<table width=100%>
<tr>
<td><font size=2 color=#e26200 face="sans-serif"><b>Sebastian Theophil
</b></font>
<td><font size=2 color=#8f8f8f face="sans-serif">to:</font>
<td><font size=2 face="sans-serif">clp</font>
<td>
<div align=right><font size=1 face="sans-serif">09/23/2009 01:19 PM</font></div></table>
<br>
<table width=100%>
<tr>
<td>
<table width=100%>
<tr>
<td><font size=2 color=#8f8f8f face="sans-serif">Sent by:</font>
<td width=100%><font size=2 color=#e26200 face="sans-serif"><b>clp-bounces@list.coin-or.org</b></font></table>
<br>
<td>
<div align=right></div></table>
<br></table>
<br>
<table width=100%>
<tr valign=top>
<td><img src=cid:_1_0EDF1DF80EDF1A3C006360098525763A>
<td width=100%>
<td>
<tr>
<td valign=top><font size=1 color=#8f8f8f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">&quot;Sebastian Theophil&quot; &lt;stheophil@think-cell.com&gt;</font>
<td valign=top>
<div align=right></div>
<tr valign=top>
<td>
<td>
<td>
<tr>
<td valign=top><font size=1 color=#8f8f8f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">&lt;clp@list.coin-or.org&gt;</font>
<td valign=top>
<tr valign=top>
<td>
<td>
<td>
<tr valign=top>
<td><font size=1 color=#8f8f8f face="sans-serif">Sent by:</font>
<td><font size=1 face="sans-serif">clp-bounces@list.coin-or.org</font>
<td></table>
<br>
<br>
<hr>
<br>
<br>
<br><tt><font size=2>Hi,<br>
<br>
in our application we solve a linear constraint system many times with<br>
little changes. Very roughly, it looks like this:<br>
<br>
OsiClpSolverInterface solver;<br>
<br>
AddConstraints(solver);<br>
<br>
while( something ) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
AddMoreConstraints( solver );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
solver.initialSolve() / resolve();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
...<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
RemoveConstraints( solver ); // undo all changes performed<br>
_inside_ loop<br>
}<br>
<br>
Now I have a reproducible scenario in which the problem becomes<br>
infeasible during the second run of the while loop but not in the first.<br>
I've seen that some primal solution values have nudged below the lower<br>
bound by just a little bit more than the tolerance (about 10e-7). <br>
<br>
The problem disappears if I save the problem to an mps file after<br>
AddConstraints(solver) and if I reinitialize the solver at the beginning<br>
of each while loop.<br>
<br>
How can I debug the problem? The sequence of solver operations during<br>
the first loop is very long, so it isn't practical to create a complete<br>
driver for the problem. Is there some magic setting that forces the<br>
solver to set variables to their precise lower bounds?<br>
<br>
Of course, I hesitate to just increase the feasibility tolerance unless<br>
someone recommends to do that for a reason :-) <br>
<br>
Thanks for the help<br>
Sebastian<br>
<br>
--<br>
Sebastian Theophil . stheophil@think-cell.com<br>
Software Engineer<br>
 <br>
think-cell Software GmbH . Invalidenstr. 34 . 10115 Berlin, Germany <br>
http://www.think-cell.com . phone +49-30-666473-10 . toll-free (US) +1-800-891-8091<br>
Directors: Dr. Markus Hannebauer, Dr. Arno Schoedl . Amtsgericht Berlin-Charlottenburg,
HRB 85229<br>
<br>
<br>
_______________________________________________<br>
Clp mailing list<br>
Clp@list.coin-or.org<br>
http://list.coin-or.org/mailman/listinfo/clp<br>
</font></tt>
<br>