[Scip] Problem Variables, parameters & resolving issue
Gerald Gamrath
gamrath at zib.de
Fri Jan 23 14:56:47 CET 2015
Hi Mehmet, hi M. Farham,
> In statistics, there is a Pricers section under which there are
> 'problem variables' and 'myPricer'. Sometimes there are some variables
> created by problem variables. I wonder what problem variables indicates.
Please see the FAQ: http://scip.zib.de/doc/html/FAQ.php#variablepricer
This pricer re-enters variables into the LP which were removed from it
due to aging.
> I also want to ask what do the following parameters do?
> "pricing/maxvars = 100
> pricing/maxvarsroot = 2000"
There is a description for every parameter if you want to set it in the
interactive shell, or also in a settings file:
maxvars maximal number of variables priced in per
pricing round [100]
maxvarsroot maximal number of priced variables at the root
node [2000]
So, these parameters limit the number of variables that SCIP will add to
the problem in each pricing round (the last one for the root node, the
first one for all other nodes). If you generate more than 100 (2000)
variables at a (root) node, only the "best" ones will be added w.r.t.
the score you provide in SCIPaddPricedVar().
> My last question: when I solve a problem and generate variables with
> my pricer, I record them. When I add them to problem before solving it
> again, I am expecting not to find any other new variable. Actually, I
> find new ones and it can take more time to solve the problem. I do not
> figure out the reason. In statistics, I see the number of new added
> columns in my pricer. In problem variables, I see a value much more
> than the columns I introduced. Is there any reason behind that?
I guess you set the variables to be removable when creating them in the
beginning? Are they even initial? Anyway, the path the Simplex algorithm
takes to reach an optimal solution can be different depending on the set
of variables you have in the beginning. There are typically multiple
optimal solutions to an LP, and which one is reached is more or less
random. If you end up with another optimal solution to the RMP, other
variables might be added by the pricer (and in particular, you might not
be able to prove optimality without pricing in new variables).
Another thing that might cause you to add variables twice is the delay
of a pricer. If it is not set to TRUE, the pricer is called even if
another pricer (e.g., the variable pricer) (re)added new variables in
the same pricing round, so you might add the same variable again.
> I want to add to my friend's last question: When we add previously
> generated columns with SCIPcreateVar() we find more columns. When
> SCIPcreateVarBasic() is used, it decreases..
How do you set the initial and removable flags in SCIPcreateVar()?
SCIPcreateVarBasic() will set them to the default, which is initial =
TRUE and removable = FALSE. If you set them differently in
SCIPcreateVar(), variables might age out of the LP (or not even be in
the initial LP) and be priced in later by the variable pricer. If you do
not set these flags the same way after creating the variable with
SCIPcreateVarBasic() by using SCIPsetVarInitial() and
SCIPsetVarRemovable(), the intermediate LP solutions and thus the whole
column generation process might differ (see above).
Best,
Gerald
More information about the Scip
mailing list