$Title Chapter 3 (Fig. 3.9)
$Title Mathematical formulation of the DEA model with undesirable outputs 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,CO2/
i(g) Inputs /ProdCost, TrnCost,HoldInv/
d(g) Outputs /SatDem, Rev/
k(g) Undesirable Output /CO2/;
alias(jj,j);
alias(kk,jj);
Table Data(j,g) Data for inputs and outputs
ProdCost TrnCost HoldInv SatDem Rev CO2
DMU1 0.255 0.161 0.373 20 2.64 7.3
DMU2 0.98 0.248 0.606 6 5.29 6.63
DMU3 0.507 0.937 0.749 17 2.43 10.3
DMU4 0.305 0.249 0.841 2 8.99 5.4
DMU5 0.659 0.248 0.979 19 2.94 18.9
DMU6 0.568 0.508 0.919 17 0.75 4.51
DMU7 0.583 0.628 0.732 17 6.36 8.91
DMU8 0.627 0.675 0.738 10 7.2 8.2
DMU9 0.772 0.657 0.486 9 2.16 14.2
DMU10 0.917 0.639 0.234 8 7.3 5.1;
Variables efficiency objective function
Beta inefficiency score(Beta values)
Lambda(j) dual weights (Lambda values);
Nonnegative variables
Lambda(j)
Beta;
Parameters DMU_data(g) slice of data
eff(j) Beta values
Lamres(j,j) peers for each DMU
slacks(j,g) slacks for inputs and outputs;
Equations OBJ objective function
CON1(i) input constraint
CON2(d) output constraint for desirable outputs
CON3(k) output dual
CON4 VRS constraint;
OBJ.. efficiency=E=Beta;
CON1(i).. SUM(j, Lambda(j)*Data(j,i))=L=DMU_data(i);
CON2(d).. SUM(j, Lambda(j)*Data(j,d))=G=DMU_data(d)+beta*DMU_data(d);
CON3(k).. SUM(j, Lambda(j)*Data(j,k))=L=DMU_data(k)-beta*DMU_data(k);
CON4.. SUM(j, Lambda(j))=E=1;
model Undesirable_output_DEA Undesirable output DEA model /OBJ, CON1, CON2, CON3, CON4/;
loop(jj,
DMU_data(g) = Data(jj,g);
solve Undesirable_output_DEA using LP maximizing Efficiency ;
eff(jj)=beta.l;
loop(kk,
Lamres(jj,kk)=Lambda.l(kk);
);
);
Display eff, Lamres;
execute_unload