[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