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.