Hi, I'm trying to solve a nested optimization problem with SAS/IML, specifically): I'm not sure how to handle the input vs global variables in this case (which I think is why it is not working). I don't know how to handle z. This is what i have so far: /* function P*/ start P(z) global(h,b,p1,p2,a_inter,X_I); return( sum(h#(CDF('NORMAL',(b-p1#(X_I*(a_inter*(z`))))/p2))) ); finish; /* derivative of theta function*/ start deri(theta_x) global(l,h,z); return( l - sum(P(z)#h#exp(h*theta_x)/( P(z)#(exp(h*theta_x)-1) + 1 ) ) ); finish; /* finding root of theta function*/ start theta(z); bounds = {0,10000}; return( froot( "deri", bounds) ); finish; /*main function*/ start Func(z) global(l,h); return( -theta(z)*l + (sum(log(1 + P(z)#(exp(h#theta(z)) - 1) ) )) - 0.5*z*(z`) ); finish; z = RANDNORMAL(S,0, 1); /*x0*/ z = (z`); opt = {1,2}; call nlpnra(rc, result, "Func", z, opt); Given that the equations are done correctly, how would I set this up so that the root/derivative function can make use if the current z that the optimization algorithm is evaluating? Is there something else that is wrong?
... View more