It looks that the objective function used in nonlinear optimization routines can only have one input vector. However, what if I need to pass some other parameters to the objective function. For example, I want to minimize the sum of square of difference between a function value and a target value, and the target value is user defined. Let me use a simple case, suppose x is a 3*1 vector I want to find to minimize the following funciton.
z=(x[1]-y[1])**2 + (x[2]-y[2])**3 + (x[3]-y[3])**2, where y is the vector of target specified by users. Therefore, it is better not hard coded in the objective function.
Ideally, the objective function should have two arguments, x and y;
start obj_func(x,y);
z=(x[1]-y[1])**2 + (x[2]-y[2])**3 + (x[3]-y[3])**2;
return(z);
finish obj_func;
The reason I cannot put x and y together as a single vector is that I only need to search for x, for a given y. In MATLAB, all the optimization routines allow passing extra arguements to the objective function. I am not sure if I can do similar things in SAS.
Thanks a bunch.