$Title Chapter 4 (Fig. 4.21)
$Title Mathematical formulation of the SORM model and the corresponding GAMS code
$onText
If using this code, please cite:
---------------------------------------------------------------------------------
Emrouznejad, A., P. Petridis, and V. Charles (2023). Data Envelopment Analysis
with GAMS: A Handbook on Productivity Analysis, and Performance Measurement,
Springer, ISBN: 978-3-031-30700-3.
---------------------------------------------------------------------------------
Website: https://dataenvelopment.com/GAMS/
$offText
Sets j DMUs /DMU1*DMU10/
g Inputs and Outputs /ProdCost, TrnCost, HoldInv, SatDem, Rev/
i(g) Inputs /ProdCost, TrnCost, HoldInv/
k(g) Negative Outputs /Rev/
r(g) Outputs /SatDem/;
alias(jj,j);
alias(jj,kk);
Table Data(j,g) Data for inputs and outputs
ProdCost TrnCost HoldInv SatDem Rev
DMU1 0.255 0.161 0.373 20 2.64
DMU2 0.98 0.248 0.606 6 -5.29
DMU3 0.507 0.937 0.749 17 2.43
DMU4 0.305 0.249 0.841 2 -8.99
DMU5 0.659 0.248 0.979 19 2.94
DMU6 0.568 0.508 0.919 17 -0.75
DMU7 0.583 0.628 0.732 17 -6.36
DMU8 0.627 0.675 0.738 10 7.2
DMU9 0.772 0.657 0.486 9 -2.16
DMU10 0.917 0.639 0.234 8 7.3;
Parameters
dmu_data(g), res_eff(j), Y1(j,k), Y2(j,k), lamres(j,j), y1_s(k), y2_s(k), stat(j);
loop(jj,
y1(jj,k)$(data(jj,k)>=0)=data(jj,k);
y1(jj,k)$(data(jj,k)<0)=0;
y2(jj,k)$(data(jj,k)>=0)=0;
y2(jj,k)$(data(jj,k)<0)=-data(jj,k);
);
variables h efficiency measure;
nonnegative variables l(j) peers of DMU j;
EQUATIONS
CON1(i) Inputs constraint
CON2(r) Positive Outputs constraint
CON3(k) Negative output constraint Y1
CON4(k) Negative output constraint Y2
CON5 VRS;
CON1(i).. SUM(j,l(j)*Data(j,i))=L=dmu_data(i)*h;
CON2(r).. SUM(j,l(j)*Data(j,r))=G=dmu_data(r);
CON3(k).. SUM(j,l(j)*y1(j,k))=G=y1_s(k);
CON4(k).. SUM(j,l(j)*y2(j,k))=L=y2_s(k);
CON5.. SUM(j,l(j))=E=1;
Model SORM/All/
loop(jj,
dmu_data(g) = Data(jj,g);
y1_s(k)=y1(jj,k);
y2_s(k)=y2(jj,k);
Solve SORM min h using LP;
res_eff(jj) = h.l;
stat(jj) = SORM.modelstat;
loop(kk,
Lamres(jj,kk)=l.l(kk);
);
);
display res_eff, lamres;
execute_unload