GAMS code for Data Envelopment Analysis

Chapter 2 (Fig. 2.21) – Mathematical formulation of the multiplier CRS DEA model with Assurance Region (AR) constraints and the corresponding GAMS code

$Title Chapter 2 (Fig. 2.21)
$Title Mathematical formulation of the multiplier CRS DEA model with Assurance Region (AR) constraints 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(j,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
          mu
          v(i) dual input
          u(r) dual output;

Nonnegative variables
          v(i) dual input
          u(r) dual output;

Parameters DMU_data(g) slice of data
           eff(j) efficiency report
           res_v(j,i) results for dual input
           res_u(j,r) results for dual output
           sm(j);

Equations OBJ objective function
          CON1(j)
          CON2
          CON3
          CON4
          CON5
          CON6
          CON7
          CON8;

OBJ..       efficiency=E=SUM(r,u(r)*DMU_data(r));

CON1(j)..   SUM(r,u(r)*Data(j,r))-SUM(i,v(i)*Data(j,i))=L=0;

CON2..      SUM(i,v(i)*DMU_data(i))=E=1;

CON3..      v('TrnCost')=G=0.5*v('ProdCost');

CON4..      v('TrnCost')=L=4*v('ProdCost');

CON5..      v('HoldInv')=G=2*v('ProdCost');

CON6..      v('HoldInv')=L=6*v('ProdCost');

CON7..      u('SatDem')=G=3*u('Rev');

CON8..      u('SatDem')=L=5*u('Rev');

model multiplier_DEA_CRS_AR input oriented DEA CRS / OBJ, CON1, CON2, CON3, CON4, CON5, CON6, CON7, CON8/;

loop(jj,
   DMU_data(i) = Data(jj,i);
   DMU_data(r) = Data(jj,r);
   solve multiplier_DEA_CRS_AR using LP Maximizing efficiency;
   eff(jj)=efficiency.l;
   res_v(jj,i)=v.l(i);
   res_u(jj,r)=u.l(r);
   sm(j)=multiplier_DEA_CRS_AR.modelstat;
   );

Display eff, res_v, res_u;

execute_unload