This subsection describes the PRIMALIN= data table required to warm start PROC OPTMILP, in addition to the PRIMALOUT= and DUALOUT= data tables.
Definitions of Variables in the PRIMALIN= Data Table
The PRIMALIN= data table must contain the following variables:
_VAR_
specifies the variable (column) names of the problem. The values should match the column names in the DATA= data table for the current problem.
_VALUE_
specifies the solution value for each variable in the problem.
The PRIMALIN= data table can also contain the following optional variable:
_SOL_
specifies the identifier of the input solution. This optional numeric field is strictly needed only in cases where you specify multiple input solutions through the PRIMALIN= data table. Each solution needs to have a unique corresponding identifier.
Note: If PROC OPTMILP produces a feasible solution, the primal output data table from that run can be used as the PRIMALIN= data table for a subsequent run, provided that the variable names are the same. If this input solution is not feasible for the subsequent run, the solver automatically tries to repair it. For more information, see the section Warm Start.
Definitions of Variables in the PRIMALOUT= Data Table
PROC OPTMILP stores the current best integer feasible solution (or the IIS status of the variables if the problem is infeasible and the IIS=TRUE option is specified) of the problem in the data set that is specified in the PRIMALOUT= option. The variables in this data set are defined as follows:
_OBJ_ID_
specifies the identifier of the objective function.
_RHS_ID_
specifies the identifier of the right-hand side.
_VAR_
specifies the variable (column) names.
_TYPE_
specifies the variable type. _TYPE_ can take one of the following values:
C
continuous variable
I
general integer variable
B
binary variable (0 or 1)
_OBJCOEF_
specifies the coefficient of the variable in the objective function.
_LBOUND_
specifies the lower bound on the variable.
_UBOUND_
specifies the upper bound on the variable.
_VALUE_
specifies the value of the variable in the current solution.
_SOL_
specifies the identifier of the output solution. You can specify the number of solutions to return in the PRIMALOUT= data table by setting the MAXPOOLSOLS= option. Each solution has its own identifier, starting from 1. Only feasible and unique solutions are returned.
Note: Both the PRIMALOUT= and DUALOUT= data tables are ordered by the _SOL_ identifier. Solutions that have the same or better objective value have a lower _SOL_ identifier. In the PRIMALOUT= and DUALOUT= data tables, the respective solutions and activities that have the same _SOL_ identifier correspond to each other.
_IIS_
specifies the variable bounds and integrality restrictions of a variable present in the irreducible infeasible set, if the problem is infeasible. This variable is included in the data table only if the IIS=TRUE option is specified and the problem is infeasible. For more information, see the section Irreducible Infeasible Set.
The following values can appear:
I_L
The lower bound of the variable is needed for the IIS.
I_U
The upper bound of the variable is needed for the IIS.
I_F
The lower and upper bounds of the variable are needed for the IIS.
I_LI
The lower bound and integrality restriction of the variable are needed for the IIS.
I_UI
The upper bound and integrality restriction of the variable are needed for the IIS.
I_FI
The lower bound, upper bound and integrality restriction of the variable are needed for the IIS.
I_I
The integrality restriction of the variable is needed for the IIS.
Definitions of Variables in the DUALOUT= Data Table
The DUALOUT= data table contains the constraint activities (or the IIS status of the constraints if the problem is infeasible and IIS=TRUE option is specified) that correspond to the primal solution in the PRIMALOUT= data table. Information about additional objective rows of the MILP problem is not included. The variables in this data table are defined as follows:
_OBJ_ID_
specifies the identifier of the objective function from the input data table.
_RHS_ID_
specifies the identifier of the right-hand side from the input data table.
_ROW_
specifies the constraint (row) name.
_TYPE_
specifies the constraint type. _TYPE_ can take one of the following values:
L
"less than or equal" constraint
E
equality constraint
G
"greater than or equal" constraint
R
ranged constraint (both "less than or equal" and "greater than or equal")
_RHS_
specifies the value of the right-hand side of the constraint. It takes a missing value for a ranged constraint.
_L_RHS_
specifies the lower bound of a ranged constraint. It takes a missing value for a non-ranged constraint.
_U_RHS_
specifies the upper bound of a ranged constraint. It takes a missing value for a non-ranged constraint.
_ACTIVITY_
specifies the activity of a constraint for a given primal solution. In other words, the value of _ACTIVITY_ for the ith constraint is equal to , where refers to the ith row of the constraint matrix and denotes the vector of the current primal solution.
_SOL_
specifies the identifier of the corresponding solution in the PRIMALOUT= data table.
_IIS_
specifies the constraints present in the irreducible infeasible set, if the problem is infeasible. This variable is included in the data table only if the IIS=TRUE option is specified and the problem is infeasible. For more information, see the section Irreducible Infeasible Set.
The following values can appear:
I_L
The "GE" () condition of the constraint is needed for the IIS.
I_U
The "LE" () condition of the constraint is needed for the IIS.
I_F
Both conditions of the constraint are needed for the IIS (the constraint is an equality or a range constraint).