[Scip] Branch on original variables

Bahareh Eghtesadi b.eghtesadi at gmail.com
Wed Apr 1 22:58:42 CEST 2015


Also I have two more questions. I would appreciate your suggestions.
First, is it possible to solve the master problem with interior point
method using Soplex?

Second, I am giving an initial feasible solution to the master problem when
creating it, and the corresponding dual variables are zero (Those duals
that are obj coefficient in the subproblems). These cause my subproblems to
add zero columns to the master problem. do you think there is a way to fix
this?or I just have to change the initial solution?

Thanks

On Wed, Apr 1, 2015 at 10:32 AM, Bahareh Eghtesadi <b.eghtesadi at gmail.com>
wrote:

> Hi,
> I am now confused about how the callback methods CONSACTIVE and DEACTIVE
> are supposed to work. When I create two nodes with 0 as their node
> selection priority, it first goes into the left_node's consactive method,
> then prop and then goes into the pricing(in my case leftnode means where
> the upper bound of a variable is changed). I guess this is how it should
> work.
> But when I set the node selection priority of the right_node to sth
> larger, it first visits the right node, after implementing consactive and
> prop, it goes into DEactive method, and after that implements active and
> prop of the left_node! Then goes ahead with the pricing! Does this mean
> that there is sth wrong with my implementation?
>
> Thanks in advance.
>
> On Mon, Mar 30, 2015 at 2:07 PM, Bahareh Eghtesadi <b.eghtesadi at gmail.com>
> wrote:
>
>> 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
>>
>
>
>
> --
> Regards
> Bahareh Eghtesadi
>



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


More information about the Scip mailing list