[Scip] Column generation + branch and bound (from binpacking example)
Gerald Gamrath
gamrath at zib.de
Mon Aug 22 14:14:47 MEST 2011
Hi Luigi,
SCIP copies all original variables when creating the transformed
problem, but they get the prefix "t_" then. Also when negating a
variable, a new variable with a similar name is created, but it gets the
suffix "_neg". However, SCIP never copies variables giving them the
exact same name.
Thus, it seems that you create two variables with the same name. How are
your names built? Do you have a counter that you increase or is it the
meaning of the variable (i.e., the set of items), that defines the name?
It might happen, that you create two variables for the same set, e.g.
due to numerical problems or if you have explicit upper bounds on the
variables.
The branching candidates are a list of all integer (or binary) variables
in the LP, that have a fractional value in the current LP solution.
Thus, there might be an arbitrary number of branching candidates, upon
which you have to choose a variable to branch on (or in this case two
items to branch on).
However, it is strange that not all of the variables are contained in
the list returned by SCIPgetVars(). Did you update the list right before
checking? You could also print the LP solution by
SCIPprintTransSol(scip, NULL, NULL, TRUE) and SCIPprintSol(scip, NULL,
NULL, TRUE) and check whether the variables appear twice there, too.
I hope that helps a bit to locate the problem.
Best,
Gerald
Am 22.08.2011 11:37, schrieb Luigi Malagò:
> hi list,
> i'm stuck again with my code, even if now the problem is with
> branch and bound and the binpacking example. i have some unexpected
> behavior and i dont understand where is the problem. maybe some of you
> can help...
>
> i'm working on the existing code of binpacking, to add my variables
> and adapt to my problem,
> since my example is similar in practice to the binpacking. i have
> extra variables both in the master and in the pricing problem, all
> continuous.
>
> my question is about the
> SCIP_DECL_BRANCHEXECLP(branchExeclpRyanFoster) callback.
> i understand tha Ryan Foster branching, and i want to implement it
> also in my problem.
> since the binary variables of the master of the binpacking example are
> the only
> binary variables in my master, i think the code should be exacly the same.
> nevertheless i have some problems:
>
> when branching the first time, the SCIPgetLPBranchCands function
> returns 4 variables,
> my problem is that the 1st and 3rd, and 2nd and 4th, respectively,
> have the same name, but different
> fractional value that (in both cases) sum to 1 (the value is then
> saved in pairweights).
> as a consequence bestvalue equals 0, and the assert then fails.
>
> i dont know if i'm right, but i expect only 2 variables to appear in
> the array
> obtained with SCIPgetLPBranchCands. first i tought i had duplicate
> variables in my problem.
> i checked the value of the pointers to these 4 vars contained in lpcands,
> the 1st and 2nd pointers to vars correspond to some variables that
> appear among the
> vars of probdata, while the other two do not appear among that list.
> i obtained this list with SCIPgetVars(scip), where i correcly see the
> original master variables, plus all that i have added at each
> iteration of the master/pricer loop.
>
> i guess something is wrong with my code, but if the variables are not
> duplicated in the problem, i have no idea why i obtain duplicate
> variables then... any idea that could help?
>
> once again, thanks a lot for your help,
> luigi malagò
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserv.zib.de/mailman/private/scip/attachments/20110822/e5fbcb7b/attachment.html
More information about the Scip
mailing list