Processing math: 100%
Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

Constraint handler for absolute power constraints \textrm{lhs} \leq \textrm{sign}(x+a) |x+a|^n + c z \leq \textrm{rhs}.

Author
Stefan Vigerske

Definition in file cons_abspower.h.

#include "scip/def.h"
#include "scip/type_cons.h"
#include "scip/type_nlp.h"
#include "scip/type_retcode.h"
#include "scip/type_scip.h"
#include "scip/type_sol.h"
#include "scip/type_var.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPincludeConshdlrAbspower (SCIP *scip)
 
Absolute Power Constraints

This constraint handler handles constraints of the form

\textrm{lhs} \leq \textrm{sign}(x+a) |x+a|^n + c z \leq \textrm{rhs}

for n > 1.0 a rational number, a and c arbitrary, and x and z variables. Note that x can have -a in the interior of its domain.

Constraints are enforced by separation, domain propagation, and spatial branching.

Cuts that separate on the convex hull of the graph of \textrm{sign}(x+a) |x+a|^n are generated as long as they separate the relaxation solution. Otherwise, spatial branching on x is applied.

Further, domain propagation is implemented to propagate bound changes on x onto z, and vice versa, and repropagation is implemented to allow for conflict analysis. During presolve, a pairwise comparison of absolute power constraints may allow to fix or aggregate some variables. See also

Stefan Vigerske
Decomposition of Multistage Stochastic Programs and a Constraint Integer Programming Approach to Mixed-Integer Nonlinear Programming
PhD Thesis, Humboldt-University Berlin, 2012, submitted.
SCIP_RETCODE SCIPcreateConsAbspower (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *x, SCIP_VAR *z, SCIP_Real exponent, SCIP_Real xoffset, SCIP_Real zcoef, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
 
SCIP_RETCODE SCIPcreateConsBasicAbspower (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *x, SCIP_VAR *z, SCIP_Real exponent, SCIP_Real xoffset, SCIP_Real zcoef, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPgetNlRowAbspower (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow)
 
SCIP_VARSCIPgetNonlinearVarAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetLinearVarAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetExponentAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetOffsetAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetCoefLinearAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetLhsAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetRhsAbspower (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetViolationAbspower (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)