[Scip] multiple pricer

Gerald Gamrath gamrath at zib.de
Wed Feb 16 09:27:02 MET 2011


Hi Sebastian,
> I successfully implemented solving the root node if there is only one 
> pricing problem. The algorithm terminates correctly and I verified 
> that the solution is correct. Btw, I think the termination criteria is 
> that no variable was added during the scip_redcost call (so not 
> necessarily that the reduced cost where non-negative, correct?) . 
> Also, no column is ever generated twice, so that's all good.
Yes you are right, SCIP does not know which variables are missing and 
what their reduced costs are, so it relies on the pricer that there are 
no more improving variables if the pricer added no variable and returned 
SCIP_SUCCESS as result.
Besides, you also have the possibility to do "early branching", i.e. 
stop the pricing even if there are still improving variables, but you 
have to return SCIP_DIDNOTRUN as result in this case.
> However, when I have multiple pricing problems it doesn't terminate 
> anymore. The whole thing is setup as follows:
> There is only one pricer that holds a map of pricing problems. Each of 
> these pricing problems is a struct that hold all the data relevant for 
> the pricing problem as well as a subscip pointer and all it's vars and 
> cons.
Sounds good.
> When scip_redcost is called I run through the map and solve the 
> pricing problems (for now) sequentially. Each pricing problem gets 
> solved in each iteration (for now). And here is the problem: in the 
> first 7 iteration columns are correctly generated for each pricing 
> problem. However, in iterations 8+ each pricing problems generates the 
> same column it generated in iteration 7. So there are no new ones at 
> all. I used a diff tool to compare the pricing problems of iterations 
> 7 and 8 and they are exactly the same (so the dual values didn't 
> change). Why doesn't it terminate?
>
> Have you experienced something similar?
We experienced similar problems, but we fixed them, so we hope that 
should not happen. :-) How do you check new variables for negative 
reduced costs? Do you use a numerical tolerance, e.g. by using 
SCIPisSumNegative()? Please verify that the reduced costs are really 
(more than epsilon) negative.

Which SCIP version and which LP solver do you use? Please give out the 
solution status of the LP when you perform pricing by SCIPgetSolstat().

If there really is a bug in SCIP that causes your problems, we would be 
very interested in locating and fixing it.

Best,
Gerald



More information about the Scip mailing list