[Coin-lpsolver] presolve and Cbc/Clp

Kish Shen ks15 at icparc.ic.ac.uk
Tue Aug 30 13:34:03 EDT 2005


Hi,

I have got some questions about presolving and Cbc with Clp as the LP
solver:

1) How useful is the integer presolving? It does not seem to be used in the
   sample drivers (e.g. sample2) that comes with Cbc -- is this because it
   does not improve solving times much, or is there some other reason for
   this? 

2) When should integer presolve be done? In my initial attempt to use it, I
   called it just before calling branchAndBound (in a driver code that is
   otherwise a version of Cbc's sample2 that John Forrest sent to me), this
   seem to make things worse in many cases, but if I did the integer
   presolve at the start, before cut generation etc, then this seem to
   produce better results.

3) I am using Cbc/Clp through Osi: should the Osi presolve be turned on as
   well? Here is the start of my code to set up the MIP solving: 


    lpd->lp->setHintParam(OsiDoPresolveInInitial, lpd->presolve, OsiHintDo, NULL);    
    //    lpd->lp->initialSolve();
    OsiSolverInterface * mipsolver = lpd->lp;
    CglPreProcess process;

    mipsolver = process.preProcess(*(lpd->lp), false, 5);
    // mipsolver->resolve();

    CbcModel model(*mipsolver);
  
    if (lpd->presolve)
	model.integerPresolveThisModel(mipsolver, false);
    // follow by code taken from sample2 driver...


I tested with both OsiDoPresolveInitial set or not, and I was slightly
suprised that it does make a difference for some problems, but in some
cases they were solved faster, and in other they were solved slower, so I
can't tell if it is a good idea or not.

4) I am not sure if this was due to the presolve or not, but in one example
   I tried (taken from MIPLIB's mzzv42z), the root node solve takes much
   longer than the solving the problem as a linear problem (i.e. without
   the integer constraints) -- on my machine, the linear problem was solved
   in 8.5 seconds (with dual simplex), while the root solve took 1000
   seconds or more (and in  addition, it seems to be solved at the root
   node at least three times,  each one taking similar amount of time). 
   Is this normal, or is there something wrong with what I am doing?


Cheers,

Kish Shen
IC-Parc
Imperial College London




More information about the Clp mailing list