<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>
> Hello,<br>
> <br>
> Our company needs an LP solver for our optimization problem, and is<br>
> considering CLP as one of the alternatives. We have, however, some<br>
> special requirements, so we need to know whether CLP satisfies them
(or,<br>
> how big changes we would have to make in order to satisfy them). I
will<br>
> be grateful for any answers, tips, and/or comments:<br>
> <br>
> So, here is the list:<br>
> <br>
> - Is it possible to enforce certain basis changes violating<br>
> non-negativity of some basic variables, with a return phase afterwards<br>
> 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. 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>
> - Is it possible to specify, for each iteration, a subset of non-basic<br>
> variables, from which the new variable entering the basis is chosen?</font></tt>
<br>
<br><tt><font size=2>Easy to modify code. You would just derive a
class probably from ClpPrimalColumnSteepest</font></tt>
<br><tt><font size=2><br>
> - Is it possible to provide a procedure that decides whether a non-basic<br>
> 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>
> - Is it possible to restrict basis changes of piecewise linear variables<br>
> ? Example: a difference between a production and the demand is modelled<br>
> by variables y_1, y_2..., with increasing costs c_1, c_2,... Is it<br>
> possible to limit the corresponding basis changes e.g. only into a<br>
> positive direction, i.e. y_i can only be replaced by y_j, j>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. 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. However modifying Clp directly would give much
greater reliability and greater speed.</font></tt>
<br>
<br>
<br><tt><font size=2>John Forrest<br>
> <br>
> <br>
> Thanks a lot in advance.<br>
> <br>
> Regards,<br>
> <br>
> Michal Kaut<br>
> Tieto Enator<br>
> <br>
> <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>