MODEL:
! Data Envelopment Analysis of Decision Maker Efficiency ;
! Keywords: DEA, Data Envelopment Analysis, Efficiency,
Pareto optimal, Benchmarking;
SETS:
DMU: !The decisionmaking units;
SLK, ! Slack variable on SCORE(k) <= 1;
SCORE; ! Each decision making unit has a
score to be computed;
FACTOR: TW;
! There is a set of factors, input & output;
DXF( DMU, FACTOR): F, ! F( I, J) = Jth factor of DMU I;
W; ! Weights used to compute DMU I's score;
ENDSETS
DATA:
DMU = BL HW NT OP YK EL; ! The schools;
! Inputs are spending/pupil, % not low income;
! Outputs are Writing score and Science score;
NINPUTS = 2; ! The first NINPUTS factors are inputs;
FACTOR= COST RICH WRIT SCIN;
! The inputs, the outputs;
F = 89.39 64.3 25.2 223 ! BL;
86.25 99 28.2 287 ! HW;
108.13 99.6 29.4 317 ! NT;
106.38 96 26.4 291 ! OP;
62.40 96.2 27.2 295 ! YK;
47.19 79.9 25.5 222; ! EL;
WGTMIN = .0005; ! Min weight applied to every factor;
BIGM = 999999; ! Biggest a weight can be;
EPSILON = .000001; ! Zero tolerance;
ENDDATA
!----------------------------------------------------------;
SUBMODEL DEA:
! The Model;
! IU = DMU we are currently considering;
! Try to make the score of DMU IU as high as possible;
MAX = TSCORE;
TSCORE = @SUM( FACTOR(J)|J #GT# NINPUTS:
F(INOW, J)* TW( J));
! Sum of inputs(denominator) = 1;
[SUM21] @SUM( FACTOR( J)| J #LE# NINPUTS: F( INOW, J)* TW( J)) = 1;
! Using DMU IU's weights, no DMU can score better than 1
Note, Numer/Denom <= 1 implies Numer <= Denom;
@FOR( DMU( K):
[LE1] @SUM( FACTOR( J)| J #GT# NINPUTS: F( K, J) * TW( J)) +
SLK(K)= @SUM( FACTOR( J)| J #LE# NINPUTS: F( K, J) * TW( J))
);
! The weights, TW( ), must be greater than zero;
@FOR( FACTOR( j): @BND( WGTMIN, TW(j), BIGM));
ENDSUBMODEL
CALC:
@SET( 'TERSEO', 2); !Minimal output;
!Write out a solution report;
@WRITE( @NEWLINE( 2),
32*' ','Factor Weight:', @NEWLINE( 1),
' DMU Score'
);
@FOR( FACTOR( I): @WRITE( ' ', FACTOR( I)));
@WRITE(' Dominated by some combination of...');
@WRITE( @NEWLINE( 1));
! Solve the DEA model for each DMU D;
@FOR( DMU( D):
INOW = D;
@SOLVE( DEA); ! Solve the model above;
@WRITE( ' ', DMU( D), ' ', @FORMAT( TSCORE, '6.3f'), ' ');
@FOR( FACTOR( I):
@WRITE( @FORMAT( TW(I), '8.4f'), ' ')
);
@IFC( TSCORE #LT# 1 - EPSILON: ! Does D get a score < 1? ;
@FOR( DMU(k) | k #NE# D: ! Yes, find those k that get a score of 1, ;
@IFC( SLK(k) #LE# EPSILON: ! using D's weights. These k dominate D;
@WRITE( ' ', DMU(k));
);
);
);
@WRITE( @NEWLINE( 1));
);
ENDCALC
END
|