$Title Chapter 4 (Fig. 4.14) $Title Mathematical formulation of the RDM for negative data (inputs/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/ i(g) Inputs /ProdCost, TrnCost, HoldInv/ r(g) Outputs /SatDem, Rev/; 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; variables beta0 Inefficiency measure; nonnegative variables lambda(j); Parameters Rplus(j,r) R+ for each DMU and output, Rminus(j,i) R- for each DMU and input, max_y(r) max of y, min_x(i) min of x, dmu_data(g) slice of data, Lamres(j,j) peers for each DMU Rmin(i) slice of R-, Rpl(r) slice of R+, eff(j) beta0, total_eff(j) 1-beta0, stat(j); max_y(r) = smax(j,Data(j,r)); min_x(i) = smax(j,Data(j,i)); loop(jj, Rplus(jj,r) = max_y(r) - Data(jj,r); Rminus(jj,i) = Data(jj,i) - min_x(i); ); EQUATIONS CON1(i) inputs constraint with Rmin CON2(r) outputs constraint with Rmax CON3 VRS constraint; CON1(i).. SUM(j,lambda(j)*Data(j,i))=L=dmu_data(i)-beta0*Rmin(i); CON2(r).. SUM(j,lambda(j)*Data(j,r))=G=dmu_data(r)+beta0*Rpl(r); CON3.. SUM(j,lambda(j))=E=1; Model Neg Negative data Range Adjusted Measure (RAM) model /All/ loop(jj, dmu_data(g) = Data(jj,g); Rmin(i) = Rminus(jj,i); Rpl(r) = Rplus(jj,r); Solve Neg max beta0 using LP; eff(jj) = beta0.l; total_eff(jj) = 1- eff(jj); stat(jj) = neg.modelstat; loop(kk, Lamres(jj,kk)=Lambda.l(kk); ); ); display eff, total_eff, Lamres; execute_unload