[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