| The Sequential Quadratic Programming Solver |
To solve a constrained nonlinear optimization problem, both the optimal primal and optimal dual variables have to be computed. Therefore, a good estimate of both the primal and dual variables is essential for fast convergence. An important feature of the SQP solver is that it computes a good estimate of the dual variables if an estimate of the primal variables is known.
The following example illustrates how a good initial starting point helps in securing the desired optimum:
![]() |
Assume the starting point
= (30, –30). The SAS code is as follows:
proc optmodel;
var x {1..2} <= 8 >= -10; /* variable bounds */
minimize obj =
exp(x[1])*(4*x[1]^2 + 2*x[2]^2 + 4*x[1]*x[2] + 2*x[2] + 1);
con consl:
x[1]*x[2] -x[1] - x[2] <= -1.5;
con cons2:
x[1]*x[2] >= -10;
x[1] = 30; x[2] = -30; /* starting point */
solve with sqp / printfreq = 5 ;
print x;
The solution (a local optimum) obtained by the SQP solver is displayed in Output 15.3.1.
| Problem Summary | |
|---|---|
| Objective Sense | Minimization |
| Objective Function | obj |
| Objective Type | Nonlinear |
| Number of Variables | 2 |
| Bounded Above | 0 |
| Bounded Below | 0 |
| Bounded Below and Above | 2 |
| Free | 0 |
| Fixed | 0 |
| Number of Constraints | 2 |
| Linear LE (<=) | 0 |
| Linear EQ (=) | 0 |
| Linear GE (>=) | 0 |
| Linear Range | 0 |
| Nonlinear LE (<=) | 1 |
| Nonlinear EQ (=) | 0 |
| Nonlinear GE (>=) | 1 |
| Nonlinear Range | 0 |
You can find a solution with a smaller objective value by assuming a starting point of (–10, 1). Continue to submit the following code:
/* starting point */ x[1] = -10; x[2] = 1; solve with sqp / printfreq = 5 ; print x; quit;
The corresponding solution is displayed in Output 15.3.2.
| Problem Summary | |
|---|---|
| Objective Sense | Minimization |
| Objective Function | obj |
| Objective Type | Nonlinear |
| Number of Variables | 2 |
| Bounded Above | 0 |
| Bounded Below | 0 |
| Bounded Below and Above | 2 |
| Free | 0 |
| Fixed | 0 |
| Number of Constraints | 2 |
| Linear LE (<=) | 0 |
| Linear EQ (=) | 0 |
| Linear GE (>=) | 0 |
| Linear Range | 0 |
| Nonlinear LE (<=) | 1 |
| Nonlinear EQ (=) | 0 |
| Nonlinear GE (>=) | 1 |
| Nonlinear Range | 0 |
| Solution Summary | |
|---|---|
| Solver | SQP |
| Objective Function | obj |
| Solution Status | Optimal |
| Objective Value | 0.0235504281 |
| Iterations | 10 |
| Infeasibility | 0 |
| Optimality Error | 8.8391537E-7 |
| Complementarity | 1.444755E-6 |
The preceding illustration demonstrates the importance of a good starting point in obtaining the optimal solution. The SQP solver ensures global convergence only to a local optimum. Therefore you need to have sufficient knowledge of your problem in order to be able to get a "good" estimate of the starting point.
Copyright © SAS Institute, Inc. All Rights Reserved.