GAMS code for Data Envelopment Analysis

Chapter 3 (Fig. 3.09) – The mathematical formulation of the DEA model with undesirable outputs and the corresponding

$Title Chapter 3 (Fig. 3.9)
$Title Mathematical formulation of the DEA model with undesirable 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,CO2/
           i(g)  Inputs /ProdCost, TrnCost,HoldInv/
           d(g) Outputs /SatDem, Rev/
           k(g)  Undesirable Output /CO2/;
           alias(jj,j);
           alias(kk,jj);


Table Data(j,g) Data for inputs and outputs

           ProdCost     TrnCost      HoldInv     SatDem      Rev        CO2
DMU1        0.255        0.161        0.373        20        2.64       7.3
DMU2        0.98         0.248        0.606        6         5.29       6.63
DMU3        0.507        0.937        0.749        17        2.43       10.3
DMU4        0.305        0.249        0.841        2         8.99       5.4
DMU5        0.659        0.248        0.979        19        2.94       18.9
DMU6        0.568        0.508        0.919        17        0.75       4.51
DMU7        0.583        0.628        0.732        17        6.36       8.91
DMU8        0.627        0.675        0.738        10        7.2        8.2
DMU9        0.772        0.657        0.486        9         2.16       14.2
DMU10       0.917        0.639        0.234        8         7.3        5.1;



  Variables efficiency objective function
            Beta     inefficiency score(Beta values)
            Lambda(j) dual weights (Lambda values);

  Nonnegative variables
            Lambda(j)
            Beta;

  Parameters DMU_data(g) slice of data
             eff(j) Beta values
             Lamres(j,j) peers for each DMU
             slacks(j,g) slacks for inputs and outputs;

  Equations OBJ objective function
            CON1(i) input constraint
            CON2(d) output constraint for desirable outputs
            CON3(k) output dual
            CON4    VRS constraint;

  OBJ..       efficiency=E=Beta;

  CON1(i)..  SUM(j, Lambda(j)*Data(j,i))=L=DMU_data(i);
  CON2(d)..  SUM(j, Lambda(j)*Data(j,d))=G=DMU_data(d)+beta*DMU_data(d);
  CON3(k)..  SUM(j, Lambda(j)*Data(j,k))=L=DMU_data(k)-beta*DMU_data(k);
  CON4..     SUM(j, Lambda(j))=E=1;
  model Undesirable_output_DEA Undesirable output DEA model /OBJ, CON1, CON2, CON3, CON4/;

  loop(jj,
      DMU_data(g) = Data(jj,g);
       solve Undesirable_output_DEA using LP maximizing Efficiency ;
       eff(jj)=beta.l;
       loop(kk,
          Lamres(jj,kk)=Lambda.l(kk);
        );
    );

    Display eff, Lamres;

    execute_unload