Hey RobPratt, A follow up question. Below is the code based on your advice. It works fine but i am wondering if there is a way to simply VAR wt a little bit highlighted in RED. what i am trying to do here is to create a weight factor (VAR wt) with 2 constrains: 1), sum of wt1, wt2 and wt3 equals to 1; 2). weighting factors are same across all the weeks. I feel like i don't need "w" in wt {w, 1..n} but don't know how to make the change. by the way, if i can't make the above change, how to create a dataset only for wt {w, 1..n} in week1? Thanks again for your help! ------------------------------------------------------------------------------ data M; input week dep m1 m2 m3; cards; 1 100 12 89 6 2 200 61 34 77 3 300 71 69 55 4 400 18 10 40 5 500 18 14 66 ; run; %let n = 3; proc optmodel; num n = &n; set w; num weeks{w}; num dep{w}; num m{w,1..n}; read data M into w = [_N_] dep {j in 1..n} <m[_N_,j]=col('m'||j)>; var wt {w,1..n} >= 0 <= 1 init 1; impvar prdt {i in w, j in 1..n} = m[i,j] * wt[i,j]; impvar swt {i in w} = sum {j in 1..n} wt[i,j]; impvar sp {i in w} = sum {j in 1..n} prdt[i,j]; num wks; wks = card (w); impvar correlation = (wks*sum{i in w}(sp*dep) - (sum{i in w}(sp)) * (sum{i in w}(dep))) / (sqrt(wks*sum{i in w}(sp^2) - (sum{i in w}(sp))^2) * sqrt(wks*sum{i in w}(dep^2) - (sum{i in w}(dep))^2)); min mincorrelation = correlation; con weighting {i in w, j in 1..n}: wt[i,j] = if i = 1 then wt[i,j] else wt[i-1,j]; con swt [1] = 1; solve WITH NLP / tech=ActiveSet; print correlation percentn10.2 wt prdt swt sp dep; create data work.sumproduct from = (w) sp; quit;
... View more