Hi- I'm trying to use proc optmodel and scale beyond 1 set of parameters for optimization (i.e. extend a 1 case example to a dataset). In the first instance I've written the following to find s such that the difference between the variables newrate and r are minimized: /* Proc Optmodel */ proc optmodel; number b=.33267, a1=.4361836, a2=-.1201676, a3=.937298, ey=198, yg=168.3, r=.038; var s init ey, z, t, p, el; min newrate = r; con z=(1/sqrt(2*3.14))*exp(-.5*((ey-yg)/s)**2); con t=1/(1+b*((ey-yg)/s)); con p=z*(a1*t+a2*t**2+a3*t**3); con el=p*(yg-ey)+z*s; con newrate=el/yg; solve; print s; However I am having trouble extending this to the case where I have multiple observations for parameters ey, yg, r, and I am picking S for each observation. Here's as far as I've gotten: data parms; input name $ ey yg b a1 a2 a3 r; datalines; COL1 100 80 .33267 .4361836 -.120167 .937298 .038 COL2 150 130 .33267 .4361836 -.120167 .937298 .038 COL3 100 75 .33267 .4361836 -.120167 .937298 .038 run; proc optmodel; set <string> parameters; number ey{parameters}; number yg{parameters}; number b{parameters}; number a1{parameters}; number a2{parameters}; number a3{parameters}; number r{parameters}; read data parms into parameters=[name] ey=ey yg=yg b=b a1=a1 a2=a2 a3=a3 r=r; var s{parameters} init 10; var z{parameters}; var t{parameters}; var pr{parameters}; var el{parameters}; minimize newrate = r; con z{p in parameters} = (1/sqrt(2*3.14))*exp(-.5*((ey-yg)/s)**2); con t{p in parameters} = 1/(1+b*((ey-yg)/s)); con pr{p in parameters} =z*(a1*t+a2*t**2+a3*t**3); con el{p in parameters}=p*(yg-ey)+z*s; con newrate=el/yg; solve; print s; Any help would be much appreciated! Thanks, SVO
... View more