[Scip] SCIP_DIDNOTRUN in SCIP_DECL_PRICERREDCOST ?

Sandra Ulrich Ngueveu ngueveu at laas.fr
Fri Mar 13 16:52:34 CET 2015


Hello,

I am doing a Branch-and-Price with SCIP, where the subproblem (pricer) 
consists in solving a MIP with IloConcert (Cplex), with a predefined 
time limit DeltaT. DeltaT = "total time allowed for the entire 
branch-and-price" minus "time elapsed since the beginning of the 
branch-and-price".

If cplex finds the optimal solution, we set *result=SCIP_SUCCESS, then 
add the columns found, if there are any. Otherwise (if cplex stops 
because of the time limit DeltaT), we set *result=SCIP_DIDNOTRUN.

For some instances, the following assertion fails: 
rc/scip/branch_relpscost.c:928: execRelpscost: Assertion `SCIPisLT(scip, 
provedbound, SCIPgetCutoffbound(scip))' failed.

It seems to happen only when DeltaT was unsufficient to solve a 
subproblem, therefore when *result was set to SCIP_DIDNOTRUN.

In the LOP example, the lower bound pointer is set just after setting 
*result=SCIP_DIDNOTRUN (line 503 of pricer_coloring.c). Is it mandatory 
for the code to be correct ? Is the absence of this instruction the 
raison of the failed assertion ? Is it possible to set *lowerbound = 
-SCIP(infinity) or *lowerbound=0 ?

Thank you for your help,

Best regards,

Sandra



More information about the Scip mailing list