[Coin-discuss] OsiClpSolver returns feasible for an infeasible MIP problem
Kish Shen
kish.shen at crosscoreop.com
Thu Jul 6 22:43:08 EDT 2006
Hi,
I have been using OsiClpSolverInterface to solve both LP and MIP problems. My
program is outlined as below:
(lpd->lp->Solver is a OsiClpSolverInterface*)
The original problem in lpd->lp->Solver is copied into model, a CbcModel *,
after preprocessing:
OsiSolverInterface* mipsolver;
CglPreProcess process;
....
mipsolver = process.preProcess(*lpd->lp->Solver, false, 5);
....
CbcModel* model = new
CbcModel(static_cast<OsiSolverInterface&>(*mipsolver));
....
model->branchAndBound();
the problem is infeasible, and the calls from model are correct:
model->isProvenOptimal() returns false
model->isProvenInfeasible() returns true
but when the problem is post processed and placed back in lpd->lp->Solver:
process.postProcess(*model->solver());
which considers the problem to be optimal:
lpd->lp->Solver->isProvenOptimal() returns true !!
the objective value seems to be 1e+50, which I assume is the MIP cutoff value?
As I am trying to make most of my code as generic as possible for OSI, it
would be much better if I can check for optimality/feasibility via the
OsiSolverInterface, rather than in the CbcModel, which is specific to using
Cbc as the MIP solver. Is this possible?
Thanks in advance for any information and help!
Cheers,
Kish
More information about the Coin-discuss
mailing list