The suffixes .relax
, .priority
, and .direction
are applicable to integer variables.
For an integer variable x
, setting x.relax
to a nonzero, nonmissing value relaxes the integrality restriction. The value of x.relax
is read as either 1 or 0, depending on whether or not integrality is relaxed. This suffix is ignored for noninteger variables.
The value contained in x.priority
sets the branching priority of an integer variable x
for use with the MILP solver. This value can be any nonnegative, nonmissing number. The default value is 0, which indicates
default branching priority. Variables with positive .priority
values are assigned greater priority than the default. Variables with the highest .priority
values are assigned the highest priority. Variables with the same .priority
value are assigned the same branching priority.
The value of x.direction
assigns a branching direction to an integer variable x
. This value should be an integer in the range –1 to 3. A noninteger value in this range is rounded on assignment. The default
value is 0. The significance of each integer is found in Table 5.13.
Table 5.13: Branching Directions
Value |
Direction |
–1 |
Round down to nearest integer |
0 |
Default |
1 |
Round up to nearest integer |
2 |
Round to nearest integer |
3 |
Round to closest presolved bound |
Suppose the solver branches next on an integer variable x
whose last LP relaxation solution is 3.3. Suppose also that after passing through the presolver, the lower bound of x
is 0 and the upper bound of x
is 10. If the value in x.direction
is –1 or 2, then the solver sets x
to 3 for the next iteration. If the value in x.direction
is 1, then the solver sets x
to 4. If the value in x.direction
is 3, then the solver sets x
to 0.
The MPS data set created by the SAVE MPS statement (SAVE MPS Statement) includes a BRANCH section if any nondefault .priority
or .direction
values have been specified for integer variables.