The Nonlinear Programming Solver

Example 8.1 Solving Highly Nonlinear Optimization Problems

This example demonstrates the use of the NLP solver to solve the following highly nonlinear optimization problem, which appears in Hock and Schittkowski (1981):

The initial point used is . You can call the NLP solver within PROC OPTMODEL to solve the problem by writing the following SAS statements:

proc optmodel;
var x{1..8} >= 0.1 <= 10;

min f = 0.4*(x[1]/x[7])^0.67 + 0.4*(x[2]/x[8])^0.67 + 10 - x[1] - x[2];

con c1: 1 - 0.0588*x[5]*x[7] - 0.1*x[1] >= 0;
con c2: 1 - 0.0588*x[6]*x[8] - 0.1*x[1] - 0.1*x[2] >= 0;
con c3: 1 - 4*x[3]/x[5] - 2/(x[3]^0.71*x[5]) - 0.0588*x[7]/x[3]^1.3 >= 0;
con c4: 1 - 4*x[4]/x[6] - 2/(x[4]^0.71*x[6]) - 0.0588*x[8]/x[4]^1.3 >= 0;
con c5: 0.1 <= f <= 4.2;

/* starting point */
x[1] = 6;
x[2] = 3;
x[3] = 0.4;
x[4] = 0.2;
x[5] = 6;
x[6] = 6;
x[7] = 1;
x[8] = 0.5;

solve with nlp / algorithm=activeset;
print x;
quit;


The summaries and the solution are shown in Output 8.1.1.

Output 8.1.1: Summaries and the Optimal Solution

The OPTMODEL Procedure

Problem Summary
Objective Sense Minimization
Objective Function f
Objective Type Nonlinear

Number of Variables 8
Bounded Above 0
Bounded Below 0
Bounded Below and Above 8
Free 0
Fixed 0

Number of Constraints 5
Linear LE (<=) 0
Linear EQ (=) 0
Linear GE (>=) 0
Linear Range 0
Nonlinear LE (<=) 0
Nonlinear EQ (=) 0
Nonlinear GE (>=) 4
Nonlinear Range 1

Performance Information
Execution Mode Single-Machine

Solution Summary
Solver NLP
Algorithm Active Set
Objective Function f
Solution Status Optimal
Objective Value 3.9511634753

Optimality Error 1.691012E-9
Infeasibility 7.8982136E-9

Iterations 23
Presolve Time 0.00
Solution Time 0.08

[1] x
1 6.46511
2 2.23271
3 0.66740
4 0.59576
5 5.93268
6 5.52723
7 1.01332
8 0.40067