SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches

Detailed Description

methods and files provided by the default constraint handlers of SCIP

A detailed description what a constraint handler does and how to add a constraint handler to SCIP can be found here.

Data Structures

struct  SCIP_ConsNonlinear_Auxexpr
 
struct  SCIP_ConsNonlinear_BilinTerm
 

Topics

 Inclusion methods
 methods to include specific constraint handlers into SCIP
 

Files

file  cons_abspower.h
 some API functions of removed constraint handler for absolute power constraints \(\textrm{lhs} \leq \textrm{sign}(x+a) |x+a|^n + c z \leq \textrm{rhs}\)
 
file  cons_and.c
 Constraint handler for AND-constraints, \(r = x_1 \wedge x_2 \wedge \dots \wedge x_n\).
 
file  cons_and.h
 Constraint handler for AND constraints, \(r = x_1 \wedge x_2 \wedge \dots \wedge x_n\).
 
file  cons_benders.h
 constraint handler for Benders' decomposition
 
file  cons_benderslp.h
 constraint handler for benderslp decomposition
 
file  cons_bounddisjunction.h
 constraint handler for bound disjunction constraints \((x_1 \{\leq,\geq\} b_1) \vee \ldots \vee (x_n \{\leq,\geq\} b_n)\)
 
file  cons_cardinality.h
 constraint handler for cardinality constraints
 
file  cons_conjunction.h
 constraint handler for conjunction constraints
 
file  cons_countsols.h
 Constraint handler for counting feasible solutions.
 
file  cons_cumulative.h
 constraint handler for cumulative constraints
 
file  cons_disjunction.h
 constraint handler for disjunction constraints
 
file  cons_fixedvar.h
 constraint handler that checks bounds on fixed variables
 
file  cons_indicator.h
 constraint handler for indicator constraints
 
file  cons_integral.h
 constraint handler for the integrality constraint
 
file  cons_knapsack.h
 Constraint handler for knapsack constraints of the form \(a^T x \le b\), x binary and \(a \ge 0\).
 
file  cons_linear.h
 Constraint handler for linear constraints in their most general form, \(lhs <= a^T x <= rhs\).
 
file  cons_linking.h
 constraint handler for linking binary variables to a linking (continuous or integer) variable
 
file  cons_logicor.h
 Constraint handler for logicor constraints \(1^T x \ge 1\) (equivalent to set covering, but algorithms are suited for depth first search).
 
file  cons_nonlinear.h
 constraint handler for nonlinear constraints specified by algebraic expressions
 
file  cons_or.h
 Constraint handler for "or" constraints, \(r = x_1 \vee x_2 \vee \dots \vee x_n\).
 
file  cons_orbisack.h
 constraint handler for orbisack constraints
 
file  cons_orbitope.h
 constraint handler for (partitioning/packing/full) orbitope constraints w.r.t. the full symmetric group
 
file  cons_pseudoboolean.h
 constraint handler for pseudoboolean constraints
 
file  cons_quadratic.h
 some API functions of removed constraint handler for quadratic constraints \(\textrm{lhs} \leq \sum_{i,j} a_{i,j} x_ix_j + \sum_i b_i x_i \leq \textrm{rhs}\)
 
file  cons_setppc.h
 Constraint handler for the set partitioning / packing / covering constraints \(1^T x\ \{=, \le, \ge\}\ 1\).
 
file  cons_soc.h
 some API functions of removed constraint handler for second order cone constraints \(\sqrt{\gamma + \sum_{i=1}^{n} (\alpha_i\, (x_i + \beta_i))^2} \leq \alpha_{n+1}\, (x_{n+1}+\beta_{n+1})\)
 
file  cons_sos1.h
 constraint handler for SOS type 1 constraints
 
file  cons_sos2.h
 constraint handler for SOS type 2 constraints
 
file  cons_superindicator.h
 constraint handler for indicator constraints over arbitrary constraint types
 
file  cons_symresack.h
 constraint handler for symresack constraints
 
file  cons_varbound.h
 Constraint handler for variable bound constraints \(lhs \leq x + c y \leq rhs\).
 
file  cons_xor.h
 Constraint handler for XOR constraints, \(rhs = x_1 \oplus x_2 \oplus \dots \oplus x_n\).
 
file  cons_rpa.h
 constraint handler for ringpacking
 
file  cons_optcumulative.c
 constraint handler for cumulative constraints with optional activities
 

Pseudoboolean Constraints

The constraint handler deals with pseudo boolean constraints. These are constraints of the form

\[ \mbox{lhs} \leq \sum_{k=0}^m c_k \cdot x_k + \sum_{i=0}^n c_i \cdot \prod_{j \in I_i} x_j \leq \mbox{rhs} \]

where all \(x\) are binary.

enum  SCIP_LinearConsType {
  SCIP_LINEARCONSTYPE_INVALIDCONS = -1 ,
  SCIP_LINEARCONSTYPE_LINEAR = 0 ,
  SCIP_LINEARCONSTYPE_LOGICOR = 1 ,
  SCIP_LINEARCONSTYPE_KNAPSACK = 2 ,
  SCIP_LINEARCONSTYPE_SETPPC = 3
}
 
typedef enum SCIP_LinearConsType SCIP_LINEARCONSTYPE
 
SCIP_RETCODE SCIPcreateConsPseudobooleanWithConss (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONS *lincons, SCIP_LINEARCONSTYPE linconstype, SCIP_CONS **andconss, SCIP_Real *andcoefs, int nandconss, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, 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 SCIPcreateConsPseudoboolean (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, 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 SCIPcreateConsBasicPseudoboolean (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **linvars, int nlinvars, SCIP_Real *linvals, SCIP_VAR ***terms, int nterms, int *ntermvars, SCIP_Real *termvals, SCIP_VAR *indvar, SCIP_Real weight, SCIP_Bool issoftcons, SCIP_VAR *intvar, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPaddCoefPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR *const var, SCIP_Real const val)
 
SCIP_RETCODE SCIPaddTermPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const vars, int const nvars, SCIP_Real const val)
 
SCIP_VARSCIPgetIndVarPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_CONSSCIPgetLinearConsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_LINEARCONSTYPE SCIPgetLinearConsTypePseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
int SCIPgetNLinVarsWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_RETCODE SCIPgetLinDatasWithoutAndPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_VAR **const linvars, SCIP_Real *const lincoefs, int *const nlinvars)
 
SCIP_RETCODE SCIPgetAndDatasPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_CONS **const andconss, SCIP_Real *const andcoefs, int *const nandconss)
 
int SCIPgetNAndsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_RETCODE SCIPchgLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const lhs)
 
SCIP_RETCODE SCIPchgRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons, SCIP_Real const rhs)
 
SCIP_Real SCIPgetLhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 
SCIP_Real SCIPgetRhsPseudoboolean (SCIP *const scip, SCIP_CONS *const cons)
 

Set Packing/Partitioning/Covering Constraints

This constraint handler handles three special classes of linear constraints, namely set partitioning, set packing, and set covering constraints. For a set of binary variables \(x_i, i=1,\dots,n\), a set partitioning constraint has the form

\[ \sum_{i=1}^n x_i = 1, \]

a set packing constraint has the form

\[ \sum_{i=1}^n x_i \le 1, \]

and a set covering constraint has the form

\[ \sum_{i=1}^n x_i \ge 1. \]

enum  SCIP_SetppcType {
  SCIP_SETPPCTYPE_PARTITIONING = 0 ,
  SCIP_SETPPCTYPE_PACKING = 1 ,
  SCIP_SETPPCTYPE_COVERING = 2
}
 
typedef enum SCIP_SetppcType SCIP_SETPPCTYPE
 
SCIP_RETCODE SCIPcreateConsSetpart (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicSetpart (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPcreateConsSetpack (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicSetpack (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPcreateConsSetcover (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicSetcover (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPaddCoefSetppc (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
 
int SCIPgetNVarsSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_SETPPCTYPE SCIPgetTypeSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualsolSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowSetppc (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetNFixedonesSetppc (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetNFixedzerosSetppc (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPcleanupConssSetppc (SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible, int *naddconss, int *ndelconss, int *nchgcoefs, int *nfixedvars)
 

Linear Constraints

This constraint handler handles linear constraints in their most general form. That is,

\[ lhs \leq \sum_{i=1}^n a_i x_i \leq rhs \]

with \(a_i \in Q, i = 1,\dots,n\), \(lhs\in Q \cup \{-\infty\}\), \(rhs\in Q \cup \{\infty\}\), and decision variables \(x_i, i = 1,\dots,n\) which can be binary, integer, or continuous.

Furthermore, this header offers the upgrade functionality of a general linear constraint into a more specific constraint, such as a knapsack constraint, via SCIP_DECL_LINCONSUPGD() and SCIPincludeLinconsUpgrade()

typedef struct SCIP_LinConsUpgrade SCIP_LINCONSUPGRADE
 
SCIP_RETCODE SCIPincludeLinconsUpgrade (SCIP *scip, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority, const char *conshdlrname)
 
SCIP_RETCODE SCIPcreateConsLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, 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 SCIPcreateConsBasicLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPcopyConsLinear (SCIP *scip, SCIP_CONS **cons, SCIP *sourcescip, const char *name, int nvars, SCIP_VAR **sourcevars, SCIP_Real *sourcecoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, 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_Bool global, SCIP_Bool *valid)
 
SCIP_RETCODE SCIPaddCoefLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
SCIP_RETCODE SCIPchgCoefLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
SCIP_RETCODE SCIPdelCoefLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
 
SCIP_Real SCIPgetLhsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetRhsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPchgLhsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
 
SCIP_RETCODE SCIPchgRhsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
 
int SCIPgetNVarsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetValsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetActivityLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
 
SCIP_Real SCIPgetFeasibilityLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
 
SCIP_Real SCIPgetDualsolLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPupgradeConsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_CONS **upgdcons)
 
SCIP_RETCODE SCIPclassifyConstraintTypesLinear (SCIP *scip, SCIP_LINCONSSTATS *linconsstats)
 
SCIP_RETCODE SCIPcleanupConssLinear (SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible)
 
#define SCIP_DECL_LINCONSUPGD(x)
 

Nonlinear Constraints

typedef struct SCIP_ConsNonlinear_Auxexpr SCIP_CONSNONLINEAR_AUXEXPR
 
typedef struct SCIP_ConsNonlinear_BilinTerm SCIP_CONSNONLINEAR_BILINTERM
 
SCIP_RETCODE SCIPincludeConsUpgradeNonlinear (SCIP *scip, SCIP_DECL_NONLINCONSUPGD((*nlconsupgd)), int priority, SCIP_Bool active, const char *conshdlrname)
 
SCIP_RETCODE SCIPcreateConsNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_EXPR *expr, 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_RETCODE SCIPcreateConsBasicNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPcreateConsQuadraticNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, 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_RETCODE SCIPcreateConsBasicQuadraticNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPcreateConsBasicSOCNonlinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *coefs, SCIP_Real *offsets, SCIP_Real constant, SCIP_VAR *rhsvar, SCIP_Real rhscoeff, SCIP_Real rhsoffset)
 
SCIP_RETCODE SCIPcreateConsBasicSignpowerNonlinear (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_Longint SCIPgetCurBoundsTagNonlinear (SCIP_CONSHDLR *conshdlr)
 
SCIP_Longint SCIPgetLastBoundRelaxTagNonlinear (SCIP_CONSHDLR *conshdlr)
 
void SCIPincrementCurBoundsTagNonlinear (SCIP_CONSHDLR *conshdlr, SCIP_Bool boundrelax)
 
SCIP_HASHMAPSCIPgetVarExprHashmapNonlinear (SCIP_CONSHDLR *conshdlr)
 
SCIP_RETCODE SCIPprocessRowprepNonlinear (SCIP *scip, SCIP_NLHDLR *nlhdlr, SCIP_CONS *cons, SCIP_EXPR *expr, SCIP_ROWPREP *rowprep, SCIP_Bool overestimate, SCIP_VAR *auxvar, SCIP_Real auxvalue, SCIP_Bool allowweakcuts, SCIP_Bool branchscoresuccess, SCIP_Bool inenforcement, SCIP_SOL *sol, SCIP_RESULT *result)
 
SCIP_Bool SCIPassumeConvexNonlinear (SCIP_CONSHDLR *conshdlr)
 
SCIP_RETCODE SCIPcollectBilinTermsNonlinear (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss)
 
int SCIPgetNBilinTermsNonlinear (SCIP_CONSHDLR *conshdlr)
 
SCIP_CONSNONLINEAR_BILINTERMSCIPgetBilinTermsNonlinear (SCIP_CONSHDLR *conshdlr)
 
int SCIPgetBilinTermIdxNonlinear (SCIP_CONSHDLR *conshdlr, SCIP_VAR *x, SCIP_VAR *y)
 
SCIP_CONSNONLINEAR_BILINTERMSCIPgetBilinTermNonlinear (SCIP_CONSHDLR *conshdlr, SCIP_VAR *x, SCIP_VAR *y)
 
SCIP_Real SCIPevalBilinAuxExprNonlinear (SCIP *scip, SCIP_VAR *x, SCIP_VAR *y, SCIP_CONSNONLINEAR_AUXEXPR *auxexpr, SCIP_SOL *sol)
 
SCIP_RETCODE SCIPinsertBilinearTermExistingNonlinear (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_VAR *x, SCIP_VAR *y, SCIP_VAR *auxvar, int nlockspos, int nlocksneg)
 
SCIP_RETCODE SCIPinsertBilinearTermImplicitNonlinear (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_VAR *x, SCIP_VAR *y, SCIP_VAR *auxvar, SCIP_Real coefx, SCIP_Real coefy, SCIP_Real coefaux, SCIP_Real cst, SCIP_Bool overestimate)
 
SCIP_RETCODE SCIPcomputeFacetVertexPolyhedralNonlinear (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_Bool overestimate, SCIP_DECL_VERTEXPOLYFUN((*function)), void *fundata, SCIP_Real *xstar, SCIP_Real *box, int nallvars, SCIP_Real targetvalue, SCIP_Bool *success, SCIP_Real *facetcoefs, SCIP_Real *facetconstant)
 
SCIP_EXPRSCIPgetExprNonlinear (SCIP_CONS *cons)
 
SCIP_Real SCIPgetLhsNonlinear (SCIP_CONS *cons)
 
SCIP_Real SCIPgetRhsNonlinear (SCIP_CONS *cons)
 
SCIP_RETCODE SCIPgetNlRowNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow)
 
SCIP_EXPRCURV SCIPgetCurvatureNonlinear (SCIP_CONS *cons)
 
SCIP_RETCODE SCIPcheckQuadraticNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *isquadratic)
 
SCIP_RETCODE SCIPchgLhsNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
 
SCIP_RETCODE SCIPchgRhsNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
 
SCIP_RETCODE SCIPchgExprNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_EXPR *expr)
 
SCIP_RETCODE SCIPaddLinearVarNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef)
 
SCIP_RETCODE SCIPaddExprNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_EXPR *expr, SCIP_Real coef)
 
SCIP_RETCODE SCIPgetAbsViolationNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Real *viol)
 
SCIP_RETCODE SCIPgetRelViolationNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Real *viol)
 
void SCIPgetLinvarMayDecreaseNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR **var, SCIP_Real *coef)
 
void SCIPgetLinvarMayIncreaseNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR **var, SCIP_Real *coef)
 
int SCIPgetExprNLocksPosNonlinear (SCIP_EXPR *expr)
 
int SCIPgetExprNLocksNegNonlinear (SCIP_EXPR *expr)
 
SCIP_VARSCIPgetExprAuxVarNonlinear (SCIP_EXPR *expr)
 
int SCIPgetExprNEnfosNonlinear (SCIP_EXPR *expr)
 
void SCIPgetExprEnfoDataNonlinear (SCIP_EXPR *expr, int idx, SCIP_NLHDLR **nlhdlr, SCIP_NLHDLREXPRDATA **nlhdlrexprdata, SCIP_NLHDLR_METHOD *nlhdlrparticipation, SCIP_Bool *sepabelowusesactivity, SCIP_Bool *sepaaboveusesactivity, SCIP_Real *auxvalue)
 
void SCIPsetExprEnfoAuxValueNonlinear (SCIP_EXPR *expr, int idx, SCIP_Real auxvalue)
 
unsigned int SCIPgetExprNPropUsesActivityNonlinear (SCIP_EXPR *expr)
 
unsigned int SCIPgetExprNSepaUsesActivityNonlinear (SCIP_EXPR *expr)
 
unsigned int SCIPgetExprNAuxvarUsesNonlinear (SCIP_EXPR *expr)
 
SCIP_RETCODE SCIPregisterExprUsageNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_Bool useauxvar, SCIP_Bool useactivityforprop, SCIP_Bool useactivityforsepabelow, SCIP_Bool useactivityforsepaabove)
 
SCIP_RETCODE SCIPgetExprActivityNonlinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Real *activity)
 
SCIP_RETCODE SCIPgetExprAbsOrigViolationNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_SOL *sol, SCIP_Longint soltag, SCIP_Real *viol, SCIP_Bool *violunder, SCIP_Bool *violover)
 
SCIP_RETCODE SCIPgetExprAbsAuxViolationNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_Real auxvalue, SCIP_SOL *sol, SCIP_Real *viol, SCIP_Bool *violunder, SCIP_Bool *violover)
 
SCIP_RETCODE SCIPgetExprRelAuxViolationNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_Real auxvalue, SCIP_SOL *sol, SCIP_Real *viol, SCIP_Bool *violunder, SCIP_Bool *violover)
 
SCIP_INTERVAL SCIPgetExprBoundsNonlinear (SCIP *scip, SCIP_EXPR *expr)
 
SCIP_RETCODE SCIPtightenExprIntervalNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_INTERVAL newbounds, SCIP_Bool *cutoff, int *ntightenings)
 
SCIP_RETCODE SCIPmarkExprPropagateNonlinear (SCIP *scip, SCIP_EXPR *expr)
 
void SCIPaddExprViolScoreNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_Real violscore)
 
SCIP_RETCODE SCIPaddExprsViolScoreNonlinear (SCIP *scip, SCIP_EXPR **exprs, int nexprs, SCIP_Real violscore, SCIP_SOL *sol, SCIP_Bool *success)
 
SCIP_Real SCIPgetExprViolScoreNonlinear (SCIP_EXPR *expr)
 
SCIP_Real SCIPgetExprPartialDiffNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_VAR *var)
 
SCIP_Real SCIPgetExprPartialDiffGradientDirNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_VAR *var)
 
SCIP_Real SCIPevalExprQuadraticAuxNonlinear (SCIP *scip, SCIP_EXPR *expr, SCIP_SOL *sol)
 
#define SCIP_DECL_VERTEXPOLYFUN(f)   SCIP_Real f (SCIP_Real* args, int nargs, void* funcdata)
 
#define SCIP_MAXVERTEXPOLYDIM   14
 
#define SCIP_DECL_NONLINCONSUPGD(x)
 

Abspower Constraints (deprecated)

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)
 

AND Constraints

This constraint handler deals with AND-constraints. These are constraint of the form:

\[ r = x_1 \wedge x_2 \wedge \dots \wedge x_n \]

where \(x_i\) is a binary variable for all \(i\). Hence, \(r\) is also of binary type. The variable \(r\) is called resultant and the \(x\)'s operators.

SCIP_RETCODE SCIPcreateConsAnd (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicAnd (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars)
 
int SCIPgetNVarsAnd (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsAnd (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetResultantAnd (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Bool SCIPisAndConsSorted (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsortAndCons (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPchgAndConsCheckFlagWhenUpgr (SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)
 
SCIP_RETCODE SCIPchgAndConsRemovableFlagWhenUpgr (SCIP *scip, SCIP_CONS *cons, SCIP_Bool flag)
 

Benders Constraints

Two constraint handlers are implemented for the generation of Benders' decomposition cuts. When included in a problem, the Benders' decomposition constraint handlers generate cuts during the enforcement of LP and relaxation solutions. Additionally, Benders' decomposition cuts can be generated when checking the feasibility of solutions with respect to the subproblem constraints.

This constraint handler has an enforcement priority that is less than the integer constraint handler. This means that only integer feasible solutions from the LP solver are enforced by this constraint handler. This is the traditional behaviour of the branch-and-check approach to Benders' decomposition. Additionally, the check priority is set low, such that this expensive constraint handler is only called as a final check on primal feasible solutions.

This constraint handler in the standard constraint handler that should be added when using Benders' decomposition. Additionally, there is a flag in SCIPincludeConshdlrBenders that permits the addition of the LP constraint handler, cons_benderslp. The use of both cons_benders and cons_benderslp allows the user to perform a multiphase Benders' decomposition algorithm.

SCIP_RETCODE SCIPconsBendersEnforceSolution (SCIP *scip, SCIP_SOL *sol, SCIP_CONSHDLR *conshdlr, SCIP_RESULT *result, SCIP_BENDERSENFOTYPE type, SCIP_Bool checkint)
 

Bound Disjunction Constraints

This constraint handler handles bound disjunction constraints of the form

\[ (x_1 \{\leq,\geq\} b_1) \vee \ldots \vee (x_n \{\leq,\geq\} b_n) \]

with bounds \(b_i \in Q\), decision variables \(x_i\), which can be of any type, and bound types \(\leq\) or \(\geq\).

SCIP_RETCODE SCIPcreateConsBounddisjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, 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 SCIPcreateConsBasicBounddisjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds)
 
SCIP_RETCODE SCIPcreateConsBounddisjunctionRedundant (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds, 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 SCIPcreateConsBasicBounddisjunctionRedundant (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_BOUNDTYPE *boundtypes, SCIP_Real *bounds)
 
int SCIPgetNVarsBounddisjunction (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsBounddisjunction (SCIP *scip, SCIP_CONS *cons)
 
SCIP_BOUNDTYPESCIPgetBoundtypesBounddisjunction (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetBoundsBounddisjunction (SCIP *scip, SCIP_CONS *cons)
 

Cardinality Constraints

This constraint handler handles cardinality constraints of the form

\[ |\mbox{supp}(x)| \leq b \]

with integer right-hand side \(b\). Here, \(|\mbox{supp}(x)|\) denotes the number of nonzero entries of the vector \(x\).

Cardinality constraints generalize special ordered set of type one (SOS1) constraints in which \(b = 1\).

SCIP_RETCODE SCIPcreateConsCardinality (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, int cardval, SCIP_VAR **indvars, SCIP_Real *weights, 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_RETCODE SCIPcreateConsBasicCardinality (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, int cardval, SCIP_VAR **indvars, SCIP_Real *weights)
 
SCIP_RETCODE SCIPchgCardvalCardinality (SCIP *scip, SCIP_CONS *cons, int cardval)
 
SCIP_RETCODE SCIPaddVarCardinality (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_VAR *indvar, SCIP_Real weight)
 
SCIP_RETCODE SCIPappendVarCardinality (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_VAR *indvar)
 
int SCIPgetNVarsCardinality (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsCardinality (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetCardvalCardinality (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetWeightsCardinality (SCIP *scip, SCIP_CONS *cons)
 

Conjunction Constraints

A conjunction constraint \( C \) is a constraint of the form

\[ C = C_1 \wedge \dots \wedge C_n \]

where all the \( C_i \) are individual constraints themselves.

SCIP_RETCODE SCIPcreateConsConjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic)
 
SCIP_RETCODE SCIPcreateConsBasicConjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss)
 
SCIP_RETCODE SCIPaddConsElemConjunction (SCIP *scip, SCIP_CONS *cons, SCIP_CONS *addcons)
 

Constraint Handler for counting solutions

If this constraint handler is activated than it counts or collects all feasible solutions. We refer to How to use SCIP to count/enumerate feasible solutions for more details about using SCIP for counting feasible solutions.

 SCIP_DECL_DIALOGEXEC (SCIPdialogExecCountPresolve)
 
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecCount)
 
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecWriteAllsolutions)
 
SCIP_RETCODE SCIPcount (SCIP *scip)
 
SCIP_Longint SCIPgetNCountedSols (SCIP *scip, SCIP_Bool *valid)
 
void SCIPgetNCountedSolsstr (SCIP *scip, char **buffer, int buffersize, int *requiredsize)
 
SCIP_Longint SCIPgetNCountedFeasSubtrees (SCIP *scip)
 
void SCIPgetCountedSparseSols (SCIP *scip, SCIP_VAR ***vars, int *nvars, SCIP_SPARSESOL ***sols, int *nsols)
 
SCIP_RETCODE SCIPsetParamsCountsols (SCIP *scip)
 

Cumulative Constraints

Given:

  • a set of jobs, represented by their integer start time variables \(S_j\), their array of processing times \(p_j\) and of their demands \(d_j\).
  • an integer resource capacity \(C\)

The cumulative constraint ensures that for each point in time \(t\) \(\sum_{j: S_j \leq t < S_j + p_j} d_j \leq C\) holds.

Separation:
  • can be done using binary start time model, see Pritskers, Watters and Wolfe
  • or by just separating relatively weak cuts on the start time variables
Propagation:
  • time tabling, Klein & Scholl (1999)
  • Edge-finding from Petr Vilim, adjusted and simplified for dynamic repropagation (2009)
  • energetic reasoning, see Baptiste, Le Pape, Nuijten (2001)
SCIP_RETCODE SCIPcreateConsCumulative (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, 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 SCIPcreateConsBasicCumulative (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity)
 
SCIP_RETCODE SCIPsetHminCumulative (SCIP *scip, SCIP_CONS *cons, int hmin)
 
int SCIPgetHminCumulative (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsetHmaxCumulative (SCIP *scip, SCIP_CONS *cons, int hmax)
 
int SCIPgetHmaxCumulative (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsCumulative (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetNVarsCumulative (SCIP *scip, SCIP_CONS *cons)
 
int SCIPgetCapacityCumulative (SCIP *scip, SCIP_CONS *cons)
 
int * SCIPgetDurationsCumulative (SCIP *scip, SCIP_CONS *cons)
 
int * SCIPgetDemandsCumulative (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPcheckCumulativeCondition (SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, int hmin, int hmax, SCIP_Bool *violated, SCIP_CONS *cons, SCIP_Bool printreason)
 
SCIP_RETCODE SCIPnormalizeCumulativeCondition (SCIP *scip, int nvars, SCIP_VAR **vars, int *durations, int *demands, int *capacity, int *nchgcoefs, int *nchgsides)
 
SCIP_RETCODE SCIPsplitCumulativeCondition (SCIP *scip, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, int *hmin, int *hmax, int *split)
 
SCIP_RETCODE SCIPpresolveCumulativeCondition (SCIP *scip, int nvars, SCIP_VAR **vars, int *durations, int hmin, int hmax, SCIP_Bool *downlocks, SCIP_Bool *uplocks, SCIP_CONS *cons, SCIP_Bool *delvars, int *nfixedvars, int *nchgsides, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPpropCumulativeCondition (SCIP *scip, SCIP_PRESOLTIMING presoltiming, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, int hmin, int hmax, SCIP_CONS *cons, int *nchgbds, SCIP_Bool *initialized, SCIP_Bool *explanation, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPrespropCumulativeCondition (SCIP *scip, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, int hmin, int hmax, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_Bool *explanation, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPvisualizeConsCumulative (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsetSolveCumulative (SCIP *scip,)
 
SCIP_RETCODE SCIPsolveCumulative (SCIP *scip, int njobs, SCIP_Real *ests, SCIP_Real *lsts, SCIP_Real *objvals, int *durations, int *demands, int capacity, int hmin, int hmax, SCIP_Real timelimit, SCIP_Real memorylimit, SCIP_Longint maxnodes, SCIP_Bool *solved, SCIP_Bool *infeasible, SCIP_Bool *unbounded, SCIP_Bool *error)
 
SCIP_RETCODE SCIPcreateWorstCaseProfile (SCIP *scip, SCIP_PROFILE *profile, int nvars, SCIP_VAR **vars, int *durations, int *demands)
 
int SCIPcomputeHmin (SCIP *scip, SCIP_PROFILE *profile, int capacity)
 
int SCIPcomputeHmax (SCIP *scip, SCIP_PROFILE *profile, int capacity)
 
#define SCIP_DECL_SOLVECUMULATIVE(x)
 

Disjunction Constraints

A disjunction constraint \( C \) is a constraint of the form

\[ C = C_1 \vee \dots \vee C_n \]

where all the \( C_i \) are individual constraints themselves.

SCIP_RETCODE SCIPcreateConsDisjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_CONS *relaxcons, SCIP_Bool initial, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic)
 
SCIP_RETCODE SCIPcreateConsBasicDisjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_CONS *relaxcons)
 
SCIP_RETCODE SCIPaddConsElemDisjunction (SCIP *scip, SCIP_CONS *cons, SCIP_CONS *addcons)
 

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_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_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_RETCODE SCIPcreateConsIndicatorGeneric (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool activeone, SCIP_Bool lessthanineq, 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_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_RETCODE SCIPcreateConsIndicatorGenericLinCons (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool activeone, 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_RETCODE SCIPcreateConsBasicIndicatorLinCons (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar)
 
SCIP_RETCODE SCIPcreateConsIndicatorGenericLinConsPure (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_Bool activeone, 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_RETCODE SCIPcreateConsIndicatorLinConsPure (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, 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_RETCODE SCIPaddVarIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
SCIP_CONSSCIPgetLinearConsIndicator (SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsetLinearConsIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_CONS *lincons)
 
SCIP_RETCODE SCIPsetBinaryVarIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar)
 
SCIP_Bool SCIPgetActiveOnIndicator (SCIP_CONS *cons)
 
SCIP_VARSCIPgetBinaryVarIndicator (SCIP_CONS *cons)
 
SCIP_VARSCIPgetBinaryVarIndicatorGeneric (SCIP_CONS *cons)
 
SCIP_VARSCIPgetSlackVarIndicator (SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsetSlackVarUb (SCIP *scip, SCIP_CONS *cons, SCIP_Real ub)
 
SCIP_Bool SCIPisViolatedIndicator (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
 
SCIP_RETCODE SCIPmakeIndicatorFeasible (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *changed)
 
SCIP_RETCODE SCIPmakeIndicatorsFeasible (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_Bool *changed)
 
SCIP_RETCODE SCIPaddLinearConsIndicator (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *lincons)
 
SCIP_RETCODE SCIPaddRowIndicator (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_ROW *row)
 

Knapsack Constraints

This constraint handler handles a special type of linear constraints, namely knapsack constraints. A knapsack constraint has the form

\[ \sum_{i=1}^n a_i x_i \leq b \]

with non-negative integer coefficients \(a_i\), integer right-hand side \(b\), and binary variables \(x_i\).

SCIP_RETCODE SCIPcreateConsKnapsack (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Longint *weights, SCIP_Longint capacity, 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 SCIPcreateConsBasicKnapsack (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Longint *weights, SCIP_Longint capacity)
 
SCIP_RETCODE SCIPaddCoefKnapsack (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Longint weight)
 
SCIP_Longint SCIPgetCapacityKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPchgCapacityKnapsack (SCIP *scip, SCIP_CONS *cons, SCIP_Longint capacity)
 
int SCIPgetNVarsKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_LongintSCIPgetWeightsKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualsolKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowKnapsack (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPsolveKnapsackExactly (SCIP *scip, int nitems, SCIP_Longint *weights, SCIP_Real *profits, SCIP_Longint capacity, int *items, int *solitems, int *nonsolitems, int *nsolitems, int *nnonsolitems, SCIP_Real *solval, SCIP_Bool *success)
 
SCIP_RETCODE SCIPsolveKnapsackApproximately (SCIP *scip, int nitems, SCIP_Longint *weights, SCIP_Real *profits, SCIP_Longint capacity, int *items, int *solitems, int *nonsolitems, int *nsolitems, int *nnonsolitems, SCIP_Real *solval)
 
SCIP_RETCODE SCIPseparateKnapsackCuts (SCIP *scip, SCIP_CONS *cons, SCIP_SEPA *sepa, SCIP_VAR **vars, int nvars, SCIP_Longint *weights, SCIP_Longint capacity, SCIP_SOL *sol, SCIP_Bool usegubs, SCIP_Bool *cutoff, int *ncuts)
 
SCIP_RETCODE SCIPseparateRelaxedKnapsack (SCIP *scip, SCIP_CONS *cons, SCIP_SEPA *sepa, int nknapvars, SCIP_VAR **knapvars, SCIP_Real *knapvals, SCIP_Real valscale, SCIP_Real rhs, SCIP_SOL *sol, SCIP_Bool *cutoff, int *ncuts)
 
SCIP_RETCODE SCIPcleanupConssKnapsack (SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible)
 

Linking Constraints

The constraints handler stores linking constraints between a linking variable (continuous or integer) and an array of binary variables. Such a linking constraint has the form:

\[ y = \sum_{i=1}^n {c_i * x_i} \]

with linking variable (continuous or integer) \( y \), binary variables \( x_1, \dots, x_n \) and offset \(b \in Q\), and with the additional side condition that exactly one binary variable has to be one (set partitioning condition).

This constraint can be created only with the linking variable, if it is an integer variable. In this case the binary variables are only created on demand. That is, whenever someone asks for the binary variables. Therefore, such constraints can be used to get a "binary representation" of the domain of the linking variable which will be dynamically created.

SCIP_RETCODE SCIPcreateConsLinking (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *linkvar, SCIP_VAR **binvars, SCIP_Real *vals, int nbinvars, 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 SCIPcreateConsBasicLinking (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *linkvar, SCIP_VAR **binvars, SCIP_Real *vals, int nbinvars)
 
SCIP_Bool SCIPexistsConsLinking (SCIP *scip, SCIP_VAR *linkvar)
 
SCIP_CONSSCIPgetConsLinking (SCIP *scip, SCIP_VAR *linkvar)
 
SCIP_VARSCIPgetLinkvarLinking (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPgetBinvarsLinking (SCIP *scip, SCIP_CONS *cons, SCIP_VAR ***binvars, int *nbinvars)
 
int SCIPgetNBinvarsLinking (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetValsLinking (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPgetBinvarsDataLinking (SCIP_CONS *cons, SCIP_VAR ***binvars, SCIP_Real **vals, int *nbinvars)
 

Logicor Constraints

This constraint handler handles a special type of linear constraints, namely logic or constraints. These are equivalent to set covering constraints, but are handled by special algorithms which are better suited for depth first search. For a set of binary variables \(x_i, i=1,\dots,n\), a logic or constraint has the form

\[ \sum_{i=1}^n x_i \ge 1. \]

SCIP_RETCODE SCIPcreateConsLogicor (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicLogicor (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars)
 
SCIP_RETCODE SCIPaddCoefLogicor (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
 
int SCIPgetNVarsLogicor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsLogicor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualsolLogicor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasLogicor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowLogicor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPcleanupConssLogicor (SCIP *scip, SCIP_Bool onlychecked, int *naddconss, int *ndelconss, int *nchgcoefs)
 

OR Constraints

This constraint handler deals with OR constraint. These are constraint of the form:

\[ r = x_1 \vee x_2 \vee \dots \vee x_n \]

where \(x_i\) is a binary variable for all \(i\). Hence, \(r\) is also of binary type. The variable \(r\) is called resultant and the \(x\)'s operators.

SCIP_RETCODE SCIPcreateConsOr (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicOr (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *resvar, int nvars, SCIP_VAR **vars)
 
int SCIPgetNVarsOr (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsOr (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetResultantOr (SCIP *scip, SCIP_CONS *cons)
 

Orbisack Constraints

This constraint handler can be used to handle symmetries in certain 0/1-programs. The principle structure is that some variables can be ordered in matrix form with two columns, such that permuting both columns does not change the validity and objective function value of a solution. That is, there exists a permutation symmetry of the program that permutes the variables of the first and second column row-wise.

In more mathematical terms the structure has to be as follows: There are 0/1-variables \(x_{ij}\), \(i \in \{1, \dots, n\}\), \(j \in \{1, 2\}\). Permuting columns of \(x\) does not change the validity and objective function value of any feasible solution.

SCIP_RETCODE SCIPcheckSolutionOrbisack (SCIP *scip, SCIP_SOL *sol, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool printreason, SCIP_Bool *feasible)
 
SCIP_RETCODE SCIPcreateConsOrbisack (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *const *vars1, SCIP_VAR *const *vars2, int nrows, SCIP_Bool ispporbisack, SCIP_Bool isparttype, SCIP_Bool ismodelcons, 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 SCIPcreateConsBasicOrbisack (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR **vars1, SCIP_VAR **vars2, int nrows, SCIP_Bool ispporbisack, SCIP_Bool isparttype, SCIP_Bool ismodelcons)
 

Orbitope Constraints

This constraint handler can be used to handle symmetries in certain 0/1-programs. The principle structure is that some variables can be ordered in matrix form, such that permuting columns does not change the validity and objective function value of a solution. That is, the symmetry group of the program contains the full symmetric group obtained by permuting the columns of this matrix. These symmetries can be handled by so-called full orbitopes.

Moreover, if the variables in each row are contained in set packing or partitioning constraint, these symmetries can be handled by specialized packing or partitioning orbitopes.

In more mathematical terms the structure has to be as follows: There are 0/1-variables \(x_{ij}\), \(i \in \{1, \dots, p\}\), \(j \in \{1, \dots, q\}\). The variables may be coupled through set packing or partitioning constraints:

\[ \sum_{j = 1}^q x_{ij} \leq 1 \quad \mbox{or} \quad \sum_{j = 1}^q x_{ij} = 1 \quad \mbox{for all }i = 1, \ldots, p. \]

Permuting columns of \(x\) does not change the validity and objective function value of any feasible solution.

We distinguish whether an orbitope is a model constraint or not. If it is a model constraint, then its information are copied to subSCIPs. Otherwise, the constraint was added just for the purpose of symmetry handling and we do not copy its information to subSCIPs.

SCIP_RETCODE SCIPcreateConsOrbitope (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool usedynamicprop, SCIP_Bool mayinteract, SCIP_Bool resolveprop, SCIP_Bool ismodelcons, 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 SCIPcreateConsBasicOrbitope (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR ***vars, SCIP_ORBITOPETYPE orbitopetype, int nspcons, int nblocks, SCIP_Bool usedynamicprop, SCIP_Bool resolveprop, SCIP_Bool ismodelcons, SCIP_Bool mayinteract)
 

Quadratic Constraints (deprecated)

SCIP_RETCODE SCIPcreateConsQuadratic (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoeffs, 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_RETCODE SCIPcreateConsBasicQuadratic (SCIP *scip, SCIP_CONS **cons, const char *name, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadterms, SCIP_VAR **quadvars1, SCIP_VAR **quadvars2, SCIP_Real *quadcoefs, SCIP_Real lhs, SCIP_Real rhs)
 
void SCIPaddConstantQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_Real constant)
 
SCIP_RETCODE SCIPaddLinearVarQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef)
 
SCIP_RETCODE SCIPaddQuadVarQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real lincoef, SCIP_Real sqrcoef)
 
SCIP_RETCODE SCIPaddQuadVarLinearCoefQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef)
 
SCIP_RETCODE SCIPaddSquareCoefQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real coef)
 
SCIP_RETCODE SCIPaddBilinTermQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var1, SCIP_VAR *var2, SCIP_Real coef)
 
SCIP_RETCODE SCIPgetNlRowQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow)
 
SCIP_RETCODE SCIPchgLhsQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
 
SCIP_RETCODE SCIPchgRhsQuadratic (SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
 

SOC Constraints (deprecated)

SCIP_RETCODE SCIPcreateConsSOC (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *coefs, SCIP_Real *offsets, SCIP_Real constant, SCIP_VAR *rhsvar, SCIP_Real rhscoeff, SCIP_Real rhsoffset, 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_RETCODE SCIPcreateConsBasicSOC (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *coefs, SCIP_Real *offsets, SCIP_Real constant, SCIP_VAR *rhsvar, SCIP_Real rhscoeff, SCIP_Real rhsoffset)
 
SCIP_RETCODE SCIPgetNlRowSOC (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow)
 

Specially Ordered Set (SOS) Type 1 Constraints

A specially ordered set of type 1 (SOS1) is a sequence of variables such that at most one variable is nonzero. The special case of two variables arises, for instance, from equilibrium or complementary conditions like \(x \cdot y = 0\). Note that it is in principle allowed that a variable appears twice, but it then can be fixed to 0.

SCIP_RETCODE SCIPcreateConsSOS1 (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights, 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_RETCODE SCIPcreateConsBasicSOS1 (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights)
 
SCIP_RETCODE SCIPaddVarSOS1 (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
 
SCIP_RETCODE SCIPappendVarSOS1 (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
 
int SCIPgetNVarsSOS1 (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsSOS1 (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetWeightsSOS1 (SCIP *scip, SCIP_CONS *cons)
 
SCIP_DIGRAPHSCIPgetConflictgraphSOS1 (SCIP_CONSHDLR *conshdlr)
 
int SCIPgetNSOS1Vars (SCIP_CONSHDLR *conshdlr)
 
SCIP_Bool SCIPvarIsSOS1 (SCIP_CONSHDLR *conshdlr, SCIP_VAR *var)
 
int SCIPvarGetNodeSOS1 (SCIP_CONSHDLR *conshdlr, SCIP_VAR *var)
 
SCIP_VARSCIPnodeGetVarSOS1 (SCIP_DIGRAPH *conflictgraph, int node)
 
SCIP_RETCODE SCIPmakeSOS1sFeasible (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_Bool *changed, SCIP_Bool *success)
 

Specially Ordered Set (SOS) Type 2 Constraints

A specially ordered set of type 2 (SOS2) is a sequence of variables such that at most two variables are nonzero and if two variables are nonzero they must be adjacent in the specified sequence. Note that it is in principle allowed that a variable appears twice, but it then can be fixed to 0 if it is at least two apart in the sequence.

SCIP_RETCODE SCIPcreateConsSOS2 (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights, 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_RETCODE SCIPcreateConsBasicSOS2 (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *weights)
 
SCIP_RETCODE SCIPaddVarSOS2 (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real weight)
 
SCIP_RETCODE SCIPappendVarSOS2 (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
 
int SCIPgetNVarsSOS2 (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsSOS2 (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetWeightsSOS2 (SCIP *scip, SCIP_CONS *cons)
 

Superindicator Constraints

Superindicator constraints are constraints of the form

\[ x_i = 1 \Rightarrow C(x) \]

where \( x_i \) is a binary variable and \( C(\dot) \) a constraint. The superindicator constraint is satisfied if and only if x_i is zero or C is satisfied.

SCIP_RETCODE SCIPcreateConsSuperindicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *slackcons, 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_RETCODE SCIPcreateConsBasicSuperindicator (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *slackcons)
 
SCIP_VARSCIPgetBinaryVarSuperindicator (SCIP_CONS *cons)
 
SCIP_CONSSCIPgetSlackConsSuperindicator (SCIP_CONS *cons)
 
SCIP_RETCODE SCIPtransformMinUC (SCIP *scip, SCIP_Bool *success)
 
 SCIP_DECL_DIALOGEXEC (SCIPdialogExecChangeMinUC)
 

Symresack Constraints

Given a permutation that acts on the order of the variables of a (mixed) 0/1-program such that the permutation is a symmetry of the program, this constraint handler can be used to handle the symmetries corresponding to the permutation. The symmetries are handled by enforcing that a binary solution is lexicographically not smaller than its permutation. In a presolving step, we check whether the permutation acts only on binary points. Otherwise, we eliminate the non-binary variables from the permutation. Furthermore, we delete fixed points from the permutation.

Moreover, the constraint handler checks whether each cycle of the permutation is contained in a set packing or partitioning constraint. In this case, the symresack is strengthened to a ppsymresack and strong symmetry handling inequalities are added during the initialization of the constraint handler.

Precondition
The permutation is encoded by an array perm for which perm[i] = j if and only if the image of i under the permutation is j.
The permutation given to the constraint handler has to be a symmetry of the underlying problem. This is NOT checked by the constraint handler.
SCIP_RETCODE SCIPcreateSymbreakCons (SCIP *scip, SCIP_CONS **cons, const char *name, int *perm, SCIP_VAR **vars, int nvars, SCIP_Bool ismodelcons, 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 SCIPcreateConsSymresack (SCIP *scip, SCIP_CONS **cons, const char *name, int *perm, SCIP_VAR **vars, int nvars, SCIP_Bool ismodelcons, 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 SCIPcreateConsBasicSymresack (SCIP *scip, SCIP_CONS **cons, const char *name, int *perm, SCIP_VAR **vars, int nvars, SCIP_Bool ismodelcons)
 

Variable Bound Constraints

This constraint handler handles a special type of linear constraints, namely variable bound constraints. A variable bound constraint has the form

\[ lhs \leq x + c y \leq rhs \]

with coefficient \(c \in Q\), \(lhs\in Q \cup \{-\infty\}\), \(rhs\in Q \cup \{\infty\}\), and decision variables \(x\) (non-binary) and \(y\) (binary or integer).

SCIP_RETCODE SCIPcreateConsVarbound (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, 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 SCIPcreateConsBasicVarbound (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_Real SCIPgetLhsVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetRhsVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetVarVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetVbdvarVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetVbdcoefVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualsolVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowVarbound (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPcleanupConssVarbound (SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible, int *naddconss, int *ndelconss, int *nchgbds)
 

XOR Constraints

This constraint handler deals with "xor" constraint. These are constraint of the form:

\[ rhs = x_1 \oplus x_2 \oplus \dots \oplus x_n \]

where \(x_i\) is a binary variable for all \(i\) and \(rhs\) is bool. The variables \(x\)'s are called operators. This constraint is satisfied if \(rhs\) is TRUE and an odd number of the operators are TRUE or if the \(rhs\) is FALSE and a even number of operators are TRUE. Hence, if the sum of \(rhs\) and operators is even.

SCIP_RETCODE SCIPcreateConsXor (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_Bool rhs, int nvars, SCIP_VAR **vars, 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 SCIPcreateConsBasicXor (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_Bool rhs, int nvars, SCIP_VAR **vars)
 
int SCIPgetNVarsXor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsXor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VARSCIPgetIntVarXor (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Bool SCIPgetRhsXor (SCIP *scip, SCIP_CONS *cons)
 

Macro Definition Documentation

◆ SCIP_DECL_SOLVECUMULATIVE

#define SCIP_DECL_SOLVECUMULATIVE ( x)
Value:
SCIP_RETCODE x (int njobs, SCIP_Real* ests, SCIP_Real* lsts, SCIP_Real* objvals, \
int* durations, int* demands, int capacity, int hmin, int hmax, \
SCIP_Real timelimit, SCIP_Real memorylimit, SCIP_Longint maxnodes, \
SCIP_Bool* solved, SCIP_Bool* infeasible, SCIP_Bool* unbounded, SCIP_Bool* error)
SCIP_VAR ** x
enum SCIP_Retcode SCIP_RETCODE

solves given cumulative condition as independent sub problem

Note
The time and memory limit should be respected.
If the problem was solved to the earliest start times (ests) and latest start times (lsts) array contain the solution values; If the problem was not solved these two arrays contain the global bounds at the time the sub solver was interrupted.

input:

  • njobs : number of jobs (activities)
  • objvals : array of objective coefficients for each job (linear objective function), or NULL if none
  • durations : array of durations
  • demands : array of demands
  • capacity : cumulative capacity
  • hmin : left bound of time axis to be considered (including hmin)
  • hmax : right bound of time axis to be considered (not including hmax)
  • timelimit : time limit for solving in seconds
  • memorylimit : memory limit for solving in mega bytes (MB)
  • maxnodes : maximum number of branch-and-bound nodes to solve the single cumulative constraint (-1: no limit)

input/output:

  • ests : array of earliest start times for each job
  • lsts : array of latest start times for each job

output:

  • solved : pointer to store if the problem is solved (to optimality)
  • infeasible : pointer to store if the problem is infeasible
  • unbounded : pointer to store if the problem is unbounded
  • error : pointer to store if an error occurred

Definition at line 356 of file cons_cumulative.h.

◆ SCIP_DECL_LINCONSUPGD

#define SCIP_DECL_LINCONSUPGD ( x)
Value:
SCIP_RETCODE x (SCIP* scip, SCIP_CONS* cons, int nvars, SCIP_VAR** vars, SCIP_Real* vals, SCIP_Real lhs, SCIP_Real rhs, \
int nposbin, int nnegbin, int nposint, int nnegint, int nposimpl, int nnegimpl, int nposimplbin, int nnegimplbin, int nposcont, int nnegcont, \
int ncoeffspone, int ncoeffsnone, int ncoeffspint, int ncoeffsnint, int ncoeffspfrac, int ncoeffsnfrac, \
SCIP_Real poscoeffsum, SCIP_Real negcoeffsum, SCIP_Bool integral, SCIP_CONS** upgdcons)
int nvars
static SCIP_VAR ** vars

upgrading method for linear constraints into more specific constraints

input:

  • scip : SCIP main data structure
  • cons : the linear constraint to upgrade
  • nvars : number of variables in the constraint
  • vars : array with constraint variables
  • vals : array with constraint coefficients
  • lhs : left hand side of linear constraint
  • rhs : right hand side of linear constraint
  • nposbin : number of binary variables with positive coefficient
  • nnegbin : number of binary variables with negative coefficient
  • nposint : number of integer variables with positive coefficient
  • nnegint : number of integer variables with negative coefficient
  • nposimpl : number of implicit integer variables with positive coefficient (including implicit binary variables)
  • nnegimpl : number of implicit integer variables with negative coefficient (including implicit binary variables)
  • nposimplbin : number of implicit binary variables with positive coefficient
  • nnegimplbin : number of implicit binary variables with negative coefficient
  • nposcont : number of continuous variables with positive coefficient
  • nnegcont : number of continuous variables with negative coefficient
  • ncoeffspone : number of +1 coefficients
  • ncoeffsnone : number of -1 coefficients
  • ncoeffspint : number of positive integral coefficients other than +1
  • ncoeffsnint : number of negative integral coefficients other than -1
  • ncoeffspfrac : number of positive fractional coefficients
  • ncoeffsnfrac : number of negative fractional coefficients
  • poscoeffsum : sum of all positive coefficients
  • negcoeffsum : sum of all negative coefficients
  • integral : TRUE iff constraints activity value is always integral
  • upgdcons : pointer to store the upgraded constraint

Definition at line 120 of file cons_linear.h.

◆ SCIP_DECL_VERTEXPOLYFUN

#define SCIP_DECL_VERTEXPOLYFUN ( f)    SCIP_Real f (SCIP_Real* args, int nargs, void* funcdata)

evaluation callback for (vertex-polyhedral) functions used as input for facet computation of its envelopes

Parameters
[in]argsthe point to be evaluated
[in]nargsthe number of arguments of the function (length of array args)
[in]funcdatauser-data of function evaluation callback
Returns
value of function in point given by args or SCIP_INVALID if could not be evaluated

Definition at line 102 of file cons_nonlinear.h.

◆ SCIP_MAXVERTEXPOLYDIM

#define SCIP_MAXVERTEXPOLYDIM   14

maximum dimension of vertex-polyhedral function for which we can try to compute a facet of its convex or concave envelope

Definition at line 105 of file cons_nonlinear.h.

Referenced by buildVertexPolyhedralSeparationLP(), computeVertexPolyhedralFacetLP(), estimateVertexPolyhedralProduct(), SCIP_DECL_CONSEXIT(), SCIP_DECL_CONSFREE(), SCIP_DECL_NLHDLRDETECT(), and SCIPcomputeFacetVertexPolyhedralNonlinear().

◆ SCIP_DECL_NONLINCONSUPGD

#define SCIP_DECL_NONLINCONSUPGD ( x)
Value:
SCIP_RETCODE x (SCIP* scip, SCIP_CONS* cons, int nvarexprs, \
int* nupgdconss, SCIP_CONS** upgdconss, int upgdconsssize)

upgrading method for nonlinear constraints into more specific constraints

The method might upgrade a nonlinear constraint into a set of upgrade constraints. The caller provided an array upgdconss of size upgdconsssize to store upgrade constraints. If an upgrade is not possible, set *nupgdconss to zero. If more than upgdconsssize many constraints shall replace cons, the function should return the required number as negated value in *nupgdconss, e.g., if cons should be replaced by 3 constraints, the function should set *nupgdconss to -3 and return with SCIP_OKAY.

Parameters
[in]scipSCIP main data structure
[in]consthe nonlinear constraint to upgrade
[in]nvarexprstotal number of variable expressions in the nonlinear constraint
[out]nupgdconsspointer to store number of constraints that replace this constraint
[out]upgdconssarray to store constraints that replace this constraint
[in]upgdconsssizelength of the provided upgdconss array

Definition at line 124 of file cons_nonlinear.h.

Typedef Documentation

◆ SCIP_LINCONSUPGRADE

linear constraint update method

Definition at line 87 of file cons_linear.h.

◆ SCIP_CONSNONLINEAR_AUXEXPR

Definition at line 65 of file cons_nonlinear.h.

◆ SCIP_CONSNONLINEAR_BILINTERM

bilinear term structure

Definition at line 93 of file cons_nonlinear.h.

◆ SCIP_LINEARCONSTYPE

Definition at line 90 of file cons_pseudoboolean.h.

◆ SCIP_SETPPCTYPE

Definition at line 91 of file cons_setppc.h.

Enumeration Type Documentation

◆ SCIP_LinearConsType

solution status after solving LP

Enumerator
SCIP_LINEARCONSTYPE_INVALIDCONS 

this is no valid linear constraint type

SCIP_LINEARCONSTYPE_LINEAR 

this is the common linear constraint

SCIP_LINEARCONSTYPE_LOGICOR 

this is a logicor constraint

SCIP_LINEARCONSTYPE_KNAPSACK 

this is a knapsack constraint

SCIP_LINEARCONSTYPE_SETPPC 

this is a setppc constraint

Definition at line 77 of file cons_pseudoboolean.h.

◆ SCIP_SetppcType

type of setppc constraint: set partitioning, set packing, or set covering

Enumerator
SCIP_SETPPCTYPE_PARTITIONING 

constraint is a set partitioning constraint: sum(x) == 1

SCIP_SETPPCTYPE_PACKING 

constraint is a set packing constraint: sum(x) <= 1

SCIP_SETPPCTYPE_COVERING 

constraint is a set covering constraint: sum(x) >= 1

Definition at line 85 of file cons_setppc.h.

Function Documentation

◆ SCIPcreateConsAbspower()

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 )

creates and captures an absolute power nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsNonlinear() instead.

creates and captures an absolute power nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsNonlinear() instead.
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
xnonlinear variable x in constraint
zlinear variable z in constraint
exponentexponent n of |x+offset|^n term in constraint
xoffsetoffset in |x+offset|^n term in constraint
zcoefcoefficient of z in constraint
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 43 of file cons_abspower.c.

References propagate, SCIP_CALL, SCIP_OKAY, SCIPcreateConsBasicSignpowerNonlinear(), SCIPsetConsChecked(), SCIPsetConsDynamic(), SCIPsetConsEnforced(), SCIPsetConsInitial(), SCIPsetConsLocal(), SCIPsetConsModifiable(), SCIPsetConsPropagated(), SCIPsetConsRemovable(), SCIPsetConsSeparated(), SCIPsetConsStickingAtNode(), and x.

◆ SCIPcreateConsBasicAbspower()

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 )

creates and captures an absolute power nonlinear constraint in its most basic version, i.e., all constraint flags are set to their basic value

All flags can be set via SCIPconsSetFLAGNAME-methods.

See also
SCIPcreateConsAbspower() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicNonlinear() instead.

creates and captures an absolute power nonlinear constraint in its most basic version, i.e., all constraint flags are set to their basic value

All flags can be set via SCIPconsSetFLAGNAME-methods.

See also
SCIPcreateConsAbspower() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicNonlinear() instead.
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
xnonlinear variable x in constraint
zlinear variable z in constraint
exponentexponent n of |x+offset|^n term in constraint
xoffsetoffset in |x+offset|^n term in constraint
zcoefcoefficient of z in constraint
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 106 of file cons_abspower.c.

References SCIP_CALL, SCIP_OKAY, SCIPcreateConsBasicSignpowerNonlinear(), and x.

◆ SCIPgetNlRowAbspower()

SCIP_RETCODE SCIPgetNlRowAbspower ( SCIP * scip,
SCIP_CONS * cons,
SCIP_NLROW ** nlrow )

gets the absolute power constraint as a nonlinear row representation

Deprecated
Use SCIPgetNlRowNonlinear() instead.

gets the absolute power constraint as a nonlinear row representation

Deprecated
Use SCIPgetNlRowNonlinear)_ instead.
Parameters
scipSCIP data structure
consconstraint
nlrowa buffer where to store pointer to nonlinear row

Definition at line 128 of file cons_abspower.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPgetNlRowNonlinear().

◆ SCIPcreateConsAnd()

SCIP_RETCODE SCIPcreateConsAnd ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * resvar,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures an and constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a AND-constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
resvarresultant variable of the operation
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 5070 of file cons_and.c.

References ARTIFICIALVARNAMEPREFIX, assert(), consdataCreate(), CONSHDLR_NAME, FALSE, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIPchgVarType(), SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPisTransformed(), SCIPvarGetName(), SCIPvarGetProbvar(), SCIPvarGetType(), and vars.

Referenced by CREATE_CONSTRAINT(), createAndAddAndCons(), extractGates(), findAggregation(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicAnd(), setObjective(), and upgradeCons().

◆ SCIPcreateConsBasicAnd()

SCIP_RETCODE SCIPcreateConsBasicAnd ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * resvar,
int nvars,
SCIP_VAR ** vars )

creates and captures an and constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsAnd(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsAnd() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures an AND-constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsAnd(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsAnd() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
resvarresultant variable of the operation
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint

Definition at line 5180 of file cons_and.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsAnd(), TRUE, and vars.

Referenced by getBinaryProductExprDo(), and AMPLProblemHandler::OnBinaryLogical().

◆ SCIPgetNVarsAnd()

◆ SCIPgetVarsAnd()

◆ SCIPgetResultantAnd()

◆ SCIPisAndConsSorted()

SCIP_Bool SCIPisAndConsSorted ( SCIP * scip,
SCIP_CONS * cons )

return if the variables of the AND-constraint are sorted with respect to their indices

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5271 of file cons_and.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by computeConsAndDataChanges().

◆ SCIPsortAndCons()

SCIP_RETCODE SCIPsortAndCons ( SCIP * scip,
SCIP_CONS * cons )

sort the variables of the AND-constraint with respect to their indices

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5295 of file cons_and.c.

References assert(), consdataSort(), CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by computeConsAndDataChanges().

◆ SCIPchgAndConsCheckFlagWhenUpgr()

SCIP_RETCODE SCIPchgAndConsCheckFlagWhenUpgr ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Bool flag )

when 'upgrading' the given AND-constraint, should the check flag for the upgraded constraint be set to TRUE, even if the check flag of this AND-constraint is set to FALSE?

Parameters
scipSCIP data structure
consconstraint data
flagshould an arising constraint from the given AND-constraint be checked, even if the check flag of the AND-constraint is set to FALSE

Definition at line 5324 of file cons_and.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by createAndAddAndCons().

◆ SCIPchgAndConsRemovableFlagWhenUpgr()

SCIP_RETCODE SCIPchgAndConsRemovableFlagWhenUpgr ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Bool flag )

when 'upgrading' the given AND-constraint, should the removable flag for the upgraded constraint be set to FALSE, even if the removable flag of this AND-constraint is set to TRUE?

Parameters
scipSCIP data structure
consconstraint data
flagshould an arising constraint from the given AND-constraint be not removable, even if the removable flag of the AND-constraint is set to TRUE

Definition at line 5355 of file cons_and.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by createAndAddAndCons().

◆ SCIPconsBendersEnforceSolution()

SCIP_RETCODE SCIPconsBendersEnforceSolution ( SCIP * scip,
SCIP_SOL * sol,
SCIP_CONSHDLR * conshdlr,
SCIP_RESULT * result,
SCIP_BENDERSENFOTYPE type,
SCIP_Bool checkint )

enforces Benders' constraints for given solution

This method is called from cons_benderslp and cons_benders. If the method is called from cons_benderslp, then the solutions are not guaranteed to be integer feasible. This is because the default priority is set greater than the integer constraint handler. If this method is called from cons_benders, then, because the default enforcement priority is set less than that of the integer constraint handler, then it can be assumed that the solutions are integer feasible.

The checkint flag indicates whether integer feasibility can be assumed. If it is not assumed, i.e. checkint == FALSE, then only the convex relaxations of the subproblems are solved. If integer feasibility is assumed, i.e. checkint == TRUE, then the convex relaxations and the full CIP are solved to generate Benders' cuts and check solution feasibility.

Parameters
scipthe SCIP instance
solthe primal solution to enforce, or NULL for the current LP/pseudo sol
conshdlrthe constraint handler
resultthe result of the enforcement
typethe type of solution being enforced
checkintshould integrality be considered when checking the subproblems

Definition at line 260 of file cons_benders.c.

References assert(), constructValidSolution(), FALSE, i, NULL, result, SCIP_BENDERSENFOTYPE_CHECK, SCIP_BENDERSENFOTYPE_LP, SCIP_BENDERSENFOTYPE_PSEUDO, SCIP_BENDERSENFOTYPE_RELAX, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIPbendersCutLP(), SCIPbendersCutPseudo(), SCIPbendersCutRelaxation(), SCIPgetBenders(), SCIPgetLPSolstat(), SCIPgetNActiveBenders(), SCIPsolveBendersSubproblems(), SCIPwarningMessage(), sol, TRUE, and unboundedAuxiliaryVariables().

Referenced by SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSENFORELAX(), and SCIP_DECL_CONSENFORELAX().

◆ SCIPcreateConsBounddisjunction()

SCIP_RETCODE SCIPcreateConsBounddisjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_BOUNDTYPE * boundtypes,
SCIP_Real * bounds,
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 )

creates and captures a bound disjunction constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsvariables of the literals in the constraint
boundtypestypes of bounds of the literals (lower or upper bounds)
boundsbounds of the literals
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3286 of file cons_bounddisjunction.c.

References assert(), consdataCreate(), CONSHDLR_NAME, isOverlapping(), NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPboundtypeOpposite(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by addLowerboundCons(), adjustOversizedJobBounds(), createConflict(), CUTOFF_CONSTRAINT(), forbidFixation(), presolveSingleLockedVars(), readBounds(), readSemicontinuous(), readVariables(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicBounddisjunction().

◆ SCIPcreateConsBasicBounddisjunction()

SCIP_RETCODE SCIPcreateConsBasicBounddisjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_BOUNDTYPE * boundtypes,
SCIP_Real * bounds )

creates and captures an and constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsBounddisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsBounddisjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a bound disjunction constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsBounddisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsBounddisjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsvariables of the literals in the constraint
boundtypestypes of bounds of the literals (lower or upper bounds)
boundsbounds of the literals

Definition at line 3366 of file cons_bounddisjunction.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsBounddisjunction(), TRUE, and vars.

Referenced by createBounddisjunctionCons(), and SCIPreoptApplyGlbConss().

◆ SCIPcreateConsBounddisjunctionRedundant()

SCIP_RETCODE SCIPcreateConsBounddisjunctionRedundant ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_BOUNDTYPE * boundtypes,
SCIP_Real * bounds,
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 )

creates and captures a bound disjunction constraint with possibly redundant literals

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsvariables of the literals in the constraint
boundtypestypes of bounds of the literals (lower or upper bounds)
boundsbounds of the literals
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3388 of file cons_bounddisjunction.c.

References assert(), consdataCreateRedundant(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by addLocalConss(), addSplitcons(), and SCIPcreateConsBasicBounddisjunctionRedundant().

◆ SCIPcreateConsBasicBounddisjunctionRedundant()

SCIP_RETCODE SCIPcreateConsBasicBounddisjunctionRedundant ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_BOUNDTYPE * boundtypes,
SCIP_Real * bounds )

creates and captures an and constraint with possibly redundant literals in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsBounddisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsBounddisjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a bound disjunction constraint with possibly redundant literals in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsBounddisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsBounddisjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsvariables of the literals in the constraint
boundtypestypes of bounds of the literals (lower or upper bounds)
boundsbounds of the literals

Definition at line 3452 of file cons_bounddisjunction.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsBounddisjunctionRedundant(), TRUE, and vars.

◆ SCIPgetNVarsBounddisjunction()

int SCIPgetNVarsBounddisjunction ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in bound disjunction constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3471 of file cons_bounddisjunction.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by checkBounddisjunction(), createCoveringProblem(), and SCIP_DECL_CONSCOPY().

◆ SCIPgetVarsBounddisjunction()

SCIP_VAR ** SCIPgetVarsBounddisjunction ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in bound disjunction constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3492 of file cons_bounddisjunction.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by checkBounddisjunction(), createCoveringProblem(), saveConsBounddisjuction(), and SCIP_DECL_CONSCOPY().

◆ SCIPgetBoundtypesBounddisjunction()

SCIP_BOUNDTYPE * SCIPgetBoundtypesBounddisjunction ( SCIP * scip,
SCIP_CONS * cons )

gets array of bound types in bound disjunction constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3513 of file cons_bounddisjunction.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by checkBounddisjunction(), saveConsBounddisjuction(), and SCIP_DECL_CONSCOPY().

◆ SCIPgetBoundsBounddisjunction()

SCIP_Real * SCIPgetBoundsBounddisjunction ( SCIP * scip,
SCIP_CONS * cons )

gets array of bounds in bound disjunction constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3534 of file cons_bounddisjunction.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by checkBounddisjunction(), saveConsBounddisjuction(), and SCIP_DECL_CONSCOPY().

◆ SCIPcreateConsCardinality()

SCIP_RETCODE SCIPcreateConsCardinality ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
int cardval,
SCIP_VAR ** indvars,
SCIP_Real * weights,
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 )

creates and captures an cardinality constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a cardinality constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
cardvalnumber of variables allowed to be nonzero
indvarsindicator variables indicating which variables may be treated as nonzero in cardinality constraint, or NULL if new indicator variables should be introduced automatically
weightsweights determining the variable order, or NULL if variables should be ordered in the same way they were added to the constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3607 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, FALSE, handleNewVariableCardinality(), NULL, nvars, propagate, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_TRANSFORMED, SCIP_VARTYPE_BINARY, SCIPaddVar(), SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPblkmem(), SCIPconshdlrGetData(), SCIPcreateCons(), SCIPcreateVar(), SCIPduplicateBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNTotalVars(), SCIPgetStage(), SCIPgetTransformedVar(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPreleaseVar(), SCIPsnprintf(), SCIPsortRealPtrPtrInt(), SCIPvarGetName(), SCIPvarIsBinary(), SCIPvarIsTransformed(), var, and vars.

Referenced by branchBalancedCardinality(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSPRESOL(), and SCIPcreateConsBasicCardinality().

◆ SCIPcreateConsBasicCardinality()

SCIP_RETCODE SCIPcreateConsBasicCardinality ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
int cardval,
SCIP_VAR ** indvars,
SCIP_Real * weights )

creates and captures an cardinality constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsCardinality() for the default constraint flag configuration
Warning
Do NOT set the constraint to be modifiable manually, because this might lead to wrong results as the variable array will not be resorted
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a cardinality constraint with all constraint flags set to their default values.

Warning
Do NOT set the constraint to be modifiable manually, because this might lead to wrong results as the variable array will not be resorted
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
cardvalnumber of variables allowed to be nonzero
indvarsindicator variables indicating which variables may be treated as nonzero in cardinality constraint, or NULL if new indicator variables should be introduced automatically
weightsweights determining the variable order, or NULL if variables should be ordered in the same way they were added to the constraint

Definition at line 3807 of file cons_cardinality.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsCardinality(), TRUE, and vars.

◆ SCIPchgCardvalCardinality()

SCIP_RETCODE SCIPchgCardvalCardinality ( SCIP * scip,
SCIP_CONS * cons,
int cardval )

changes cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)

Parameters
scipSCIP data structure
conspointer to hold the created constraint
cardvalnumber of variables allowed to be nonzero

Definition at line 3828 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPdebugMsg, and SCIPerrorMessage.

Referenced by SCIP_DECL_CONSPARSE().

◆ SCIPaddVarCardinality()

SCIP_RETCODE SCIPaddVarCardinality ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_VAR * indvar,
SCIP_Real weight )

adds variable to cardinality constraint, the position is determined by the given weight

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint
indvarindicator variable indicating whether variable may be treated as nonzero in cardinality constraint (or NULL if this variable should be created automatically)
weightweight determining position of variable

Definition at line 3857 of file cons_cardinality.c.

References addVarCardinality(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

Referenced by SCIP_DECL_CONSPARSE().

◆ SCIPappendVarCardinality()

SCIP_RETCODE SCIPappendVarCardinality ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_VAR * indvar )

appends variable to cardinality constraint

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint
indvarindicator variable indicating whether variable may be treated as nonzero in cardinality constraint (or NULL if this variable should be created automatically)

Definition at line 3894 of file cons_cardinality.c.

References appendVarCardinality(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

◆ SCIPgetNVarsCardinality()

int SCIPgetNVarsCardinality ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in cardinality constraint

Parameters
scipSCIP data structure
consconstraint

Definition at line 3929 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetVarsCardinality()

SCIP_VAR ** SCIPgetVarsCardinality ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in cardinality constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3953 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetCardvalCardinality()

int SCIPgetCardvalCardinality ( SCIP * scip,
SCIP_CONS * cons )

gets cardinality value of cardinality constraint (i.e., right hand side of cardinality constraint)

Parameters
scipSCIP data structure
consconstraint data

Definition at line 3977 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetWeightsCardinality()

SCIP_Real * SCIPgetWeightsCardinality ( SCIP * scip,
SCIP_CONS * cons )

gets array of weights in cardinality constraint (or NULL if not existent)

Parameters
scipSCIP data structure
consconstraint data

Definition at line 4000 of file cons_cardinality.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPcreateConsConjunction()

SCIP_RETCODE SCIPcreateConsConjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nconss,
SCIP_CONS ** conss,
SCIP_Bool enforce,
SCIP_Bool check,
SCIP_Bool local,
SCIP_Bool modifiable,
SCIP_Bool dynamic )

creates and captures a conjunction constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nconssnumber of initial constraints in conjunction
conssinitial constraint in conjunction
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.

Definition at line 808 of file cons_conjunction.c.

References consdataCreate(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, and SCIPfindConshdlr().

Referenced by SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicConjunction().

◆ SCIPcreateConsBasicConjunction()

SCIP_RETCODE SCIPcreateConsBasicConjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nconss,
SCIP_CONS ** conss )

creates and captures an and constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsConjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsConjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nconssnumber of initial constraints in conjunction
conssinitial constraint in conjunction

Definition at line 857 of file cons_conjunction.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsConjunction(), and TRUE.

◆ SCIPaddConsElemConjunction()

SCIP_RETCODE SCIPaddConsElemConjunction ( SCIP * scip,
SCIP_CONS * cons,
SCIP_CONS * addcons )

adds constraint to the conjunction of constraints

Parameters
scipSCIP data structure
consconjunction constraint
addconsadditional constraint in conjunction

Definition at line 874 of file cons_conjunction.c.

References assert(), consdataAddCons(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIP_DECL_DIALOGEXEC() [1/4]

◆ SCIP_DECL_DIALOGEXEC() [2/4]

◆ SCIP_DECL_DIALOGEXEC() [3/4]

◆ SCIPcount()

SCIP_RETCODE SCIPcount ( SCIP * scip)

execute counting

Parameters
scipSCIP data structure

Definition at line 2701 of file cons_countsols.c.

References active, checkParameters(), CONSHDLR_NAME, FALSE, SCIP_CALL, SCIP_OKAY, SCIPgetBoolParam(), SCIPsetBoolParam(), SCIPsolve(), and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPgetNCountedSols()

SCIP_Longint SCIPgetNCountedSols ( SCIP * scip,
SCIP_Bool * valid )

returns number of feasible solutions found as SCIP_Longint; if the number does not fit into a SCIP_Longint the valid flag is set to FALSE

Parameters
scipSCIP data structure
validpointer to store if the return value is valid

Definition at line 2733 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, getNCountedSols(), NULL, SCIPconshdlrGetData(), SCIPfindConshdlr(), and valid.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_DISPOUTPUT().

◆ SCIPgetNCountedSolsstr()

void SCIPgetNCountedSolsstr ( SCIP * scip,
char ** buffer,
int buffersize,
int * requiredsize )

returns number of counted solutions as string

puts the number of counted solutions in the given char* buffer

Parameters
scipSCIP data structure
bufferbuffer to store the number for counted solutions
buffersizebuffer size
requiredsizepointer to store the required size

Definition at line 2753 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconshdlrGetData(), SCIPfindConshdlr(), and toString().

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_DIALOGEXEC().

◆ SCIPgetNCountedFeasSubtrees()

SCIP_Longint SCIPgetNCountedFeasSubtrees ( SCIP * scip)

returns number of counted feasible subtrees

returns number of counted non trivial feasible subtrees

Parameters
scipSCIP data structure

Definition at line 2791 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconshdlrGetData(), and SCIPfindConshdlr().

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_DISPOUTPUT().

◆ SCIPgetCountedSparseSols()

void SCIPgetCountedSparseSols ( SCIP * scip,
SCIP_VAR *** vars,
int * nvars,
SCIP_SPARSESOL *** sols,
int * nsols )

Method to get the sparse solution.

Note
You get the pointer to the sparse solutions stored in the constraint handler (not a copy).
The sparse solutions are stored w.r.t. the active variables. This are the variables which got not removed during presolving. For none active variables the value has to be computed depending on their aggregation type. See for more details about that Collect all feasible solutions.

Method to get the sparse solution.

Note
You get the pointer to the sparse solutions stored in the constraint handler (not a copy).
The sparse solutions are stored w.r.t. the active variables. There are the variables which have not been removed during presolving. For none active variables the value has to be computed depending on their aggregation type. See for more details about that Collect all feasible solutions.
Parameters
scipSCIP data structure
varspointer to active variable array defining to variable order
nvarsnumber of active variables
solspointer to the solutions
nsolspointer to number of solutions

Definition at line 2819 of file cons_countsols.c.

References assert(), CONSHDLR_NAME, NULL, nvars, SCIPconshdlrGetData(), SCIPfindConshdlr(), and vars.

◆ SCIPsetParamsCountsols()

SCIP_RETCODE SCIPsetParamsCountsols ( SCIP * scip)

setting SCIP parameters for such that a valid counting process is possible

Parameters
scipSCIP data structure

Definition at line 2846 of file cons_countsols.c.

References SCIP_CALL, SCIP_OKAY, SCIP_PARAMEMPHASIS_COUNTER, SCIPsetEmphasis(), and TRUE.

◆ SCIPcreateConsCumulative()

SCIP_RETCODE SCIPcreateConsCumulative ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity,
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 )

creates and captures a cumulative constraint

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands
capacityavailable cumulative capacity
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 13761 of file cons_cumulative.c.

References assert(), consdataCatchEvents(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_PROBLEM, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPdebugMsg, SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetStage(), and vars.

Referenced by CREATE_CONSTRAINT(), createConsCumulative(), createCumulativeCons(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicCumulative(), SCIPcreateSchedulingProblem(), and upgradeCons().

◆ SCIPcreateConsBasicCumulative()

SCIP_RETCODE SCIPcreateConsBasicCumulative ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity )

creates and captures an absolute power constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsCumulative(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsCumulative() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a cumulative constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsCumulative(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsCumulative() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands
capacityavailable cumulative capacity

Definition at line 13842 of file cons_cumulative.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsCumulative(), TRUE, and vars.

Referenced by setupAndSolveCumulativeSubscip().

◆ SCIPsetHminCumulative()

SCIP_RETCODE SCIPsetHminCumulative ( SCIP * scip,
SCIP_CONS * cons,
int hmin )

set the left bound of effective horizon

set the left bound of the time axis to be considered (including hmin)

Parameters
scipSCIP data structure
consconstraint data
hminleft bound of time axis to be considered

Definition at line 13862 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by createConsCumulative(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), setupAndSolveCumulativeSubscip(), and upgradeCons().

◆ SCIPgetHminCumulative()

int SCIPgetHminCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the left bound of the effective horizon

returns the left bound of the time axis to be considered

Parameters
scipSCIP data structure
consconstraint

Definition at line 13886 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIP_DECL_CONSRESPROP().

◆ SCIPsetHmaxCumulative()

SCIP_RETCODE SCIPsetHmaxCumulative ( SCIP * scip,
SCIP_CONS * cons,
int hmax )

set the right bound of the effective horizon

set the right bound of the time axis to be considered (not including hmax)

Parameters
scipSCIP data structure
consconstraint data
hmaxright bound of time axis to be considered

Definition at line 13906 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by createConsCumulative(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), setupAndSolveCumulativeSubscip(), and upgradeCons().

◆ SCIPgetHmaxCumulative()

int SCIPgetHmaxCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the right bound of effective horizon

returns the right bound of the time axis to be considered

Parameters
scipSCIP data structure
consconstraint

Definition at line 13930 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIP_DECL_CONSRESPROP().

◆ SCIPgetVarsCumulative()

SCIP_VAR ** SCIPgetVarsCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the start time variables of the cumulative constraint

returns the activities of the cumulative constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13950 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeFzn().

◆ SCIPgetNVarsCumulative()

int SCIPgetNVarsCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the number of start time variables of the cumulative constraint

returns the activities of the cumulative constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13971 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeFzn().

◆ SCIPgetCapacityCumulative()

int SCIPgetCapacityCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the capacity of the cumulative constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13992 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeFzn().

◆ SCIPgetDurationsCumulative()

int * SCIPgetDurationsCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the durations of the cumulative constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 14013 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeFzn().

◆ SCIPgetDemandsCumulative()

int * SCIPgetDemandsCumulative ( SCIP * scip,
SCIP_CONS * cons )

returns the demands of the cumulative constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 14034 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeFzn().

◆ SCIPcheckCumulativeCondition()

SCIP_RETCODE SCIPcheckCumulativeCondition ( SCIP * scip,
SCIP_SOL * sol,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity,
int hmin,
int hmax,
SCIP_Bool * violated,
SCIP_CONS * cons,
SCIP_Bool printreason )

check for the given starting time variables with their demands and durations if the cumulative conditions for the given solution is satisfied

Parameters
scipSCIP data structure
solprimal solution, or NULL for current LP/pseudo solution
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands
capacityavailable cumulative capacity
hminleft bound of time axis to be considered (including hmin)
hmaxright bound of time axis to be considered (not including hmax)
violatedpointer to store if the cumulative condition is violated
consconstraint which is checked
printreasonshould the reason for the violation be printed?

Definition at line 14057 of file cons_cumulative.c.

References assert(), checkCumulativeCondition(), NULL, nvars, SCIP_CALL, SCIP_OKAY, sol, and vars.

Referenced by checkCons(), and enfopsCons().

◆ SCIPnormalizeCumulativeCondition()

SCIP_RETCODE SCIPnormalizeCumulativeCondition ( SCIP * scip,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int * capacity,
int * nchgcoefs,
int * nchgsides )

normalize cumulative condition

Parameters
scipSCIP data structure
nvarsnumber of start time variables (activities)
varsarray of start time variables
durationsarray of durations
demandsarray of demands
capacitypointer to store the changed cumulative capacity
nchgcoefspointer to count total number of changed coefficients
nchgsidespointer to count number of side changes

Definition at line 14082 of file cons_cumulative.c.

References normalizeCumulativeCondition(), nvars, and SCIP_OKAY.

Referenced by SCIP_DECL_CONSPRESOL().

◆ SCIPsplitCumulativeCondition()

SCIP_RETCODE SCIPsplitCumulativeCondition ( SCIP * scip,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity,
int * hmin,
int * hmax,
int * split )

searches for a time point within the cumulative condition were the cumulative condition can be split

Parameters
scipSCIP data structure
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands
capacityavailable cumulative capacity
hminpointer to store the left bound of the effective horizon
hmaxpointer to store the right bound of the effective horizon
splitpoint were the cumulative condition can be split

Definition at line 14099 of file cons_cumulative.c.

References computeEffectiveHorizonCumulativeCondition(), nvars, SCIP_CALL, SCIP_OKAY, and vars.

Referenced by SCIP_DECL_CONSPRESOL().

◆ SCIPpresolveCumulativeCondition()

SCIP_RETCODE SCIPpresolveCumulativeCondition ( SCIP * scip,
int nvars,
SCIP_VAR ** vars,
int * durations,
int hmin,
int hmax,
SCIP_Bool * downlocks,
SCIP_Bool * uplocks,
SCIP_CONS * cons,
SCIP_Bool * irrelevants,
int * nfixedvars,
int * nchgsides,
SCIP_Bool * cutoff )

presolve cumulative condition w.r.t. effective horizon by detecting irrelevant variables

Parameters
scipSCIP data structure
nvarsnumber of start time variables (activities)
varsarray of start time variables
durationsarray of durations
hminleft bound of time axis to be considered
hmaxright bound of time axis to be considered (not including hmax)
downlocksarray storing if the variable has a down lock, or NULL
uplocksarray storing if the variable has an up lock, or NULL
consconstraint which gets propagated, or NULL
irrelevantsarray mark those variables which are irrelevant for the cumulative condition
nfixedvarspointer to store the number of fixed variables
nchgsidespointer to store the number of changed sides
cutoffbuffer to store whether a cutoff is detected

Definition at line 14118 of file cons_cumulative.c.

References cutoff, nvars, presolveConsEst(), presolveConsLct(), SCIP_CALL, SCIP_OKAY, and vars.

Referenced by presolveCumulativeCondition().

◆ SCIPpropCumulativeCondition()

SCIP_RETCODE SCIPpropCumulativeCondition ( SCIP * scip,
SCIP_PRESOLTIMING presoltiming,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity,
int hmin,
int hmax,
SCIP_CONS * cons,
int * nchgbds,
SCIP_Bool * initialized,
SCIP_Bool * explanation,
SCIP_Bool * cutoff )

propagate the given cumulative condition

Parameters
scipSCIP data structure
presoltimingcurrent presolving timing
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands
capacityavailable cumulative capacity
hminleft bound of time axis to be considered (including hmin)
hmaxright bound of time axis to be considered (not including hmax)
consconstraint which gets propagated
nchgbdspointer to store the number of variable bound changes
initializedwas conflict analysis initialized
explanationbool array which marks the variable which are part of the explanation if a cutoff was detected, or NULL
cutoffpointer to store if the cumulative condition is violated

Definition at line 14149 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, cutoff, FALSE, NULL, nvars, propagateCumulativeCondition(), SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by propagateCons().

◆ SCIPrespropCumulativeCondition()

SCIP_RETCODE SCIPrespropCumulativeCondition ( SCIP * scip,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands,
int capacity,
int hmin,
int hmax,
SCIP_VAR * infervar,
int inferinfo,
SCIP_BOUNDTYPE boundtype,
SCIP_BDCHGIDX * bdchgidx,
SCIP_Real relaxedbd,
SCIP_Bool * explanation,
SCIP_RESULT * result )

resolve propagation w.r.t. the cumulative condition

Parameters
scipSCIP data structure
nvarsnumber of start time variables (activities)
varsarray of start time variables
durationsarray of durations
demandsarray of demands
capacitycumulative capacity
hminleft bound of time axis to be considered (including hmin)
hmaxright bound of time axis to be considered (not including hmax)
infervarthe conflict variable whose bound change has to be resolved
inferinfothe user information
boundtypethe type of the changed bound (lower or upper bound)
bdchgidxthe index of the bound change, representing the point of time where the change took place
relaxedbdthe relaxed bound which is sufficient to be explained
explanationbool array which marks the variable which are part of the explanation if a cutoff was detected, or NULL
resultpointer to store the result of the propagation conflict resolving call

Definition at line 14198 of file cons_cumulative.c.

References intToInferInfo(), nvars, respropCumulativeCondition(), result, SCIP_CALL, SCIP_OKAY, TRUE, and vars.

Referenced by SCIP_DECL_CONSRESPROP().

◆ SCIPvisualizeConsCumulative()

◆ SCIPsetSolveCumulative()

SCIP_RETCODE SCIPsetSolveCumulative ( SCIP * scip)

sets method to solve an individual cumulative condition

Parameters
scipSCIP data structure method to use an individual cumulative condition

Definition at line 14326 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPerrorMessage, SCIPfindConshdlr(), and solveCumulative().

Referenced by runShell().

◆ SCIPsolveCumulative()

SCIP_RETCODE SCIPsolveCumulative ( SCIP * scip,
int njobs,
SCIP_Real * ests,
SCIP_Real * lsts,
SCIP_Real * objvals,
int * durations,
int * demands,
int capacity,
int hmin,
int hmax,
SCIP_Real timelimit,
SCIP_Real memorylimit,
SCIP_Longint maxnodes,
SCIP_Bool * solved,
SCIP_Bool * infeasible,
SCIP_Bool * unbounded,
SCIP_Bool * error )

solves given cumulative condition as independent sub problem

Note
If the problem was solved to the earliest start times (ests) and latest start times (lsts) array contain the solution values; If the problem was not solved these two arrays contain the global bounds at the time the sub solver was interrupted.
Parameters
scipSCIP data structure
njobsnumber of jobs (activities)
estsarray with the earlier start time for each job
lstsarray with the latest start time for each job
objvalsarray of objective coefficients for each job (linear objective function), or NULL if none
durationsarray of durations
demandsarray of demands
capacitycumulative capacity
hminleft bound of time axis to be considered (including hmin)
hmaxright bound of time axis to be considered (not including hmax)
timelimittime limit for solving in seconds
memorylimitmemory limit for solving in mega bytes (MB)
maxnodesmaximum number of branch-and-bound nodes to solve the single cumulative constraint (-1: no limit)
solvedpointer to store if the problem is solved (to optimality)
infeasiblepointer to store if the problem is infeasible
unboundedpointer to store if the problem is unbounded
errorpointer to store if an error occurred

Definition at line 14356 of file cons_cumulative.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPerrorMessage, SCIPfindConshdlr(), and TRUE.

Referenced by applyOptcumulative(), solveCumulative(), and solveIndependentCons().

◆ SCIPcreateWorstCaseProfile()

SCIP_RETCODE SCIPcreateWorstCaseProfile ( SCIP * scip,
SCIP_PROFILE * profile,
int nvars,
SCIP_VAR ** vars,
int * durations,
int * demands )

creates the worst case resource profile, that is, all jobs are inserted with the earliest start and latest completion time

Parameters
scipSCIP data structure
profileresource profile
nvarsnumber of variables (jobs)
varsarray of integer variable which corresponds to starting times for a job
durationsarray containing corresponding durations
demandsarray containing corresponding demands

Definition at line 14412 of file cons_cumulative.c.

References assert(), computeImpliedEst(), computeImpliedLct(), NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPblkmem(), SCIPconvertRealToInt(), SCIPfreeBufferArray, SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapInsertInt(), SCIPprofileInsertCore(), SCIPsortDownIntInt(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), var, and vars.

Referenced by computeAlternativeBounds(), computeEffectiveHorizonCumulativeCondition(), and propagateCons().

◆ SCIPcomputeHmin()

int SCIPcomputeHmin ( SCIP * scip,
SCIP_PROFILE * profile,
int capacity )

computes w.r.t. the given worst case resource profile the first time point where the given capacity can be violated

Parameters
scipSCIP data structure
profileworst case resource profile
capacitycapacity to check

Definition at line 14491 of file cons_cumulative.c.

References assert(), SCIPprofileGetLoads(), SCIPprofileGetNTimepoints(), and SCIPprofileGetTimepoints().

Referenced by computeAlternativeBounds(), computeEffectiveHorizonCumulativeCondition(), and propagateCons().

◆ SCIPcomputeHmax()

int SCIPcomputeHmax ( SCIP * scip,
SCIP_PROFILE * profile,
int capacity )

computes w.r.t. the given worst case resource profile the first time point where the given capacity is satisfied for sure

Parameters
scipSCIP data structure
profileworst case profile
capacitycapacity to check

Definition at line 14521 of file cons_cumulative.c.

References assert(), SCIPprofileGetLoads(), SCIPprofileGetNTimepoints(), and SCIPprofileGetTimepoints().

Referenced by computeAlternativeBounds(), and computeEffectiveHorizonCumulativeCondition().

◆ SCIPcreateConsDisjunction()

SCIP_RETCODE SCIPcreateConsDisjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nconss,
SCIP_CONS ** conss,
SCIP_CONS * relaxcons,
SCIP_Bool initial,
SCIP_Bool enforce,
SCIP_Bool check,
SCIP_Bool local,
SCIP_Bool modifiable,
SCIP_Bool dynamic )

creates and captures a disjunction constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nconssnumber of initial constraints in disjunction
conssinitial constraint in disjunction
relaxconsa conjunction constraint containing the linear relaxation of the disjunction constraint, or NULL
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.

Definition at line 1087 of file cons_disjunction.c.

References consdataCreate(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, and SCIPfindConshdlr().

Referenced by SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicDisjunction().

◆ SCIPcreateConsBasicDisjunction()

SCIP_RETCODE SCIPcreateConsBasicDisjunction ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nconss,
SCIP_CONS ** conss,
SCIP_CONS * relaxcons )

creates and captures a cumulative constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsDisjunction(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsDisjunction() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nconssnumber of initial constraints in disjunction
conssinitial constraint in disjunction
relaxconsa conjunction constraint containing the linear relaxation of the disjunction constraint, or NULL

Definition at line 1139 of file cons_disjunction.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsDisjunction(), and TRUE.

◆ SCIPaddConsElemDisjunction()

SCIP_RETCODE SCIPaddConsElemDisjunction ( SCIP * scip,
SCIP_CONS * cons,
SCIP_CONS * addcons )

adds constraint to the disjunction of constraints

Parameters
scipSCIP data structure
consdisjunction constraint
addconsadditional constraint in disjunction

Definition at line 1158 of file cons_disjunction.c.

References assert(), consdataAddCons(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPcreateConsIndicator()

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 )

creates and captures an indicator constraint

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint (indicator or quadratic)
namename of constraint
binvarbinary indicator variable (or NULL)
nvarsnumber of variables in the inequality
varsarray with variables of inequality (or NULL)
valsvalues of variables in inequality (or NULL)
rhsrhs of the inequality
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 7893 of file cons_indicator.c.

References nvars, propagate, SCIPcreateConsIndicatorGeneric(), TRUE, and vars.

Referenced by createIndicatorConstraint(), readIndicators(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_LINCONSUPGD(), SCIPcreateConsBasicIndicator(), and upgradeIndicatorSuperindicator().

◆ SCIPcreateConsBasicIndicator()

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 )

creates and captures an indicator constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsIndicator(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsIndicator() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint (indicator or quadratic)
namename of constraint
binvarbinary indicator variable (or NULL)
nvarsnumber of variables in the inequality
varsarray with variables of inequality (or NULL)
valsvalues of variables in inequality (or NULL)
rhsrhs of the inequality

Definition at line 8241 of file cons_indicator.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsIndicator(), TRUE, and vars.

◆ SCIPcreateConsIndicatorGeneric()

SCIP_RETCODE SCIPcreateConsIndicatorGeneric ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * vals,
SCIP_Real rhs,
SCIP_Bool activeone,
SCIP_Bool lessthanineq,
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 )

creates and captures a indicator constraint in a more generic version.

The key difference from SCIPcreateConsIndicator() is the activeone and lessthanineq Booleans. If \(z = o\), with \(o\) the activeone flag, then: if lessthanineq then \(a^T x \leq b\) holds, else the passed vectors are assumed to be of the form \(a^T x \geq b\). The underlying linear constraint is always created as a less-than inequality.

Parameters
scipSCIP data structure
conspointer to hold the created constraint (indicator or quadratic)
namename of constraint
binvarbinary indicator variable (or NULL)
nvarsnumber of variables in the inequality
varsarray with variables of inequality (or NULL)
valsvalues of variables in inequality (or NULL)
rhsrhs of the inequality
activeoneis the constraint active when the binary is 1?
lessthanineqis the linear constraint a less than RHS (TRUE) or greater than RHS (FALSE)?
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 7934 of file cons_indicator.c.

References assert(), consdataCreate(), CONSHDLR_NAME, FALSE, NULL, nvars, propagate, REALABS, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPaddCoefLinear(), SCIPaddCons(), SCIPaddVar(), SCIPallocBufferArray, SCIPblkmem(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPceil(), SCIPchgVarType(), SCIPconsAddUpgradeLocks(), SCIPconsGetNUpgradeLocks(), SCIPconshdlrGetData(), SCIPcreateCons(), SCIPcreateConsLinear(), SCIPcreateConsQuadraticNonlinear(), SCIPcreateVar(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNegatedVar(), SCIPgetNOrigVars(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPisIntegral(), SCIPisTransformed(), SCIPisZero(), SCIPmarkDoNotMultaggrVar(), SCIPsnprintf(), SCIPvarGetType(), SCIPvarIsIntegral(), TRUE, and vars.

Referenced by SCIPcreateConsIndicator().

◆ SCIPcreateConsIndicatorLinCons()

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 )

creates and captures an indicator constraint with given linear constraint and slack variable

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
we assume that slackvar actually appears in lincons and we also assume that it takes the role of a slack variable!
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarbinary indicator variable
linconslinear constraint
slackvarslack variable
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 8430 of file cons_indicator.c.

References propagate, SCIPcreateConsIndicatorGenericLinCons(), and TRUE.

Referenced by createSubSCIP(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicIndicatorLinCons().

◆ SCIPcreateConsIndicatorGenericLinCons()

SCIP_RETCODE SCIPcreateConsIndicatorGenericLinCons ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
SCIP_CONS * lincons,
SCIP_VAR * slackvar,
SCIP_Bool activeone,
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 )

creates and captures an indicator constraint with given linear constraint and slack variable in a generic version, i. e., with a flag activeone indicating whether the constraint is active on value 1 or 0 of the binary variable.

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
we assume that slackvar actually appears in lincons and we also assume that it takes the role of a slack variable!
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
See also
SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarbinary indicator variable
linconslinear constraint
slackvarslack variable
activeoneis the constraint active when the binary is 1?
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 8274 of file cons_indicator.c.

References assert(), consdataCreate(), CONSHDLR_NAME, FALSE, NULL, nvars, propagate, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPcaptureCons(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPconsAddUpgradeLocks(), SCIPconsGetHdlr(), SCIPconsGetNUpgradeLocks(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateCons(), SCIPcreateConsQuadraticNonlinear(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetNegatedVar(), SCIPgetNVarsLinear(), SCIPgetVarsLinear(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), SCIPvarGetType(), TRUE, and vars.

Referenced by SCIP_DECL_CONSCOPY(), and SCIPcreateConsIndicatorLinCons().

◆ SCIPcreateConsBasicIndicatorLinCons()

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

creates and captures an indicator constraint with given linear constraint and slack variable in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsIndicator(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
we assume that slackvar actually appears in lincons and we also assume that it takes the role of a slack variable!
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
See also
SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarbinary indicator variable
linconslinear constraint
slackvarslack variable

Definition at line 8479 of file cons_indicator.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsIndicatorLinCons(), and TRUE.

◆ SCIPcreateConsIndicatorGenericLinConsPure()

SCIP_RETCODE SCIPcreateConsIndicatorGenericLinConsPure ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
SCIP_CONS * lincons,
SCIP_Bool activeone,
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 )

creates and captures an indicator constraint with given linear constraint in a generic version, i. e., with a flag activeone indicating whether the constraint is active on value 1 or 0 of the binary variable; no slack variable is specified

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
The linear constraint has to be single sided only, i.e., either rhs or lhs have to be infinite.
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
See also
SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration

creates and captures an indicator constraint with given linear constraint in a generic version, i. e., with a flag activeone indicating whether the constraint is active on value 1 or 0 of the binary variable; no slack variable is given

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
The linear constraint must be single-sided, i.e., either rhs or lhs have to be infinite.
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
See also
SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarbinary indicator variable
linconslinear constraint
activeoneis the constraint active when the binary is 1?
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 8510 of file cons_indicator.c.

References assert(), consdataCreate(), CONSHDLR_NAME, FALSE, NULL, nvars, propagate, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_INVALIDDATA, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPaddCoefLinear(), SCIPaddVar(), SCIPblkmem(), SCIPcaptureCons(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPchgVarType(), SCIPconsAddUpgradeLocks(), SCIPconsGetHdlr(), SCIPconsGetNUpgradeLocks(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateCons(), SCIPcreateConsQuadraticNonlinear(), SCIPcreateVar(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetLhsLinear(), SCIPgetNegatedVar(), SCIPgetNOrigVars(), SCIPgetNVarsLinear(), SCIPgetRhsLinear(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinfinity(), SCIPisInfinity(), SCIPisIntegral(), SCIPisTransformed(), SCIPmarkDoNotMultaggrVar(), SCIPsnprintf(), SCIPvarGetType(), SCIPvarIsIntegral(), TRUE, and vars.

Referenced by SCIPcreateConsIndicatorLinConsPure().

◆ SCIPcreateConsIndicatorLinConsPure()

SCIP_RETCODE SCIPcreateConsIndicatorLinConsPure ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
SCIP_CONS * lincons,
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 )

creates and captures an indicator constraint with given linear constraint; no slack variable is specified

Note
binvar is checked to be binary only later. This enables a change of the type in procedures reading an instance.
The linear constraint has to be single sided only, i.e., either rhs or lhs have to be infinite.
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarbinary indicator variable
linconslinear constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 8734 of file cons_indicator.c.

References propagate, SCIPcreateConsIndicatorGenericLinConsPure(), and TRUE.

Referenced by readIndicators().

◆ SCIPaddVarIndicator()

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

adds variable to the inequality of the indicator constraint

Parameters
scipSCIP data structure
consindicator constraint
varvariable to add to the inequality
valvalue of variable

Definition at line 8767 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPaddCoefLinear(), SCIPchgVarType(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPisIntegral(), SCIPvarGetType(), SCIPvarIsIntegral(), and var.

◆ SCIPgetLinearConsIndicator()

SCIP_CONS * SCIPgetLinearConsIndicator ( SCIP_CONS * cons)

gets the linear constraint corresponding to the indicator constraint (may be NULL)

Parameters
consindicator constraint

Definition at line 8802 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

Referenced by computeRanks(), createSubSCIP(), getNVarsIndicators(), hasUnfixedSCIndicator(), SCIP_DECL_DIVESETGETSCORE(), SCIP_DECL_LINCONSUPGD(), SCIPwriteLp(), SCIPwriteMps(), and writeOpbConstraints().

◆ SCIPsetLinearConsIndicator()

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

sets the linear constraint corresponding to the indicator constraint (may be NULL)

Parameters
scipSCIP data structure
consindicator constraint
linconslinear constraint

Definition at line 8819 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, nvars, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIPcaptureCons(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdelCons(), SCIPerrorMessage, SCIPgetNVarsLinear(), SCIPgetStage(), SCIPgetVarsLinear(), SCIPreleaseCons(), SCIPvarGetType(), TRUE, and vars.

◆ SCIPsetBinaryVarIndicator()

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

◆ SCIPgetActiveOnIndicator()

SCIP_Bool SCIPgetActiveOnIndicator ( SCIP_CONS * cons)

gets activation value of an indicator constraint, TRUE for active on 1, FALSE for active on 0

Parameters
consindicator constraint

Definition at line 8889 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

◆ SCIPgetBinaryVarIndicator()

SCIP_VAR * SCIPgetBinaryVarIndicator ( SCIP_CONS * cons)

gets binary variable corresponding to indicator constraint. Returns the negative of the original binary variable if activeone was set to false

gets binary variable corresponding to indicator constraint

Parameters
consindicator constraint

Definition at line 8906 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

Referenced by computeRanks(), createCoveringProblem(), createMaps(), createSubSCIP(), hasUnfixedSCIndicator(), isViolatedAndNotFixed(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSGETDIVEBDCHGS(), SCIP_DECL_HEUREXEC(), SCIPwriteGms(), SCIPwriteLp(), SCIPwriteMps(), tryOneOpt(), trySolCandidate(), and writeOpbConstraints().

◆ SCIPgetBinaryVarIndicatorGeneric()

SCIP_VAR * SCIPgetBinaryVarIndicatorGeneric ( SCIP_CONS * cons)

similar to SCIPgetBinaryVarIndicator but returns the original binary variable passed by the user.

Parameters
consindicator constraint

Definition at line 8922 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPvarGetNegationVar().

◆ SCIPgetSlackVarIndicator()

SCIP_VAR * SCIPgetSlackVarIndicator ( SCIP_CONS * cons)

gets slack variable corresponding to indicator constraint

Parameters
consindicator constraint

Definition at line 9025 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

Referenced by createSubSCIP(), getNVarsIndicators(), hasUnfixedSCIndicator(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_DIVESETGETSCORE(), SCIPwriteGms(), SCIPwriteLp(), SCIPwriteMps(), and writeOpbConstraints().

◆ SCIPsetSlackVarUb()

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

sets upper bound for slack variable corresponding to indicator constraint

Use with care if you know that the maximal violation of the corresponding constraint is at most ub. This bound might be improved automatically during the solution process.

Precondition
This method should only be called if SCIP is in one of the following stages:
Parameters
scipSCIP data structure
consindicator constraint
ubupper bound for slack variable

Definition at line 9050 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPchgVarUb(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPgetStage().

◆ SCIPisViolatedIndicator()

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

checks whether indicator constraint is violated w.r.t. sol

Parameters
scipSCIP data structure
consindicator constraint
solsolution, or NULL to use current node's solution

Definition at line 9076 of file cons_indicator.c.

References assert(), FALSE, NULL, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPgetSolVal(), SCIPisFeasPositive(), sol, and TRUE.

Referenced by isViolatedAndNotFixed(), and SCIP_DECL_CONSGETDIVEBDCHGS().

◆ SCIPmakeIndicatorFeasible()

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

based on values of other variables, computes slack and binary variable to turn constraint feasible

based on values of other variables, computes slack and binary variable to turn constraint feasible

It will also clean up the solution, i.e., shift slack variable, as follows:

If the inequality is \(a^T x + \gamma\, s \leq \beta\), the value of the slack variable \(s\) to achieve equality is

\[ s^* = \frac{\beta - a^T x^*}{\gamma}, \]

where \(x^*\) is the given solution. In case of \(a^T x + \gamma\, s \geq \alpha\), we arrive at

\[ s^* = \frac{\alpha - a^T x^*}{\gamma}. \]

The typical values of \(\gamma\) in the first case is -1 and +1 in the second case.

Now, let \(\sigma\) be the sign of \(\gamma\) in the first case and \(-\gamma\) in the second case. Thus, if \(\sigma > 0\) and \(s^* < 0\), the inequality cannot be satisfied by a nonnegative value for the slack variable; in this case, we have to leave the values as they are. If \(\sigma < 0\) and \(s^* > 0\), the solution violates the indicator constraint (we can set the slack variable to value \(s^*\)). If \(\sigma < 0\) and \(s^* \leq 0\) or \(\sigma > 0\) and \(s^* \geq 0\), the constraint is satisfied, and we can set the slack variable to 0.

Parameters
scipSCIP data structure
consindicator constraint
solsolution
changedpointer to store whether the solution has been changed

Definition at line 9131 of file cons_indicator.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, obj, REALABS, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_STAGE_INITPRESOLVE, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_NEGATED, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsActive(), SCIPgetLhsLinear(), SCIPgetNVarsLinear(), SCIPgetRhsLinear(), SCIPgetSolVal(), SCIPgetStage(), SCIPgetValsLinear(), SCIPgetVarsLinear(), SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisZero(), SCIPsetSolVal(), SCIPvarGetLbLocal(), SCIPvarGetNegationVar(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetStatus(), sol, TRUE, var, and varGetObjDelta().

Referenced by SCIP_DECL_CONSCHECK(), and SCIPmakeIndicatorsFeasible().

◆ SCIPmakeIndicatorsFeasible()

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

based on values of other variables, computes slack and binary variable to turn all constraints feasible

Parameters
scipSCIP data structure
conshdlrindicator constraint handler
solsolution
changedpointer to store whether the solution has been changed

Definition at line 9306 of file cons_indicator.c.

References assert(), c, CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_INITPRESOLVE, SCIPconsGetData(), SCIPconshdlrGetConss(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPgetStage(), SCIPmakeIndicatorFeasible(), and sol.

Referenced by SCIPperformGenericDivingAlgorithm().

◆ SCIPaddLinearConsIndicator()

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

adds additional linear constraint that is not connected with an indicator constraint, but can be used for separation

Parameters
scipSCIP data structure
conshdlrindicator constraint handler
linconslinear constraint

Definition at line 9353 of file cons_indicator.c.

References assert(), consdataEnsureAddLinConsSize(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsLocal(), and SCIPconsIsModifiable().

◆ SCIPaddRowIndicator()

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

adds additional globally valid row that is not connected with an indicator constraint, but can be used for separation

adds additional row that is not connected with an indicator constraint, but can be used for separation

Note
The row is directly added to the alternative polyhedron and is not stored.
Parameters
scipSCIP data structure
conshdlrindicator constraint handler
rowrow to add

Definition at line 9385 of file cons_indicator.c.

References addAltLPRow(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIProwGetName(), and SCIProwIsLocal().

◆ SCIPcreateConsKnapsack()

SCIP_RETCODE SCIPcreateConsKnapsack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Longint * weights,
SCIP_Longint capacity,
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 )

creates and captures a knapsack constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a knapsack constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons() ! [SnippetConsCreationKnapsack]
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of items in the knapsack
varsarray with item variables
weightsarray with item weights
capacitycapacity of knapsack (right hand side of inequality)
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 13630 of file cons_knapsack.c.

References assert(), catchEvents(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPisTransformed(), and vars.

Referenced by createAndAddLinearCons(), createCapacityRestriction(), createMipCpFormulation(), createNormalizedKnapsack(), createRow(), presolRoundCardinality(), SCIP_DECL_CONSPARSE(), SCIP_DECL_PRESOLEXEC(), and SCIPcreateConsBasicKnapsack().

◆ SCIPcreateConsBasicKnapsack()

SCIP_RETCODE SCIPcreateConsBasicKnapsack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Longint * weights,
SCIP_Longint capacity )

creates and captures a knapsack constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsKnapsack(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsKnapsack() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

! [SnippetConsCreationKnapsack] creates and captures a knapsack constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsKnapsack(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsKnapsack() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of items in the knapsack
varsarray with item variables
weightsarray with item weights
capacitycapacity of knapsack

Definition at line 13705 of file cons_knapsack.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsKnapsack(), TRUE, and vars.

Referenced by createIntervalRelaxation(), createMipFormulation(), and initPricing().

◆ SCIPaddCoefKnapsack()

SCIP_RETCODE SCIPaddCoefKnapsack ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Longint weight )

adds new item to knapsack constraint

Parameters
scipSCIP data structure
consconstraint data
varitem variable
weightitem weight

Definition at line 13724 of file cons_knapsack.c.

References addCoef(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and var.

Referenced by addCoefTerm(), createCapacityRestriction(), createIntervalRelaxation(), createMipCpFormulation(), createMipFormulation(), SCIPaddCoefPseudoboolean(), and SCIPconsAddCoef().

◆ SCIPgetCapacityKnapsack()

◆ SCIPchgCapacityKnapsack()

SCIP_RETCODE SCIPchgCapacityKnapsack ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Longint capacity )

changes capacity of the knapsack constraint

Note
This method can only be called during problem creation stage (SCIP_STAGE_PROBLEM)
Parameters
scipSCIP data structure
consconstraint data
capacitynew capacity of knapsack

Definition at line 13772 of file cons_knapsack.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetStage().

◆ SCIPgetNVarsKnapsack()

◆ SCIPgetVarsKnapsack()

◆ SCIPgetWeightsKnapsack()

◆ SCIPgetDualsolKnapsack()

SCIP_Real SCIPgetDualsolKnapsack ( SCIP * scip,
SCIP_CONS * cons )

gets the dual solution of the knapsack constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13872 of file cons_knapsack.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by SCIPconsGetDualsol().

◆ SCIPgetDualfarkasKnapsack()

SCIP_Real SCIPgetDualfarkasKnapsack ( SCIP * scip,
SCIP_CONS * cons )

gets the dual Farkas value of the knapsack constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13898 of file cons_knapsack.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualfarkas().

Referenced by SCIPconsGetDualfarkas().

◆ SCIPgetRowKnapsack()

SCIP_ROW * SCIPgetRowKnapsack ( SCIP * scip,
SCIP_CONS * cons )

returns the linear relaxation of the given knapsack constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 13926 of file cons_knapsack.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPconsGetRow().

◆ SCIPsolveKnapsackExactly()

SCIP_RETCODE SCIPsolveKnapsackExactly ( SCIP * scip,
int nitems,
SCIP_Longint * weights,
SCIP_Real * profits,
SCIP_Longint capacity,
int * items,
int * solitems,
int * nonsolitems,
int * nsolitems,
int * nnonsolitems,
SCIP_Real * solval,
SCIP_Bool * success )

solves knapsack problem in maximization form exactly using dynamic programming; if needed, one can provide arrays to store all selected items and all not selected items

Note
in case you provide the solitems or nonsolitems array you also have to provide the counter part, as well
the algorithm will first compute a greedy solution and terminate if the greedy solution is proven to be optimal. The dynamic programming algorithm runs with a time and space complexity of O(nitems * capacity).

solves knapsack problem in maximization form exactly using dynamic programming; if needed, one can provide arrays to store all selected items and all not selected items

Note
in case you provide the solitems or nonsolitems array you also have to provide the counter part, as well
the algorithm will first compute a greedy solution and terminate if the greedy solution is proven to be optimal. The dynamic programming algorithm runs with a time and space complexity of O(nitems * capacity).
Parameters
scipSCIP data structure
nitemsnumber of available items
weightsitem weights
profitsitem profits
capacitycapacity of knapsack
itemsitem numbers
solitemsarray to store items in solution, or NULL
nonsolitemsarray to store items not in solution, or NULL
nsolitemspointer to store number of items in solution, or NULL
nnonsolitemspointer to store number of items not in solution, or NULL
solvalpointer to store optimal solution value, or NULL
successpointer to store if an error occured during solving (normally a memory problem)

Definition at line 1086 of file cons_knapsack.c.

References assert(), FALSE, i, IDX, MAX, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_LONGINT_MAX, SCIP_NOMEMORY, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcalcGreComDiv(), SCIPdebugMsg, SCIPfloor(), SCIPfreeBufferArray, SCIPisGE(), SCIPisIntegral(), SCIPselectWeightedDownRealLongRealInt(), SCIPsortDownRealIntLong(), and TRUE.

Referenced by dualPresolving(), and getHighestCapacityUsage().

◆ SCIPsolveKnapsackApproximately()

SCIP_RETCODE SCIPsolveKnapsackApproximately ( SCIP * scip,
int nitems,
SCIP_Longint * weights,
SCIP_Real * profits,
SCIP_Longint capacity,
int * items,
int * solitems,
int * nonsolitems,
int * nsolitems,
int * nnonsolitems,
SCIP_Real * solval )

solves knapsack problem in maximization form approximately by solving the LP-relaxation of the problem using Dantzig's method and rounding down the solution; if needed, one can provide arrays to store all selected items and all not selected items

Parameters
scipSCIP data structure
nitemsnumber of available items
weightsitem weights
profitsitem profits
capacitycapacity of knapsack
itemsitem numbers
solitemsarray to store items in solution, or NULL
nonsolitemsarray to store items not in solution, or NULL
nsolitemspointer to store number of items in solution, or NULL
nnonsolitemspointer to store number of items not in solution, or NULL
solvalpointer to store optimal solution value, or NULL

Definition at line 1590 of file cons_knapsack.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, and SCIPselectWeightedDownRealLongRealInt().

Referenced by getCover().

◆ SCIPseparateKnapsackCuts()

SCIP_RETCODE SCIPseparateKnapsackCuts ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SEPA * sepa,
SCIP_VAR ** vars,
int nvars,
SCIP_Longint * weights,
SCIP_Longint capacity,
SCIP_SOL * sol,
SCIP_Bool usegubs,
SCIP_Bool * cutoff,
int * ncuts )

separates different classes of valid inequalities for the 0-1 knapsack problem

Parameters
scipSCIP data structure
consoriginating constraint of the knapsack problem, or NULL
sepaoriginating separator of the knapsack problem, or NULL
varsvariables in knapsack constraint
nvarsnumber of variables in knapsack constraint
weightsweights of variables in knapsack constraint
capacitycapacity of knapsack
solprimal SCIP solution to separate, NULL for current LP solution
usegubsshould GUB information be used for separation?
cutoffpointer to store whether a cutoff has been detected
ncutspointer to add up the number of found cuts

Definition at line 5560 of file cons_knapsack.c.

References assert(), cutoff, FALSE, getCover(), getFeasibleSet(), GUBsetCreate(), GUBsetFree(), GUBsetGetCliquePartition(), i, makeCoverMinimal(), SCIP_GUBSet::ngubconss, NULL, nvars, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetName(), SCIPdebugMsg, SCIPdebugMsgPrint, SCIPfreeBufferArray, SCIPgetSolVals(), SCIPincConsAge(), SCIPvarGetName(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), sol, TRUE, USESUPADDLIFT, and vars.

Referenced by SCIPseparateRelaxedKnapsack(), and separateCons().

◆ SCIPseparateRelaxedKnapsack()

SCIP_RETCODE SCIPseparateRelaxedKnapsack ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SEPA * sepa,
int nknapvars,
SCIP_VAR ** knapvars,
SCIP_Real * knapvals,
SCIP_Real valscale,
SCIP_Real rhs,
SCIP_SOL * sol,
SCIP_Bool * cutoff,
int * ncuts )
Parameters
scipSCIP data structure
consoriginating constraint of the knapsack problem, or NULL
sepaoriginating separator of the knapsack problem, or NULL
nknapvarsnumber of variables in the continuous knapsack constraint
knapvarsvariables in the continuous knapsack constraint
knapvalscoefficients of the variables in the continuous knapsack constraint
valscale-1.0 if lhs of row is used as rhs of c. k. constraint, +1.0 otherwise
rhsright hand side of the continuous knapsack constraint
solprimal CIP solution, NULL for current LP solution
cutoffpointer to store whether a cutoff was found
ncutspointer to add up the number of found cuts

Definition at line 5777 of file cons_knapsack.c.

References assert(), BMSclearMemoryArray, CONSHDLR_NAME, cutoff, DEFAULT_USEGUBS, FALSE, i, KNAPSACKRELAX_MAXDELTA, KNAPSACKRELAX_MAXDNOM, KNAPSACKRELAX_MAXSCALE, MAXABSVBCOEF, nbinvars, NULL, REALABS, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPallocBufferArray, SCIPcalcIntegralScalar(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPdebug, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPdebugPrintCons, SCIPepsilon(), SCIPfeasFloor(), SCIPfindConshdlr(), SCIPfloor(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNegatedVar(), SCIPgetNVars(), SCIPgetSolVal(), SCIPgetVars(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPreallocBlockMemoryArray, SCIPseparateKnapsackCuts(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNVlbs(), SCIPvarGetNVubs(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarGetVlbCoefs(), SCIPvarGetVlbConstants(), SCIPvarGetVlbVars(), SCIPvarGetVubCoefs(), SCIPvarGetVubConstants(), SCIPvarGetVubVars(), SCIPvarIsActive(), SCIPvarIsBinary(), sol, TRUE, and var.

Referenced by addCut(), and separateCons().

◆ SCIPcleanupConssKnapsack()

SCIP_RETCODE SCIPcleanupConssKnapsack ( SCIP * scip,
SCIP_Bool onlychecked,
SCIP_Bool * infeasible )

cleans up (multi-)aggregations and fixings from knapsack constraints

Parameters
scipSCIP data structure
onlycheckedshould only checked constraints be cleaned up?
infeasiblepointer to return whether the problem was detected to be infeasible

Definition at line 13949 of file cons_knapsack.c.

References applyFixings(), assert(), CONSHDLR_NAME, FALSE, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetCheckConss(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetNCheckConss(), and SCIPfindConshdlr().

Referenced by SCIPmatrixCreate().

◆ SCIPincludeLinconsUpgrade()

SCIP_RETCODE SCIPincludeLinconsUpgrade ( SCIP * scip,
SCIP_DECL_LINCONSUPGD((*linconsupgd)) ,
int priority,
const char * conshdlrname )

◆ SCIPcreateConsLinear()

SCIP_RETCODE SCIPcreateConsLinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * vals,
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 )

creates and captures a linear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of nonzeros in the constraint
varsarray with variables of constraint entries
valsarray with coefficients of constraint entries
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 17933 of file cons_linear.c.

References assert(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, REALABS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_EXITPRESOLVE, SCIPABORT, SCIPcreateCons(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetStage(), SCIPinfinity(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPvarGetName(), SCIPvarIsRelaxationOnly(), TRUE, and vars.

Referenced by addBranchingComplementaritiesSOS1(), addExtendedAsymmetricFormulation(), addExtendedFlowFormulation(), addLocalBranchingConstraint(), addLocalBranchingConstraint(), addLocalbranchingConstraintAndObjcutoff(), addLocalConss(), addOrbitopesDynamic(), addSSTConssOrbitAndUpdateSST(), addStrongSBCsSubgroup(), addTrustRegionConstraints(), addWeakSBCsSubgroup(), aggregateConstraints(), aggregation(), applyFixings(), applyFixings(), applyFixings(), applyFixings(), applyObbtBilinear(), cancelRow(), consdataLinearize(), copyCuts(), CREATE_CONSTRAINT(), createAndAddLinearCons(), createAndAddProofcons(), createConstraint(), createConstraints(), createCoveringProblem(), createLinearCons(), createMipCpFormulation(), createNAryBranch(), createProbOnlyEdge(), createProbSimplified(), createProbSimplifiedTest(), createRows(), createRows(), createSubSCIP(), createSubscip(), dualPresolve(), execmain(), fixDeleteOrUpgradeCons(), fixVariableZeroNode(), fixVariableZeroNode(), fixVariableZeroNode(), forbidCover(), getFixedVariable(), preprocessConstraintPairs(), propIndicator(), scipexamples::QueensSolver::QueensSolver(), rangedRowPropagation(), readCnf(), readConstraints(), readConstraints(), readConstraints(), readOPBFile(), readRows(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_NONLINCONSUPGD(), SCIP_DECL_READERREAD(), SCIPaddTrustregionNeighborhoodConstraint(), SCIPcopyConsLinear(), SCIPcreateConsBasicLinear(), SCIPcreateConsIndicatorGeneric(), SCIPgetVarCopy(), selectVarMultAggrBranching(), setupAndSolveSubscip(), setupSubproblem(), setupSubScip(), setupSubScip(), tightenSingleVar(), tryUpgradingLogicor(), tryUpgradingSetppc(), and upgradeLinearSuperindicator().

◆ SCIPcreateConsBasicLinear()

SCIP_RETCODE SCIPcreateConsBasicLinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * vals,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a linear constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsLinear(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsLinear() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of nonzeros in the constraint
varsarray with variables of constraint entries
valsarray with coefficients of constraint entries
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 18133 of file cons_linear.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsLinear(), TRUE, and vars.

Referenced by addLocalBranchingConstraint(), addLocalBranchingConstraint(), applyRepair(), createAndAddTransferredCut(), createAndApplyStoredBendersCut(), createBlockproblem(), createKKTComplementarityBinary(), createKKTComplementarityBounds(), createKKTComplementarityLinear(), createKKTDualCons(), createMasterproblem(), createMIP(), createMipFormulation(), createOriginalproblem(), createProbSimplified(), createProbSimplifiedTest(), createSubproblem(), createSubproblems(), generateAndApplyBendersCuts(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), getBinaryProductExprDo(), main(), AMPLProblemHandler::OnHeader(), readLIBSVM(), reformulateFactorizedBinaryQuadratic(), SCIP_DECL_HEUREXEC(), SCIP_DECL_PRESOLEXEC(), SCIPapplyProximity(), SCIPbendersMergeSubproblemIntoMaster(), SCIPgenerateAndApplyBendersOptCut(), SCIPverifyCircularPatternNLP(), setupAndSolveFiniteSolSubscip(), setupProblem(), setupProblem(), setupProblem(), setupProblem(), setupProblem(), and solvePricingMINLP().

◆ SCIPcopyConsLinear()

SCIP_RETCODE SCIPcopyConsLinear ( SCIP * scip,
SCIP_CONS ** cons,
SCIP * sourcescip,
const char * name,
int nvars,
SCIP_VAR ** sourcevars,
SCIP_Real * sourcecoefs,
SCIP_Real lhs,
SCIP_Real rhs,
SCIP_HASHMAP * varmap,
SCIP_HASHMAP * consmap,
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_Bool global,
SCIP_Bool * valid )

creates by copying and captures a linear constraint

Parameters
sciptarget SCIP data structure
conspointer to store the created target constraint
sourcescipsource SCIP data structure
namename of constraint
nvarsnumber of variables in source variable array
sourcevarssource variables of the linear constraints
sourcecoefscoefficient array of the linear constraint, or NULL if all coefficients are one
lhsleft hand side of the linear constraint
rhsright hand side of the linear constraint
varmapa SCIP_HASHMAP mapping variables of the source SCIP to corresponding variables of the target SCIP
consmapa hashmap to store the mapping of source constraints to the corresponding target constraints
initialshould the LP relaxation of constraint be in the initial LP?
separateshould the constraint be separated during LP processing?
enforceshould the constraint be enforced during node processing?
checkshould the constraint be checked for feasibility?
propagateshould the constraint be propagated during node processing?
localis constraint only valid locally?
modifiableis constraint modifiable (subject to column generation)?
dynamicis constraint subject to aging?
removableshould the relaxation be removed from the LP due to aging or cleanup?
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node?
globalcreate a global or a local copy?
validpointer to store if the copying was valid

Definition at line 18153 of file cons_linear.c.

References assert(), FALSE, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetVarCopy(), SCIPisGT(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), SCIPvarIsOriginal(), SCIPvarIsRelaxationOnly(), TRUE, valid, var, and vars.

Referenced by SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSCOPY(), and SCIP_DECL_CONSCOPY().

◆ SCIPaddCoefLinear()

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

adds coefficient to linear constraint (if it is not zero)

Parameters
scipSCIP data structure
consconstraint data
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 18285 of file cons_linear.c.

References addCoef(), assert(), chgLhs(), chgRhs(), CONSHDLR_NAME, NULL, REALABS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_STAGE_EXITPRESOLVE, SCIPABORT, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetStage(), SCIPinfinity(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPvarGetName(), TRUE, and var.

Referenced by ObjPricerVRP::add_tour_variable(), addAuxiliaryVariableToCut(), addCoefTerm(), AMPLProblemHandler::LinearPartHandler::AddTerm(), addVariable(), applyFixings(), applyRepair(), computeNogoodCut(), computeStandardIntegerOptCut(), consdataLinearize(), createAndAddLinearCons(), createAndAddProofcons(), createAndAddTransferredCut(), createConstraint(), createKKTComplementarityBinary(), createKKTComplementarityBounds(), createKKTComplementarityLinear(), createKKTDualCons(), createMasterproblem(), createMIP(), createMipCpFormulation(), createMipFormulation(), createOriginalproblem(), createProbOnlyEdge(), createProbSimplified(), createProbSimplifiedTest(), createSubproblem(), createSubproblems(), createSubSCIP(), execmain(), getBoundConsFromVertices(), main(), presolveAddKKTLinearCons(), presolveAddKKTQuadBilinearTerms(), presolveAddKKTQuadLinearTerms(), presolveAddKKTQuadQuadraticTerms(), scipexamples::QueensSolver::QueensSolver(), readCols(), reformulateFactorizedBinaryQuadratic(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_READERREAD(), SCIPaddCoefPseudoboolean(), SCIPaddVarIndicator(), SCIPapplyProximity(), SCIPbendersMergeSubproblemIntoMaster(), SCIPchgCoefLinear(), SCIPconsAddCoef(), SCIPcreateConsIndicatorGeneric(), SCIPcreateConsIndicatorGenericLinConsPure(), SCIPgenerateAndApplyBendersOptCut(), SCIPgetVarCopy(), SCIPverifyCircularPatternNLP(), setupAndSolveFiniteSolSubscip(), setupAndSolveSubscip(), setupProblem(), setupProblem(), setupProblem(), setupProblem(), setupProblem(), setupSubproblem(), setupSubScip(), setupSubScip(), solvePricingMINLP(), tightenSingleVar(), tryUpgradingLogicor(), and tryUpgradingSetppc().

◆ SCIPchgCoefLinear()

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

changes coefficient of variable in linear constraint; deletes the variable if coefficient is zero; adds variable if not yet contained in the constraint

Note
This method may only be called during problem creation stage for an original constraint and variable.
This method requires linear time to search for occurences of the variable in the constraint data.
Parameters
scipSCIP data structure
consconstraint data
varvariable of constraint entry
valnew coefficient of constraint entry

Definition at line 18446 of file cons_linear.c.

References assert(), chgCoefPos(), CONSHDLR_NAME, delCoefPos(), FALSE, i, NULL, nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPaddCoefLinear(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, SCIPgetStage(), SCIPisZero(), SCIPvarIsOriginal(), TRUE, var, and vars.

Referenced by addScenarioVarsAndConsToProb(), and SCIPdelCoefLinear().

◆ SCIPdelCoefLinear()

SCIP_RETCODE SCIPdelCoefLinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var )

deletes variable from linear constraint

Note
This method may only be called during problem creation stage for an original constraint and variable.
This method requires linear time to search for occurences of the variable in the constraint data.
Parameters
scipSCIP data structure
consconstraint data
varvariable of constraint entry

Definition at line 18514 of file cons_linear.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPchgCoefLinear(), and var.

◆ SCIPgetLhsLinear()

SCIP_Real SCIPgetLhsLinear ( SCIP * scip,
SCIP_CONS * cons )

◆ SCIPgetRhsLinear()

◆ SCIPchgLhsLinear()

◆ SCIPchgRhsLinear()

◆ SCIPgetNVarsLinear()

◆ SCIPgetVarsLinear()

◆ SCIPgetValsLinear()

◆ SCIPgetActivityLinear()

SCIP_Real SCIPgetActivityLinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SOL * sol )

gets the activity of the linear constraint in the given solution

Note
if the solution contains values at infinity, this method will return SCIP_INVALID in case the activity comprises positive and negative infinity contributions
Parameters
scipSCIP data structure
consconstraint data
solsolution, or NULL to use current node's solution

Definition at line 18693 of file cons_linear.c.

References assert(), consdataGetActivity(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPgetRowSolActivity(), and sol.

Referenced by computeNogoodCut(), computeStandardIntegerOptCut(), generateAndApplyBendersCuts(), reuseSolution(), and SCIPgenerateAndApplyBendersOptCut().

◆ SCIPgetFeasibilityLinear()

SCIP_Real SCIPgetFeasibilityLinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SOL * sol )

gets the feasibility of the linear constraint in the given solution

Parameters
scipSCIP data structure
consconstraint data
solsolution, or NULL to use current node's solution

Definition at line 18721 of file cons_linear.c.

References assert(), consdataGetFeasibility(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPgetRowSolFeasibility(), and sol.

◆ SCIPgetDualsolLinear()

SCIP_Real SCIPgetDualsolLinear ( SCIP * scip,
SCIP_CONS * cons )

gets the dual solution of the linear constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 18749 of file cons_linear.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by ObjPricerVRP::pricing(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_PRICERREDCOST(), SCIPconsGetDualsol(), SCIPgetDualSolVal(), and SCIPwriteSolutionNl().

◆ SCIPgetDualfarkasLinear()

SCIP_Real SCIPgetDualfarkasLinear ( SCIP * scip,
SCIP_CONS * cons )

gets the dual Farkas value of the linear constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 18777 of file cons_linear.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, and SCIProwGetDualfarkas().

Referenced by ObjPricerVRP::pricing(), and SCIPconsGetDualfarkas().

◆ SCIPgetRowLinear()

SCIP_ROW * SCIPgetRowLinear ( SCIP * scip,
SCIP_CONS * cons )

returns the linear relaxation of the given linear constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 18807 of file cons_linear.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPconsGetRow().

◆ SCIPupgradeConsLinear()

SCIP_RETCODE SCIPupgradeConsLinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_CONS ** upgdcons )

◆ SCIPclassifyConstraintTypesLinear()

SCIP_RETCODE SCIPclassifyConstraintTypesLinear ( SCIP * scip,
SCIP_LINCONSSTATS * linconsstats )

performs linear constraint type classification as used for MIPLIB

iterates through all linear constraints and stores relevant statistics in the linear constraint statistics linconsstats.

Note
only constraints are iterated that belong to the linear constraint handler. If the problem has been presolved already, constraints that were upgraded to more special types such as, e.g., varbound constraints, will not be shown correctly anymore. Similarly, if specialized constraints were created through the API, these are currently not present.
Parameters
scipSCIP data structure
linconsstatslinear constraint type classification

Definition at line 15426 of file cons_linear.c.

References assert(), b, c, CONSHDLR_NAME, FALSE, i, isFiniteNonnegativeIntegral(), isRangedRow(), mergeMultiples(), NULL, REALABS, SCIP_CALL, SCIP_LINCONSTYPE_AGGREGATION, SCIP_LINCONSTYPE_BINPACKING, SCIP_LINCONSTYPE_CARDINALITY, SCIP_LINCONSTYPE_EMPTY, SCIP_LINCONSTYPE_EQKNAPSACK, SCIP_LINCONSTYPE_FREE, SCIP_LINCONSTYPE_GENERAL, SCIP_LINCONSTYPE_INTKNAPSACK, SCIP_LINCONSTYPE_INVKNAPSACK, SCIP_LINCONSTYPE_KNAPSACK, SCIP_LINCONSTYPE_MIXEDBINARY, SCIP_LINCONSTYPE_PRECEDENCE, SCIP_LINCONSTYPE_SETCOVERING, SCIP_LINCONSTYPE_SETPACKING, SCIP_LINCONSTYPE_SETPARTITION, SCIP_LINCONSTYPE_SINGLETON, SCIP_LINCONSTYPE_VARBOUND, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIP_VARTYPE_CONTINUOUS, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetConss(), SCIPconshdlrGetNConss(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPfindConshdlr(), SCIPgetConss(), SCIPgetNConss(), SCIPgetStage(), SCIPinfinity(), SCIPisEQ(), SCIPisGE(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIPisNegative(), SCIPisZero(), SCIPlinConsStatsIncTypeCount(), SCIPlinConsStatsReset(), SCIPvarGetLbGlobal(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPcleanupConssLinear()

SCIP_RETCODE SCIPcleanupConssLinear ( SCIP * scip,
SCIP_Bool onlychecked,
SCIP_Bool * infeasible )

cleans up (multi-)aggregations and fixings from linear constraints

Parameters
scipSCIP data structure
onlycheckedshould only checked constraints be cleaned up?
infeasiblepointer to return whether the problem was detected to be infeasible

Definition at line 19070 of file cons_linear.c.

References applyFixings(), assert(), CONSHDLR_NAME, FALSE, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetCheckConss(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetNCheckConss(), and SCIPfindConshdlr().

Referenced by SCIPmatrixCreate().

◆ SCIPcreateConsLinking()

SCIP_RETCODE SCIPcreateConsLinking ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * linkvar,
SCIP_VAR ** binvars,
SCIP_Real * vals,
int nbinvars,
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 )

creates and captures a linking constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linkvarlinking variable (continuous or integer) which should be linked
binvarsbinary variables
valscoefficients of the binary variables
nbinvarsnumber of binary starting variables
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3569 of file cons_linking.c.

References assert(), consdataCreate(), consdataCreateBinvars(), CONSHDLR_NAME, getHashmapKey(), HASHSIZE_BINVARSCONS, nbinvars, NULL, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPblkmem(), SCIPconshdlrGetData(), SCIPcreateCons(), SCIPdebugMsg, SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetStage(), SCIPhashmapCreate(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetName(), and SCIPvarGetUbGlobal().

Referenced by consdataCollectLinkingCons(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicLinking().

◆ SCIPcreateConsBasicLinking()

SCIP_RETCODE SCIPcreateConsBasicLinking ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * linkvar,
SCIP_VAR ** binvars,
SCIP_Real * vals,
int nbinvars )

creates and captures a linking constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsLinking(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsLinking() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a linking constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsLinking(); all flags can be set via SCIPsetCons<Flagname>-methods in scip.h

See also
SCIPcreateConsLinking() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linkvarlinking variable (continuous or integer) which should be linked
binvarsbinary variables, or NULL
valscoefficients of the binary variables
nbinvarsnumber of binary variables

Definition at line 3666 of file cons_linking.c.

References assert(), FALSE, nbinvars, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsLinking(), and TRUE.

◆ SCIPexistsConsLinking()

SCIP_Bool SCIPexistsConsLinking ( SCIP * scip,
SCIP_VAR * linkvar )

checks if for the given linking variable (continuous or integer) a linking constraint exists

Parameters
scipSCIP data structure
linkvarlinking variable (continuous or integer) which should be linked

Definition at line 3685 of file cons_linking.c.

References assert(), CONSHDLR_NAME, getHashmapKey(), NULL, SCIPconshdlrGetData(), SCIPfindConshdlr(), and SCIPhashmapExists().

Referenced by collectBinaryVars(), and consdataCollectLinkingCons().

◆ SCIPgetConsLinking()

SCIP_CONS * SCIPgetConsLinking ( SCIP * scip,
SCIP_VAR * linkvar )

returns the linking constraint belonging the given linking variable (continuous or integer) or NULL if it does not exist yet

Parameters
scipSCIP data structure
linkvarlinking variable (continuous or integer) which should be linked

Definition at line 3703 of file cons_linking.c.

References assert(), CONSHDLR_NAME, getHashmapKey(), NULL, SCIPconshdlrGetData(), SCIPfindConshdlr(), and SCIPhashmapGetImage().

Referenced by collectBinaryVars(), consdataCollectLinkingCons(), and consdataCreate().

◆ SCIPgetLinkvarLinking()

SCIP_VAR * SCIPgetLinkvarLinking ( SCIP * scip,
SCIP_CONS * cons )

returns the linking variable (continuous or integer) of the linking constraint

Parameters
scipSCIP data structure
conslinking constraint

Definition at line 3724 of file cons_linking.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetBinvarsLinking()

SCIP_RETCODE SCIPgetBinvarsLinking ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR *** binvars,
int * nbinvars )

returns the binary variables of the linking constraint

Parameters
scipSCIP data structure
conslinking constraint
binvarspointer to store the binary variables array pointer
nbinvarspointer to store the number of returned binary variables

Definition at line 3747 of file cons_linking.c.

References assert(), consdataCreateBinvars(), CONSHDLR_NAME, nbinvars, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by collectBinaryVars(), createCoverCutsTimepoint(), and SCIPmatrixCreate().

◆ SCIPgetNBinvarsLinking()

int SCIPgetNBinvarsLinking ( SCIP * scip,
SCIP_CONS * cons )

returns the number of binary variables of the linking constraint

Parameters
scipSCIP data structure
conslinking constraint

Definition at line 3793 of file cons_linking.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetValsLinking()

SCIP_Real * SCIPgetValsLinking ( SCIP * scip,
SCIP_CONS * cons )

returns the coefficients of the binary variables

Parameters
scipSCIP data structure
conslinking constraint

Definition at line 3816 of file cons_linking.c.

References assert(), consdataSort(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by collectBinaryVars(), createCoverCutsTimepoint(), and SCIPmatrixCreate().

◆ SCIPgetBinvarsDataLinking()

SCIP_RETCODE SCIPgetBinvarsDataLinking ( SCIP_CONS * cons,
SCIP_VAR *** binvars,
SCIP_Real ** vals,
int * nbinvars )

return all binary variable information of the linking constraint

Parameters
conslinking constraint
binvarspointer to store binary variables, or NULL
valspointer to store the binary coefficients, or NULL
nbinvarspointer to store the number of binary variables, or NULL

Definition at line 3840 of file cons_linking.c.

References assert(), consdataSort(), CONSHDLR_NAME, nbinvars, NULL, SCIP_ERROR, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPcreateConsLogicor()

SCIP_RETCODE SCIPcreateConsLogicor ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures a logic or constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 5415 of file cons_logicor.c.

References assert(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_EVENTTYPE_VARFIXED, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PRESOLVING, SCIPcatchVarEvent(), SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetStage(), SCIPisTransformed(), and vars.

Referenced by addSplitcons(), applyCliqueFixings(), BENDERS_CUTORACLE(), BENDERS_CUTORACLE(), consdataLinearize(), createAndAddLinearCons(), createBinaryConstraint(), createConflict(), createConflictCons(), createNormalizedLogicor(), extendToCover(), readCnf(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSPARSE(), SCIP_DECL_HEUREXEC(), SCIPcreateConsBasicLogicor(), SCIPreoptApplyGlbConss(), upgradeCons(), and upgradeCons().

◆ SCIPcreateConsBasicLogicor()

SCIP_RETCODE SCIPcreateConsBasicLogicor ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars )

creates and captures a logicor constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsLogicor(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsLogicor() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries

Definition at line 5492 of file cons_logicor.c.

References assert(), FALSE, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsLogicor(), TRUE, and vars.

Referenced by addFixedVarsConss(), createProbQP(), createProbSimplified(), and createProbSimplifiedTest().

◆ SCIPaddCoefLogicor()

SCIP_RETCODE SCIPaddCoefLogicor ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var )

adds coefficient in logic or constraint

Parameters
scipSCIP data structure
conslogicor constraint
varvariable to add to the constraint

Definition at line 5509 of file cons_logicor.c.

References addCoef(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and var.

Referenced by addCoefTerm(), createConflictCons(), createProbQP(), createProbSimplified(), createProbSimplifiedTest(), SCIPaddCoefPseudoboolean(), and SCIPconsAddCoef().

◆ SCIPgetNVarsLogicor()

◆ SCIPgetVarsLogicor()

◆ SCIPgetDualsolLogicor()

SCIP_Real SCIPgetDualsolLogicor ( SCIP * scip,
SCIP_CONS * cons )

gets the dual solution of the logic or constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5578 of file cons_logicor.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by SCIPconsGetDualsol().

◆ SCIPgetDualfarkasLogicor()

SCIP_Real SCIPgetDualfarkasLogicor ( SCIP * scip,
SCIP_CONS * cons )

gets the dual Farkas value of the logic or constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5604 of file cons_logicor.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualfarkas().

Referenced by SCIPconsGetDualfarkas().

◆ SCIPgetRowLogicor()

SCIP_ROW * SCIPgetRowLogicor ( SCIP * scip,
SCIP_CONS * cons )

returns the linear relaxation of the given logic or constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5632 of file cons_logicor.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPconsGetRow().

◆ SCIPcleanupConssLogicor()

SCIP_RETCODE SCIPcleanupConssLogicor ( SCIP * scip,
SCIP_Bool onlychecked,
int * naddconss,
int * ndelconss,
int * nchgcoefs )

cleans up (multi-)aggregations and fixings from logicor constraints

Parameters
scipSCIP data structure
onlycheckedshould only checked constraints be cleaned up?
naddconsspointer to count number of added (linear) constraints
ndelconsspointer to count number of deleted (logicor) constraints
nchgcoefspointer to count number of changed coefficients

Definition at line 5655 of file cons_logicor.c.

References applyFixings(), assert(), CONSHDLR_NAME, FALSE, i, mergeMultiples(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconshdlrGetCheckConss(), SCIPconshdlrGetConss(), SCIPconshdlrGetData(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetNCheckConss(), SCIPconsIsDeleted(), SCIPdelCons(), SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetNContVars(), and SCIPgetNVars().

Referenced by SCIPmatrixCreate().

◆ SCIPincludeConsUpgradeNonlinear()

SCIP_RETCODE SCIPincludeConsUpgradeNonlinear ( SCIP * scip,
SCIP_DECL_NONLINCONSUPGD((*nlconsupgd)) ,
int priority,
SCIP_Bool active,
const char * conshdlrname )

includes a nonlinear constraint upgrade method into the nonlinear constraint handler

Parameters
scipSCIP data structure
prioritypriority of upgrading method
activeshould the upgrading method by active by default?
conshdlrnamename of the constraint handler

Definition at line 12515 of file cons_nonlinear.c.

References active, CONSUPGRADE::active, assert(), CONSHDLR_NAME, FALSE, i, NULL, paramname, CONSUPGRADE::priority, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPaddBoolParam(), SCIPallocBlockMemory, SCIPconshdlrGetData(), SCIPensureBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPsnprintf(), and SCIPwarningMessage().

Referenced by SCIPincludeConshdlrLinear(), and SCIPincludeConshdlrSetppc().

◆ SCIPcreateConsNonlinear()

SCIP_RETCODE SCIPcreateConsNonlinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_EXPR * expr,
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 )

creates and captures a nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
exprexpression of constraint (must not be NULL)
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.

Definition at line 12586 of file cons_nonlinear.c.

References CONSHDLR_NAME, createCons(), NULL, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPerrorMessage, SCIPfindConshdlr(), and TRUE.

Referenced by createConstraint(), readConstraints(), readObjective(), SCIPcreateConsBasicNonlinear(), and SCIPcreateConsSOC().

◆ SCIPcreateConsBasicNonlinear()

SCIP_RETCODE SCIPcreateConsBasicNonlinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_EXPR * expr,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a nonlinear constraint with all its constraint flags set to their default values

All flags can be set via SCIPconsSetFLAGNAME-methods.

See also
SCIPcreateConsNonlinear() for information about the basic constraint flag configuration.
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
exprexpression of constraint (must not be NULL)
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 12641 of file cons_nonlinear.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcreateConsNonlinear(), and TRUE.

Referenced by AMPLProblemHandler::EndInput(), AMPLProblemHandler::OnHeader(), AMPLProblemHandler::OnLogicalCon(), SCIPcreateConsBasicSignpowerNonlinear(), SCIPcreateConsBasicSOC(), SCIPcreateConsBasicSOCNonlinear(), setupProblem(), setupProblem(), and setupProblem().

◆ SCIPcreateConsQuadraticNonlinear()

SCIP_RETCODE SCIPcreateConsQuadraticNonlinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nlinvars,
SCIP_VAR ** linvars,
SCIP_Real * lincoefs,
int nquadterms,
SCIP_VAR ** quadvars1,
SCIP_VAR ** quadvars2,
SCIP_Real * quadcoefs,
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 )

creates and captures a quadratic nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nlinvarsnumber of linear terms
linvarsarray with variables in linear part
lincoefsarray with coefficients of variables in linear part
nquadtermsnumber of quadratic terms
quadvars1array with first variables in quadratic terms
quadvars2array with second variables in quadratic terms
quadcoefsarray with coefficients of quadratic terms
lhsleft hand side of quadratic equation
rhsright hand side of quadratic equation
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.

Definition at line 12660 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, createCons(), FALSE, NULL, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateExprQuadratic(), SCIPerrorMessage, SCIPfindConshdlr(), and SCIPreleaseExpr().

Referenced by createOriginalproblem(), createProbQP(), createQuadraticCons(), createSubproblems(), readConstraints(), readObjective(), readQCMatrix(), readQMatrix(), SCIPcreateConsBasicQuadraticNonlinear(), SCIPcreateConsIndicatorGeneric(), SCIPcreateConsIndicatorGenericLinCons(), SCIPcreateConsIndicatorGenericLinConsPure(), SCIPcreateConsQuadratic(), SCIPverifyCircularPatternNLP(), setupProblem(), setupProblem(), setupProblem(), and solvePricingMINLP().

◆ SCIPcreateConsBasicQuadraticNonlinear()

SCIP_RETCODE SCIPcreateConsBasicQuadraticNonlinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nlinvars,
SCIP_VAR ** linvars,
SCIP_Real * lincoefs,
int nquadterms,
SCIP_VAR ** quadvars1,
SCIP_VAR ** quadvars2,
SCIP_Real * quadcoefs,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a quadratic nonlinear constraint with all its constraint flags set to their default values

All flags can be set via SCIPconsSetFLAGNAME-methods.

See also
SCIPcreateConsQuadraticNonlinear() for information about the basic constraint flag configuration.
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nlinvarsnumber of linear terms
linvarsarray with variables in linear part
lincoefsarray with coefficients of variables in linear part
nquadtermsnumber of quadratic terms
quadvars1array with first variables in quadratic terms
quadvars2array with second variables in quadratic terms
quadcoefsarray with coefficients of quadratic terms
lhsleft hand side of quadratic equation
rhsright hand side of quadratic equation

Definition at line 12731 of file cons_nonlinear.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcreateConsQuadraticNonlinear(), and TRUE.

Referenced by SCIPcreateConsBasicQuadratic().

◆ SCIPcreateConsBasicSOCNonlinear()

SCIP_RETCODE SCIPcreateConsBasicSOCNonlinear ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * coefs,
SCIP_Real * offsets,
SCIP_Real constant,
SCIP_VAR * rhsvar,
SCIP_Real rhscoeff,
SCIP_Real rhsoffset )

creates and captures a nonlinear constraint that is a second-order cone constraint with all its constraint flags set to their default values

\(\sqrt{\gamma + \sum_{i=1}^{n} (\alpha_i\, (x_i + \beta_i))^2} \leq \alpha_{n+1}\, (x_{n+1}+\beta_{n+1})\)

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables on left hand side of constraint (n)
varsarray with variables on left hand side (x_i)
coefsarray with coefficients of left hand side variables (alpha_i), or NULL if all 1.0
offsetsarray with offsets of variables (beta_i), or NULL if all 0.0
constantconstant on left hand side (gamma)
rhsvarvariable on right hand side of constraint (x_{n+1})
rhscoeffcoefficient of variable on right hand side (alpha_{n+1})
rhsoffsetoffset of variable on right hand side (beta_{n+1})

Definition at line 12758 of file cons_nonlinear.c.

References assert(), i, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIPappendExprSumExpr(), SCIPcreateConsBasicNonlinear(), SCIPcreateExprPow(), SCIPcreateExprSum(), SCIPcreateExprVar(), SCIPinfinity(), SCIPreleaseExpr(), and vars.

◆ SCIPcreateConsBasicSignpowerNonlinear()

SCIP_RETCODE SCIPcreateConsBasicSignpowerNonlinear ( 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 )

creates and captures a signpower nonlinear constraint with all its constraint flags set to their default values

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

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
xnonlinear variable x in constraint
zlinear variable z in constraint
exponentexponent n of |x+offset|^n term in constraint
xoffsetoffset in |x+offset|^n term in constraint
zcoefcoefficient of z in constraint
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 12829 of file cons_nonlinear.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsBasicNonlinear(), SCIPcreateExprSignpower(), SCIPcreateExprSum(), SCIPcreateExprVar(), SCIPreleaseExpr(), and x.

Referenced by SCIPcreateConsAbspower(), and SCIPcreateConsBasicAbspower().

◆ SCIPgetCurBoundsTagNonlinear()

SCIP_Longint SCIPgetCurBoundsTagNonlinear ( SCIP_CONSHDLR * conshdlr)

gets tag indicating current local variable bounds

Parameters
conshdlrnonlinear constraint handler

Definition at line 12880 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by SCIP_DECL_NLHDLRINTEVAL().

◆ SCIPgetLastBoundRelaxTagNonlinear()

SCIP_Longint SCIPgetLastBoundRelaxTagNonlinear ( SCIP_CONSHDLR * conshdlr)

gets the curboundstag from the last time where variable bounds were relaxed

Parameters
conshdlrnonlinear constraint handler

Definition at line 12893 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

◆ SCIPincrementCurBoundsTagNonlinear()

void SCIPincrementCurBoundsTagNonlinear ( SCIP_CONSHDLR * conshdlr,
SCIP_Bool boundrelax )

increments curboundstag and resets lastboundrelax in constraint handler data

Attention
This method is not intended for normal use. These tags are maintained by the event handler for variable bound change events. This method is used by some unittests.
Parameters
conshdlrnonlinear constraint handler
boundrelaxindicates whether a bound was relaxed, i.e., lastboundrelax should be set too

Definition at line 12911 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by detectNlhdlrs(), and SCIPmarkExprPropagateNonlinear().

◆ SCIPgetVarExprHashmapNonlinear()

SCIP_HASHMAP * SCIPgetVarExprHashmapNonlinear ( SCIP_CONSHDLR * conshdlr)

returns the hashmap that is internally used to map variables to their corresponding variable expressions

Parameters
conshdlrnonlinear constraint handler

Definition at line 12929 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by getNLPVarsNonConvexity().

◆ SCIPprocessRowprepNonlinear()

SCIP_RETCODE SCIPprocessRowprepNonlinear ( SCIP * scip,
SCIP_NLHDLR * nlhdlr,
SCIP_CONS * cons,
SCIP_EXPR * expr,
SCIP_ROWPREP * rowprep,
SCIP_Bool overestimate,
SCIP_VAR * auxvar,
SCIP_Real auxvalue,
SCIP_Bool allowweakcuts,
SCIP_Bool branchscoresuccess,
SCIP_Bool inenforcement,
SCIP_SOL * sol,
SCIP_RESULT * result )

processes a rowprep for cut addition and maybe report branchscores

Parameters
scipSCIP data structure
nlhdlrnonlinear handler which provided the estimator
consnonlinear constraint
exprexpression
rowprepcut to be added
overestimatewhether the expression needs to be over- or underestimated
auxvarauxiliary variable
auxvaluecurrent value of expression w.r.t. auxiliary variables as obtained from EVALAUX
allowweakcutswhether we should only look for "strong" cuts, or anything that separates is fine
branchscoresuccesswhether the estimator generation generated branching scores
inenforcementwhether we are in enforcement, or only in separation
solsolution to be separated (NULL for the LP solution)
resultpointer to store the result

Definition at line 12939 of file cons_nonlinear.c.

References addExprViolScoresAuxVars(), assert(), ENFOLOG, FALSE, getExprAbsAuxViolation(), i, NULL, REALABS, result, SCIP_BRANCHED, SCIP_CALL, SCIP_CUTOFF, SCIP_INVALID, SCIP_OKAY, SCIP_SEPARATED, SCIPaddRow(), SCIPcleanupRowprep(), SCIPcleanupRowprep2(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPfeastol(), SCIPgetCutEfficacy(), SCIPgetExprRelAuxViolationNonlinear(), SCIPgetLPFeastol(), SCIPgetRowprepRowCons(), SCIPgetRowprepViolation(), SCIPgetSepaMinEfficacy(), SCIPgetSolVal(), SCIPinfoMessage(), SCIPisCutApplicable(), SCIPisCutEfficacious(), SCIPisEQ(), SCIPmarkRowNotRemovableLocal(), SCIPnlhdlrGetName(), SCIPnlhdlrIncrementNCutoffs, SCIPnlhdlrIncrementNSeparated, SCIPprintRow(), SCIPprintRowprep(), SCIPreleaseRow(), SCIProwprepGetCoefs(), SCIProwprepGetModifiedVars(), SCIProwprepGetName(), SCIProwprepGetNModifiedVars(), SCIProwprepGetNVars(), SCIProwprepGetVars(), SCIProwprepRecordModifications(), sol, and TRUE.

Referenced by enforceExprNlhdlr(), and SCIP_DECL_NLHDLRENFO().

◆ SCIPassumeConvexNonlinear()

SCIP_Bool SCIPassumeConvexNonlinear ( SCIP_CONSHDLR * conshdlr)

returns whether all nonlinear constraints are assumed to be convex

Definition at line 13210 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by SCIP_DECL_NLHDLRDETECT().

◆ SCIPcollectBilinTermsNonlinear()

SCIP_RETCODE SCIPcollectBilinTermsNonlinear ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
SCIP_CONS ** conss,
int nconss )

collects all bilinear terms for a given set of constraints

Attention
This method should only be used for unit tests that depend on SCIPgetBilinTermsNonlinear(), SCIPgetBilinTermNonlinear() or SCIPgetBilinTermIdxNonlinear().
Parameters
scipSCIP data structure
conshdlrnonlinear constraint handler
conssnonlinear constraints
nconsstotal number of nonlinear constraints

Definition at line 13229 of file cons_nonlinear.c.

References assert(), bilinearTermsInsertAll(), NULL, SCIP_CALL, and SCIP_OKAY.

◆ SCIPgetNBilinTermsNonlinear()

int SCIPgetNBilinTermsNonlinear ( SCIP_CONSHDLR * conshdlr)

returns the total number of bilinear terms that are contained in all nonlinear constraints

Note
This method should only be used after auxiliary variables have been created, i.e., after CONSINITLP.
Parameters
conshdlrnonlinear constraint handler

Definition at line 13248 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by createSepaData(), getBestEstimators(), markRowsXj(), SCIP_DECL_SEPAEXECLP(), and separateMcCormickImplicit().

◆ SCIPgetBilinTermsNonlinear()

SCIP_CONSNONLINEAR_BILINTERM * SCIPgetBilinTermsNonlinear ( SCIP_CONSHDLR * conshdlr)

returns all bilinear terms that are contained in all nonlinear constraints

Note
This method should only be used after auxiliary variables have been created, i.e., after CONSINITLP.
The value of the auxiliary variable of a bilinear term might be NULL, which indicates that the term does not have an auxiliary variable.
Parameters
conshdlrnonlinear constraint handler

Definition at line 13267 of file cons_nonlinear.c.

References assert(), NULL, and SCIPconshdlrGetData().

Referenced by addRltTerm(), createSepaData(), getBestEstimators(), isAcceptableRow(), markRowsXj(), and separateMcCormickImplicit().

◆ SCIPgetBilinTermIdxNonlinear()

int SCIPgetBilinTermIdxNonlinear ( SCIP_CONSHDLR * conshdlr,
SCIP_VAR * x,
SCIP_VAR * y )

returns the index of the bilinear term representing the product of the two given variables

Note
The method should only be used after auxiliary variables have been created, i.e., after CONSINITLP.
Returns
The method returns -1 if the variables do not appear bilinearly.
Parameters
conshdlrnonlinear constraint handler
xfirst variable
ysecond variable

Definition at line 13286 of file cons_nonlinear.c.

References assert(), NULL, SCIPconshdlrGetData(), SCIPhashtableRetrieve(), SCIPswapPointers(), SCIPvarCompare(), SCIP_ConsNonlinear_BilinTerm::x, x, SCIP_ConsNonlinear_BilinTerm::y, and y.

Referenced by addRltTerm(), bilinearTermsInsertEntry(), isAcceptableRow(), markRowsXj(), and SCIPgetBilinTermNonlinear().

◆ SCIPgetBilinTermNonlinear()

SCIP_CONSNONLINEAR_BILINTERM * SCIPgetBilinTermNonlinear ( SCIP_CONSHDLR * conshdlr,
SCIP_VAR * x,
SCIP_VAR * y )

returns the bilinear term that represents the product of two given variables

Note
The method should only be used after auxiliary variables have been created, i.e., after CONSINITLP.
Returns
The method returns NULL if the variables do not appear bilinearly.
Parameters
conshdlrnonlinear constraint handler
xfirst variable
ysecond variable

Definition at line 13331 of file cons_nonlinear.c.

References assert(), NULL, SCIPconshdlrGetData(), SCIPgetBilinTermIdxNonlinear(), x, and y.

◆ SCIPevalBilinAuxExprNonlinear()

SCIP_Real SCIPevalBilinAuxExprNonlinear ( SCIP * scip,
SCIP_VAR * x,
SCIP_VAR * y,
SCIP_CONSNONLINEAR_AUXEXPR * auxexpr,
SCIP_SOL * sol )

evaluates an auxiliary expression for a bilinear term

Parameters
scipSCIP data structure
xfirst variable of the bilinear term
ysecond variable of the bilinear term
auxexprauxiliary expression
solsolution at which to evaluate (can be NULL)

Definition at line 13359 of file cons_nonlinear.c.

References assert(), SCIP_ConsNonlinear_Auxexpr::auxvar, SCIP_ConsNonlinear_Auxexpr::coefs, SCIP_ConsNonlinear_Auxexpr::cst, NULL, SCIPgetSolVal(), sol, x, and y.

Referenced by getBestEstimators(), markRowsXj(), and separateMcCormickImplicit().

◆ SCIPinsertBilinearTermExistingNonlinear()

SCIP_RETCODE SCIPinsertBilinearTermExistingNonlinear ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
SCIP_VAR * x,
SCIP_VAR * y,
SCIP_VAR * auxvar,
int nlockspos,
int nlocksneg )

stores the variables of a bilinear term in the data of the constraint handler

Parameters
scipSCIP data structure
conshdlrconstraint handler
xfirst variable
ysecond variable
auxvarauxiliary variable (might be NULL)
nlocksposnumber of positive expression locks
nlocksnegnumber of negative expression locks

Definition at line 13378 of file cons_nonlinear.c.

References assert(), SCIP_ConsNonlinear_BilinTerm::aux, bilinearTermsInsertEntry(), SCIP_ConsNonlinear_BilinTerm::nauxexprs, NULL, SCIP_CALL, SCIP_OKAY, SCIPcaptureVar(), SCIPconshdlrGetData(), TRUE, SCIP_ConsNonlinear_BilinTerm::var, x, and y.

Referenced by bilinearTermsInsertAll().

◆ SCIPinsertBilinearTermImplicitNonlinear()

SCIP_RETCODE SCIPinsertBilinearTermImplicitNonlinear ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
SCIP_VAR * x,
SCIP_VAR * y,
SCIP_VAR * auxvar,
SCIP_Real coefx,
SCIP_Real coefy,
SCIP_Real coefaux,
SCIP_Real cst,
SCIP_Bool overestimate )

stores the variables of a bilinear term in the data of the constraint handler

Parameters
scipSCIP data structure
conshdlrconstraint handler
xfirst variable
ysecond variable
auxvarauxiliary variable (might be NULL)
coefxcoefficient of x in the auxiliary expression
coefycoefficient of y in the auxiliary expression
coefauxcoefficient of auxvar in the auxiliary expression
cstconstant of the auxiliary expression
overestimatewhether the auxiliary expression overestimates the bilinear product

Definition at line 13415 of file cons_nonlinear.c.

References assert(), SCIP_ConsNonlinear_BilinTerm::aux, SCIP_ConsNonlinear_Auxexpr::auxvar, bilinearTermsInsertEntry(), bilinTermAddAuxExpr(), SCIP_ConsNonlinear_Auxexpr::coefs, SCIP_ConsNonlinear_Auxexpr::cst, SCIP_ConsNonlinear_BilinTerm::existing, SCIP_ConsNonlinear_BilinTerm::exprs, FALSE, SCIP_ConsNonlinear_BilinTerm::nauxexprs, SCIP_ConsNonlinear_BilinTerm::nlocksneg, SCIP_ConsNonlinear_BilinTerm::nlockspos, NULL, SCIP_ConsNonlinear_Auxexpr::overestimate, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPconshdlrGetData(), SCIPfreeBlockMemory, SCIPvarCompare(), SCIP_ConsNonlinear_Auxexpr::underestimate, SCIP_ConsNonlinear_BilinTerm::var, SCIP_ConsNonlinear_BilinTerm::x, x, SCIP_ConsNonlinear_BilinTerm::y, and y.

Referenced by extractProducts().

◆ SCIPcomputeFacetVertexPolyhedralNonlinear()

SCIP_RETCODE SCIPcomputeFacetVertexPolyhedralNonlinear ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
SCIP_Bool overestimate,
SCIP_DECL_VERTEXPOLYFUN((*function)) ,
void * fundata,
SCIP_Real * xstar,
SCIP_Real * box,
int nallvars,
SCIP_Real targetvalue,
SCIP_Bool * success,
SCIP_Real * facetcoefs,
SCIP_Real * facetconstant )

computes a facet of the convex or concave envelope of a vertex polyhedral function

If \( f(x) \) is vertex-polyhedral, then \( g \) is a convex underestimator if and only if \( g(v^i) \leq f(v^i), \forall i \), where \( \{ v^i \}_{i = 1}^{2^n} \subseteq \mathbb R^n \) are the vertices of the domain of \( x \), \( [\ell,u] \). Hence, we can compute a linear underestimator by solving the following LP (we don't necessarily get a facet of the convex envelope, see below):

\begin{align*} \max \, & \alpha^T x^* + \beta \\ s.t. \; & \alpha^T v^i + \beta \le f(v^i), \, \forall i = 1, \ldots, 2^n \end{align*}

In principle, one would need to update the LP whenever the domain changes. However, \( [\ell,u] = T([0, 1]^n) \), where \( T \) is an affine linear invertible transformation given by \( T(y)_i = (u_i - \ell_i) y_i + \ell_i \). Working with the change of variables \( x = T(y) \) allows us to keep the constraints of the LP, even if the domain changes. Indeed, after the change of variables, the problem is: find an affine underestimator \( g \) such that \( g(T(y)) \le f(T(y)) \), for all \( y \in [0, 1]^n \). Now \( f(T(y)) \) is componentwise affine, but still satisfies that \( g \) is a valid underestimator if and only if \( g(T(u)) \leq f(T(u)), \forall u \in \{0, 1\}^n \). So we now look for \( \bar g(y) := g(T(y)) = g(((u_i - \ell_i) y_i + \ell_i)_i) = \bar \alpha^T y + \bar \beta \), where \( \bar \alpha_i = (u_i - \ell_i) \alpha_i \) and \( \bar \beta = \sum_i \alpha_i \ell_i + \beta \). So we find \( \bar g \) by solving the LP:

\begin{align*} \max \, & \bar \alpha^T T^{-1}(x^*) + \bar \beta \\ s.t. \; & \bar \alpha^T u + \bar \beta \le f(T(u)), \, \forall u \in \{0, 1\}^n \end{align*}

and recover \( g \) by calculating \( \bar \alpha_i = (u_i - \ell_i) \alpha_i, \bar \beta = \sum_i \alpha_i \ell_i + \beta \). Notice that \( f(T(u^i)) = f(v^i) \) so the right hand side doesn't change after the change of variables.

Furthermore, the LP has more constraints than variables, so we solve its dual:

\begin{align*} \min \, & \sum_i \lambda_i f(v^i) \\ s.t. \; & \sum_i \lambda_i u^i = T^{-1}(x^*) \\ & \sum_i \lambda_i = 1 \\ & \forall i, \, \lambda_i \geq 0 \end{align*}

In case we look for an overestimate, we do exactly the same, but have to maximize in the dual LP instead of minimize.

Technical and implementation details

  1. \( U \) has exponentially many variables, so we only apply this separator for \(n\) ≤ SCIP_MAXVERTEXPOLYDIM.
  2. If the bounds are not finite, there is no underestimator. Also, \( T^{-1}(x^*) \) must be in the domain, otherwise the dual is infeasible.
  3. After a facet is computed, we check whether it is a valid facet (i.e. we check \( \alpha^T v + \beta \le f(v) \) for every vertex \( v \)). If we find a violation of at most ADJUSTFACETFACTOR * SCIPlpfeastol(), then we weaken \( \beta \) by this amount, otherwise, we discard the cut.
  4. If a variable is fixed within tolerances, we replace it with its value and compute the facet of the remaining expression. Note that since we are checking the cut for validity, this will never produce wrong result.
  5. If \( x^* \) is in the boundary of the domain, then the LP has infinitely many solutions, some of which might have very bad numerical properties. For this reason, we perturb \( x^* \) to be in the interior of the region. Furthermore, for some interior points, there might also be infinitely many solutions (e.g. for \( x y \) in \( [0,1]^2 \) any point \( (x^*, y^*) \) such that \( y^* = 1 - x^* \) has infinitely many solutions). For this reason, we perturb any given \( x^* \). The idea is to try to get a facet of the convex/concave envelope. This only happens when the solution has \( n + 1 \) non zero \( \lambda \)'s (i.e. the primal has a unique solution).
  6. We need to compute \( f(v^i) \) for every vertex of \( [\ell,u] \). A vertex is encoded by a number between 0 and \( 2^n - 1 \), via its binary representation (0 bit is lower bound, 1 bit is upper bound), so we can compute all these values by iterating between 0 and \( 2^n - 1 \).
  7. To check that the computed cut is valid we do the following: we use a gray code to loop over the vertices of the box domain w.r.t. unfixed variables in order to evaluate the underestimator. To ensure the validity of the underestimator, we check whether \( \alpha v^i + \beta \le f(v^i) \) for every vertex \( v^i \) and adjust \( \beta \) if the maximal violation is small.
Parameters
scipSCIP data structure
conshdlrnonlinear constraint handler
overestimatewhether to compute facet of concave (TRUE) or convex (FALSE) envelope
fundatadata for function evaluation (can be NULL)
xstarpoint to be separated
boxbox where to compute facet: should be lb_1, ub_1, lb_2, ub_2...
nallvarshalf of the length of box
targetvaluetarget value: no need to compute facet if value in xstar would be worse than this value
successbuffer to store whether a facet could be computed successfully
facetcoefsbuffer to store coefficients of facet defining inequality; must be an array of length at least nallvars
facetconstantbuffer to store constant part of facet defining inequality

Definition at line 13513 of file cons_nonlinear.c.

References assert(), BMSclearMemoryArray, computeVertexPolyhedralFacetBivariate(), computeVertexPolyhedralFacetLP(), computeVertexPolyhedralFacetUnivariate(), computeVertexPolyhedralMaxFacetError(), FALSE, i, NULL, nvars, POWEROFTWO, REALABS, SCIP_CALL, SCIP_INVALID, SCIP_MAXVERTEXPOLYDIM, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPallocBufferArray, SCIPconshdlrGetData(), SCIPdebugMsg, SCIPdebugMsgPrint, SCIPfeastol(), SCIPfreeBufferArray, SCIPgetLPFeastol(), SCIPgetStage(), SCIPisInfinity(), SCIPisRelEQ(), SCIPlapackIsAvailable(), and SCIPwarningMessage().

Referenced by estimateVertexPolyhedral(), estimateVertexPolyhedralProduct(), and underEstimatePower().

◆ SCIPgetExprNonlinear()

◆ SCIPgetLhsNonlinear()

◆ SCIPgetRhsNonlinear()

◆ SCIPgetNlRowNonlinear()

SCIP_RETCODE SCIPgetNlRowNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_NLROW ** nlrow )

gets the nonlinear constraint as a nonlinear row representation.

Parameters
scipSCIP data structure
consconstraint
nlrowpointer to store nonlinear row

Definition at line 13752 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, createNlRow(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

Referenced by createCoveringProblem(), SCIPgetNlRowAbspower(), SCIPgetNlRowQuadratic(), and SCIPgetNlRowSOC().

◆ SCIPgetCurvatureNonlinear()

SCIP_EXPRCURV SCIPgetCurvatureNonlinear ( SCIP_CONS * cons)

returns the curvature of the expression of a given nonlinear constraint

Note
The curvature information is computed during CONSINITSOL.
Parameters
consconstraint data

Definition at line 13781 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

Referenced by checkSubproblemConvexity().

◆ SCIPcheckQuadraticNonlinear()

SCIP_RETCODE SCIPcheckQuadraticNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Bool * isquadratic )

checks whether expression of constraint can be represented as quadratic form

Only sets *isquadratic to TRUE if the whole expression is quadratic (in the non-extended formulation) and non-linear. That is, the expression in each SCIP_QUADEXPR_QUADTERM will be a variable expressions and SCIPgetVarExprVar() can be used to retrieve the variable.

Parameters
scipSCIP data structure
consconstraint data
isquadraticbuffer to store whether constraint is quadratic

Definition at line 13802 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckExprQuadratic(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPexprAreQuadraticExprsVariables().

Referenced by SCIP_DECL_NONLINCONSUPGD(), SCIP_DECL_PRESOLEXEC(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPchgLhsNonlinear()

SCIP_RETCODE SCIPchgLhsNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Real lhs )

changes left-hand-side of a nonlinear constraint

Attention
This method can only be called in the problem stage.
Parameters
scipSCIP data structure
consconstraint data
lhsnew left-hand-side

Definition at line 13833 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, and SCIPgetStage().

Referenced by AMPLProblemHandler::OnConBounds(), SCIPaddConstantQuadratic(), and SCIPchgLhsQuadratic().

◆ SCIPchgRhsNonlinear()

SCIP_RETCODE SCIPchgRhsNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Real rhs )

changes right-hand-side of a nonlinear constraint

Attention
This method can only be called in the problem stage.
Parameters
scipSCIP data structure
consconstraint data
rhsnew right-hand-side

Definition at line 13872 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, and SCIPgetStage().

Referenced by AMPLProblemHandler::OnConBounds(), SCIPaddConstantQuadratic(), and SCIPchgRhsQuadratic().

◆ SCIPchgExprNonlinear()

SCIP_RETCODE SCIPchgExprNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_EXPR * expr )

changes expression of a nonlinear constraint

Attention
This method can only be called in the problem stage.
Parameters
scipSCIP data structure
consconstraint data
exprnew expression

Definition at line 13911 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_EXPRCURV_UNKNOWN, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPduplicateExpr(), SCIPerrorMessage, SCIPgetStage(), and SCIPreleaseExpr().

Referenced by AMPLProblemHandler::OnAlgebraicCon().

◆ SCIPaddLinearVarNonlinear()

SCIP_RETCODE SCIPaddLinearVarNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real coef )

adds coef * var to nonlinear constraint

Attention
This method can only be called in the problem stage.
Parameters
scipSCIP data structure
consconstraint data
varvariable
coefcoefficient

Definition at line 13965 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, createExprVar(), FALSE, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPappendExprSumExpr(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPcreateExprSum(), SCIPerrorMessage, SCIPexprGetNUses(), SCIPgetStage(), SCIPisExprSum(), SCIPreleaseExpr(), and var.

Referenced by addSlackVars(), AMPLProblemHandler::EndInput(), SCIPaddLinearVarQuadratic(), SCIPaddQuadVarLinearCoefQuadratic(), and SCIPaddQuadVarQuadratic().

◆ SCIPaddExprNonlinear()

SCIP_RETCODE SCIPaddExprNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_EXPR * expr,
SCIP_Real coef )

adds coef * expr to nonlinear constraint

Attention
This method can only be called in the problem stage.
Parameters
scipSCIP data structure
consnonlinear constraint
exprexpression
coefcoefficient

Definition at line 14038 of file cons_nonlinear.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_STAGE_PROBLEM, SCIPappendExprSumExpr(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPcreateExprSum(), SCIPduplicateExpr(), SCIPerrorMessage, SCIPexprGetNUses(), SCIPgetStage(), SCIPisExprSum(), and SCIPreleaseExpr().

Referenced by SCIPaddBilinTermQuadratic(), SCIPaddQuadVarQuadratic(), and SCIPaddSquareCoefQuadratic().

◆ SCIPgetAbsViolationNonlinear()

SCIP_RETCODE SCIPgetAbsViolationNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SOL * sol,
SCIP_Real * viol )

gets absolute violation of nonlinear constraint

This function evaluates the constraints in the given solution.

If this value is at most SCIPfeastol(), the constraint would be considered feasible.

Parameters
scipSCIP data structure
consconstraint
solsolution to check
violbuffer to store computed violation

Definition at line 14140 of file cons_nonlinear.c.

References assert(), computeViolation(), getConsAbsViolation(), NULL, SCIP_CALL, SCIP_OKAY, and sol.

◆ SCIPgetRelViolationNonlinear()

SCIP_RETCODE SCIPgetRelViolationNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SOL * sol,
SCIP_Real * viol )

gets scaled violation of nonlinear constraint

This function evaluates the constraints in the given solution.

The scaling that is applied to the absolute violation of the constraint depends on the setting of parameter constraints/nonlinear/violscale.

Parameters
scipSCIP data structure
consconstraint
solsolution to check
violbuffer to store computed violation

Definition at line 14163 of file cons_nonlinear.c.

References assert(), computeViolation(), getConsRelViolation(), NULL, SCIP_CALL, SCIP_OKAY, and sol.

◆ SCIPgetLinvarMayDecreaseNonlinear()

void SCIPgetLinvarMayDecreaseNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR ** var,
SCIP_Real * coef )

returns a variable that appears linearly that may be decreased without making any other constraint infeasible

Parameters
scipSCIP data structure
consnonlinear constraint
varpointer to store the variable
coefpointer to store the coefficient

Definition at line 14180 of file cons_nonlinear.c.

References assert(), findUnlockedLinearVar(), NULL, SCIPconsGetData(), and var.

◆ SCIPgetLinvarMayIncreaseNonlinear()

void SCIPgetLinvarMayIncreaseNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR ** var,
SCIP_Real * coef )

returns a variable that appears linearly that may be increased without making any other constraint infeasible

Parameters
scipSCIP data structure
consnonlinear constraint
varpointer to store the variable
coefpointer to store the coefficient

Definition at line 14204 of file cons_nonlinear.c.

References assert(), findUnlockedLinearVar(), NULL, SCIPconsGetData(), and var.

Referenced by checkConsQuadraticProblem().

◆ SCIPgetExprNLocksPosNonlinear()

int SCIPgetExprNLocksPosNonlinear ( SCIP_EXPR * expr)

returns the number of positive rounding locks of an expression

Parameters
exprexpression

Definition at line 14233 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by bilinboundGetLocksPos(), bilinearTermsInsertAll(), detectSocNorm(), and detectSocQuadraticComplex().

◆ SCIPgetExprNLocksNegNonlinear()

int SCIPgetExprNLocksNegNonlinear ( SCIP_EXPR * expr)

returns the number of negative rounding locks of an expression

Parameters
exprexpression

Definition at line 14244 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by bilinboundGetLocksNeg(), bilinearTermsInsertAll(), and detectSocQuadraticComplex().

◆ SCIPgetExprAuxVarNonlinear()

SCIP_VAR * SCIPgetExprAuxVarNonlinear ( SCIP_EXPR * expr)

returns the variable used for linearizing a given expression (return value might be NULL)

Note
for variable expression it returns the corresponding variable
Parameters
exprexpression

Definition at line 14258 of file cons_nonlinear.c.

References assert(), NULL, SCIPexprGetOwnerData(), and SCIPgetVarExprVar().

Referenced by addExprsViolScore(), addExprViolScoresAuxVars(), bilinboundGetX(), bilinboundGetY(), bilinearTermsInsertAll(), collectBranchingCandidates(), collectLeafs(), computeOffValues(), constructLPPos2ConsPosMap(), countBasicVars(), createDisaggrRow(), detectMinors(), detectMinors(), enforceExprNlhdlr(), estimateBivariateQuotient(), estimateUnivariateQuotient(), evalExprInAux(), findVertexAndGetRays(), generateCutSolDisagg(), generateCutSolSOC(), generateIntercut(), initBounds(), intercutsComputeCommonQuantities(), isQuadConsViolated(), registerBranchingCandidates(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLREVALAUX(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRINITSEPA(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIP_DECL_NLHDLRSOLLINEARIZE(), SCIPaddIneqBilinear(), SCIPevalExprQuadraticAuxNonlinear(), scoreBranchingCandidates(), storeCaptureVars(), storeDenseTableauRowsByColumns(), tightenAuxVarBounds(), and updateVarVals().

◆ SCIPgetExprNEnfosNonlinear()

int SCIPgetExprNEnfosNonlinear ( SCIP_EXPR * expr)

returns the number of enforcements for an expression

Parameters
exprexpression

Definition at line 14273 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRENFO(), and SCIP_DECL_NLHDLREVALAUX().

◆ SCIPgetExprEnfoDataNonlinear()

void SCIPgetExprEnfoDataNonlinear ( SCIP_EXPR * expr,
int idx,
SCIP_NLHDLR ** nlhdlr,
SCIP_NLHDLREXPRDATA ** nlhdlrexprdata,
SCIP_NLHDLR_METHOD * nlhdlrparticipation,
SCIP_Bool * sepabelowusesactivity,
SCIP_Bool * sepaaboveusesactivity,
SCIP_Real * auxvalue )

returns the data for one of the enforcements of an expression

Parameters
exprexpression
idxposition of enforcement in enfos array
nlhdlrbuffer to store nlhldr
nlhdlrexprdatabuffer to store nlhdlr data for expression, or NULL
nlhdlrparticipationbuffer to store methods where nonlinear handler participates, or NULL
sepabelowusesactivitybuffer to store whether sepabelow uses activity of some expression, or NULL
sepaaboveusesactivitybuffer to store whether sepaabove uses activity of some expression, or NULL
auxvaluebuffer to store current auxvalue, or NULL

Definition at line 14284 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRENFO(), and SCIP_DECL_NLHDLREVALAUX().

◆ SCIPsetExprEnfoAuxValueNonlinear()

void SCIPsetExprEnfoAuxValueNonlinear ( SCIP_EXPR * expr,
int idx,
SCIP_Real auxvalue )

sets the auxiliary value of expression for one of the enforcements of an expression

Parameters
exprexpression
idxposition of enforcement in enfos array
auxvaluethe new value of auxval

Definition at line 14325 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by SCIP_DECL_NLHDLREVALAUX().

◆ SCIPgetExprNPropUsesActivityNonlinear()

unsigned int SCIPgetExprNPropUsesActivityNonlinear ( SCIP_EXPR * expr)

number of nonlinear handlers whose activity computation and propagation methods depend on the activity of the expression

Note
This method can only be used after the detection methods of the nonlinear handlers have been called.
Parameters
exprexpression

Definition at line 14349 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

◆ SCIPgetExprNSepaUsesActivityNonlinear()

unsigned int SCIPgetExprNSepaUsesActivityNonlinear ( SCIP_EXPR * expr)

number of nonlinear handlers whose separation methods (estimate or enforcement) depend on the activity of the expression

Note
This method can only be used after the detection methods of the nonlinear handlers have been called.
Parameters
exprexpression

Definition at line 14363 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by getNLPVarsNonConvexity().

◆ SCIPgetExprNAuxvarUsesNonlinear()

unsigned int SCIPgetExprNAuxvarUsesNonlinear ( SCIP_EXPR * expr)

number of nonlinear handlers whose separation methods (estimate or enforcement) use auxiliary variable of the expression

Note
This method can only be used after the detection methods of the nonlinear handlers have been called.
Parameters
exprexpression

Definition at line 14377 of file cons_nonlinear.c.

References assert(), NULL, and SCIPexprGetOwnerData().

Referenced by detectExpr(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), and SCIP_DECL_NLHDLRDETECT().

◆ SCIPregisterExprUsageNonlinear()

SCIP_RETCODE SCIPregisterExprUsageNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_Bool useauxvar,
SCIP_Bool useactivityforprop,
SCIP_Bool useactivityforsepabelow,
SCIP_Bool useactivityforsepaabove )

method to be called by a nlhdlr during NLHDLRDETECT to notify an expression that it will be used

  • if useauxvar is enabled, then ensures that an auxiliary variable will be created in INITLP
  • if useactivityforprop or useactivityforsepa{below,above} is enabled, then ensured that activity will be updated for expr
  • if useactivityforprop is enabled, then increments the count returned by SCIPgetExprNPropUsesActivityNonlinear()
  • if useactivityforsepa{below,above} is enabled, then increments the count returned by SCIPgetExprNSepaUsesActivityNonlinear() and also increments this count for all variables in the expression.

The distinction into useactivityforprop and useactivityforsepa{below,above} is to recognize variables which domain influences under/overestimators. Domain propagation routines (like OBBT) may invest more work for these variables. The distinction into useactivityforsepabelow and useactivityforsepaabove is to recognize whether a nlhdlr that called this method will use activity of expr in enfomethod SCIP_NLHDLR_METHOD_SEPABELOW or SCIP_NLHDLR_METHOD_SEPAABOVE.

Parameters
scipSCIP data structure
exprexpression
useauxvarwhether an auxiliary variable will be used for estimate or cut generation
useactivityforpropwhether activity of expr will be used by domain propagation or activity calculation (inteval)
useactivityforsepabelowwhether activity of expr will be used by underestimation
useactivityforsepaabovewhether activity of expr will be used by overestimation

Definition at line 14400 of file cons_nonlinear.c.

References assert(), FALSE, freeEnfoData(), NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPconshdlrGetData(), SCIPcreateExpriter(), SCIPevalExprActivity(), SCIPexprGetNChildren(), SCIPexprGetOwnerData(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPfreeExpriter(), SCIPisExprVar(), and TRUE.

Referenced by createNlhdlrExprData(), detectExpr(), detectNlhdlrs(), detectSocNorm(), detectSocQuadraticComplex(), detectSocQuadraticSimple(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), SCIP_DECL_NLHDLRDETECT(), and SCIP_DECL_NLHDLRDETECT().

◆ SCIPgetExprActivityNonlinear()

SCIP_RETCODE SCIPgetExprActivityNonlinear ( SCIP * scip,
SCIP_CONS * cons,
SCIP_SOL * sol,
SCIP_Real * activity )

computes value of constraint expression in a given solution

Stores value of constraint expression in sol in activity. In case of a domain error (function cannot be evaluated in sol), activity is set to SCIP_INVALID.

Parameters
scipSCIP data structure
consconstraint
solsolution
activitybuffer to store computed activity

Definition at line 14113 of file cons_nonlinear.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPevalExpr(), SCIPexprGetEvalValue(), and sol.

◆ SCIPgetExprAbsOrigViolationNonlinear()

SCIP_RETCODE SCIPgetExprAbsOrigViolationNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_SOL * sol,
SCIP_Longint soltag,
SCIP_Real * viol,
SCIP_Bool * violunder,
SCIP_Bool * violover )

computes absolute violation for auxvar relation in an expression w.r.t. original variables

Assume the expression is f(x), where x are original (i.e., not auxiliary) variables. Assume that f(x) is associated with auxiliary variable z.

If there are negative locks, then returns the violation of z ≤ f(x) and sets violover to TRUE. If there are positive locks, then returns the violation of z ≥ f(x) and sets violunder to TRUE. Of course, if there both negative and positive locks, then return the violation of z = f(x).

If necessary, f is evaluated in the given solution. If that fails (domain error), then viol is set to SCIPinfinity() and both violover and violunder are set to TRUE.

Parameters
scipSCIP data structure
exprexpression
solsolution
soltagtag of solution
violbuffer to store computed violation
violunderbuffer to store whether z >= f(x) is violated, or NULL
violoverbuffer to store whether z <= f(x) is violated, or NULL

Definition at line 14490 of file cons_nonlinear.c.

References assert(), getExprAbsOrigViolation(), NULL, SCIP_CALL, SCIP_OKAY, SCIPevalExpr(), and sol.

◆ SCIPgetExprAbsAuxViolationNonlinear()

SCIP_RETCODE SCIPgetExprAbsAuxViolationNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_Real auxvalue,
SCIP_SOL * sol,
SCIP_Real * viol,
SCIP_Bool * violunder,
SCIP_Bool * violover )

computes absolute violation for auxvar relation in an expression w.r.t. auxiliary variables

Assume the expression is f(w), where w are auxiliary variables that were introduced by some nlhdlr. Assume that f(w) is associated with auxiliary variable z.

If there are negative locks, then returns the violation of z ≤ f(w) and sets violover to TRUE. If there are positive locks, then returns the violation of z ≥ f(w) and sets violunder to TRUE. Of course, if there both negative and positive locks, then return the violation of z = f(w).

If the given value of f(w) is SCIP_INVALID, then viol is set to SCIPinfinity() and both violover and violunder are set to TRUE.

Parameters
scipSCIP data structure
exprexpression
auxvaluethe value of f(w)
solsolution that has been evaluated
violbuffer to store computed violation
violunderbuffer to store whether z >= f(w) is violated, or NULL
violoverbuffer to store whether z <= f(w) is violated, or NULL

Definition at line 14525 of file cons_nonlinear.c.

References assert(), getExprAbsAuxViolation(), NULL, SCIP_OKAY, and sol.

Referenced by SCIP_DECL_NLHDLRENFO(), SCIP_DECL_NLHDLRESTIMATE(), and SCIP_DECL_NLHDLRESTIMATE().

◆ SCIPgetExprRelAuxViolationNonlinear()

SCIP_RETCODE SCIPgetExprRelAuxViolationNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_Real auxvalue,
SCIP_SOL * sol,
SCIP_Real * viol,
SCIP_Bool * violunder,
SCIP_Bool * violover )

computes relative violation for auxvar relation in an expression w.r.t. auxiliary variables

Assume the expression is f(w), where w are auxiliary variables that were introduced by some nlhdlr. Assume that f(w) is associated with auxiliary variable z.

Taking the absolute violation from SCIPgetExprAbsAuxViolationNonlinear(), this function returns the absolute violation divided by max(1,|f(w)|).

If the given value of f(w) is SCIP_INVALID, then viol is set to SCIPinfinity() and both violover and violunder are set to TRUE.

Parameters
scipSCIP data structure
exprexpression
auxvaluethe value of f(w)
solsolution that has been evaluated
violbuffer to store computed violation
violunderbuffer to store whether z >= f(w) is violated, or NULL
violoverbuffer to store whether z <= f(w) is violated, or NULL

Definition at line 14557 of file cons_nonlinear.c.

References assert(), getExprAbsAuxViolation(), MAX, NULL, REALABS, SCIP_INVALID, SCIP_OKAY, SCIPisInfinity(), and sol.

Referenced by SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), and SCIPprocessRowprepNonlinear().

◆ SCIPgetExprBoundsNonlinear()

SCIP_INTERVAL SCIPgetExprBoundsNonlinear ( SCIP * scip,
SCIP_EXPR * expr )

returns bounds on the expression

This gives an intersection of bounds from

Note
The returned interval can be empty!
Parameters
scipSCIP data structure
exprexpression

Definition at line 14593 of file cons_nonlinear.c.

References assert(), NULL, SCIP_INTERVAL_INFINITY, SCIPconshdlrGetData(), SCIPepsilon(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprGetOwnerData(), SCIPintervalIntersectEps(), and SCIPintervalSetEntire().

Referenced by getFeasiblePointsBilinear(), propagateBoundsQuadExpr(), reversePropQueue(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRREVERSEPROP(), and SCIP_DECL_NLHDLRREVERSEPROP().

◆ SCIPtightenExprIntervalNonlinear()

SCIP_RETCODE SCIPtightenExprIntervalNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_INTERVAL newbounds,
SCIP_Bool * cutoff,
int * ntightenings )

informs the expression about new bounds that can be used for reverse-propagation and to tighten bounds of corresponding (auxiliary) variable (if any)

Attention
this function should only be called during domain propagation in cons_nonlinear
Parameters
scipSCIP data structure
exprexpression to be tightened
newboundsnew bounds for the expression
cutoffbuffer to store whether a cutoff was detected
ntighteningsbuffer to add the total number of tightenings, or NULL

Definition at line 14649 of file cons_nonlinear.c.

References assert(), cutoff, FALSE, SCIP_Interval::inf, isIntervalBetter(), NULL, SCIP_CALL, SCIP_INTERVAL_INFINITY, SCIP_OKAY, SCIPceil(), SCIPconshdlrGetData(), SCIPdebugMsg, SCIPdebugMsgPrint, SCIPepsilon(), SCIPexprGetActivity(), SCIPexprGetActivityTag(), SCIPexprGetHdlr(), SCIPexprGetNChildren(), SCIPexprGetOwnerData(), SCIPexprhdlrGetName(), SCIPexprIsIntegral(), SCIPfloor(), SCIPintervalIntersectEps(), SCIPintervalIsEmpty(), SCIPintervalIsEntire(), SCIPisInfinity(), SCIPprintExpr(), SCIPqueueInsert(), SCIP_Interval::sup, tightenAuxVarBounds(), and TRUE.

Referenced by propagateBoundsLinExpr(), propagateBoundsQuadExpr(), propConss(), reversePropagateLinearExpr(), reversePropQueue(), SCIP_DECL_NLHDLRREVERSEPROP(), SCIP_DECL_NLHDLRREVERSEPROP(), and SCIP_DECL_NLHDLRREVERSEPROP().

◆ SCIPmarkExprPropagateNonlinear()

SCIP_RETCODE SCIPmarkExprPropagateNonlinear ( SCIP * scip,
SCIP_EXPR * expr )

mark constraints that include this expression to be propagated again

This can be used by, e.g., nlhdlrs, to trigger a new propagation of constraints without a change of variable bounds, e.g., because new information on the expression is available that could potentially lead to tighter expression activity values.

Note, that this call marks also constraints for propagation which only share some variable with this expression.

Parameters
scipSCIP data structure
exprexpression to propagate again

Definition at line 14795 of file cons_nonlinear.c.

References assert(), c, FALSE, NULL, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPconsGetData(), SCIPcreateExpriter(), SCIPexprGetOwnerData(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPfreeExpriter(), SCIPincrementCurBoundsTagNonlinear(), and SCIPisExprVar().

Referenced by SCIPaddIneqBilinear().

◆ SCIPaddExprViolScoreNonlinear()

void SCIPaddExprViolScoreNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_Real violscore )

adds violation-branching score to an expression

Adds a score to the expression-specific violation-branching score, thereby marking it as branching candidate. The expression must either be a variable expression or have an aux-variable. In the latter case, branching on auxiliary variables must have been enabled. In case of doubt, use SCIPaddExprsViolScoreNonlinear(). Roughly, the difference between these functions is that the current function adds violscore to the expression directly, while SCIPaddExprsViolScoreNonlinear() will split the violation score among all the given expressions according to parameter constraints/nonlinear/branching/violsplit.

See also
SCIPaddExprsViolScoreNonlinear()
Parameters
scipSCIP data structure
exprexpression where to add branching score
violscoreviolation score to add to expression

Definition at line 14848 of file cons_nonlinear.c.

References assert(), branchAuxNonlinear(), NULL, SCIPconshdlrGetData(), SCIPexprGetOwnerData(), and SCIPisExprVar().

Referenced by addExprsViolScore().

◆ SCIPaddExprsViolScoreNonlinear()

SCIP_RETCODE SCIPaddExprsViolScoreNonlinear ( SCIP * scip,
SCIP_EXPR ** exprs,
int nexprs,
SCIP_Real violscore,
SCIP_SOL * sol,
SCIP_Bool * success )

adds violation-branching score to a set of expressions, distributing the score among all the expressions

Each expression must either be a variable expression or have an aux-variable. If branching on aux-variables is disabled, then the violation branching score will be distributed among all variables present in exprs.

Parameters
scipSCIP data structure
exprsexpressions where to add branching score
nexprsnumber of expressions
violscoreviolation score to add to expression
solcurrent solution
successbuffer to store whether at least one violscore was added

Definition at line 14894 of file cons_nonlinear.c.

References addExprsViolScore(), assert(), branchAuxNonlinear(), FALSE, i, NULL, nvars, SCIP_CALL, SCIP_EXPRITER_DFS, SCIP_OKAY, SCIPallocBufferArray, SCIPcalcMemGrowSize(), SCIPcreateExpriter(), SCIPexprGetOwnerData(), SCIPexpriterGetNext(), SCIPexpriterInit(), SCIPexpriterIsEnd(), SCIPexpriterRestartDFS(), SCIPfreeBufferArray, SCIPfreeExpriter(), SCIPisExprVar(), SCIPreallocBufferArray, and sol.

Referenced by addExprViolScoresAuxVars(), SCIP_DECL_NLHDLRESTIMATE(), SCIP_DECL_NLHDLRESTIMATE(), and SCIP_DECL_NLHDLRESTIMATE().

◆ SCIPgetExprViolScoreNonlinear()

SCIP_Real SCIPgetExprViolScoreNonlinear ( SCIP_EXPR * expr)

gives violation-branching score stored in expression, or 0.0 if no valid score has been stored

Parameters
exprexpression

Definition at line 14965 of file cons_nonlinear.c.

References assert(), NULL, SCIP_INVALID, SCIPABORT, SCIPconshdlrGetData(), SCIPerrorMessage, and SCIPexprGetOwnerData().

Referenced by collectBranchingCandidates(), and registerBranchingCandidates().

◆ SCIPgetExprPartialDiffNonlinear()

SCIP_Real SCIPgetExprPartialDiffNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_VAR * var )

returns the partial derivative of an expression w.r.t. a variable (or SCIP_INVALID if there was an evaluation error)

See also
SCIPexprGetDerivative()
Parameters
scipSCIP data structure
exprroot expression of constraint used in the last SCIPevalExprGradient() call
varvariable (needs to be in the expression)

Definition at line 15011 of file cons_nonlinear.c.

References assert(), NULL, SCIP_INVALID, SCIPconshdlrGetData(), SCIPexprGetDerivative(), SCIPexprGetDiffTag(), SCIPexprGetOwnerData(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPisExprValue(), SCIPisExprVar(), and var.

◆ SCIPgetExprPartialDiffGradientDirNonlinear()

SCIP_Real SCIPgetExprPartialDiffGradientDirNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_VAR * var )

returns the var's coordinate of Hu partial derivative of an expression w.r.t. a variable (or SCIP_INVALID if there was an evaluation error)

See also
SCIPexprGetBardot()
Parameters
scipSCIP data structure
exprroot expression of constraint used in the last SCIPevalExprHessianDir() call
varvariable (needs to be in the expression)

Definition at line 15057 of file cons_nonlinear.c.

References assert(), NULL, SCIP_INVALID, SCIPconshdlrGetData(), SCIPexprGetBardot(), SCIPexprGetDiffTag(), SCIPexprGetOwnerData(), SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPisExprValue(), SCIPisExprVar(), and var.

◆ SCIPevalExprQuadraticAuxNonlinear()

SCIP_Real SCIPevalExprQuadraticAuxNonlinear ( SCIP * scip,
SCIP_EXPR * expr,
SCIP_SOL * sol )

evaluates quadratic term in a solution w.r.t. auxiliary variables

Note
This requires that for every expr used in the quadratic data, a variable or auxiliary variable is available.
Parameters
scipSCIP data structure
exprquadratic expression
solsolution to evaluate, or NULL for LP solution

Definition at line 15103 of file cons_nonlinear.c.

References assert(), i, NULL, SCIPexprGetQuadraticBilinTerm(), SCIPexprGetQuadraticData(), SCIPexprGetQuadraticQuadTerm(), SCIPgetExprAuxVarNonlinear(), SCIPgetSolVal(), and sol.

◆ SCIPcreateConsOr()

SCIP_RETCODE SCIPcreateConsOr ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * resvar,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures an or constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
resvarresultant variable of the operation
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 2203 of file cons_or.c.

References assert(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by CREATE_CONSTRAINT(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicOr().

◆ SCIPcreateConsBasicOr()

SCIP_RETCODE SCIPcreateConsBasicOr ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * resvar,
int nvars,
SCIP_VAR ** vars )

creates and captures an or constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsNonlinear(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsOr() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures an or constraint in its most basic variant, i. e., with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
resvarresultant variable of the operation
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint

Definition at line 2265 of file cons_or.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsOr(), TRUE, and vars.

Referenced by AMPLProblemHandler::OnBinaryLogical().

◆ SCIPgetNVarsOr()

int SCIPgetNVarsOr ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in or constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 2281 of file cons_or.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and SCIP_DECL_CONSCOPY().

◆ SCIPgetVarsOr()

SCIP_VAR ** SCIPgetVarsOr ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in or constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 2304 of file cons_or.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and SCIP_DECL_CONSCOPY().

◆ SCIPgetResultantOr()

SCIP_VAR * SCIPgetResultantOr ( SCIP * scip,
SCIP_CONS * cons )

gets the resultant variable in or constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 2327 of file cons_or.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and SCIP_DECL_CONSCOPY().

◆ SCIPcheckSolutionOrbisack()

SCIP_RETCODE SCIPcheckSolutionOrbisack ( SCIP * scip,
SCIP_SOL * sol,
SCIP_VAR ** vars1,
SCIP_VAR ** vars2,
int nrows,
SCIP_Bool printreason,
SCIP_Bool * feasible )

checks whether a given binary solution is feasible for the orbisack

checks given solution for feasibility

Parameters
scipSCIP data structure
solsolution to check for feasibility
vars1variables of first column
vars2variables of second column
nrowsnumber of rows
printreasonwhether reason for infeasibility should be printed
feasiblememory address to store whether sol is feasible

Definition at line 2051 of file cons_orbisack.c.

References assert(), FALSE, i, NULL, SCIP_OKAY, SCIPgetSolVal(), SCIPinfoMessage(), SCIPisFeasIntegral(), sol, and TRUE.

Referenced by checkFullOrbitopeSolution(), SCIP_DECL_CONSCHECK(), and SCIP_DECL_CONSENFOPS().

◆ SCIPcreateConsOrbisack()

SCIP_RETCODE SCIPcreateConsOrbisack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR *const * vars1,
SCIP_VAR *const * vars2,
int nrows,
SCIP_Bool ispporbisack,
SCIP_Bool isparttype,
SCIP_Bool ismodelcons,
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 )

creates and captures a orbisack constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
vars1first column of matrix of variables on which the symmetry acts
vars2second column of matrix of variables on which the symmetry acts
nrowsnumber of rows in variable matrix
ispporbisackwhether the orbisack is a packing/partitioning orbisack
isparttypewhether the orbisack is a partitioning orbisack
ismodelconswhether the orbisack is a model constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 2224 of file cons_orbisack.c.

References assert(), consdataCreate(), CONSHDLR_NAME, FALSE, i, NULL, packingUpgrade(), propagate, SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_PLUGINNOTFOUND, SCIPallocBufferArray, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPcreateConsOrbitope(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, TRUE, and vars.

Referenced by orbisackUpgrade(), SCIP_DECL_CONSCOPY(), and SCIPcreateConsBasicOrbisack().

◆ SCIPcreateConsBasicOrbisack()

SCIP_RETCODE SCIPcreateConsBasicOrbisack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR ** vars1,
SCIP_VAR ** vars2,
int nrows,
SCIP_Bool ispporbisack,
SCIP_Bool isparttype,
SCIP_Bool ismodelcons )

creates and captures an orbisack constraint in its most basic variant

All constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h.

See also
SCIPcreateConsOrbisack() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures an orbisack constraint in its most basic variant

All constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h.

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
vars1first column of matrix of variables on which the symmetry acts
vars2second column of matrix of variables on which the symmetry acts
nrowsnumber of rows in constraint matrix
ispporbisackwhether the orbisack is a packing/partitioning orbisack
isparttypewhether the orbisack is a partitioning orbisack
ismodelconswhether the orbisack is a model constraint

Definition at line 2331 of file cons_orbisack.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcreateConsOrbisack(), and TRUE.

Referenced by SCIP_DECL_CONSPARSE().

◆ SCIPcreateConsOrbitope()

SCIP_RETCODE SCIPcreateConsOrbitope ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR *** vars,
SCIP_ORBITOPETYPE orbitopetype,
int nspcons,
int nblocks,
SCIP_Bool usedynamicprop,
SCIP_Bool mayinteract,
SCIP_Bool resolveprop,
SCIP_Bool ismodelcons,
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 )

creates and captures a orbitope constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a orbitope constraint

Precondition
If packing/partitioning orbitopes are used, this constraint handler assumes that constraints which enforce the packing/partitioning constraints are contained in the problem. It does not implement, e.g., separation and propagation of set packing/partitioning constraints, since this would just copy large parts of the code of the setppc constraint handler.
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
varsmatrix of variables on which the symmetry acts
orbitopetypetype of orbitope constraint
nspconsnumber of set partitioning/packing constraints <=> p
nblocksnumber of symmetric variable blocks <=> q
usedynamicpropwhether dynamic propagation should be used
mayinteractwhether symmetries corresponding to orbitope might interact with symmetries handled by other routines
resolvepropshould propagation be resolved?
ismodelconswhether the orbitope is a model constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3696 of file cons_orbitope.c.

References assert(), consdataCreate(), CONSHDLR_NAME, i, NULL, obj, propagate, SCIP_CALL, SCIP_OKAY, SCIP_ORBITOPETYPE_PACKING, SCIP_ORBITOPETYPE_PARTITIONING, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetSubscipDepth(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetNegatedVar(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarIsNegated(), SCIPwarningMessage(), strengthenOrbitopeConstraint(), var, and vars.

Referenced by addOrbitopesDynamic(), addOrbitopeSubgroup(), componentPackingPartitioningOrbisackUpgrade(), handleDoublelLexMatrix(), handleOrbitope(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicOrbitope(), and SCIPcreateConsOrbisack().

◆ SCIPcreateConsBasicOrbitope()

SCIP_RETCODE SCIPcreateConsBasicOrbitope ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR *** vars,
SCIP_ORBITOPETYPE orbitopetype,
int nspcons,
int nblocks,
SCIP_Bool usedynamicprop,
SCIP_Bool resolveprop,
SCIP_Bool ismodelcons,
SCIP_Bool mayinteract )

creates and captures an orbitope constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsOrbitope() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures an orbitope constraint in its most basic variant, i. e., with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
varsmatrix of variables on which the symmetry acts
orbitopetypetype of orbitope constraint
nspconsnumber of set partitioning/packing constraints <=> p
nblocksnumber of symmetric variable blocks <=> q
usedynamicpropwhether dynamic propagation should be used
resolvepropshould propagation be resolved?
ismodelconswhether the orbitope is a model constraint
mayinteractwhether symmetries corresponding to orbitope might interact with symmetries handled by other routines

Definition at line 3824 of file cons_orbitope.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcreateConsOrbitope(), TRUE, and vars.

◆ SCIPcreateConsPseudobooleanWithConss()

SCIP_RETCODE SCIPcreateConsPseudobooleanWithConss ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_CONS * lincons,
SCIP_LINEARCONSTYPE linconstype,
SCIP_CONS ** andconss,
SCIP_Real * andcoefs,
int nandconss,
SCIP_VAR * indvar,
SCIP_Real weight,
SCIP_Bool issoftcons,
SCIP_VAR * intvar,
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 )

creates and captures a pseudoboolean constraint, with given linear and and-constraints

Note
intvar must currently be NULL
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linconsassociated linear constraint
linconstypelinear constraint type of associated linear constraint
andconssassociated and-constraints
andcoefsassociated coefficients of and-constraints
nandconssnumber of associated and-constraints
indvarindicator variable if it's a soft constraint, or NULL
weightweight of the soft constraint, if it is one
issoftconsis this a soft constraint
intvaran artificial variable which was added only for the objective function, if this variable is not NULL this constraint (without this integer variable) describes the objective function
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 9308 of file cons_pseudoboolean.c.

References assert(), BMScopyMemoryArray, c, ConsAndData::cons, consdataCreate(), CONSHDLR_NAME, FALSE, inithashmapandtable(), ConsAndData::isoriginal, ConsAndData::istransformed, ConsAndData::newvars, ConsAndData::nnewvars, ConsAndData::noriguses, NULL, ConsAndData::nuses, ConsAndData::nvars, nvars, ConsAndData::origcons, propagate, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPallocBlockMemory, SCIPcalcMemGrowSize(), SCIPcaptureCons(), SCIPcaptureVar(), SCIPconsAddUpgradeLocks(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPcreateCons(), SCIPduplicateBlockMemoryArray, SCIPensureBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPgetNVarsAnd(), SCIPgetResultantAnd(), SCIPgetVarsAnd(), SCIPhashmapExists(), SCIPhashmapInsert(), SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPinfinity(), SCIPisInfinity(), SCIPsortPtr(), SCIPwarningMessage(), ConsAndData::snewvars, ConsAndData::svars, TRUE, ConsAndData::vars, and vars.

Referenced by copyConsPseudoboolean().

◆ SCIPcreateConsPseudoboolean()

SCIP_RETCODE SCIPcreateConsPseudoboolean ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR ** linvars,
int nlinvars,
SCIP_Real * linvals,
SCIP_VAR *** terms,
int nterms,
int * ntermvars,
SCIP_Real * termvals,
SCIP_VAR * indvar,
SCIP_Real weight,
SCIP_Bool issoftcons,
SCIP_VAR * intvar,
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 )

creates and captures a pseudoboolean constraint

Note
linear and nonlinear terms can be added using SCIPaddCoefPseudoboolean() and SCIPaddTermPseudoboolean(), respectively
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
intvar must currently be NULL
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linvarsvariables of the linear part, or NULL
nlinvarsnumber of variables of the linear part
linvalscoefficients of linear part, or NULL
termsnonlinear terms of variables, or NULL
ntermsnumber of terms of variables of nonlinear term
ntermvarsnumber of variables in nonlinear terms, or NULL
termvalscoefficients of nonlinear parts, or NULL
indvarindicator variable if it's a soft constraint, or NULL
weightweight of the soft constraint, if it is one
issoftconsis this a soft constraint
intvaran artificial variable which was added only for the objective function, if this variable is not NULL this constraint (without this integer variable) describes the objective function
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 9585 of file cons_pseudoboolean.c.

References assert(), c, consdataCreate(), CONSHDLR_NAME, createAndAddAnds(), createAndAddLinearCons(), FALSE, inithashmapandtable(), nterms, NULL, propagate, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPallocBufferArray, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetResultantAnd(), SCIPinfinity(), and SCIPisInfinity().

Referenced by readConstraints(), SCIPcreateConsBasicPseudoboolean(), and setObjective().

◆ SCIPcreateConsBasicPseudoboolean()

SCIP_RETCODE SCIPcreateConsBasicPseudoboolean ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR ** linvars,
int nlinvars,
SCIP_Real * linvals,
SCIP_VAR *** terms,
int nterms,
int * ntermvars,
SCIP_Real * termvals,
SCIP_VAR * indvar,
SCIP_Real weight,
SCIP_Bool issoftcons,
SCIP_VAR * intvar,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a pseudoboolean constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsPseudoboolean() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
intvar must currently be NULL

creates and captures a pseudoboolean constraint in its most basic variant, i. e., with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
intvar must currently be NULL
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
linvarsvariables of the linear part, or NULL
nlinvarsnumber of variables of the linear part
linvalscoefficients of linear part, or NULL
termsnonlinear terms of variables, or NULL
ntermsnumber of terms of variables of nonlinear term
ntermvarsnumber of variables in nonlinear terms, or NULL
termvalscoefficients of nonlinear parts, or NULL
indvarindicator variable if it's a soft constraint, or NULL
weightweight of the soft constraint, if it is one
issoftconsis this a soft constraint
intvara artificial variable which was added only for the objective function, if this variable is not NULL this constraint (without this integer variable) describes the objective function
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 9741 of file cons_pseudoboolean.c.

References FALSE, nterms, SCIP_CALL, SCIP_OKAY, SCIPcreateConsPseudoboolean(), and TRUE.

◆ SCIPaddCoefPseudoboolean()

SCIP_RETCODE SCIPaddCoefPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_VAR *const var,
SCIP_Real const val )

adds linear term pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed

adds a variable to the pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 9776 of file cons_pseudoboolean.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPABORT, SCIPaddCoefKnapsack(), SCIPaddCoefLinear(), SCIPaddCoefLogicor(), SCIPaddCoefSetppc(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPisEQ(), SCIPisIntegral(), SCIPisPositive(), SCIPisZero(), and var.

◆ SCIPaddTermPseudoboolean()

SCIP_RETCODE SCIPaddTermPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_VAR **const vars,
int const nvars,
SCIP_Real const val )

adds nonlinear term to pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed

adds nonlinear term to pseudo boolean constraint (if it is not zero)

Note
you can only add a coefficient if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
conspseudoboolean constraint
varsvariables of the nonlinear term
nvarsnumber of variables of the nonlinear term
valcoefficient of constraint entry

Definition at line 9853 of file cons_pseudoboolean.c.

References addCoefTerm(), assert(), CONSHDLR_NAME, NULL, nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and vars.

◆ SCIPgetIndVarPseudoboolean()

SCIP_VAR * SCIPgetIndVarPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

gets indicator variable of pseudoboolean constraint, or NULL if there is no

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9878 of file cons_pseudoboolean.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and writeOpbConstraints().

◆ SCIPgetLinearConsPseudoboolean()

SCIP_CONS * SCIPgetLinearConsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

gets linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9902 of file cons_pseudoboolean.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and writeOpbConstraints().

◆ SCIPgetLinearConsTypePseudoboolean()

SCIP_LINEARCONSTYPE SCIPgetLinearConsTypePseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

gets type of linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9926 of file cons_pseudoboolean.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation().

◆ SCIPgetNLinVarsWithoutAndPseudoboolean()

int SCIPgetNLinVarsWithoutAndPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

gets number of linear variables without artificial terms variables of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 9950 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeOpbConstraints().

◆ SCIPgetLinDatasWithoutAndPseudoboolean()

SCIP_RETCODE SCIPgetLinDatasWithoutAndPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_VAR **const linvars,
SCIP_Real *const lincoefs,
int *const nlinvars )

gets linear constraint of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint
linvarsarray to store and-constraints
lincoefsarray to store and-coefficients
nlinvarspointer to store the required array size for and-constraints, have to be initialized with size of given array

Definition at line 9976 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, CONSHDLR_NAME, getLinearConsNVars(), getLinearConsVarsData(), getLinVarsAndAndRess(), NULL, nvars, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, SCIPfreeBufferArray, and vars.

Referenced by writeOpbConstraints().

◆ SCIPgetAndDatasPseudoboolean()

SCIP_RETCODE SCIPgetAndDatasPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_CONS **const andconss,
SCIP_Real *const andcoefs,
int *const nandconss )

gets and-constraints of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint
andconssarray to store and-constraints
andcoefsarray to store and-coefficients
nandconsspointer to store the required array size for and-constraints, have to be initialized with size of given array

Definition at line 10036 of file cons_pseudoboolean.c.

References assert(), c, checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPconsIsOriginal(), SCIPerrorMessage, and TRUE.

Referenced by writeOpbConstraints().

◆ SCIPgetNAndsPseudoboolean()

int SCIPgetNAndsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

gets number of and constraints of pseudoboolean constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 10096 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by writeOpbConstraints().

◆ SCIPchgLhsPseudoboolean()

SCIP_RETCODE SCIPchgLhsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_Real const lhs )

changes left hand side of pseudoboolean constraint

Note
you can only change the left hand side if the special type of linear constraint won't changed

changes left hand side of pseudoboolean constraint

Note
you can only change the left hand side if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
lhsnew left hand side

Definition at line 10128 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, chgLhs(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPchgRhsPseudoboolean()

SCIP_RETCODE SCIPchgRhsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons,
SCIP_Real const rhs )

changes right hand side of pseudoboolean constraint

Note
you can only change the right hand side if the special type of linear constraint won't changed

changes right hand side of pseudoboolean constraint

Note
you can only change the right hand side if the special type of linear constraint won't changed
Parameters
scipSCIP data structure
consconstraint data
rhsnew right hand side

Definition at line 10179 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, chgRhs(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LINEARCONSTYPE_INVALIDCONS, SCIP_LINEARCONSTYPE_KNAPSACK, SCIP_LINEARCONSTYPE_LINEAR, SCIP_LINEARCONSTYPE_LOGICOR, SCIP_LINEARCONSTYPE_SETPPC, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPgetLhsPseudoboolean()

SCIP_Real SCIPgetLhsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

get left hand side of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 10221 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and writeOpbConstraints().

◆ SCIPgetRhsPseudoboolean()

SCIP_Real SCIPgetRhsPseudoboolean ( SCIP *const scip,
SCIP_CONS *const cons )

get right hand side of pseudoboolean constraint

Parameters
scipSCIP data structure
conspseudoboolean constraint

Definition at line 10246 of file cons_pseudoboolean.c.

References assert(), checkConsConsistency, CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and writeOpbConstraints().

◆ SCIPcreateConsQuadratic()

SCIP_RETCODE SCIPcreateConsQuadratic ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nlinvars,
SCIP_VAR ** linvars,
SCIP_Real * lincoefs,
int nquadterms,
SCIP_VAR ** quadvars1,
SCIP_VAR ** quadvars2,
SCIP_Real * quadcoeffs,
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 )

Creates and captures a quadratic nonlinear constraint.

The constraint should be given in the form

\[ \ell \leq \sum_{i=1}^n b_i x_i + \sum_{j=1}^m a_j y_j z_j \leq u, \]

where \(x_i = y_j = z_k\) is possible.

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsQuadraticNonlinear() instead.

Creates and captures a quadratic nonlinear constraint.

The constraint should be given in the form

\[ \ell \leq \sum_{i=1}^n b_i x_i + \sum_{j=1}^m a_j y_j z_j \leq u, \]

where \(x_i = y_j = z_k\) is possible.

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsQuadraticNonlinear() instead.
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nlinvarsnumber of linear terms (n)
linvarsvariables in linear part (x_i) or NULL if nlinvars == 0
lincoefscoefficients of variables in linear part (b_i) or NULL if nlinvars == 0
nquadtermsnumber of quadratic terms (m)
quadvars1array with first variables in quadratic terms (y_j) or NULL if nquadterms == 0
quadvars2array with second variables in quadratic terms (z_j) or NULL if nquadterms == 0
quadcoeffsarray with coefficients of quadratic terms (a_j) or NULL if nquadterms == 0
lhsleft hand side of quadratic equation (l)
rhsright hand side of quadratic equation (u)
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.

Definition at line 51 of file cons_quadratic.c.

References propagate, SCIP_CALL, SCIP_OKAY, and SCIPcreateConsQuadraticNonlinear().

◆ SCIPcreateConsBasicQuadratic()

SCIP_RETCODE SCIPcreateConsBasicQuadratic ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nlinvars,
SCIP_VAR ** linvars,
SCIP_Real * lincoefs,
int nquadterms,
SCIP_VAR ** quadvars1,
SCIP_VAR ** quadvars2,
SCIP_Real * quadcoefs,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a quadratic nonlinear constraint in its most basic variant, i.e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME()

The constraint should be given in the form

\[ \ell \leq \sum_{i=1}^n b_i x_i + \sum_{j=1}^m a_j y_jz_j \leq u, \]

where \(x_i = y_j = z_k\) is possible.

See also
SCIPcreateConsQuadratic() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicQuadraticNonlinear instead.

creates and captures a quadratic nonlinear constraint in its most basic variant, i.e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME()

The constraint should be given in the form

\[ \ell \leq \sum_{i=1}^n b_i x_i + \sum_{j=1}^m a_j y_jz_j \leq u, \]

where \(x_i = y_j = z_k\) is possible.

See also
SCIPcreateConsQuadratic() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicQuadraticNonlinear instead.
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nlinvarsnumber of linear terms (n)
linvarsarray with variables in linear part (x_i)
lincoefsarray with coefficients of variables in linear part (b_i)
nquadtermsnumber of quadratic terms (m)
quadvars1array with first variables in quadratic terms (y_j)
quadvars2array with second variables in quadratic terms (z_j)
quadcoefsarray with coefficients of quadratic terms (a_j)
lhsleft hand side of quadratic equation (ell)
rhsright hand side of quadratic equation (u)

Definition at line 108 of file cons_quadratic.c.

References SCIP_CALL, SCIP_OKAY, and SCIPcreateConsBasicQuadraticNonlinear().

◆ SCIPaddConstantQuadratic()

void SCIPaddConstantQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Real constant )

Adds a constant to the constraint function, that is, subtracts a constant from both sides

Deprecated
Use SCIPchgLhsNonlinear() and SCIPchgRhsNonlinear() instead.

Adds a constant to the constraint function, that is, subtracts a constant from both sides

Deprecated
Use SCIPchgLhsNonlinear() and SCIPchgRhsNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
constantconstant to subtract from both sides

Definition at line 132 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL_ABORT, SCIPchgLhsNonlinear(), SCIPchgRhsNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPgetLhsNonlinear(), SCIPgetRhsNonlinear(), and SCIPisInfinity().

◆ SCIPaddLinearVarQuadratic()

SCIP_RETCODE SCIPaddLinearVarQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real coef )

Adds a linear variable with coefficient to a quadratic constraint.

Deprecated
Use SCIPaddLinearVarNonlinear() instead.

Adds a linear variable with coefficient to a quadratic constraint.

Deprecated
Use SCIPaddLinearVarNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
varvariable
coefcoefficient of variable

Definition at line 160 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddLinearVarNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and var.

◆ SCIPaddQuadVarQuadratic()

SCIP_RETCODE SCIPaddQuadVarQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real lincoef,
SCIP_Real sqrcoef )

Adds a quadratic variable with linear and square coefficient to a quadratic constraint.

Deprecated
Use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead.

Adds a quadratic variable with linear and square coefficient to a quadratic constraint.

Deprecated
Use SCIPaddLinearVarNonlinear() and SCIPaddExprNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
varvariable
lincoeflinear coefficient of variable
sqrcoefsquare coefficient of variable

Definition at line 179 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddExprNonlinear(), SCIPaddLinearVarNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPcreateExprPow(), SCIPcreateExprVar(), SCIPreleaseExpr(), and var.

◆ SCIPaddQuadVarLinearCoefQuadratic()

SCIP_RETCODE SCIPaddQuadVarLinearCoefQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real coef )

Adds a linear coefficient for a quadratic variable.

Variable will be added with square coefficient 0.0 if not existing yet.

Deprecated
Use SCIPaddLinearVarNonlinear() instead.

Adds a linear coefficient for a quadratic variable.

Variable will be added with square coefficient 0.0 if not existing yet.

Deprecated
Use SCIPaddLinearVarNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
varvariable
coefvalue to add to linear coefficient of variable

Definition at line 218 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddLinearVarNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and var.

◆ SCIPaddSquareCoefQuadratic()

SCIP_RETCODE SCIPaddSquareCoefQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real coef )

Adds a square coefficient for a quadratic variable.

Variable will be added with linear coefficient 0.0 if not existing yet.

Deprecated
Use SCIPaddExprNonlinear() instead.

Adds a square coefficient for a quadratic variable.

Variable will be added with linear coefficient 0.0 if not existing yet.

Deprecated
Use SCIPaddExprNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
varvariable
coefvalue to add to square coefficient of variable

Definition at line 239 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddExprNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPcreateExprPow(), SCIPcreateExprVar(), SCIPreleaseExpr(), and var.

◆ SCIPaddBilinTermQuadratic()

SCIP_RETCODE SCIPaddBilinTermQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var1,
SCIP_VAR * var2,
SCIP_Real coef )

Adds a bilinear term to a quadratic constraint.

Variables will be added with linear and square coefficient 0.0 if not existing yet. If variables are equal, only the square coefficient of the variable is updated.

Deprecated
Use SCIPaddExprNonlinear() instead.

Adds a bilinear term to a quadratic constraint.

Variables will be added with linear and square coefficient 0.0 if not existing yet. If variables are equal, only the square coefficient of the variable is updated.

Deprecated
Use SCIPaddExprNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
var1first variable
var2second variable
coefcoefficient of bilinear term

Definition at line 270 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddExprNonlinear(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPcreateExprProduct(), SCIPcreateExprVar(), and SCIPreleaseExpr().

◆ SCIPgetNlRowQuadratic()

SCIP_RETCODE SCIPgetNlRowQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_NLROW ** nlrow )

Gets the quadratic constraint as a nonlinear row representation.

Deprecated
Use SCIPgetNlRowNonlinear() instead.

Gets the quadratic constraint as a nonlinear row representation.

Deprecated
Use SCIPgetNlRowNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
nlrowpointer to store nonlinear row

Definition at line 301 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPgetNlRowNonlinear().

◆ SCIPchgLhsQuadratic()

SCIP_RETCODE SCIPchgLhsQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Real lhs )

sets the left hand side of a quadratic constraint

Note
This method may only be called during problem creation stage for an original constraint.
Deprecated
Use SCIPchgLhsNonlinear() instead.

sets the left hand side of a quadratic constraint

Note
This method may only be called during problem creation stage for an original constraint.
Deprecated
Use SCIPchgLhsNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint data
lhsnew left hand side

Definition at line 321 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPchgLhsNonlinear(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

◆ SCIPchgRhsQuadratic()

SCIP_RETCODE SCIPchgRhsQuadratic ( SCIP * scip,
SCIP_CONS * cons,
SCIP_Real rhs )

sets the right hand side of a quadratic constraint

Note
This method may only be called during problem creation stage for an original constraint.
Deprecated
Use SCIPchgRhsNonlinear() instead.

sets the right hand side of a quadratic constraint

Note
This method may only be called during problem creation stage for an original constraint.
Deprecated
Use SCIPchgRhsNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint data
rhsnew right hand side

Definition at line 341 of file cons_quadratic.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPchgRhsNonlinear(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

◆ SCIPcreateConsSetpart()

SCIP_RETCODE SCIPcreateConsSetpart ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures a set partitioning constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 9351 of file cons_setppc.c.

References createConsSetppc(), nvars, propagate, SCIP_SETPPCTYPE_PARTITIONING, and vars.

Referenced by cliquePresolve(), cliquePresolve(), consdataLinearize(), createAndAddLinearCons(), createMipCpFormulation(), createProbQP(), createProbSimplified(), createProbSimplifiedTest(), extractGates(), processRealBoundChg(), SCIP_DECL_CONSPARSE(), SCIP_DECL_PRESOLEXEC(), and SCIPcreateConsBasicSetpart().

◆ SCIPcreateConsBasicSetpart()

SCIP_RETCODE SCIPcreateConsBasicSetpart ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars )

creates and captures a set partitioning constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsSetpart() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a set partitioning constraint with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries

Definition at line 9391 of file cons_setppc.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSetpart(), TRUE, and vars.

Referenced by createCipFormulation(), createMipFormulation(), and setupProblem().

◆ SCIPcreateConsSetpack()

SCIP_RETCODE SCIPcreateConsSetpack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures a set packing constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 9409 of file cons_setppc.c.

References createConsSetppc(), nvars, propagate, SCIP_SETPPCTYPE_PACKING, and vars.

Referenced by addCliques(), addExtraCliques(), cliquePresolve(), consdataLinearize(), createAndAddLinearCons(), deleteRedundantVars(), detectRedundantVars(), dualWeightsTightening(), fixDeleteOrUpgradeCons(), presolRoundConsSOS1(), removeConstraintsDueToNegCliques(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSPARSE(), SCIP_DECL_NONLINCONSUPGD(), SCIPcreateConsBasicSetpack(), tightenWeights(), upgradeCons(), upgradeCons(), and upgradeConss().

◆ SCIPcreateConsBasicSetpack()

SCIP_RETCODE SCIPcreateConsBasicSetpack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars )

creates and captures a set packing constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsSetpack() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a set packing constraint with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries

Definition at line 9449 of file cons_setppc.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSetpack(), TRUE, and vars.

Referenced by createSetPackingCons().

◆ SCIPcreateConsSetcover()

SCIP_RETCODE SCIPcreateConsSetcover ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures a set covering constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 9467 of file cons_setppc.c.

References createConsSetppc(), nvars, propagate, SCIP_SETPPCTYPE_COVERING, and vars.

Referenced by COLORprobSetUpArrayOfCons(), createAndAddLinearCons(), CUTOFF_CONSTRAINT(), CUTOFF_CONSTRAINT(), forbidCover(), forbidFixation(), processNlRow(), readCnf(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicSetcover().

◆ SCIPcreateConsBasicSetcover()

SCIP_RETCODE SCIPcreateConsBasicSetcover ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars )

creates and captures a set packing constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsSetpack() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a set covering constraint with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries

Definition at line 9507 of file cons_setppc.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSetcover(), TRUE, and vars.

Referenced by SCIPprobdataCreate().

◆ SCIPaddCoefSetppc()

◆ SCIPgetNVarsSetppc()

◆ SCIPgetVarsSetppc()

◆ SCIPgetTypeSetppc()

◆ SCIPgetDualsolSetppc()

SCIP_Real SCIPgetDualsolSetppc ( SCIP * scip,
SCIP_CONS * cons )

gets the dual solution of the set partitioning / packing / covering constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9613 of file cons_setppc.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by initPricing(), SCIP_DECL_PRICERREDCOST(), and SCIPconsGetDualsol().

◆ SCIPgetDualfarkasSetppc()

SCIP_Real SCIPgetDualfarkasSetppc ( SCIP * scip,
SCIP_CONS * cons )

gets the dual Farkas value of the set partitioning / packing / covering constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9639 of file cons_setppc.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualfarkas().

Referenced by SCIPconsGetDualfarkas().

◆ SCIPgetRowSetppc()

SCIP_ROW * SCIPgetRowSetppc ( SCIP * scip,
SCIP_CONS * cons )

returns the linear relaxation of the given set partitioning / packing / covering constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9667 of file cons_setppc.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPconsGetRow().

◆ SCIPgetNFixedonesSetppc()

int SCIPgetNFixedonesSetppc ( SCIP * scip,
SCIP_CONS * cons )

returns current number of variables fixed to one in the constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9690 of file cons_setppc.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addFixedVarsConss(), initPricing(), and SCIP_DECL_PRICERREDCOST().

◆ SCIPgetNFixedzerosSetppc()

int SCIPgetNFixedzerosSetppc ( SCIP * scip,
SCIP_CONS * cons )

returns current number of variables fixed to zero in the constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 9714 of file cons_setppc.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

◆ SCIPcleanupConssSetppc()

SCIP_RETCODE SCIPcleanupConssSetppc ( SCIP * scip,
SCIP_Bool onlychecked,
SCIP_Bool * infeasible,
int * naddconss,
int * ndelconss,
int * nchgcoefs,
int * nfixedvars )

cleans up (multi-)aggregations and fixings from setppc constraints

Parameters
scipSCIP data structure
onlycheckedshould only checked constraints be cleaned up?
infeasiblepointer to return whether problem was detected to be infeasible
naddconsspointer to count number of added (linear) constraints
ndelconsspointer to count number of deleted (setppc) constraints
nchgcoefspointer to count number of changed coefficients
nfixedvarspointer to count number of fixed variables

Definition at line 9737 of file cons_setppc.c.

References applyFixings(), assert(), CONSHDLR_NAME, FALSE, i, mergeMultiples(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetCheckConss(), SCIPconshdlrGetConss(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetNCheckConss(), SCIPconsIsDeleted(), and SCIPfindConshdlr().

Referenced by SCIPmatrixCreate().

◆ SCIPcreateConsSOC()

SCIP_RETCODE SCIPcreateConsSOC ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * coefs,
SCIP_Real * offsets,
SCIP_Real constant,
SCIP_VAR * rhsvar,
SCIP_Real rhscoeff,
SCIP_Real rhsoffset,
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 )

creates and captures a second order cone nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicSOCNonlinear() instead

creates and captures a second order cone nonlinear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsNonlinear() instead
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables on left hand side of constraint (n)
varsarray with variables on left hand side (x_i)
coefsarray with coefficients of left hand side variables (alpha_i), or NULL if all 1.0
offsetsarray with offsets of variables (beta_i), or NULL if all 0.0
constantconstant on left hand side (gamma)
rhsvarvariable on right hand side of constraint (x_{n+1})
rhscoeffcoefficient of variable on right hand side (alpha_{n+1})
rhsoffsetoffset of variable on right hand side (beta_{n+1})
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.

Definition at line 106 of file cons_soc.c.

References createSOCExpression(), nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIPcreateConsNonlinear(), SCIPinfinity(), SCIPreleaseExpr(), and vars.

◆ SCIPcreateConsBasicSOC()

SCIP_RETCODE SCIPcreateConsBasicSOC ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * coefs,
SCIP_Real * offsets,
SCIP_Real constant,
SCIP_VAR * rhsvar,
SCIP_Real rhscoeff,
SCIP_Real rhsoffset )

creates and captures a second order cone nonlinear constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME()

See also
SCIPcreateConsSOC() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicSOCNonlinear() instead

creates and captures a second order cone nonlinear constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME()

See also
SCIPcreateConsSOC() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Deprecated
Use SCIPcreateConsBasicNonlinear() instead
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables on left hand side of constraint (n)
varsarray with variables on left hand side (x_i)
coefsarray with coefficients of left hand side variables (alpha_i), or NULL if all 1.0
offsetsarray with offsets of variables (beta_i), or NULL if all 0.0
constantconstant on left hand side (gamma)
rhsvarvariable on right hand side of constraint (x_{n+1})
rhscoeffcoefficient of variable on right hand side (alpha_{n+1})
rhsoffsetoffset of variable on right hand side (beta_{n+1})

Definition at line 162 of file cons_soc.c.

References createSOCExpression(), nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsBasicNonlinear(), SCIPinfinity(), SCIPreleaseExpr(), and vars.

◆ SCIPgetNlRowSOC()

SCIP_RETCODE SCIPgetNlRowSOC ( SCIP * scip,
SCIP_CONS * cons,
SCIP_NLROW ** nlrow )

Gets the SOC constraint as a nonlinear row representation.

Deprecated
Use SCIPgetNlRowNonlinear() instead.

Gets the SOC constraint as a nonlinear row representation.

Deprecated
Use SCIPgetNlRowNonlinear() instead.
Parameters
scipSCIP data structure
consconstraint
nlrowpointer to store nonlinear row

Definition at line 191 of file cons_soc.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPgetNlRowNonlinear().

◆ SCIPcreateConsSOS1()

SCIP_RETCODE SCIPcreateConsSOS1 ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * weights,
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 )

creates and captures an SOS1 constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
The constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons().

creates and captures a SOS1 constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
The constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons().
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
weightsweights determining the variable order, or NULL if natural order should be used
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 10579 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, FALSE, handleNewVariableSOS1(), NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_TRANSFORMED, SCIPallocBlockMemory, SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPcreateCons(), SCIPduplicateBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetStage(), SCIPgetTransformedVar(), SCIPmarkDoNotMultaggrVar(), SCIPsortRealPtr(), SCIPvarIsTransformed(), and vars.

Referenced by addBranchingComplementaritiesSOS1(), extensionOperatorSOS1(), performImplicationGraphAnalysis(), readSOS(), readSos(), readSOScons(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicSOS1().

◆ SCIPcreateConsBasicSOS1()

SCIP_RETCODE SCIPcreateConsBasicSOS1 ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * weights )

creates and captures an SOS1 constraint in its most basic variant, i. e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsSOS1() for the default constraint flag configuration
Warning
Do NOT set the constraint to be modifiable manually, because this might lead to wrong results as the variable array will not be resorted
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a SOS1 constraint with all constraint flags set to their default values.

Warning
Do NOT set the constraint to be modifiable manually, because this might lead to wrong results as the variable array will not be resorted
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
weightsweights determining the variable order, or NULL if natural order should be used

Definition at line 10700 of file cons_sos1.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSOS1(), TRUE, and vars.

Referenced by createKKTComplementarityBinary(), createKKTComplementarityBounds(), createKKTComplementarityLinear(), and AMPLProblemHandler::EndInput().

◆ SCIPaddVarSOS1()

SCIP_RETCODE SCIPaddVarSOS1 ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real weight )

adds variable to SOS1 constraint, the position is determined by the given weight

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint
weightweight determining position of variable

Definition at line 10716 of file cons_sos1.c.

References addVarSOS1(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

Referenced by createKKTComplementarityBinary(), createKKTComplementarityBounds(), createKKTComplementarityLinear(), readSOS(), readSos(), readSOScons(), and SCIP_DECL_CONSPARSE().

◆ SCIPappendVarSOS1()

SCIP_RETCODE SCIPappendVarSOS1 ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var )

appends variable to SOS1 constraint

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint

Definition at line 10750 of file cons_sos1.c.

References appendVarSOS1(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

◆ SCIPgetNVarsSOS1()

int SCIPgetNVarsSOS1 ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in SOS1 constraint

Parameters
scipSCIP data structure
consconstraint

Definition at line 10783 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPwriteGms(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPgetVarsSOS1()

SCIP_VAR ** SCIPgetVarsSOS1 ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in SOS1 constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 10808 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIP_DECL_CONSGETPERMSYMGRAPH(), SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(), SCIPwriteGms(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPgetWeightsSOS1()

SCIP_Real * SCIPgetWeightsSOS1 ( SCIP * scip,
SCIP_CONS * cons )

gets array of weights in SOS1 constraint (or NULL if not existent)

Parameters
scipSCIP data structure
consconstraint data

Definition at line 10833 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPgetConsVals(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPgetConflictgraphSOS1()

SCIP_DIGRAPH * SCIPgetConflictgraphSOS1 ( SCIP_CONSHDLR * conshdlr)

gets conflict graph of SOS1 constraints (or NULL if not existent)

Note
The conflict graph is globally valid; local changes are not taken into account.
Parameters
conshdlrSOS1 constraint handler

Definition at line 10861 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by getDiveBdChgsSOS1conflictgraph(), makeSOS1conflictgraphFeasible(), SCIP_DECL_SEPAEXECLP(), and sepaBoundInequalitiesFromGraph().

◆ SCIPgetNSOS1Vars()

int SCIPgetNSOS1Vars ( SCIP_CONSHDLR * conshdlr)

gets number of problem variables that are part of the SOS1 conflict graph

Parameters
conshdlrSOS1 constraint handler

Definition at line 10883 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by getDiveBdChgsSOS1conflictgraph(), makeSOS1conflictgraphFeasible(), SCIP_DECL_SEPAEXECLP(), SCIPperformGenericDivingAlgorithm(), and sepaBoundInequalitiesFromGraph().

◆ SCIPvarIsSOS1()

SCIP_Bool SCIPvarIsSOS1 ( SCIP_CONSHDLR * conshdlr,
SCIP_VAR * var )

returns whether variable is part of the SOS1 conflict graph

Parameters
conshdlrSOS1 constraint handler
varvariable

Definition at line 10905 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, SCIPABORT, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPerrorMessage, var, and varIsSOS1().

◆ SCIPvarGetNodeSOS1()

int SCIPvarGetNodeSOS1 ( SCIP_CONSHDLR * conshdlr,
SCIP_VAR * var )

returns node of variable in the conflict graph or -1 if variable is not part of the SOS1 conflict graph

returns SOS1 index of variable or -1 if variable is not part of the SOS1 conflict graph

Parameters
conshdlrSOS1 constraint handler
varvariable

Definition at line 10929 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPerrorMessage, var, and varGetNodeSOS1().

Referenced by markNeighborsMWISHeuristic().

◆ SCIPnodeGetVarSOS1()

◆ SCIPmakeSOS1sFeasible()

SCIP_RETCODE SCIPmakeSOS1sFeasible ( SCIP * scip,
SCIP_CONSHDLR * conshdlr,
SCIP_SOL * sol,
SCIP_Bool * changed,
SCIP_Bool * success )

based on solution values of the variables, fixes variables to zero to turn all SOS1 constraints feasible

based on solution values of the variables, fixes variables to zero to turn all SOS1 constraints feasible

Parameters
scipSCIP pointer
conshdlrSOS1 constraint handler
solsolution
changedpointer to store whether the solution has been changed
successpointer to store whether SOS1 constraints have been turned feasible and solution was good enough

Definition at line 10985 of file cons_sos1.c.

References assert(), CONSHDLR_NAME, FALSE, makeSOS1conflictgraphFeasible(), makeSOS1constraintsFeasible(), NULL, SCIP_CALL, SCIP_OBJSENSE_MAXIMIZE, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconshdlrGetNConss(), SCIPerrorMessage, SCIPgetObjsense(), SCIPgetSolOrigObj(), SCIPgetUpperbound(), SCIPisLT(), sol, and TRUE.

Referenced by SCIPperformGenericDivingAlgorithm().

◆ SCIPcreateConsSOS2()

SCIP_RETCODE SCIPcreateConsSOS2 ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * weights,
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 )

creates and captures an SOS2 constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a SOS2 constraint

We set the constraint to not be modifable. If the weights are non NULL, the variables are ordered according to these weights (in ascending order).

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
weightsweights determining the variable order, or NULL if natural order should be used
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 2578 of file cons_sos2.c.

References assert(), CONSHDLR_NAME, FALSE, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPallocBlockMemory, SCIPcreateCons(), SCIPduplicateBlockMemoryArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPsortRealPtr(), and vars.

Referenced by readSOS(), readSos(), readSOScons(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), and SCIPcreateConsBasicSOS2().

◆ SCIPcreateConsBasicSOS2()

SCIP_RETCODE SCIPcreateConsBasicSOS2 ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int nvars,
SCIP_VAR ** vars,
SCIP_Real * weights )

creates and captures a SOS2 constraint with all constraint flags set to their default values.

Warning
Do NOT set the constraint to be modifiable manually, because this might lead to wrong results as the variable array will not be resorted
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of variables in the constraint
varsarray with variables of constraint entries
weightsweights determining the variable order, or NULL if natural order should be used

Definition at line 2661 of file cons_sos2.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSOS2(), TRUE, and vars.

Referenced by AMPLProblemHandler::EndInput().

◆ SCIPaddVarSOS2()

SCIP_RETCODE SCIPaddVarSOS2 ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var,
SCIP_Real weight )

adds variable to SOS2 constraint, the position is determined by the given weight

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint
weightweight determining position of variable

Definition at line 2677 of file cons_sos2.c.

References addVarSOS2(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

Referenced by readSOS(), readSos(), readSOScons(), and SCIP_DECL_CONSPARSE().

◆ SCIPappendVarSOS2()

SCIP_RETCODE SCIPappendVarSOS2 ( SCIP * scip,
SCIP_CONS * cons,
SCIP_VAR * var )

appends variable to SOS2 constraint

Parameters
scipSCIP data structure
consconstraint
varvariable to add to the constraint

Definition at line 2703 of file cons_sos2.c.

References appendVarSOS2(), assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPerrorMessage, SCIPvarGetName(), and var.

◆ SCIPgetNVarsSOS2()

int SCIPgetNVarsSOS2 ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in SOS2 constraint

Parameters
scipSCIP data structure
consconstraint

Definition at line 2728 of file cons_sos2.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPwriteGms(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPgetVarsSOS2()

SCIP_VAR ** SCIPgetVarsSOS2 ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in SOS2 constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 2753 of file cons_sos2.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIP_DECL_CONSGETPERMSYMGRAPH(), SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(), SCIPwriteGms(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPgetWeightsSOS2()

SCIP_Real * SCIPgetWeightsSOS2 ( SCIP * scip,
SCIP_CONS * cons )

gets array of weights in SOS2 constraint (or NULL if not existent)

Parameters
scipSCIP data structure
consconstraint data

Definition at line 2778 of file cons_sos2.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPgetConsVals(), SCIPwriteLp(), and SCIPwriteMps().

◆ SCIPcreateConsSuperindicator()

SCIP_RETCODE SCIPcreateConsSuperindicator ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
SCIP_CONS * slackcons,
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 )

creates and captures a superindicator constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarpointer to the indicator constraint
slackconsconstraint corresponding to the handled constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 1996 of file cons_superindicator.c.

References assert(), consdataCreateSuperindicator(), CONSHDLR_NAME, FALSE, NULL, propagate, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and SCIPwarningMessage().

Referenced by SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicSuperindicator(), and SCIPtransformMinUC().

◆ SCIPcreateConsBasicSuperindicator()

SCIP_RETCODE SCIPcreateConsBasicSuperindicator ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * binvar,
SCIP_CONS * slackcons )

creates and captures a superindicator constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsSuperindicator(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsSuperindicator() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
binvarpointer to the indicator constraint
slackconsconstraint corresponding to the handled constraint

Definition at line 2103 of file cons_superindicator.c.

References assert(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSuperindicator(), and TRUE.

◆ SCIPgetBinaryVarSuperindicator()

SCIP_VAR * SCIPgetBinaryVarSuperindicator ( SCIP_CONS * cons)

gets binary variable corresponding to the superindicator constraint

gets binary variable corresponding to the general indicator constraint

Parameters
conssuperindicator constraint

Definition at line 2125 of file cons_superindicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

◆ SCIPgetSlackConsSuperindicator()

SCIP_CONS * SCIPgetSlackConsSuperindicator ( SCIP_CONS * cons)

gets the slack constraint corresponding to the superindicator constraint

gets the slack constraint corresponding to the general indicator constraint

Parameters
conssuperindicator constraint

Definition at line 2137 of file cons_superindicator.c.

References assert(), CONSHDLR_NAME, NULL, SCIPconsGetData(), SCIPconsGetHdlr(), and SCIPconshdlrGetName().

◆ SCIPtransformMinUC()

◆ SCIP_DECL_DIALOGEXEC() [4/4]

◆ SCIPcreateSymbreakCons()

SCIP_RETCODE SCIPcreateSymbreakCons ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int * perm,
SCIP_VAR ** vars,
int nvars,
SCIP_Bool ismodelcons,
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 )

creates a symmetry breaking constraint

Depending on the given permutation, either an orbisack or symresack constraint is created.

Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
permpermutation
varsvariables
nvarsnumber of variables in vars array
ismodelconswhether the added constraint is a model constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 1731 of file cons_symresack.c.

References assert(), FALSE, NULL, nvars, orbisackUpgrade(), propagate, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSymresack(), and vars.

Referenced by addSymresackConss(), and detectAndHandleSubgroups().

◆ SCIPcreateConsSymresack()

SCIP_RETCODE SCIPcreateConsSymresack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int * perm,
SCIP_VAR ** vars,
int nvars,
SCIP_Bool ismodelcons,
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 )

creates and captures a symresack constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a symresack constraint

In a presolving step, we check whether the permutation acts only on binary points. Otherwise, we eliminate the non-binary variables from the permutation.

Note
The constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons().
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
permpermutation
varsvariables
nvarsnumber of variables in vars array
ismodelconswhether the symresack is a model constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 3144 of file cons_symresack.c.

References assert(), consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by SCIP_DECL_CONSCOPY(), SCIPcreateConsBasicSymresack(), and SCIPcreateSymbreakCons().

◆ SCIPcreateConsBasicSymresack()

SCIP_RETCODE SCIPcreateConsBasicSymresack ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
int * perm,
SCIP_VAR ** vars,
int nvars,
SCIP_Bool ismodelcons )

creates and captures a symresack constraint in its most basic variant, i.e., with all constraint flags set to their default values, which can be set afterwards using SCIPsetConsFLAGNAME() in scip.h

See also
SCIPcreateConsSymresack() for the default constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a symresack constraint in its most basic variant, i.e., with all constraint flags set to their default values

In a presolving step, we remove all fixed points and cycles that act on non-binary variables of the permutation

Note
The constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons().
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
permpermutation
varsvariables
nvarsnumber of variables in vars array
ismodelconswhether the symresack is a model constraint

Definition at line 3209 of file cons_symresack.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsSymresack(), TRUE, and vars.

Referenced by SCIP_DECL_CONSPARSE().

◆ SCIPcreateConsVarbound()

SCIP_RETCODE SCIPcreateConsVarbound ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * var,
SCIP_VAR * vbdvar,
SCIP_Real vbdcoef,
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 )

creates and captures a variable bound constraint: lhs <= x + c*y <= rhs

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
varvariable x that has variable bound
vbdvarbinary, integer or implicit integer bounding variable y
vbdcoefcoefficient c of bounding variable y
lhsleft hand side of variable bound inequality
rhsright hand side of variable bound inequality
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 5390 of file cons_varbound.c.

References assert(), catchEvents(), consdataCreate(), CONSHDLR_NAME, NULL, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPisTransformed(), and var.

Referenced by createPrecedenceCons(), createVarUbs(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSPARSE(), SCIP_DECL_LINCONSUPGD(), SCIPcreateConsBasicVarbound(), and SCIPcreateSchedulingProblem().

◆ SCIPcreateConsBasicVarbound()

SCIP_RETCODE SCIPcreateConsBasicVarbound ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_VAR * var,
SCIP_VAR * vbdvar,
SCIP_Real vbdcoef,
SCIP_Real lhs,
SCIP_Real rhs )

creates and captures a varbound constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsVarbound(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsVarbound() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a variable bound constraint: lhs <= x + c*y <= rhs with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
varvariable x that has variable bound
vbdvarbinary, integer or implicit integer bounding variable y
vbdcoefcoefficient c of bounding variable y
lhsleft hand side of variable bound inequality
rhsright hand side of variable bound inequality

Definition at line 5460 of file cons_varbound.c.

References FALSE, SCIP_CALL, SCIP_OKAY, SCIPcreateConsVarbound(), TRUE, and var.

Referenced by addBranchingDecisionConss(), applyRepair(), createVarboundCons(), getBinaryProductExprDo(), and reformulateFactorizedBinaryQuadratic().

◆ SCIPgetLhsVarbound()

◆ SCIPgetRhsVarbound()

◆ SCIPgetVarVarbound()

SCIP_VAR * SCIPgetVarVarbound ( SCIP * scip,
SCIP_CONS * cons )

◆ SCIPgetVbdvarVarbound()

◆ SCIPgetVbdcoefVarbound()

◆ SCIPgetDualsolVarbound()

SCIP_Real SCIPgetDualsolVarbound ( SCIP * scip,
SCIP_CONS * cons )

gets the dual solution of the variable bound constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5593 of file cons_varbound.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by SCIPconsGetDualsol().

◆ SCIPgetDualfarkasVarbound()

SCIP_Real SCIPgetDualfarkasVarbound ( SCIP * scip,
SCIP_CONS * cons )

gets the dual Farkas value of the variable bound constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5619 of file cons_varbound.c.

References assert(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualfarkas().

Referenced by SCIPconsGetDualfarkas().

◆ SCIPgetRowVarbound()

SCIP_ROW * SCIPgetRowVarbound ( SCIP * scip,
SCIP_CONS * cons )

returns the linear relaxation of the given variable bound constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 5647 of file cons_varbound.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by SCIPconsGetRow().

◆ SCIPcleanupConssVarbound()

SCIP_RETCODE SCIPcleanupConssVarbound ( SCIP * scip,
SCIP_Bool onlychecked,
SCIP_Bool * infeasible,
int * naddconss,
int * ndelconss,
int * nchgbds )

cleans up (multi-)aggregations and fixings from varbound constraints

Parameters
scipSCIP data structure
onlycheckedshould only checked constraints be cleaned up?
infeasiblepointer to return whether the problem was detected to be infeasible
naddconsspointer to count number of added (linear) constraints
ndelconsspointer to count number of deleted (varbound) constraints
nchgbdspointer to count number of bound changes

Definition at line 5670 of file cons_varbound.c.

References applyFixings(), assert(), CONSHDLR_NAME, FALSE, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetCheckConss(), SCIPconshdlrGetConss(), SCIPconshdlrGetData(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetNCheckConss(), and SCIPfindConshdlr().

Referenced by SCIPmatrixCreate().

◆ SCIPcreateConsXor()

SCIP_RETCODE SCIPcreateConsXor ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_Bool rhs,
int nvars,
SCIP_VAR ** vars,
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 )

creates and captures an xor constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a xor constraint x_0 xor ... xor x_{k-1} = rhs

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
rhsright hand side of the constraint
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicis constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 5947 of file cons_xor.c.

References consdataCreate(), CONSHDLR_NAME, NULL, nvars, propagate, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and vars.

Referenced by CREATE_CONSTRAINT(), SCIP_DECL_CONSPARSE(), SCIPcreateConsBasicXor(), and tryUpgradingXor().

◆ SCIPcreateConsBasicXor()

SCIP_RETCODE SCIPcreateConsBasicXor ( SCIP * scip,
SCIP_CONS ** cons,
const char * name,
SCIP_Bool rhs,
int nvars,
SCIP_VAR ** vars )

creates and captures an xor constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsXor(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See also
SCIPcreateConsXor() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()

creates and captures a xor constraint x_0 xor ... xor x_{k-1} = rhs with all constraint flags set to their default values

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
rhsright hand side of the constraint
nvarsnumber of operator variables in the constraint
varsarray with operator variables of constraint

Definition at line 6005 of file cons_xor.c.

References FALSE, nvars, SCIP_CALL, SCIP_OKAY, SCIPcreateConsXor(), TRUE, and vars.

Referenced by createMIP(), AMPLProblemHandler::OnBinaryLogical(), and AMPLProblemHandler::OnRelational().

◆ SCIPgetNVarsXor()

int SCIPgetNVarsXor ( SCIP * scip,
SCIP_CONS * cons )

gets number of variables in xor constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 6021 of file cons_xor.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation().

◆ SCIPgetVarsXor()

SCIP_VAR ** SCIPgetVarsXor ( SCIP * scip,
SCIP_CONS * cons )

gets array of variables in xor constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 6044 of file cons_xor.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation().

◆ SCIPgetIntVarXor()

SCIP_VAR * SCIPgetIntVarXor ( SCIP * scip,
SCIP_CONS * cons )

gets integer variable in xor constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 6067 of file cons_xor.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation().

◆ SCIPgetRhsXor()

SCIP_Bool SCIPgetRhsXor ( SCIP * scip,
SCIP_CONS * cons )

gets the right hand side of the xor constraint

Parameters
scipSCIP data structure
consconstraint data

Definition at line 6090 of file cons_xor.c.

References assert(), CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by addSymmetryInformation(), and SCIP_DECL_CONSCOPY().