[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