[Cbc] Question about Presolve

rpf at gmx.li rpf at gmx.li
Wed Jul 28 02:46:07 EDT 2010


Hi everyone,

I am using Cbc to solve a problem of size ~1500 constraints. I used
Cbc 2.2 through its AMPL interface, which worked well (solved in about
4 sec).

This model actually appears somewhere in my C++ application (linked to
Cbc trunk), where I get it in form of an OsiSolverInterface. I tried
to solve it without presolve, but that seems to take way more time. As
I was looking through the examples to figure out the correct way to do
presolve, I found three different methods/classes:

1. CglPreProcess: As used in examples/driver.cpp, worked for simple
models, but failed for the one mentioned above with something like
"infeasible - possible tolerance issue" - but I know that the model is
feasible

2. CbcModel::integerPresolve: When I looked through the code of Cbc
2.2 (because that code managed to solve my problem), I found that it
called this member. That, however, calls integerPresolveThisModel,
which is marked deprecated in the trunk code.

3. There is a OsiPresolve class, but that seems to be low-level, and
CglPreProcess has an instance of that so I suppose that's basically
the same?

So which one is the preferred / most effective way to presolve a problem?

Any clues helping me understand this are appreciated

Hans



More information about the Cbc mailing list