[SCIP] ENFOPRIORITY

Marc Pfetsch pfetsch at mathematik.tu-darmstadt.de
Wed Aug 4 14:18:14 CEST 2021



Hi Marco!

> "The constraint enforcement is called after the price-and-cut loop is 
> executed (in the case that the LP is solved at the current subproblem).
> The integrality constraint handler has an enforcement priority of 0. 
> That means, if a constraint handler has negative enforcement priority, 
> it only has to deal with integral solutions in its enforcement methods, 
> because for fractional solutions, the integrality constraint handler 
> would have created a branching, thereby aborting the enforcement step. 
> If you want to implement a constraint-depending branching rule (for 
> example, SOS branching on special ordered set constraints), you have to 
> assign a positive enforcement priority to your constraint handler. In 
> this case, you have to be able to deal with fractional solutions."
> 
> I got the impression that if I would like to add a constraint handler 
> that "runs" on possibly non-integral solutions (i.e. relaxations), I 
> would have to add a non-negative value for this parameter.

This is correct.

> However, looking at most constraint handlers defined in SCIP  (for 
> example for "abspower" which shouldn't require variables to be integral) 
> I see mostly negative numbers for this parameter.

Yes, but this is a design choice: The idea is that integral variables 
often have a large impact on the model and on the nonlinear model parts 
in particular. Therefore, SCIP tries to resolve integral variables with 
fractional values first.

> So I guess I am misreading the docs. My questions are then:
> 
> 1. What should be the priority for a constraint handler that requires 
> the current solution to satisfy all integrality constraints?

A negative value.

> 2. What should be the priority for a constraint handler that does NOT 
> require the current solution to satisfy all integrality constraints?

Typically a positive value.

> 3. How does one decide the magnitude of this number? Is there like a 
> table showing what runs at what priority?

In the command line you can use "display conshdlrs" and "display 
propagators".

Roughly, the constraint handlers/propagators should be sorted from cheap 
to more expensive feasibility checks and/or strength of the resolution 
operation (cuts, branching etc.).

Best

Marc


More information about the Scip mailing list