Solving Constraint Integer Programs

Detailed Description

Constraint handler for XOR constraints, \(rhs = x_1 \oplus x_2 \oplus \dots \oplus x_n\).

Tobias Achterberg
Stefan Heinz
Michael Winkler

Definition in file cons_xor.h.

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

Go to the source code of this file.


SCIP_RETCODE SCIPincludeConshdlrXor (SCIP *scip)
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)