<br><font size=2 face="sans-serif">Michal,</font>
<br>
<br><tt><font size=2>coin-lpsolver-bounces@list.coin-or.org wrote on 03/06/2006
10:19:31 AM:<br>
<br>
&gt; Hello,<br>
&gt; &nbsp;<br>
&gt; Our company needs an LP solver for our optimization problem, and is<br>
&gt; considering CLP as one of the alternatives. We have, however, some<br>
&gt; special requirements, so we need to know whether CLP satisfies them
(or,<br>
&gt; how big changes we would have to make in order to satisfy them). I
will<br>
&gt; be grateful for any answers, tips, and/or comments:<br>
&gt; <br>
&gt; So, here is the list:<br>
&gt; <br>
&gt; - Is it possible to enforce certain basis changes violating<br>
&gt; non-negativity of some basic variables, with a return phase afterwards<br>
&gt; that restores the non-negativity in a fast way with high priority?</font></tt>
<br>
<br><tt><font size=2>Not quite sure what you mean here. &nbsp;I would think
it should be handled at the modeling level by adding extra variables and
then using the same techniques as you outline below.</font></tt>
<br><tt><font size=2><br>
&gt; - Is it possible to specify, for each iteration, a subset of non-basic<br>
&gt; variables, from which the new variable entering the basis is chosen?</font></tt>
<br>
<br><tt><font size=2>Easy to modify code. &nbsp;You would just derive a
class probably from ClpPrimalColumnSteepest</font></tt>
<br><tt><font size=2><br>
&gt; - Is it possible to provide a procedure that decides whether a non-basic<br>
&gt; variable is wanted as a candidate for entering the basis or not?</font></tt>
<br>
<br><tt><font size=2>Same as above</font></tt>
<br><tt><font size=2><br>
&gt; - Is it possible to restrict basis changes of piecewise linear variables<br>
&gt; ? Example: a difference between a production and the demand is modelled<br>
&gt; by variables y_1, y_2..., with increasing costs c_1, c_2,... Is it<br>
&gt; possible to limit the corresponding basis changes e.g. only into a<br>
&gt; positive direction, i.e. y_i can only be replaced by y_j, j&gt;i ?</font></tt>
<br>
<br><tt><font size=2>A bit uglier - assuming it is modeled correctly (so
that it is feasible to replace) then it is easy to do but would involve
small changes to ClpSimplexPrimal::primalRow. &nbsp;If of more general
use then a hook could be provided so base code would not have to be modified.</font></tt>
<br>
<br><tt><font size=2>You could also look at some of the OsiSolverInterface
functions and the example in OsiClpSolverInterfaceTest.cpp (search for
solve an lp by hand. &nbsp;However modifying Clp directly would give much
greater reliability and greater speed.</font></tt>
<br>
<br>
<br><tt><font size=2>John Forrest<br>
&gt; <br>
&gt; <br>
&gt; Thanks a lot in advance.<br>
&gt; &nbsp;<br>
&gt; Regards,<br>
&gt; &nbsp;<br>
&gt; Michal Kaut<br>
&gt; Tieto Enator<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Coin-lpsolver mailing list<br>
&gt; Coin-lpsolver@list.coin-or.org<br>
&gt; http://list.coin-or.org/mailman/listinfo/coin-lpsolver<br>
</font></tt>