GAMS code for Data Envelopment Analysis

Chapter 5 (Fig. 5.07) – The mathematical formulation for profit efficiency

$Title Chapter 5 (Fig. 5.7)
$Title Mathematical formulation for profit efficiency 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 /Prodc, Trn, Inv, SatDem, Quantity/
        i(g)  Inputs /Prodc, Trn, Inv/
        r(g) Outputs /SatDem, Quantity/;
        alias(jj,j);
        alias(k,jj);

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

        Prodc        Trn        Inv      SatDem   Quantity
DMU1        10        100       61        20        100
DMU2        52        125       100        6        150
DMU3        24        54        56        17        50
DMU4        45        91        14        2         510
DMU5        51        10        67        19        400
DMU6        52        26        56        17        60
DMU7        22        35        34        17        250
DMU8        91        56        101       10        35
DMU9        43        72        55         9        90
DMU10       34        39        16         8        650;

Table Cost(j,i) Cost Data for inputs

            Prodc         Trn          Inv
DMU1        0.255        0.161        0.373
DMU2        0.98         0.248        0.606
DMU3        0.507        0.937        0.749
DMU4        0.305        0.249        0.841
DMU5        0.659        0.248        0.979
DMU6        0.568        0.508        0.919
DMU7        0.583        0.628        0.732
DMU8        0.627        0.675        0.738
DMU9        0.772        0.657        0.486
DMU10       0.917        0.639        0.234;

Table Price(j,r) Price Data for outputs

        SatDem      Quantity
DMU1        2        2.64
DMU2        3        5.29
DMU3        10       2.43
DMU4        5        8.99
DMU5        1        2.94
DMU6        3        0.75
DMU7        7        6.36
DMU8        8        7.2
DMU9        3        2.16
DMU10       9        7.3;



Variables efficiency objective function
          profit_efficiency profit efficiency;

Nonnegative variables
          l(j) dual weights (Lambda values)
          y_t(r) auxilliary variable for p*phi
          x_t(i) auxilliary variable for c*theta;

Parameters DMU_data(g) slice of data
           prs(r) slice of price data
           cst(i) slice of cost data
           profit_eff(j) revenue efficiency
           lamres(j,j) peers for each DMU;

Equations OBJ_PROFIT Profit efficiency objective function
          CON1_COST(i) Constraint for cost
          CON1_REV(r) Constraint for profit
          CON3 VRS orientation;

OBJ_PROFIT..    profit_efficiency=E=SUM(r,prs(r)*y_t(r))-SUM(i,cst(i)*x_t(i));
CON1_COST(i)..  SUM(j, l(j)*Data(j,i))=L=x_t(i);
CON1_REV(r)..   SUM(j, l(j)*Data(j,r))=G=y_t(r);
CON3..          SUM(j, l(j))=E=1;

model PROFIT_DEA_VRS profit efficiency /ALL/;


loop(jj,
   DMU_data(g) = Data(jj,g);
   prs(r) = Price(jj,r);
   cst(i) = Cost(jj,i);
   solve PROFIT_DEA_VRS using LP maximizing profit_efficiency;
   profit_eff(jj) = (SUM(r,prs(r)*DMU_data(r))-SUM(i,cst(i)*DMU_data(i)))/(SUM(r,prs(r)*y_t.l(r))-SUM(i,cst(i)*x_t.l(i)));
   loop(k,
      Lamres(jj,k)=l.l(k);
    );
);

display profit_eff, lamres;

execute_unload