[Scip] Branch on original variables

Bahareh Eghtesadi b.eghtesadi at gmail.com
Mon Mar 30 07:48:45 CEST 2015


Hi Gerald,

Thanks for your explanation. I now understand how these constraints work.
So they are not basically added to the subproblems causing additional
constraints(which I was trying to avoid).
So I am now creating two child nodes using SCIPcreatechild, then create the
constraint of the conshdlr and add them to the node by SCIPaddconsnode.
After one iteration, when one constraint is added to a node,and the prop is
done , it goes in the pricing(to see if any cons is active and if so change
bounds), but SCIPconshdlrGetConss(conshdlr) returns no constraint! I have
checked  the conshdlr is found by SCIPfindConshdlr, and it is the one
attached to the node. Is there a way to check if the constraint is being
created? because the SCIPcreatecon seems to be working fine, and I have no
other idea why it can happen.
I would appreciate your suggestions.

Thanks.

On Thu, Mar 19, 2015 at 8:00 AM, Gerald Gamrath <gamrath at zib.de> wrote:

>  Dear Bahareh,
>
> you say that you store corresponding bounds and other information in the
> consdata and use the CONSACTIVE method to apply them in the pricer data.
> Both of this uses a (set of) constraints, not just the constraint handler.
> Of course, within the constraint handler, you define how the data of a
> single constraint should look like and what should be done if the
> constraint is activated. So I don't really get your question, you are
> already using constraints...
>
> I don't see how you could have the information about bound changes for
> each node other than by storing them in constraints sticked to nodes. You
> might store all this in the constraint handler data, but you would then
> need to keep track of all created nodes and store a "copy" of the tree
> there, which is not convenient.
> Also the CONSACTIVE callback is not called if no constraint is activated...
>
> So I think there is no easy way to do this without creating constraints.
>
> Best,
> Gerald
>
>
> Am 18.03.2015 um 19:02 schrieb Bahareh Eghtesadi:
>
> Hi Stephen,
>
>  Thank you for your response.
> Actually I have been looking at the Bin Packing example. Here is what I
> have done so far: In my branching rule, I choose which pricing variable to
> branch on, create two nodes and store the corresponding bounds and other
> information in the consdata for each node. In the conshdlr,  in
> CONSACTIVE method, I change the bounds stored in the pricer data.
> Do I still have to create the constraint of constraint handler in each
> node? Because I do not have any constraint in fact, I am using the handlr
> to apply changes to my pricer data(bounds). I set the NEEDSCONS flag to
> False, and was hoping that it would be enough.
> Also, in this case I would not need to check whether the "cons" is active
> in my variable pricer. Is this right?
> I appreciate your help. This is my first experience with SCIP, and I am
> afraid I have oversimplified everything.
>
>
>  Thanks.
>
> On Wed, Mar 18, 2015 at 8:42 AM, Stephen J Maher <maher at zib.de> wrote:
>
>> Hi Bahareh,
>>
>> Branching on original variables can be performed similar to the way used
>> for branching on constraints, i.e. Ryan-Foster branching.
>>
>> In order to implement this type of branching you will need to write your
>> own constraint handler, branching rule and modify the variable pricer. The
>> constraint handler will take some reference to the original variable and
>> selected bounds as input and determine which master problem variables
>> satisfy this constraint based on given variable bounds. In your branching
>> rule, you will decide what original variable to branch on, create two
>> branching nodes and then add a constraint of your constraint handler to
>> each with appropriate bounds. In your variable pricer, it is then necessary
>> to check whether any constraints of this type exist at the current node and
>> apply the appropriate variable bounds on the original variables.
>>
>> An example of Ryan-Foster branching is given in the Bin Packing example
>> included with SCIP. It should be possible to use this as a guide for your
>> own rule branching on original variables.
>>
>> Cheers,
>>
>> Stephen
>>
>>
>> On 13/03/15 07:14, Bahareh Eghtesadi wrote:
>>
>>>  Hi all,
>>>
>>> I am tying to implement a branch and price algorithm. I want to branch
>>> on the original variables that are not present in the master problem,
>>> and then change their bound in the pricing problems. But I am not sure
>>> how to do this. I think I can't use SCIPbranchvar directly from
>>> mybranchrule. If I use a constraint handler, I wouldn't make a
>>> constraint of that type (because there is no such constraint), then how
>>> can I include it in my branchrule?
>>>
>>>
>>> Thanks in advance.
>>>
>>>
>>>  _______________________________________________
>>> Scip mailing list
>>> Scip at zib.de
>>> http://listserv.zib.de/mailman/listinfo/scip
>>>
>>>  _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> http://listserv.zib.de/mailman/listinfo/scip
>>
>
>
>
>  --
> Regards
> Bahareh Eghtesadi
>
>
> _______________________________________________
> Scip mailing listScip at zib.dehttp://listserv.zib.de/mailman/listinfo/scip
>
>
>


-- 
Regards
Bahareh Eghtesadi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20150330/b187ba17/attachment.html>


More information about the Scip mailing list