---------------------------------------------------

data data_read;
input x1 x2 y1 dmu_id;
datalines;
20.22 1 85 1
95.51 1 25 2
1662.98 5 22 3
;
/*---------solve QP--------*/
proc optmodel printlevel=0;
set x_num=1..2; * set dimension of X ;
set y_num=1..1;
set <num>DMU_ID;
num X{DMU_ID,x_num};
num Y{DMU_ID,y_num};
read data data_read into DMU_ID=[dmu_id]
{r in x_num}<X[dmu_id,r]=col("x"||r)>
{s in y_num}<Y[dmu_id,s]=col("y"||s)>;
var epi{DMU_ID}>=0;
var alpha{DMU_ID};
var beta{DMU_ID,x_num}>=0;
num epi_sol{DMU_ID};
num alpha_sol{DMU_ID};
num beta_sol{DMU_ID,x_num};
min obj=sum{q in DMU_ID}epi[q]**2;
con regression{q in DMU_ID,s in y_num}:Y[q,s]=alpha[q]-epi[q]+sum{r in x_num}X[q,r]*beta[q,r];
con concave{q in DMU_ID,h in DMU_ID}:alpha[q]+sum{r in x_num}X[q,r]*beta[q,r]<=alpha[h]+sum{r in x_num}X[q,r]*beta[h,r];
solve;
for{q in DMU_ID}epi_sol[q]=epi[q].sol;
for{q in DMU_ID}alpha_sol[q]=alpha[q].sol;
for{q in DMU_ID,r in x_num}beta_sol[q,r]=beta[q,r].sol;
create data epi_sol from [dmu_id]epi_sol;
create data alpha_sol from [dmu_id]alpha_sol;
create data beta_sol from [dmu_id x_num]beta_sol;
quit;
run;



雷达卡



京公网安备 11010802022788号







