$Title Chapter 2 (Fig. 2.4)
$Title The mathematical formulation of the CRS DEA 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
Option LP=XA;
Sets j DMUs /DMU1*DMU10/
g Inputs and Outputs /ProdCost, TrnCost, HoldInv, SatDem, Rev/
i(g) Inputs /ProdCost, TrnCost, HoldInv/
r(g) Outputs /SatDem, Rev/;
alias(jj,j);
alias(k,jj);
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;
Variables efficiency objective function
Theta efficiency (Theta values)
Lambda(j) dual weights (Lambda values)
sminus(i) slacks assigned to inputs
splus(r) slacks assigned to inputs;
Nonnegative variables
Lambda(j)
sminus(i)
splus(r);
Parameters DMU_data(g) slice of data
eff(j) efficiency report
Lamres(j,j) peers for each DMU
slacks(j,g) slacks for inputs and outputs;
Equations OBJ objective function
CON1(i) input duals
CON2(r) output dual;
OBJ.. efficiency=E=Theta-1E-6*(SUM(i,sminus(i))+SUM(r,splus(r)));
CON1(i).. SUM(j, Lambda(j)*Data(j,i))+sminus(i)=E=Theta*DMU_data(i);
CON2(r).. SUM(j, Lambda(j)*Data(j,r))-splus(r)=E=DMU_data(r);
model DEA_CRS input oriented DEA CRS / OBJ, CON1, CON2 /;
loop(jj,
DMU_data(g) = Data(jj,g);
solve DEA_CRS using LP minimizing Theta ;
eff(jj)=Theta.l;
slacks(jj,i)=sminus.l(i);
slacks(jj,r)=splus.l(r);
loop(k,
Lamres(jj,k)=Lambda.l(k);
);
);
Parameters xproject(j,i), yproject(j,r);
xproject(j,i)=eff(j)*Data(j,i)-slacks(j,i);
yproject(j,r)=Data(j,r)+slacks(j,r);
Display eff, Lamres, slacks, xproject, yproject;