$Title Chapter 3 (Fig. 3.19)
$Title Mathematical formulation of stochastic (Chance constraints) efficiency models 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 NLP=KNITRO;
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);
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 var_in(i) variance for inputs,
var_out(r) Variance for outputs,
mux(i) average of inputs,
muy(r) average of outputs,
Data_DMU(g),
cc1,
sigma_out(r),
sigma_in(i),
DMU_data_stoch_form(g),
res_stat(j);
mux(i)=(1/CARD(j))*SUM(j,Data(j,i));
muy(r)=(1/CARD(j))*SUM(j,Data(j,r));
******************Output parameters****************************************************************
var_out(r)= (1/(CARD(j)-1))*SUM(j,power((Data(j,r)-muy(r)),2));
sigma_out(r) = sqrt(var_out(r));
***************************************************************************************************
******************Input parameters*****************************************************************
var_in(i)= (1/(CARD(j)-1))*SUM(j,power((Data(j,i)-mux(i)),2));
sigma_in(i) = sqrt(var_in(i));
***************************************************************************************************
Scalar Alpha /0.5/;
Parameter FF frictional function;
FF=errorf(Alpha);
Variables objective objective function for model
Lambda(j) dual weights (Lambda values)
Phi Output efficiency scores;
Nonnegative variables
Lambda(j) dual weights (Lambda values)
sminus(i) input slack variable
splus(r) output slack variable;
Parameters DMU_data(g) slice of data
Lamres(j,j) peers for each DMU
res_Phi(j) output efficiency results;
Equations OBJ objective function
CON1(r) output constraint
CON2(i) input constraint
VRS VRS constraint;
OBJ.. objective=E=Phi+1E-3*(SUM(i,sminus(i))+SUM(r,splus(r)));
CON1(r).. Phi*DMU_data_stoch_form(r)-SUM(j$(ord(j)<>cc1), Lambda(j)*Data(j,r))+splus(r)=E=0;
CON2(i).. SUM(j$(ord(j)<>cc1), Lambda(j)*Data(j,i))+sminus(i)=E=DMU_data_stoch_form(i);
VRS.. SUM(j,Lambda(j))=E=1;
model Chance_DEA_constraints /OBJ, CON1, CON2, VRS/;
loop(jj,
DMU_data(g) = Data(jj,g);
DMU_data_stoch_form(r) = DMU_data(r) - FF*sigma_out(r);
DMU_data_stoch_form(i) = DMU_data(i) + FF*sigma_in(i);
cc1 = ord(jj);
solve Chance_DEA_constraints max objective using LP;
res_Phi(jj)=Phi.l;
res_stat(jj)=Chance_DEA_constraints.modelstat;
);
display res_Phi;
execute_unload