[Scip] Eliminating model constraints following branching

Stephen J Maher stephen.maher at unsw.edu.au
Mon Feb 18 23:27:31 MET 2013


Hi Gerald,

The constraints that I am adding are linear constraints. I do not want 
to remove all of the constraints, but only the ones that are not useful 
in the optimal solution. I would like to be able to remove the 
constraints and then add them back if necessary.

I will have a look at using the removable flag and see if I can achieve 
the desired result. I will also try setting the parameters 
lp/cleanuprows and lp/cleanuprowsroot to TRUE. In this regard, is it 
possible to know what rows SCIP has removed? Also, if the rows are 
removed, will that affect column generation when a new column has a 
non-zero element in a removed row?

Thanks a lot for your comments,

Steve



On 18/02/13 23:24, Gerald Gamrath wrote:
> Hey Steve,
>
> the constraints that you add during solving, are those linear
> constraints, some constraints of your own constraint handler, or just
> rows (added by your own constraint handler)?
>
> If it's constraints, you could use SCIPdisableCons() (which disables it
> at the current node and its subtree) or even SCIPdelCons(), which
> globally deletes the constraint (which you want to do, as you want to
> remove it at the root node). This should be more efficient, because the
> other variant cannot really delete the constraint, since it can be
> re-enabled later.
>
> However, I'm not so sure whether you really should remove all
> constraints, normally, you should keep tight ones and only throw away
> those that are "redundant" with respect to the current LP solution. Is
> there any specific reason why you want to remove all of them?
>
> If you just want to remove the rows (to keep your LP small), you should
> try to work with the removable concept of SCIP. As Ambros already
> mentioned, you can define the age limit after which a row leaves the LP
> and moreover, you can set lp/cleanuprows and lp/cleanuprowsroot to TRUE
> which means that all rows which are not tight are removed from the LP
> after the processing of the root / another node was finished.
>
> Best,
> Gerald
>
> Am 18.02.2013 02:03, schrieb Stephen J Maher:
>> Hi Ambros,
>>
>> Thanks for your email. I appreciate the fast reply.
>>
>> You are right, I am adding the LP relaxation of the constraints to the
>> problem. I am solving the LP at the root node using column-and-row
>> generation, which involves adding model constraints throughout the
>> solution process using a row generation procedure. Row generation also
>> occurs during the branch-and-bound process, to ensure that the dual
>> bound is correct.
>>
>> What I would like to do is solve the root node to LP optimality using
>> column-and-row generation, then remove all the added constraints and use
>> column-and-row generation to solve each node in the branch-and-bound
>> tree. So, deleting the constraints may not be required, but making them
>> inactive in some way might work.
>>
>> The removable flag won't help me in this case, since I would like to
>> dictate when the constraints are removed and added to the problem.
>>
>> Would it be possible to use the SCIPdisableCons() and SCIPenableCons()
>> functions to achieve my desired result?
>>
>> I appreciate your help.
>>
>> Cheers,
>>
>> Steve
>>
>>
>>
>> On 16/02/13 02:19, Ambros Gleixner wrote:
>>> Hi Steve,
>>>
>>>    > During the solution process, some of these constraints are
>>>    > added to the problem.
>>>
>>> precisely speaking you probably mean "the LP relaxation of some of these
>>> constraints are added to the problem", right?
>>>
>>> You can use the SCIP method SCIPdelConsLocal() to disable the
>>> constraint's separation, enforcing, and propagation capabilities at the
>>> current node and all subnodes.
>>>
>>> I think you cannot directly force the corresponding rows to be removed
>>> from the LP.  If I understand you correctly, this is what you would want
>>> to do, right?  Can you tell us more about your motivation for this?  Are
>>> they redundant after the branching decision you make?
>>>
>>> If you declare the constraints as "removable" when creating them, their
>>> LP relaxation will be subject to ageing, i.e., they are removed if they
>>> are not tight for some time.  By playing with the advanced parameter
>>> lp/rowagelimit you can control how aggressively this is applied.  Maybe
>>> this can achieve the desired effect?
>>>
>>> Are the constraints from a specific constraint handler?
>>>
>>> Hope that helps, let us know!
>>>
>>> Ambros
>>>
>>>
>>>
>>>
>>> Am 15.02.2013 04:40, schrieb Stephen J Maher:
>>>> Hi all,
>>>>
>>>> I was just wondering whether it was possible to locally remove models
>>>> constraints from a node when the branching decisions are made. My goal
>>>> is to reduce the size of my problem by removing model constraints for
>>>> each subproblem that is created in the branch-and-bound tree.
>>>>
>>>> At the moment I start the model with only a subset of all constraints
>>>> initially included in the LP. This is done by setting the initial flag
>>>> to false. During the solution process, some of these constraints are
>>>> added to the problem. When branching is performed, I would like to
>>>> remove the constraints that were added and start the solving again.
>>>>
>>>> You help is appreciated.
>>>>
>>>> Cheers,
>>>>
>>>> Steve
>>>>
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> http://listserv.zib.de/mailman/listinfo/scip
>
>


More information about the Scip mailing list