|
1 /* Data Envelopment Analysis (DEA) |
|
2 * |
|
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 |
|
8 * below. |
|
9 * |
|
10 * Models according to: Seiford, Threall, "Recent developments in DEA", 1990. |
|
11 * |
|
12 * Implementation: Sebastian Nowozin <nowozin@gmail.com> |
|
13 */ |
|
14 |
|
15 ### SETS ### |
|
16 |
|
17 set dmus; # Decision Making Units (DMU) |
|
18 set inputs; # Input parameters |
|
19 set outputs; # Output parameters |
|
20 |
|
21 |
|
22 ### PARAMETERS ### |
|
23 |
|
24 param input_data{dmus,inputs} >= 0; |
|
25 param output_data{dmus,outputs} >= 0; |
|
26 |
|
27 |
|
28 ### PROGRAM ### |
|
29 |
|
30 var theta{dmus} >= 0; |
|
31 var lambda{dmus,dmus} >= 0; |
|
32 |
|
33 minimize inefficiency: sum{td in dmus} theta[td]; |
|
34 |
|
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]; |
|
39 |
|
40 s.t. PI1{td in dmus}: |
|
41 sum{d in dmus} lambda[d,td] = 1; |
|
42 /* |
|
43 possibilities: |
|
44 i) (no constraint) |
|
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; |
|
49 */ |
|
50 |
|
51 |
|
52 ### SOLVE AND PRINT SOLUTION ### |
|
53 |
|
54 solve; |
|
55 |
|
56 printf "DMU\tEfficiency\n"; |
|
57 for {td in dmus} { |
|
58 printf "%s\t%1.4f\n", td, theta[td]; |
|
59 } |
|
60 |
|
61 ### DATA ### |
|
62 |
|
63 data; |
|
64 |
|
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 ; |
|
71 |
|
72 param input_data default 0.0 : |
|
73 |
|
74 AvgInventory LaborCost OperatingCost Population := |
|
75 |
|
76 1 8000 17030 1280 1410 |
|
77 2 9000 25890 2779 1523 |
|
78 3 13694 29076 2372 1354 |
|
79 4 4250 17506 1385 822 |
|
80 5 6500 23208 639 746 |
|
81 6 7000 12946 802 1281 |
|
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 |
|
145 ; |
|
146 |
|
147 param output_data default 0.0 : |
|
148 |
|
149 PrescrVol kDollarValue := |
|
150 |
|
151 1 12293 61.00 |
|
152 2 18400 92.00 |
|
153 3 16789 92.65 |
|
154 4 10700 45.00 |
|
155 5 9800 50.00 |
|
156 6 6500 29.00 |
|
157 7 8200 56.00 |
|
158 8 8680 45.00 |
|
159 9 33800 183.00 |
|
160 10 23710 156.00 |
|
161 11 24000 120.00 |
|
162 12 17500 75.00 |
|
163 13 25000 130.00 |
|
164 14 26000 122.00 |
|
165 15 26830 178.513 |
|
166 16 16600 106.00 |
|
167 17 90000 450.00 |
|
168 18 11140 73.624 |
|
169 19 25868 136.00 |
|
170 20 32700 191.295 |
|
171 21 29117 152.864 |
|
172 22 18000 100.00 |
|
173 23 11100 60.00 |
|
174 24 23030 137.778 |
|
175 25 10656 58.00 |
|
176 26 24682 152.095 |
|
177 27 26908 120.00 |
|
178 28 16464 80.00 |
|
179 29 57000 321.00 |
|
180 30 17532 94.747 |
|
181 31 30035 168.00 |
|
182 32 16000 100.00 |
|
183 33 63700 277.00 |
|
184 34 18000 90.00 |
|
185 35 27339 139.134 |
|
186 36 19500 116.00 |
|
187 37 13000 80.00 |
|
188 38 15370 102.00 |
|
189 39 18446 90.00 |
|
190 40 56000 260.00 |
|
191 41 73845 364.951 |
|
192 42 28600 145.00 |
|
193 43 27000 243.00 |
|
194 44 52423 279.816 |
|
195 45 73759 363.388 |
|
196 46 20500 80.00 |
|
197 47 27100 115.00 |
|
198 48 15000 110.00 |
|
199 49 50895 277.852 |
|
200 50 19707 128.00 |
|
201 51 17994 78.80 |
|
202 52 36135 167.222 |
|
203 53 30000 153.00 |
|
204 54 26195 125.00 |
|
205 55 28000 216.00 |
|
206 56 24658 152.551 |
|
207 57 36850 190.00 |
|
208 58 29250 183.69 |
|
209 59 50000 250.00 |
|
210 60 40078 265.443 |
|
211 61 20200 110.00 |
|
212 62 12500 75.00 |
|
213 63 30890 195.00 |
|
214 64 31000 175.00 |
|
215 65 31277 192.992 |
|
216 66 11500 75.00 |
|
217 67 30000 175.668 |
|
218 68 38383 190.00 |
|
219 69 2075 8.650 |
|
220 ; |
|
221 |
|
222 end; |