<br><font size=2 face="sans-serif">Justin,</font>
<br>
<br><font size=2 face="sans-serif">Preprocessing can be applied to continuous
LPs or ones with some integers. &nbsp;Let's take the continuous case first.
&nbsp;The presolve for Clp was written first, but then it could be useful
for other solvers so an OsiSolverInterface interface to the presolve was
written. &nbsp;To make this work the guts of the presolve code was moved
to the Coin directory - files starting CoinPresolve. &nbsp;The ClpPresolve
and OsiPresolve code uses CoinPresolve.... code.</font>
<br>
<br><font size=2 face="sans-serif">When you have integer variables then
you can apply the continuous preprocessing techniques but you also want
to do more. &nbsp;The three techniques that come to mind.</font>
<br>
<br><font size=2 face="sans-serif">1) For problems with unit coefficients
and unit rhs CglDuplicateRow finds duplicate rows and more importantly
rows which are subsets of others as then variables can be fixed.</font>
<br><font size=2 face="sans-serif">2) If x -&gt; 1 means y -&gt; 0 AND
x-&gt;0 means y-&gt;1 then we can substitute for x or y. &nbsp;This may
be detected by CglProbing</font>
<br><font size=2 face="sans-serif">3) If x-&gt; makes a constraint slack
then a coefficient in that row can be strengthened. &nbsp;This is also
done by CglProbing.</font>
<br>
<br><font size=2 face="sans-serif">Because Cgl functions are used the controlling
function was put there as well - hence CglPreProcess.</font>
<br>
<br><font size=2 face="sans-serif">Overall more work is needed on the CglPreProcess
part than on the continuous presolve part but contributions to either would
be very welcome.</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>jtyates@buffalo.edu</b>
</font>
<br><font size=1 face="sans-serif">Sent by: coin-lpsolver-bounces@list.coin-or.org</font>
<p><font size=1 face="sans-serif">02/24/2006 06:06 PM</font>
<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-lpsolver@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-lpsolver] PreProcessing</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>I noticed that the Cgl project contains a source code
for preprocessing<br>
of optimization problems. &nbsp;I also noticed that Clp had something called<br>
presolve. &nbsp;I was wondering if Clp had any preprocessing applications<br>
within the project itself and whether this was contained in the presolve<br>
file or called something else. <br>
<br>
Also, when using Clp as the LP solver, is there anywhere other than Cgl<br>
that is called to perform any types of preprocessing steps. &nbsp;<br>
<br>
Basically, I am working with a group from the University of Buffalo that<br>
is interested in possibly contributing to the preprocessing capabilities<br>
of COIN-OR and am trying to find out any (and all) locations where any<br>
preprocessing would be done or called in COIN-OR (and specifically, in
CLP).<br>
<br>
Thank you.<br>
<br>
Justin<br>
<br>
__________________________________________<br>
Mr. Justin .T. Yates<br>
Department of Industrial Engineering<br>
State University of New York at Buffalo<br>
415 Lawrence D. Bell Hall<br>
Buffalo, NY 14260-2050<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>
<br>