GAMS code for Data Envelopment Analysis

Chapter 3 (Fig. 3.17) – The mathematical formulation of categorical variables in DEA under the VRS technol-ogy with the corresponding GAMS formulation

$Title Chapter 3 (Fig. 3.17)
$Title Mathematical formulation of categorical variables in DEA under the VRS technol-ogy with 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/
           l categorical orientations /Or1*Or4/;
           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;

Table w(j,l) Descriptor service vector

           Or1      Or2      Or3      Or4
DMU1        1        1        1        0
DMU2        0        1        1        1
DMU3        0        0        0        1
DMU4        1        1        1        0
DMU5        1        0        1        0
DMU6        1        1        1        0
DMU7        1        1        1        1
DMU8        1        0        0        0
DMU9        0        0        0        0
DMU10       0        0        0        0;



  Variables objective    objective function for model
            Lambda(j)      dual weights (Lambda values);

  Nonnegative variables
            Lambda(j)      dual weights (Lambda values)

  Binary variables
            t(l)           Binary auxiliary variables;

  Parameters DMU_data(g)     slice of data
             Lamres_s(j,j)   peers for each DMU for strong disposability model
             slice_w(l)      slice of descriptor service vector
             res_t(j,l)      parameter for binary variables;


  Equations OBJ objective function
            CON1(i) input constraint
            CON2(r) output constraint
            CON3(l) service orientation
            CON4(l) sequential improvememt constraint
            VRS    VRS constraint;

OBJ..      objective=E=SUM(l$(ORD(l)<=(CARD(l)-1)),t(l));

CON1(i)..  SUM(j, Lambda(j)*Data(j,i))=L=DMU_data(i);

CON2(r)..  SUM(j, Lambda(j)*Data(j,r))=G=DMU_data(r);

CON3(l)$(ORD(l)<=(CARD(l)-1))..  SUM(j, Lambda(j)*w(j,l))-t(l)=E=slice_w(l);

CON4(l)$(ORD(l)>=2 AND ORD(l)<=(CARD(l)-1))..  t(l-1)=G=t(l);

VRS..      SUM(j,Lambda(j))=E=1;


  model DEA_categorical MIP model with categorical variables /OBJ, CON1, CON2, CON3, CON4, VRS/;

  loop(jj,
      DMU_data(g) = Data(jj,g);
      slice_w(l)= w(jj,l);
      solve DEA_categorical maximizing objective using MIP ;
      res_t(jj,l)=t.l(l);
);

    Display res_t;

    execute_unload