# SCIP

Solving Constraint Integer Programs

cons_indicator.h File Reference

## Detailed Description

constraint handler for indicator constraints

Definition in file cons_indicator.h.

#include "scip/def.h"
#include "scip/type_cons.h"
#include "scip/type_lp.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_EXPORT SCIP_RETCODE SCIPincludeConshdlrIndicator (SCIP *scip)

Indicator Constraints

An indicator constraint is given by a binary variable $$z$$ and an inequality $$ax \leq b$$. It states that if $$z = 1$$ then $$ax \leq b$$ holds.

This constraint is handled by adding a slack variable $$s:\; ax - s \leq b$$ with $$s \geq 0$$. The constraint is enforced by fixing $$s$$ to 0 if $$z = 1$$.

Note
The constraint only implements an implication not an equivalence, i.e., it does not ensure that $$z = 1$$ if $$ax \leq b$$ or equivalently if $$s = 0$$ holds.

This constraint is equivalent to a linear constraint $$ax - s \leq b$$ and an SOS1 constraint on $$z$$ and $$s$$ (at most one should be nonzero). In the indicator context we can, however, separate more inequalities.

SCIP_EXPORT SCIP_RETCODE SCIPcreateConsIndicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_EXPORT SCIP_RETCODE SCIPcreateConsBasicIndicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs)

SCIP_EXPORT SCIP_RETCODE SCIPcreateConsIndicatorLinCons (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)

SCIP_EXPORT SCIP_RETCODE SCIPcreateConsBasicIndicatorLinCons (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar)

SCIP_EXPORT SCIP_RETCODE SCIPaddVarIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)

SCIP_EXPORT SCIP_CONSSCIPgetLinearConsIndicator (SCIP_CONS *cons)

SCIP_EXPORT SCIP_RETCODE SCIPsetLinearConsIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_CONS *lincons)

SCIP_EXPORT SCIP_RETCODE SCIPsetBinaryVarIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar)

SCIP_EXPORT SCIP_VARSCIPgetBinaryVarIndicator (SCIP_CONS *cons)

SCIP_EXPORT SCIP_VARSCIPgetSlackVarIndicator (SCIP_CONS *cons)

SCIP_EXPORT SCIP_RETCODE SCIPsetSlackVarUb (SCIP *scip, SCIP_CONS *cons, SCIP_Real ub)

SCIP_EXPORT SCIP_Bool SCIPisViolatedIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)

SCIP_EXPORT SCIP_RETCODE SCIPmakeIndicatorFeasible (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *changed)

SCIP_EXPORT SCIP_RETCODE SCIPmakeIndicatorsFeasible (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_Bool *changed)

SCIP_EXPORT SCIP_RETCODE SCIPaddLinearConsIndicator (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *lincons)

SCIP_EXPORT SCIP_RETCODE SCIPaddRowIndicator (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_ROW *row)