BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
bigbigben
Obsidian | Level 7

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.

 

 

 

1 ACCEPTED SOLUTION
3 REPLIES 3
Rick_SAS
SAS Super FREQ

Use the GLOBAL clause to list parameters that are important to evaluate the function, but that are not optimized:

start obj_func(x) GLOBAL(y);

 

See the article "Maximum likelihood estimation in SAS/IML" or these other blog posts:

http://blogs.sas.com/content/iml/tag/optimization

 

bigbigben
Obsidian | Level 7

Thanks, Rick.

 

I am reading your article, once I found there is a similar question posted earlier on the forum. Here is a quick related question. If I have mutiple extra arguments, which are difficult to be written as a single matrix, how should I write the global clause? Should it be like

 

global (y1,y2,...)

 

or global (y1) global (y2) .... ?

 

Thanks

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 3 replies
  • 2135 views
  • 1 like
  • 2 in conversation