The OPTMODEL Procedure |
This example demonstrates how to use the READ DATA statement to read parameters from a SAS data set. The objective is the Bard function, which is the following least squares problem with :
where , (), and
The minimum function value E is at the point . The starting point is used. This problem is identical to the section Using the DATA= Option in the PROC NLP documentation. The following code uses the READ DATA statement to input parameter values and the CREATE DATA statement to save the solution in a SAS data set:
data bard; input y @@; datalines; .14 .18 .22 .25 .29 .32 .35 .39 .37 .58 .73 .96 1.34 2.10 4.39 ; proc optmodel; set I = 1..15; number y{I}; read data bard into [_n_] y; number v{k in I} = 16 - k; number w{k in I} = min(k, v[k]); var x{1..3} init 1; min f = 0.5* sum{k in I} (y[k] - (x[1] + k / (v[k]*x[2] + w[k]*x[3])))**2; solve; print x; create data xdata from [i] xd=x;
In this code the values for parameter y are read from the BARD data set. The set I indexes the terms of the objective as well as the y array.
The code defines two utility parameters that contain coefficients used in the objective function. These coefficients could have been defined in the expression for the objective, f, but it was convenient to give them names and simplify the objective expression.
The result is shown in Output 8.2.1.
The final CREATE DATA statement saves the solution values determined by the solver into the data set XDATA. The data set contains an observation for each x index. Each observation contains two variables. The output variable i contains the index, while xd contains the value for the indexed entry in the array x. The resulting data can be seen by using the PRINT procedure as follows:
proc print data=xdata; run;
The output from PROC PRINT is shown in Output 8.2.2.
Copyright © SAS Institute, Inc. All Rights Reserved.