[SCIP] Delete variables before master problem is solved to optimality

Tobias Stengel Tobias.Stengel at locom.de
Thu Oct 10 17:10:34 CEST 2019


Hello,

I'm trying to solve a problem using column generation and solving the master problem requires many pricing iterations leading to a large number of generated variables.
This slows the lp solver down significantly. According to the log file the number of variables equals the number of columns so I assume Scip did not drop any columns from the lp:

 time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr|  dualbound   | primalbound  |  gap
r1207s|     1 |     0 |  2238k|     - | 156M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.160129e+04 |    Inf
r1208s|     1 |     0 |  2239k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.160121e+04 |    Inf
r1209s|     1 |     0 |  2240k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.160044e+04 |    Inf
r1211s|     1 |     0 |  2241k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.159907e+04 |    Inf
r1212s|     1 |     0 |  2243k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.159789e+04 |    Inf
r1213s|     1 |     0 |  2244k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.159727e+04 |    Inf
r1214s|     1 |     0 |  2245k|     - | 157M|   0 |   0 |  10k|8380 |  10k|8380 |   0 |   0 |   0 |      --      | 7.159654e+04 |    Inf

(note that in this log snippet all integer variables are relaxed)

As in an integer feasible solution only 20 of the priced variables can take non-zero values I assume that most of the priced variables are 0.

I read https://scip.zib.de/doc-6.0.2/html/FAQ.php#howtodeletevariables
* SCIPvarMarkDeletable() is called for all priced variables
*   SCIPsetBoolParam(scip, "lp/cleanupcols", TRUE);
    SCIPsetBoolParam(scip, "lp/cleanupcolsroot", TRUE);
    SCIPsetBoolParam(scip, "pricing/delvars", TRUE);
    SCIPsetBoolParam(scip, "pricing/delvarsroot", TRUE);

After a quick look into lp.c I got the impression that these parameter only apply after a node was processed.

Is there some mechanism to remove/delete columns within the pricing loop?
Obviously one could stop Scip and start a new instance seeded with the previously found variables (set Initial=FALSE). Or implement the initial pricing loop yourself...

Best regards,

Tobias


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20191010/e1582191/attachment.html>


More information about the Scip mailing list