[Scip] Branch on original variables

Bahareh Eghtesadi b.eghtesadi at gmail.com
Mon Mar 30 20:07:01 CEST 2015


Hello again,

That problem is solved. Actually I was following the Binpacking example, so
I had also added SCIPreleasecons() in the branching rule after calling
SCIPaddconsnode(). But when I remove that, SCIPconshdlrGetConss(conshdlr)
returns the constraints. I am wondering how come it works in the example?
However, after I get the conss in the pricing, I loop over all of them to
see which one is active (using SCIPconsIsActive) to apply the branching
decisions,but non of them is active. I have checked in the conshdlr, after
going into the CONSACTIVE , it also goes into the CONSDEACTIVE method, and
then returns to the pricing. I suspect this may be the reason that the
constraint is not active? or this is how it should be performed?

Thanks.

On Mon, Mar 30, 2015 at 2:51 AM, Gerald Gamrath <gamrath at zib.de> wrote:

>  Dear Bahareh,
>
> do you also add the constraint via SCIPaddCons() or (better in your case)
> SCIPaddConsNode()?
>
> Best,
> Gerald
>
>
> Am 30.03.2015 um 07:48 schrieb Bahareh Eghtesadi:
>
>   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
>
>
>


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


More information about the Scip mailing list