[Coin-lpsolver] Pb of infeasibility? in BCP
Francois Margot
fmargot at andrew.cmu.edu
Wed May 3 12:29:33 EDT 2006
Mathieu:
On Wed, 3 May 2006, mathieu lacroix wrote:
> Hi,
> I developp a branch and cut algorithm with BCP (with OSI/CLP).
> Each iteration, the linear program is solved and then if it is feasible, the
> solution is tested to know if it is a solution a the ILP... So, in the method
> test_feasibility(..), we first have to check if the LP was feasible (in order
> to not test a solution if there doesn't exist anyone).
> So, as in the François Margot's example (.../COIN/Example/BAC/), I have first
> test
> / if(getLpProblemPointer()->lp_solver->isProvenPrimalInfeasible())
> return(0);/
> (I don't test if I'm during strong branching but I don't think it is the
> reason of the bugs)
>
> But I have encountered several bugs. I have to change the test by :
> / if((getLpProblemPointer()->lp_solver->isProvenPrimalInfeasible()) ||
> (getLpProblemPointer()->lp_solver->isDualObjectiveLimitReached ()) ||
> (getLpProblemPointer()->lp_solver->isIterationLimitReached ()) ||
> (getLpProblemPointer()->lp_solver->isAbandoned ()))
> return(0);/
>
Most of these return codes should only show up during strong branching.
In BAC, BB_lp::test_feasibility() returns immediately 0 during
strong branching.
> And I have to comment the throw error's line in the code's lines (130-133) in
> the file BCP_lp_main_loop.cpp :
> / if (tc & BCP_Abandoned) {
> // *FIXME* : later we might want to prune this node, but continue
> //### throw BCP_fatal_error("LP solver abandoned the
> lp.\n");
> }/
>
If you get Lp that are abandoned by the Lp solver, there must be either
a problem with your parameter settings of Bcp or of the Lp solver
(precision), or with the LP formulation itself.
Francois
More information about the Clp
mailing list