[Scip] Pricing in empty problem

Gerald Gamrath gamrath at zib.de
Wed Jul 28 15:13:47 MEST 2010


Hi Martin,

we looked at your problem and found a little bug that was introduced in
a development version after SCIP 1.2. Could you just change line 1932 of
solve.c from
if( stored )
to
if( stored && set->nactivepricers == 0 )?
This should fix your problem. If there still occur some more problems
afterwards, please tell Timo and me and we will have a look at them.

Best regards,
Timo and Gerald

Am 28.07.2010 14:40, schrieb Martin Bergner:
> Hello again,
>
> since I have not received any answer so far, I have started to dig deep
> into SCIP in order to show that the error is there (and not in my code).
> I think that the SCIP solving loop is not correct unless I made really
> bad mistakes. 
>
> Looking at the source code, and tracing the solving process, the lines 
> 1947       SCIP_CALL( priceAndCutLoop(blkmem, set, stat, prob, primal, tree, lp, pricestore, sepastore, cutpool,
> 1948           branchcand, conflict, eventfilter, eventqueue, initiallpsolved, cutoff, unbounded, lperror, pricingaborted) );
>
> are never executed since SCIP decides the root node can be cut off just
> before:
>
> [src/scip/solve.c:1843] debug:  -> lower bound: -1e+20 [-1e+20] (pseudoobj: -1e+ 20 [-1e+20]), cutoff bound: 1e+20 [1e+20]
> [src/scip/solve.c:748] debug: loading LP
> [src/scip/solve.c:688] debug: init LP: initial columns
> [src/scip/solve.c:710] debug: init LP: initial rows
> [src/scip/solve.c:800] debug: node: solve initial LP
> [src/scip/solve.c:1914] debug: price-and-cut-loop: initial LP status: 1, LP obj:  0
>  time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap
> * 0.0s|     1 |     0 |     0 |     - | 348k|   0 |   - |  93 |  93 |  93 |  93 |   0 |   0 |   0 |      --      | 0.000000e+00 | 100.00%
> [src/scip/solve.c:1934] debug: root node initial LP feasible --> cut off root no de, stop solution process
> [src/scip/solve.c:1843] debug:  -> lower bound: 0 [0] (pseudoobj: -1e+20 [-1e+20 ]), cutoff bound: 0 [0]
> [src/scip/solve.c:1852] debug: node is cut off by bounding (lower=0, upper=0)
> [src/scip/solve.c:2593] debug:  -> LP status: 4, LP obj: 1e+20, iter: 0, count: 2
> [src/scip/solve.c:2943] debug: node solving iteration 1 finished: cutoff=1, prop agateagain=0, solverelaxagain=0, solvelpagain=0, nlperrors=0, restart=0
> [src/scip/solve.c:2976] debug: node is cut off
>
> I am wondering here, how can you decide to cutoff a node if you haven't
> even called the pricer? It might add a variable with objcoeff -1 to some
> constraint. The constraints are indeed marked modifiable. Am I missing
> something fundamental here? Any answer would be appreciated. 
>
> Regards,
> Martin
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
>   



More information about the Scip mailing list