The OPTLP Procedure

Data Input and Output

This subsection describes the PRIMALIN= and DUALIN= data tables required to warm start the primal and dual simplex algorithms, and the PRIMALOUT= and DUALOUT= output data tables.

Definitions of Variables in the PRIMALIN= Data Table

The PRIMALIN= data table must contain the following variables:

_VAR_

specifies the name of the decision variable.

_STATUS_

specifies the status of the decision variable. It can take one of the following values:

B

basic variable

L

nonbasic variable at its lower bound

U

nonbasic variable at its upper bound

F

free variable

A

newly added variable in the modified LP model when using the BASIS=WARMSTART option

Note: The PRIMALIN= data table is created from the PRIMALOUT= data table that is obtained from a previous "normal" run of PROC OPTLP (one that uses only the DATA= data table as the input).

Definitions of Variables in the DUALIN= Data Table

The DUALIN= data table also must contain the following variables:

_ROW_

specifies the name of the constraint.

_STATUS_

specifies the status of the slack variable for a given constraint. It can take one of the following values:

B

basic variable

L

nonbasic variable at its lower bound

U

nonbasic variable at its upper bound

F

free variable

A

newly added variable in the modified LP model when using the BASIS=WARMSTART option

Note: The DUALIN= data table is created from the DUALOUT= data table that is obtained from a previous "normal" run of PROC OPTLP (one that uses only the DATA= data table as the input).

Definitions of Variables in the PRIMALOUT= Data Table

The PRIMALOUT= data table contains the primal solution to the LP model; each observation corresponds to a variable of the LP problem. The PRIMALOUT= data table can contain an intermediate solution, if one is available. See Example 5.1 for an example of the PRIMALOUT= data table. The variables in the data table have the following names and meanings:

_OBJ_ID_

specifies the name of the objective function. This is particularly useful when there are multiple objective functions, in which case each objective function has a unique name.

Note: PROC OPTLP does not support simultaneous optimization of multiple objective functions in this release.

_RHS_ID_

specifies the name of the variable that contains the right-hand-side value of each constraint.

_VAR_

specifies the name of the decision variable.

_TYPE_

specifies the type of the decision variable. _TYPE_ can take one of the following values:

N

nonnegative

D

bounded (with both lower and upper bound)

F

free

X

fixed

O

other (with either lower or upper bound)

_OBJCOEF_

specifies the coefficient of the decision variable in the objective function.

_LBOUND_

specifies the lower bound on the decision variable.

_UBOUND_

specifies the upper bound on the decision variable.

_VALUE_

specifies the value of the decision variable.

_STATUS_

specifies the status of the decision variable. _STATUS_ can take one of the following values:

B

basic variable

L

nonbasic variable at its lower bound

U

nonbasic variable at its upper bound

F

free variable

A

superbasic variable (a nonbasic variable that has a value strictly between its bounds)

I

LP model infeasible (all decision variables have _STATUS_ equal to I)

For the interior point algorithm when IIS=FALSE, _STATUS_ is blank.

The following values can appear only if IIS=TRUE. For more information, see the section Irreducible Infeasible Set.

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

both bounds of the variable needed for the IIS (the variable is fixed or has conflicting bounds)

_R_COST_

specifies the reduced cost of the decision variable, which is the amount by which the objective function is increased per unit increase in the decision variable. The reduced cost associated with the ith variable is the ith entry of the following vector:

left-parenthesis bold c Superscript normal upper T Baseline minus bold c Subscript upper B Superscript normal upper T Baseline bold upper B Superscript negative 1 Baseline bold upper A right-parenthesis

where bold upper B element-of double-struck upper R Superscript m times m denotes the basis (matrix composed of basic columns of the constraints matrix bold upper A element-of double-struck upper R Superscript m times n), bold c element-of double-struck upper R Superscript n is the vector of objective function coefficients, and bold c Subscript upper B Baseline element-of double-struck upper R Superscript m is the vector of objective coefficients of the variables in the basis.

In addition, the following variables are returned if sensitivity analysis is used for the corresponding pieces of the input data:

_LBOUNDMIN_

specifies the smallest value of the stability interval for _LBOUND_.

_LBOUNDMAX_

specifies the largest value of the stability interval for _LBOUND_.

_UBOUNDMIN_

specifies the smallest value of the stability interval for _UBOUND_.

_UBOUNDMAX_

specifies the largest value of the stability interval for _UBOUND_.

_OBJCOEFMIN_

specifies the smallest value of the stability interval for _OBJCOEF_.

_OBJCOEFMAX_

specifies the largest value of the stability interval for _OBJCOEF_.

Definitions of Variables in the DUALOUT= Data Table

The DUALOUT= data table contains the dual solution to the LP model; each observation corresponds to a constraint of the LP problem. The DUALOUT= data table can contain an intermediate solution, if one is available. Information about the objective rows of the LP problems is not included. See Example 5.1 for an example of the DUALOUT= data table. The variables in the data table have the following names and meanings:

_OBJ_ID_

specifies the name of the objective function. This is particularly useful when there are multiple objective functions, in which case each objective function has a unique name.

Note: PROC OPTLP does not support simultaneous optimization of multiple objective functions in this release.

_RHS_ID_

specifies the name of the variable that contains the right-hand-side value of each constraint.

_ROW_

specifies the name of the constraint.

_TYPE_

specifies the type of the constraint. _TYPE_ can take one of the following values:

L

"less than or equals" constraint

E

equality constraint

G

"greater than or equals" constraint

R

ranged constraint (both "less than or equals" and "greater than or equals")

_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.

_VALUE_

specifies the value of the dual variable associated with the constraint.

_STATUS_

specifies the status of the slack variable for the constraint. _STATUS_ can take one of the following values:

B

basic variable

L

nonbasic variable at its lower bound

U

nonbasic variable at its upper bound

F

free variable

A

superbasic variable (a nonbasic variable that has a value strictly between its bounds)

I

LP model infeasible (all decision variables have _STATUS_ equal to I)

The following values can appear only if IIS=TRUE. For more information, see the section Irreducible Infeasible Set.

I_L

the "GE" (greater-than-or-equal-to) condition of the constraint is needed for the IIS

I_U

the "LE" (less-than-or-equal-to) 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 with conflicting bounds)

_ACTIVITY_

specifies the left-hand-side value of a constraint. In other words, the value of _ACTIVITY_ for the ith constraint would be equal to bold a Subscript i Superscript normal upper T Baseline bold x, where bold a Subscript i refers to the ith row of the constraints matrix and bold x denotes the vector of current decision variable values.

In addition, the following variables are returned if sensitivity analysis is used for the corresponding pieces of the input data:

_RHSMIN_

specifies the smallest value of the stability interval for _RHS_, for one-sided rows. It takes a missing value for a ranged constraint.

_RHSMAX_

specifies the largest value of the stability interval for _RHS_, for one-sided rows. It takes a missing value for a ranged constraint.

_L_RHSMIN_

specifies the smallest value of the stability interval for _L_RHS_ (that is, the lower bound of a ranged row). It takes a missing value for a nonranged constraint.

_L_RHSMAX_

specifies the largest value of the stability interval for _L_RHS_ (that is, the lower bound of a ranged row). It takes a missing value for a nonranged constraint.

_U_RHSMIN_

specifies the smallest value of the stability interval for _U_RHS_ (that is, the upper bound of a ranged row). It takes a missing value for a nonranged constraint.

_U_RHSMAX_

specifies the largest value of the stability interval for _U_RHS_ (that is, the upper bound of a ranged row). It takes a missing value for a nonranged constraint.

Last updated: June 22, 2026