[SCIP] Separators and constraint handlers

Ambros Gleixner gleixner at zib.de
Thu Jun 21 10:55:02 CEST 2018


Dear Teo,

The documentation is admittedly confusing here.  Of course you can use a 
separator for problem-specific cuts.  (Under the general condition that 
these cuts do not function as model constraints, but only tighten your 
formulation.)

What the documentation is trying to say: If the cuts are derived from 
constraints of one special type, then the sepa callback of that 
constraint handler is the recommended place, although implementing a 
separator plugin would also be possible.  But if "problem-specific" 
means something more general, using problem data or the combination of 
several constraints or the entire LP relaxation or ... then a separator 
plugin is needed.

I hope that clarifies things, we will adjust this section in the 
documentation.

Best,
Ambros


Am 19.06.2018 um 12:23 schrieb Teo Blast:
> 
> Hi,
> I am quite confused by the documentation about these C++ classes.
> The answer to the question "when should I use separators vs constraint 
> handlers" in the FAQ is as follows:
> 
> “This depends on whether you want to add constraints or only cutting 
> planes. The main difference is that constraints can be "model 
> constraints", while cutting planes are only additional LP rows that 
> strengthen the LP relaxation. A model constraint is a constraint that is 
> important for the feasibility of the integral solutions. If you delete a 
> model constraint, some infeasible integral vectors would suddenly become 
> feasible in the reduced model. A cutting plane is redundant w.r.t. 
> integral solutions. The set of feasible integral vectors does not change 
> if a cutting plane is removed. You can, however, relax this condition 
> slightly and add cutting planes that do cut off feasible solutions, as 
> long as at least one of the optimal solutions remains feasible. “
> 
> 
> I want to implement cutting planes, which are redundant w.r.t. integral 
> solutions,. Itwould thus seem that I need a separator.
> 
> However, the separator description reads:
> “Separators are used to generate general purpose cutting planes. 
> Constraint based cutting planes, the second type of cutting planes in 
> SCIP, are separated in the CONSSEPALP and CONSSEPASOL callback methods 
> of the constraint handlers, seeCONSSEPALP 
> <http://scip.zib.de/doc-5.0.1/html/CONS.php#CONSSEPALP>andCONSSEPASOL 
> <http://scip.zib.de/doc-5.0.1/html/CONS.php#CONSSEPASOL>. These cuts are 
> valid inequalities or even facets of the polyhedron described by a 
> single constraint or a subset of the constraints of a single constraint 
> class. In contrast, general purpose cuts do not require or exploit any 
> knowledge about the underlying problem structure but use only the 
> current LP relaxation and the integrality conditions.”
> 
> The cutting planes I want to implement are problem-specific (they are 
> facets of the problem's polyhedron), thus they are not "general purpose" 
> cutting planes. So they cannot be separated with a separator?
> Doesn't it contradict the FAQ answer?
> 
> Many thanks in advance !
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
> 

-- 
Ambros Gleixner, Research Group Mathematical Optimization Methods at 
Zuse Institute Berlin, http://www.zib.de/gleixner


More information about the Scip mailing list