[Scip] SCIP_DIDNOTRUN in SCIP_DECL_PRICERREDCOST ?

Gerald Gamrath gamrath at zib.de
Thu Mar 19 11:54:10 CET 2015


Dear Sandra,

it looks like you are still using SCIP 3.1. The issue should have been 
fixed with the latest bugfix release 3.1.1, please check if this is the 
case.

A general remark: When doing branch-and-price, you should also implement 
your own branching rule, since the default rules branching on variables 
aren't well suited for a branch-and-price algorithm. Just have a look at 
Coloring or Binpacking example and some discussions on the mailing list 
in the last months.

Best,
Gerald

> 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
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list