You can use parameters to produce a clear formulation of a problem. Consider the Rosenbrock problem,
where is a parameter (constant), and are optimization variables (whose values are to be determined), and is an objective function.
Here is a PROC OPTMODEL program that solves the Rosenbrock problem:
proc optmodel; number alpha = 100; /* declare parameter */ var x {1..2}; /* declare variables */ /* objective function */ min f = alpha*(x[2] - x[1]**2)**2 + (1 - x[1])**2; /* now run the solver */ solve; print x; quit;
The PROC OPTMODEL output is shown in Figure 5.3.
Figure 5.3: Rosenbrock Function Results
Problem Summary | |
---|---|
Objective Sense | Minimization |
Objective Function | f |
Objective Type | Nonlinear |
Number of Variables | 2 |
Bounded Above | 0 |
Bounded Below | 0 |
Bounded Below and Above | 0 |
Free | 2 |
Fixed | 0 |
Number of Constraints | 0 |
Performance Information | |
---|---|
Execution Mode | Single-Machine |
Number of Threads | 4 |
Solution Summary | |
---|---|
Solver | NLP |
Algorithm | Interior Point |
Objective Function | f |
Solution Status | Optimal |
Objective Value | 8.204873E-23 |
Optimality Error | 9.704881E-11 |
Infeasibility | 0 |
Iterations | 14 |
Presolve Time | 0.00 |
Solution Time | 0.04 |
[1] | x |
---|---|
1 | 1 |
2 | 1 |