The OPTLSO Procedure

Describing Linear Constraints

The preferred method for describing linear constraints is to use the LINCON=, MPSDATA=, or QPSDATA= option. You should not describe linear constraints by using the NLINCON= option because they are treated as black-box constraints and can degrade performance.

If you have only a few variables and linear constraints, you might prefer to use the dense format to describe your linear constraints by specifying both the LINCON= option and the VARIABLES= option. Suppose a problem has the following linear constraints:

\[  \begin{array}{ccc} -1 \le &  2x_1 - 4 x_3&  \le 15 \\ 1 \le &  -3x_1 +7x_2 &  \le 13 \\ &  x_1 + x_2 + x_3 &  = 11 \end{array}  \]

The following DATA step formulates this information as an input data set for PROC OPTLSO:

data lcondata;
   input _id_ $ _lb_ x1-x3 _ub_;
   datalines;
a1 -1    2 0 -4 15
a2  1   -3 7  0 13
a3  11   1 1  1 11
;

Linear constraints are handled by using tangent search directions that are defined with respect to nearby constraints. The metric that is used to determine when a constraint is sufficiently near might cause the algorithm to temporarily treat range constraints as equality constraints. For this reason, it is preferable that you not separate a range constraint into two inequality constraints. For example, although both of the following range constraint formulations are equivalent, the former is preferred:

\[  \begin{array}{cccccc} -1 \le &  2x_1 - 4 x_3& \le 15 \end{array}  \]

and

\[  \begin{array}{cccccc}&  2x_1 - 4 x_3& \le 15 \\ -1 \le &  2x_1 - 4 x_3& \end{array}  \]

Even for a moderate number of variables and constraints, using the dense format to describe the linear constraints can be burdensome. As an alternative, you can construct a sparse formulation by using MPS-format (or QPS-format) SAS data sets and specifying the MPSDATA= (or QPSDATA=) option in PROC OPTLSO. For more information about these data sets, see Chapter 15: The MPS-Format SAS Data Set in SAS/OR 12.3 User's Guide: Mathematical Programming. You can easily create these data sets can by using the OPTMODEL procedure, as demonstrated in Using MPS Format and Using QPS Format. For more information about using PROC OPTMODEL to create MPS data sets, see Chapter 5: The OPTMODEL Procedure in SAS/OR 12.3 User's Guide: Mathematical Programming.

Both MPS and QPS data sets require that you define an objective function. Although the QPS standard supports a constant term, the MPS standard does not; thus any constant term that is defined in PROC OPTMODEL is naturally dropped and not included in the corresponding data set. In particular, if the MPSDATA= option is used, the corresponding objective will have the form

\[  m(x) = c^ Tx  \]

However, if the QPSDATA= option is used, the corresponding objective will have the form

\[  m(x) = c^ Tx + \dfrac {1}{2} x^ TQ x + K  \]

where $c$, $Q$, and the constant term $K$ are defined within the provided data sets. Although multiple objectives might be listed, PROC OPTLSO uses only the first objective from the MPSDATA= or QPSDATA= option. How the corresponding objective function is used is determined by the contents of the OBJECTIVE= data set. For more information, see Incorporating MPS and QPS Objective Functions.