[Scip] problem with cleanupcolsroot and colagelimit

Gerald Gamrath gamrath at zib.de
Wed Jul 25 15:40:57 MEST 2012


Hi Sebastian,

unfortunately, there is currently no way in SCIP to use different LP 
algorithms of CPLEX in parallel.

Columns of the LP can only be removed, in case they were added at the 
same node. Otherwise, they might already be contained in some basis 
information and removing it from the basis information of all open nodes 
would be too much effort. Therefore, you cannot limit the number of 
columns by #rows x colagelimit, but will normally have much more 
columns, because you can only remove some of the newly added columns at 
each node. For doing this, setting lp/cleanupcols(root) to TRUE should 
have a higher impact than reducing lp/colagelimit. The former takes all 
non-basic variables set to 0.0 in the current LP solution that were 
created at the current node and removes them from the LP. This is done 
after the solving of the current node is finished. The latter can also 
throw out variables during the processing of the node, i.e., in each LP 
solving call, but will only remove variables that have been non-basis 
for some subsequent LP calls (defined by the age limit). Thus, columns 
that jsut recently left the basis will only be removed by the former 
variant. Of course, you can also change both parameters and combine 
their effects.

I hope I could clear up a bit how dynamic columns are treated in SCIP.

If you set the cleanupcols parameters, you should for example see the 
number of columns decreasing right at the end of the root node. Is that 
the case?

Best,
Gerald

Am 29.06.2012 15:39, schrieb Sebastian Ruther:
>    Hello,
>
> unfortunately I have not been able to overcome numerical troubles that I
> have been having for years. I have been in contact with people at SCIP
> and GUROBI but unfortunately they were not able to figure out why the
> problems are so hard to solve. The LPs are well conditioned and all
> coefficients and RHS are fine.
>
> Anyhow, at this point I need to approach it from a different angle.
>
> I've solved several LPs (with and without advanced basis) using CPLEX
> interactive shell and found that there is no tool that is a clear
> winner. However, the performances can vary between say 2 sec and 600+
> seconds for the same LP. Is there a way for SCIP to tell CPLEX to use
> all of its optimizers in parallel?
>
> The other avenue is to drastically reduce the number of columns in the
> master problem. Gerald once wrote something about this on the mailing
> list (see original email below). For some reason none of that seems to
> work for me. For example I use
>       SCIP_CALL( SCIPsetBoolParam(scip, "lp/cleanupcolsroot", TRUE) );
>       SCIP_CALL( SCIPsetBoolParam(scip, "lp/cleanupcols", TRUE) );
> and set the dynamic flag for priced variables to TRUE.
> The transformed problem has 301 rows. The entry in column "cols" in the
> SCIP output keeps increasing at the same rate as entries in "vars" and
> increases past 301 one columns. But the number of basic variables is
> equal to the number of constraints in the LP so how can this happen?
> Just to make sure I'm not fooled by the output I checked with
> SCIPgetNLPCols(scip) and yes that number keeps increasing as well. So it
> seems to not delete the non-basic variables.
>
> SCIP removes columns from the LP when I use  "lp/colagelimit". However
> not the way I expected or should I say at the rate expected. The number
> of variables in the LP should be #rows x colagelimit. But there are a
> lot more columns in the LP after just a few iterations.
>
> Cheers,
> Sebastian
>
>
> Gerald's email:
> You cannot directly limit the number of columns in the LP, but you can
> change some parameters so that SCIP deletes columns from the LP faster.
> The parameter "lp/colagelimit" defines the age, i.e. the number of
> consecutive LP solving calls for which the column had value 0.0, after
> which the column is removed from the LP. You can decrease it (per
> default it is set to 10) in order to remove variables from the LP faster.
> Alternatively or in addition to that, you can set the parameters
> "lp/cleanupcols" and "lp/cleanupcolsroot" to TRUE, so that all non-basic
> columns created at this node which have value 0.0 are deleted from the LP.
> For both variants, you need to set the "removable" parameter to TRUE for
> the variables created in the pricing process.
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip



More information about the Scip mailing list