[Coin-discuss] Quick checking, if the problem is primal feasible

Daniel Stoinski Daniel.Stoinski at nagler-company.com
Mon Jul 10 05:13:24 EDT 2006


Hi,

we only want to check, if the problem is primal feasible, without solving 
the problem. And we want to be really quick, becuase the operation will be 
performed for quite big problems in a loop.

At the moment we're using the following non performant code:

short isPrimalInfeasible(OsiClpSolverInterface &aSolver)
{
  OsiSolverInterface    *solver2;
  OsiPresolve           pinfo;
  bool                  isPrimalInfeasible;

  solver2 = pinfo.presolvedModel(aSolver, 0.0);
  if (solver2 != NULL)
  {
    delete solver2;
    aSolver.initialSolve();
    return aSolver.isProvenPrimalInfeasible();
  }
  return 1;
}  

If the problem is "really" infeasible, both primal and dual, we get 
solver2 = NULL very quickly and this is fine. For "partially" feasible 
problems we call initialSolve(), which takes a lot of time until it 
states, that the problem is only dual feasible.

Is there any possibility to get rid of this initialSolve()?

Probably we could become a little bid faster, if we use ClpPresolve and 
ClpSimplex instead of the Osi interface.

But my impression is, that the most time gets lost for the unnecessary
solving the problem, while only the information about the 
primal feasibility is needed.

Really best thanks for any hint. Best regards
Daniel Stoinski




More information about the Coin-discuss mailing list