[Scip] Branch on original variables

Gerald Gamrath gamrath at zib.de
Mon Mar 30 08:51:39 CEST 2015


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 
> <mailto: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
>>     <mailto: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 <mailto:Scip at zib.de>
>>             http://listserv.zib.de/mailman/listinfo/scip
>>
>>         _______________________________________________
>>         Scip mailing list
>>         Scip at zib.de <mailto:Scip at zib.de>
>>         http://listserv.zib.de/mailman/listinfo/scip
>>
>>
>>
>>
>>     -- 
>>     Regards
>>     Bahareh Eghtesadi
>>
>>
>>     _______________________________________________
>>     Scip mailing list
>>     Scip at zib.de  <mailto:Scip at zib.de>
>>     http://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/f218b7b9/attachment.html>


More information about the Scip mailing list