|
constraint handler for linking binary variables to an integer variable
- Author
- Stefan Heinz
-
Jens Schulz
The constraints handler stores linking constraints between an integer variable and an array of binary variables. Such a linking constraint has the form:
with integer variable , binary variables and offset , 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 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 integer variable which will be dynamically created.
Definition in file cons_linking.h.
Go to the source code of this file.
|
SCIP_RETCODE | SCIPincludeConshdlrLinking (SCIP *scip) |
|
SCIP_RETCODE | SCIPcreateConsLinking (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *intvar, SCIP_VAR **binvars, int *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 *intvar, SCIP_VAR **binvars, int *vals, int nbinvars) |
|
SCIP_Bool | SCIPexistsConsLinking (SCIP *scip, SCIP_VAR *intvar) |
|
SCIP_CONS * | SCIPgetConsLinking (SCIP *scip, SCIP_VAR *intvar) |
|
SCIP_VAR * | SCIPgetIntvarLinking (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) |
|
int * | SCIPgetValsLinking (SCIP *scip, SCIP_CONS *cons) |
|
creates the handler for linking constraints and includes it in SCIP
- Parameters
-
SCIP_RETCODE SCIPcreateConsLinking |
( |
SCIP * |
scip, |
|
|
SCIP_CONS ** |
cons, |
|
|
const char * |
name, |
|
|
SCIP_VAR * |
intvar, |
|
|
SCIP_VAR ** |
binvars, |
|
|
int * |
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
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
intvar | integer variable which should be linked |
binvars | binary variables |
vals | coefficients of the binary variables |
nbinvars | number of binary starting variables |
initial | should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. |
separate | should the constraint be separated during LP processing? Usually set to TRUE. |
enforce | should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. |
check | should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. |
propagate | should the constraint be propagated during node processing? Usually set to TRUE. |
local | is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. |
modifiable | is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. |
dynamic | is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints. |
removable | should 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'. |
stickingatnode | should 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. |
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()
- Parameters
-
scip | SCIP data structure |
cons | pointer to hold the created constraint |
name | name of constraint |
intvar | integer variable which should be linked |
binvars | binary variables, or NULL |
vals | coefficients of the binary variables |
nbinvars | number of binary variables |
checks if for the given integer variable a linking constraint exists
- Parameters
-
scip | SCIP data structure |
intvar | integer variable which should be linked |
returns the linking constraint belonging the given integer variable or NULL if it does not exist yet
- Parameters
-
scip | SCIP data structure |
intvar | integer variable which should be linked |
returns the integer variable of the linking constraint
- Parameters
-
scip | SCIP data structure |
cons | linking constraint |
returns the binary variables of the linking constraint
- Parameters
-
scip | SCIP data structure |
cons | linking constraint |
binvars | pointer to store the binary variables array pointer |
nbinvars | pointer to store the number of returned binary variables |
returns the number of binary variables of the linking constraint
- Parameters
-
scip | SCIP data structure |
cons | linking constraint |
returns the coefficients of the binary variables
- Parameters
-
scip | SCIP data structure |
cons | linking constraint |
|