[Coin-discuss] integer programming presolve

Lou Hafer lou at cs.sfu.ca
Sun Jun 7 19:41:14 EDT 2009


Matt,

	Take this with a grain of salt, as I've been a bit out of the loop for 
the last few months.
	
	The continuous (CoinPresolve) presolve can be accessed through an Osi or
through a native interface.  The integer (CglPreProcess) presolve works solely
through an Osi.  By `through an Osi' I mean that the presolve takes an Osi as
the parameter and works on the constraint system attached to the Osi, handing
you back another Osi with the modified constraint system.  For continuous
presolve this is just a convenience interface.  For integer presolve this is a
necessity because integer presolve solves LPs along the way.  It actually
generates a whole sequence of Osi's.  You only see the first and last.

	It's possible to use the continuous presolve independent of an Osi if 
you're willing to take the time to cobble together a driver. See 
OsiPresolve::presolve for one example. OsiDylp has another, I expect there's 
another in OsiClp.
	
	For integer presolve, the best I know of are the calling sequences in
Cbc and CbcGen.  The one in CbcGen (CbcGenBaB.cpp:CbcGenParamUtils::doBaCParam)
is old (I haven't been able to work on it for over a year).  At the time it was
created, it was better documented than the one in Cbc.  Cbc documentation may
have improved; I haven't had time to look recently.

							Lou




More information about the Coin-discuss mailing list