Variable Domain Functions
The default assumption for a variable is that it is continuous with a lower bound of 0. Variable domain functions place additional restrictions on the values that variables can assume. The functions and their effects are as follows:
@BIN( variable)
Restricts variable to being a binary (0/1) integer value.
@BND( lower_bound, variable, upper_bound)
Limits variable to being greater-than-or-equal-to lower_bound and less-than-or-equal-to upper_bound.
@CARD( 'card_set_name', variable|N)
Use @CARD to restrict a a set of variables to have a cardinality of N. See section Cardinality for more information.
@FREE( variable)
Removes the default lower bound of zero on variable, allowing it to take any positive or negative value.
@GIN( variable)
Restricts variable to integer values (e.g., 0,1,2, ...).
@PRIORITY( variable, priority)
Sets the branching priority for integer variable variable to the value priority. Variables with higher priorities will tend to be branched on sooner than variables with lower priorities.
@SEMIC( lower_bound, variable, upper_bound)
Restricts variable to being either 0 o in the range of [lower_bound, upperbound]. Refer to section Semicontinuous Variables for more information.
@SOS{1|2|3}( 'sos_set_name', variable)
Use the @SOS1, @SOS2 and @SOS3 functions to set up special ordered sets of variables. Refer to section SOS Variables for more information.
@POSD( matrix)
Use the @POSD functions to force a matrix of variables to be positive semi-definite. Refer to section Positive Semi-Definite Matrices for more information.
You may use the @FOR function to apply variable domain functions to all the elements of an attribute.
Variable domain functions are discussed in detail in Using Variable Domain Functions.