1 /* Data Envelopment Analysis (DEA)
3 * DEA quantifies the relative efficiency of decision making units (DMUs) by
4 * finding the efficient frontier in multiple input multiple output data. The
5 * inputs are resources (eg. number of employees, available machines, ...),
6 * the outputs are productive outputs (eg. contracts made, total sales, ...).
7 * The method is non-parametric. More details are available in the paper
10 * Models according to: Seiford, Threall, "Recent developments in DEA", 1990.
12 * Implementation: Sebastian Nowozin <nowozin@gmail.com>
17 set dmus; # Decision Making Units (DMU)
18 set inputs; # Input parameters
19 set outputs; # Output parameters
24 param input_data{dmus,inputs} >= 0;
25 param output_data{dmus,outputs} >= 0;
31 var lambda{dmus,dmus} >= 0;
33 minimize inefficiency: sum{td in dmus} theta[td];
35 s.t. output_lower_limit{o in outputs, td in dmus}:
36 sum{d in dmus} lambda[d,td]*output_data[d,o] >= output_data[td,o];
37 s.t. input_upper_limit{i in inputs, td in dmus}:
38 sum{d in dmus} lambda[d,td]*input_data[d,i] <= theta[td]*input_data[td,i];
41 sum{d in dmus} lambda[d,td] = 1;
45 ii) s.t. PI1{td in dmus}:
46 sum{d in dmus} lambda[d,td] <= 1;
47 iii) s.t. PI1{td in dmus}:
48 sum{d in dmus} lambda[d,td] >= 1;
52 ### SOLVE AND PRINT SOLUTION ###
56 printf "DMU\tEfficiency\n";
58 printf "%s\t%1.4f\n", td, theta[td];
65 set dmus := 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
66 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
67 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
68 61 62 63 64 65 66 67 68 69 ;
69 set inputs := AvgInventory LaborCost OperatingCost Population ;
70 set outputs := PrescrVol kDollarValue ;
72 param input_data default 0.0 :
74 AvgInventory LaborCost OperatingCost Population :=
76 1 8000 17030 1280 1410
77 2 9000 25890 2779 1523
78 3 13694 29076 2372 1354
82 7 4500 18001 1130 1016
83 8 5000 14473 1097 1070
84 9 27000 31760 5559 1694
85 10 21560 50972 15010 1910
86 11 15000 39523 4799 1745
87 12 8500 13076 3489 1353
88 13 35000 35427 1704 500
89 14 18000 27554 2882 1016
90 15 59750 53848 14208 2500
91 16 19200 38253 1480 2293
92 17 40000 109404 83016 2718
93 18 8466 18198 1278 2877
94 19 16000 40891 7599 4150
95 20 10000 45444 5556 4421
96 21 25000 35623 2121 3883
97 22 14000 20192 5515 3519
98 23 12500 34973 10475 32366
99 24 17260 32284 14498 3393
100 25 7000 17920 7585 4489
101 26 14000 42094 3742 2217
102 27 16400 35422 14236 4641
103 28 13000 19100 3529 5968
104 29 30000 72167 8656 8715
105 30 12530 19970 1714 5968
106 31 31500 39183 4919 5607
107 32 10000 32048 3483 7324
108 33 22000 68877 12279 8685
109 34 10000 29812 3332 8685
110 35 16000 47686 2507 5420
111 36 10000 33415 4738 7703
112 37 9000 12359 4603 4665
113 38 16439 23614 2989 6317
114 39 14500 36069 1793 31839
115 40 39000 76307 9539 15619
116 41 24927 40706 12661 30213
117 42 13858 39267 4609 34719
118 43 33375 29509 11323 31839
119 44 29044 44482 5542 34719
120 45 32257 61365 20550 32366
121 46 8800 49671 3306 43561
122 47 47000 40425 10396 31263
123 48 12000 33034 4915 31263
124 49 28000 69163 4688 15173
125 50 13300 28931 16735 73064
126 51 13500 29758 4260 62309
127 52 24000 40927 8285 23166
128 53 16000 40403 2131 99836
129 54 17000 38730 2539 60348
130 55 25000 35978 2502 99836
131 56 16000 37509 6278 99836
132 57 20000 46950 10715 85925
133 58 14000 35966 3144 85925
134 59 22000 68318 8015 108987
135 60 21879 69537 7778 108987
136 61 15000 25425 2812 201404
137 62 10000 19508 2454 201404
138 63 20000 28191 3367 201404
139 64 18000 37073 8624 108987
140 65 19051 23763 3496 201404
141 66 15000 28642 3366 201404
142 67 10000 35919 3868 201404
143 68 24000 54653 26494 108987
144 69 1800 6276 3413 60348
147 param output_data default 0.0 :
149 PrescrVol kDollarValue :=