$Title Chapter 3 (Fig. 3.16)
$Title The Mathematical Formulation Of The Input DEA Congestion Using Slack Variables With The Corresponding GAMS Formulation
$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 under managerial control /ProdCost,
TrnCost,
HoldInv/
r(g) Desirable outputs /SatDem, Rev/;
alias(jj,j);
alias(kk,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 for model 1
efficiency1 objective function for model 2
Theta Strong disposability efficiency
Theta_tilde Weak disposability efficiency
zeta(i) Congestion with slack measures
Lambda(j) dual weights (Lambda values)
Nonnegative Variables
Lambda(j) dual weights (Lambda values)
sminus(i) slack variable assigned to input
splus(r) slack variable assigned to output;
Parameters DMU_data(g) slice of data
eff_Theta(j) Strong disposability efficiency
values
res_eff_2(j) results for sum of zeta variables
res_zeta(j,i) Results for zeta variable
Lamres_s(j,j) peers for each DMU for strong
disposability model
slice_Theta slice of efficiency
slice_xproj(i) slice for input projection
slice_yproj(r) slice for output projection
slice_sminus(i) slice for input slack
slack_in(j,i) results for input slack variables
slack_out(j,r) results for output slack variables
xproj(j,i) projected values for inputs for
each DMU
yproj(j,r) projected values for outputs for
each DMU;
Equations OBJ_s objective function for strong disposability
CON1_s(i) input constraint for strong disposability
CON2_s(r) output constraint for strong disposability
OBJ_w objective function for weak disposability
CON1_w(i) input constraint for weak disposability
CON2_w(r) output constraint for weak disposability
CON3_w(i) slack constraint
VRS VRS constraint;
OBJ_s.. efficiency=E=Theta-1E-3*(SUM(i,sminus(i))+SUM(r,splus(r)));
CON1_s(i).. SUM(j, Lambda(j)*Data(j,i))=L=Theta*DMU_data(i);
CON2_s(r).. SUM(j, Lambda(j)*Data(j,r))=G=DMU_data(r);
OBJ_w.. efficiency1=E=SUM(i,zeta(i));
CON1_w(i).. SUM(j, Lambda(j)*Data(j,i))-
zeta(i)=E=slice_xproj(i);
CON2_w(r).. SUM(j, Lambda(j)*Data(j,r))=E=slice_yproj(r);
VRS.. SUM(j, Lambda(j))=E=1;
model Input_DEA_strong_disposability Input oriented DEA model for strong disposability /OBJ_s, CON1_s, CON2_s, VRS/;
model Input_DEA_weak_disposability_slack Input oriented DEA model for weak disposability with slack measures /OBJ_w, CON1_w,
CON2_w, CON3_w, VRS/;
loop(jj,
DMU_data(g) = Data(jj,g);
solve Input_DEA_strong_disposability using LP
minimizing Theta;
eff_Theta(jj)=Theta.l;
slack_in(jj,i)=sminus.l(i);
slack_out(jj,r)=splus.l(r);
xproj(jj,i)=eff_theta(jj)*Data(jj,i)-
slack_in(jj,i);
yproj(jj,r)=Data(jj,r)+slack_out(jj,r);
slice_xproj(i)=xproj(jj,i);
slice_yproj(r)=yproj(jj,r);
slice_Theta=eff_Theta(jj);
slice_sminus(i)=slack_in(jj,i);
solve Input_DEA_strong_disposability using LP minimizing Theta;
eff_Theta(jj)=Theta.l;
slack_in(jj,i)=sminus.l(i); slack_out(jj,r)=splus.l(r);
xproj(jj,i)=eff_theta(jj)*Data(jj,i)-slack_in(jj,i); yproj(jj,r)=Data(jj,r)+slack_out(jj,r);
slice_xproj(i)=xproj(jj,i); slice_yproj(r)=yproj(jj,r); slice_Theta=eff_Theta(jj); slice_sminus(i)=slack_in(jj,i);
solve Input_DEA_weak_disposability_slack using LP maximizing efficiency1;
res_zeta(jj,i)=zeta.l(i);
res_eff_2(jj)=SUM(i,zeta.l(i));
);
Display eff_Theta, res_zeta, res_eff_2;