The OPTQP Procedure |
Consider a small illustrative example. Suppose you want to minimize a two-variable quadratic function on the nonnegative quadrant, subject to two constraints:
The linear objective function coefficients, vector of right-hand sides, and lower and upper bounds are identified immediately as
Let us carefully construct the quadratic matrix . Observe that you can use symmetry to separate the main-diagonal and off-diagonal elements:
The first expression
sums the main-diagonal elements. Thus in this case you have
Notice that the main-diagonal values are doubled in order to accommodate the 1/2 factor. Now the second term
sums the off-diagonal elements in the strict lower triangular part of the matrix. The only off-diagonal () term in the objective function is , so you have
Notice that you do not need to specify the upper triangular part of the quadratic matrix.
Finally, the matrix of constraints is as follows:
The QPS-format SAS input data set for the preceding problem can be expressed in the following manner:
data gsdata; input field1 $ field2 $ field3$ field4 field5 $ field6 @; datalines; NAME . EXAMPLE . . . ROWS . . . . . N OBJ . . . . L R1 . . . . G R2 . . . . COLUMNS . . . . . . X1 R1 1.0 R2 1.0 . X1 OBJ 2.0 . . . X2 R1 -1.0 R2 2.0 . X2 OBJ 3.0 . . RHS . . . . . . RHS R1 1.0 . . . RHS R2 100 . . RANGES . . . . . BOUNDS . . . . . QUADOBJ . . . . . . X1 X1 2.0 . . . X1 X2 2.5 . . . X2 X2 20 . . ENDATA . . . . . ;
For more details about the QPS-format data set, see Chapter 16, The MPS-Format SAS Data Set.
Alternatively, if you have a QPS-format flat file named gs.qps, then the following call to the SAS macro %MPS2SASD translates that file into a SAS data set, named gsdata:
%mps2sasd(mpsfile =gs.qps, outdata = gsdata);
Note:The SAS macro %MPS2SASD is provided in SAS/OR software. See Converting an MPS/QPS-Format File: %MPS2SASD for details.
You can use the following call to PROC OPTQP:
proc optqp data=gsdata primalout = gspout dualout = gsdout; run;
The procedure output is displayed in Figure 19.2.
Problem Summary | |
---|---|
Problem Name | EXAMPLE |
Objective Sense | Minimization |
Objective Function | OBJ |
RHS | RHS |
Number of Variables | 2 |
Bounded Above | 0 |
Bounded Below | 2 |
Bounded Above and Below | 0 |
Free | 0 |
Fixed | 0 |
Number of Constraints | 2 |
LE (<=) | 1 |
EQ (=) | 0 |
GE (>=) | 1 |
Range | 0 |
Constraint Coefficients | 4 |
Hessian Diagonal Elements | 2 |
Hessian Elements Above the Diagonal | 1 |
The optimal primal solution is displayed in Figure 19.3.
The SAS log shown in Figure 19.4 provides information about the problem, convergence information after each iteration, and the optimal objective value.
line |
---|
NOTE: The problem EXAMPLE has 2 variables (0 free, 0 fixed). |
NOTE: The problem has 2 constraints (1 LE, 0 EQ, 1 GE, 0 range). |
NOTE: The problem has 4 constraint coefficients. |
NOTE: The objective function has 2 Hessian diagonal elements and 1 Hessian |
elements above the diagonal. |
WARNING: No output destinations active. |
NOTE: The OPTQP presolver value AUTOMATIC is applied. |
NOTE: The OPTQP presolver removed 0 variables and 0 constraints. |
NOTE: The OPTQP presolver removed 0 constraint coefficients. |
NOTE: The QUADRATIC ITERATIVE solver is called. |
Primal Bound Dual |
Iter Complement Duality Gap Infeas Infeas Infeas |
0 63669937 1.985060 0 0 0 |
1 12781299 1.952937 0 0 0 |
2 2189517 1.877587 0 0 0 |
3 363689 1.669055 0 0 0 |
4 57278 1.058687 0 0 0 |
5 5621.204805 0.239307 0 0 0 |
6 914.397217 0.015841 0 0 0 |
7 14.822037 0.000796 0 0 0 |
8 0.605195 0.000039820 0 0 0 |
9 0.029919 0.000001991 0 0 0 |
10 0.001495 9.9575984E-8 0 0 0 |
NOTE: Optimal. |
NOTE: Objective = 15018.000761. |
NOTE: The data set WORK.GSPOUT has 2 observations and 9 variables. |
NOTE: The data set WORK.GSDOUT has 2 observations and 10 variables. |
See the section Interior Point Algorithm: Overview and the section Iteration Log for the OPTQP Procedure for more details about convergence information given by the iteration log.
Copyright © SAS Institute, Inc. All Rights Reserved.