<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. Let's take the continuous case first.
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. To make this work the guts of the presolve code was moved
to the Coin directory - files starting CoinPresolve. 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. 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 -> 1 means y -> 0 AND
x->0 means y->1 then we can substitute for x or y. This may
be detected by CglProbing</font>
<br><font size=2 face="sans-serif">3) If x-> makes a constraint slack
then a coefficient in that row can be strengthened. 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. I also noticed that Clp had something called<br>
presolve. 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. <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>