[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