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

## Problem in NLPQN optimization

Hi

I am trying to optimize the following code. It tries to find the values of and AR(2) given an initial error variance and a convergence variance.

I have been able to set the problem in Excel Solver and the solution converges. When I try to solve it in SAS I am getting two errors:

Either it doesnt compute anything and give me values of the objective function with the same initial parameters that are larger than if I just call the function with the same values, or it gives me ERROR: Overflow error in *`.

I have noticed that the value of the gradient is very large. What puzzles me is why Solver using a gradient search algorithm would be able and SAS IML wont. I have use several routines with no success.

Below is the code I am using

Thanks

``````proc iml; free;

h=10; /*maximum projection horizon*/
W=j(h,h,0); /*Create starting covariance matrix*/
F=j(h,h,0); /*Create parameter matrix*/
int=j(h,h,0);
year=7; /*Create vector with variance convergence*/
var_y=1.7935990244;
fc_cov=j(h,h,0); /*Create covariance matrix*/
lowIdx = do(h+1, (h*h)-1, h+1); /*Index for lower diagonal*/
F[lowIdx]=1;
weight=j(h,1,0);
weight[1:(h-year)]=1;

/*map variance matrix W and paramter matrix F*/
W[1,1]=0.77;

start minsqre(param) global(h, W, F, int, var_y, fc_cov, weight);

F[1,1]=param[1];
F[1,2]=param[2];

/*Project forecast error variance*/

do j=0 to (h-1);
int=(F**j)*W*(t(F**j));
fc_cov=fc_cov+int;
end;

y_var=diag(j(h,1,var_y));
target=sum(diag(weight)#((fc_cov-y_var)##2));

return(target);

finish minsqre;

theta={0.1 0.1};
opt=j(1,11,.); opt[1]=0; opt[2]=5;
cons={	.-1 . .,
. 1 . .,
1 1 -1 1,
-1 1 -1 1 };

/*check4=minsqre(theta);*/
/*print check4;*/

call nlpqn(rc,thetares,"minsqre",theta,opt);

quit;

``````

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

## Re: Problem in NLPQN optimization

So let me see if I undestand your problem. You are MINIMIZING a constrained problem on the triangular region formed by

-1 <= p2 <= 1

p1 + p2 <= 1

-p1 + p2 <= 1

I don't understand what your objective function is computing, but I'm guessing that you have a mistake there. For example, do you really intend for the fc_cov matrix to persist across calls?  It looks like you are using that matrix to accumulate some weighted matrix products.  If so, you probably want to zero out the fc_cov matrix at the beginning of each call.

If I add the line

fc_cov=j(h,h,0);

at the top of the objective function, the NLP routine computes a minimum near (0.9, -0.2) for the initial conditions you specified.

There might not a unique solution for this problem, since other initial conditions seem to converge to other local minima.

2 REPLIES 2
SAS Super FREQ

## Re: Problem in NLPQN optimization

So let me see if I undestand your problem. You are MINIMIZING a constrained problem on the triangular region formed by

-1 <= p2 <= 1

p1 + p2 <= 1

-p1 + p2 <= 1

I don't understand what your objective function is computing, but I'm guessing that you have a mistake there. For example, do you really intend for the fc_cov matrix to persist across calls?  It looks like you are using that matrix to accumulate some weighted matrix products.  If so, you probably want to zero out the fc_cov matrix at the beginning of each call.

If I add the line

fc_cov=j(h,h,0);

at the top of the objective function, the NLP routine computes a minimum near (0.9, -0.2) for the initial conditions you specified.

There might not a unique solution for this problem, since other initial conditions seem to converge to other local minima.

Calcite | Level 5

## Re: Problem in NLPQN optimization

Hi Rick,

That was the problem. I thought that for each functoin call the function would call again the global as it was proviously defined! Once I have reset to value of the storing matrices it all works!

Thanks four your help!

Jorge

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
• 2 replies
• 858 views
• 0 likes
• 2 in conversation