[Scip] Upper bound on variables during pricing

Hélène Toussaint helene.toussaint at isima.fr
Wed Mar 20 14:18:45 MET 2013


Hi Gerald,

Thanks for this clarification.

I have tested again with Cplex as lp solver and the error doesn't occur 
anymore, I do not know why. I use a remote server so perhaps it was an 
error with it...

Best,
Hélène

Le 19/03/2013 22:57, Gerald Gamrath a écrit :
> Hi Hélène,
>
> 3. You can use both methods, SCIPfixVar() will internally use 
> SCIPchgVarUb() in this case, anyway.
> 1. scip_prop() is called when a node is processed for the first time 
> (and sometimes also later again, if a node was marked to be 
> repropagated). You don't need to do it again if you enter the same 
> node again during the tree search (when switching to a node in the 
> corresponding subtree), because the bound changes are locally stored, 
> such that they will be undone when you leave the node (or its 
> subtree), and will be re-applied when you re-enter the node (or its 
> subtree).
> In contrast to that, scip_active() is called every time a node is 
> entered, i.e., also when you switch to a new node in the corresponding 
> subtree. It should be used to update your internal data, which SCIP 
> cannot do automatically.
> 2. You are only allowed to change bounds either globally or at the 
> current focus node, i.e., the node that is currently processed. 
> However, when you switch from one node to another in the tree, all 
> nodes from the common ancestor to the newly focused node are 
> activated, so scip_active() is called. But these nodes are not the 
> focusnode, so you are not allowed to change bounds.
>
> Regarding your issue with CPLEX as LP solver, you can enable the LP 
> solver output by setting the parameter "display/lpinfo" to TRUE, that 
> should help you to check whether its a CPLEX error. Best you also set 
> "display/verblevel" to 5 to see the full output. It might also be that 
> SCIP does not accept the CPLEX LP solution when checking for its 
> (primal and dual) feasibility; in this case, SCIP reoptimizes the LP 
> after changing some LP settings several times until the LP solution 
> passes the SCIP checks.
>
> Best,
> Gerald
>
>
>
>
> Am 19.03.2013 14:32, schrieb Hélène Toussaint:
>> Hi Gerald,
>>
>> Thank you for your answer. I enclose the statistics.
>>
>> Indeed I use propagation to propagate my modifications on the problem 
>> data and variables. But I have some doubts concerning the scip_prop() 
>> and scip_active() methods of the constraint handler for branching 
>> decisions:
>>
>> 1. Is scip_prop() always called after scip_active() when SCIP enter a 
>> node?
>> 2. Why I can't fix variables in scip_active()? If I try then 
>> SCIPnodeAddBoundinfer() displays an assertion about the nodetype 
>> (which is equal to 8 in this case)
>> 3. In scip_prop(), what method should I use to set a variable to 0: 
>> SCIPchgVarUb() or SCIPfixVar()?
>>
>> Furthermore I have tried to link with cplex instead of soplex. All my 
>> instances give good results except one which stops with the following 
>> error message:
>>
>> "ERROR: (node 2502) unresolved numerical troubles in LP 3348 cannot 
>> be dealt with"
>>
>> Is it an error from cplex? How can I see what happens? Debug mode 
>> doesn't give more information.
>>
>> Best,
>> Hélène
>>
>>
>> Le 19/03/2013 12:48, Gerald Gamrath a écrit :
>>> Hi Hélène,
>>>
>>> you are right, that should not happen. Can you send me the solving 
>>> statistics, which you get by typing "display statistics" in the 
>>> interactive shell or calling SCIPprintStatistics()? This should help 
>>> to identify the plugin which changes the bound.
>>>
>>> Besides, you best disable the other propagators, too, if you don't 
>>> want SCIP to change bounds itself. You can either disable all 
>>> propagation by setting propagating/maxrounds and 
>>> propagating/maxroundsroot to 0, but I guess your modifications to 
>>> the problem data after branching are also done during propagation? 
>>> In this case, you need to disable all default propagators 
>>> individually by setting their freqency to -1.
>>>
>>> Best,
>>> Gerald
>>>
>>> Am 18.03.2013 11:37, schrieb Hélène Toussaint:
>>>>
>>>> Dear all,
>>>>
>>>> I use SCIP to code a branch & price algorithm on positive 
>>>> continuous variables. I branch on instance data (using a constraint 
>>>> handler to store the branching decisions). When I modify the 
>>>> instance data some variables become forbidden (I fix their upper 
>>>> bound to 0).
>>>>
>>>> I'd like SCIP to not set upper bound on the other variables. As 
>>>> explained in the FAQ I have marked all constraints containing 
>>>> priced variables as modifiable and added SCIPsetIntParam(scip, 
>>>> "propagating/rootredcost/freq", -1). But occasionally there is a 
>>>> variable with an upper bound equals to 0 although it isn't 
>>>> forbidden in the current node. How is this possible? Could you 
>>>> please help me with this issue?
>>>>
>>>> Best regards,
>>>>
>>>> Hélène
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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/20130320/d0e9c1f3/attachment.html


More information about the Scip mailing list