[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