$ONINLINE /* ********************************************************************** */ /* The following file contains the GAMS code from the paper: */ /* O. B. Olesen and N. C. Peteren: 1994. A Presentation of GAMS for DEA" */ /* Forthcoming in Computers and Operations Research. */ /* ********************************************************************** */ $OFFUPPER $OFFUPPER $OFFSYMXREF $TITLE Simple DEA GAMS Setup OPTION LIMROW = 0; OPTION LIMCOL = 0; SET IO1 / 0*3 / OUTPUT(IO1) / 1*3 / INPUT(IO1) / 0 / UNITS / 1*4 / SUBUNITS(UNITS) / 1*4 / ACTUNIT(UNITS) ; ALIAS (IO1,IO2); ALIAS (SUBUNITS,SUBUNITS1); TABLE IOACT(UNITS,IO1) 0 1 2 3 1 1 1 1 120 2 1 20 90 90 3 1 120 120 1 4 2 20 200 5 ; VARIABLES THETA efficiency score WEIGHT(UNITS) weights ; POSITIVE VARIABLES WEIGHT ; EQUATIONS PRCONSTR1(IO1,UNITS) DEA constraint for each input PRCONSTR2(IO1,UNITS) DEA constraint for each output ; PRCONSTR1(INPUT,ACTUNIT).. SUM( SUBUNITS, WEIGHT(SUBUNITS)* IOACT(SUBUNITS,INPUT) )- THETA*IOACT(ACTUNIT, INPUT) =L= 0; PRCONSTR2(OUTPUT,ACTUNIT).. SUM( SUBUNITS,WEIGHT(SUBUNITS)* IOACT(SUBUNITS,OUTPUT) )- IOACT(ACTUNIT,OUTPUT) =G= 0; PARAMETER EFFSCORE(UNITS ) report of efficiency scores OPTWEIGT(UNITS,UNITS ) report of weights OPTPRICE(UNITS,IO1 ) report of optimal virtual multipliers ; MODEL PRIMALDEA / PRCONSTR1, PRCONSTR2 /; LOOP(SUBUNITS1, ACTUNIT(UNITS) = NO; /* Subset ACTUNIT(UNITS) now empty */ ACTUNIT(SUBUNITS1) = YES; /* Subset ACTUNIT(UNITS) now one element */ SOLVE PRIMALDEA MINIMIZING THETA USING LP; EFFSCORE(SUBUNITS1) = THETA.L; OPTWEIGT(SUBUNITS1,UNITS) = WEIGHT.L(UNITS); OPTPRICE(SUBUNITS1,INPUT) = SUM(ACTUNIT, PRCONSTR1.M(INPUT ,ACTUNIT) ); OPTPRICE(SUBUNITS1,OUTPUT)= SUM(ACTUNIT, PRCONSTR2.M(OUTPUT,ACTUNIT) ); ); DISPLAY EFFSCORE, OPTWEIGT, OPTPRICE;