Home

Figure 9. Example of a GAMS program to solve an output-oriented DEA model which estimates technical efficiency, capacity output, and capacity utilization.

1. $oninline;
2. Set inout /spec1, spec2, fix1, fix2, var1, var2/
3. Output(inout) /spec1, spec2/
4. Input(inout) /fix1, fix2, var1, var2/
5. Fixed(inout) /fix1, fix2/
6. Var(inout) /var1, var2/
7. Obs /1*500/
8. Subobs(obs) /1*10/
9. Actobs(obs);
10. /*next, define an alias for the set subobs*/
11. Alias (subobs, subobs1)
12. $offlisting
13. Table act(obs,inout) input output table
14. $ondelim
15. $include "data.csv"
16. $offdelim
17. $onlisting
18. Variables
19. Theta efficiency score
20. Weight(obs) weights
21. Lambda(obs, var);
22. Positive variable weight, lambda;
23. Equations
24. Constr1(output,obs) DEA constraint for each output
25. Constr2(input,obs) DEA constraint for all inputs
26. Constr3(fixed,obs) DEA constraint for fixed inputs
27. Constr4(var,obs) DEA constraint for variable inputs;
28. Constr1(output, actobs).. sum(subobs,weight(subobs)*act (subobs,output)) =G= theta*act(actobs, output);
29. Constr2(input, actobs).. sum(subobs, weight(subobs)*act(subobs,input)) =L= act(actobs, input);
30. Constr3(fixed, actobs).. sum(subobs, weight(subobs)*act(subobs,fixed)) =L= act(actobs, fixed);
31. Constr4(var, actobs).. sum(subobs, weight(subobs)*act(subobs,var)) =E= lambda(actobs,var)*act(actobs,var);
32. Parameter
33. Score1(obs,*) theta estimates
34. Score2(obs,var) hold variable input levels
35. ;
36. File effic /greff.txt/
37. Capmod /grcap.txt/;
38. Model tedea /constr1, constr2/
39. Model cap /constr1, constr3, constr4/
40. Loop (subobs1,
41. Actobs(obs)=no;
42. Actobs(subobs1)=yes;
43. Option LP=OSL;
44. Solve tedea maximizing theta using LP;
45. Score1(subobs1,"TE")=theta.l;
46. Put effic;
47. If ((tedea.modelstat eq 1 and tedea.solvestat eq 1),
48. Put @1, subobs1.tl, @10, "optimal", @20, "normal completion"/
49. Else
50. Put @1, subobs1.tl, @10, tedea.modelstat:>2:0, @20,
51. Tedea.solvestat:>2:0/
52. )
53. );
54. Loop (subobs1,
55. Actobs(obs)=no;
56. Actobs(subobs1)=yes;
57. Option LP=OSL;
58. Solve cap maximizing theta using LP;
59. Score1(subobs1,"cap")=theta.l;
60. Score2(subobs1,var)=lambda.l(subobs1,var);
61. Put capmod;
62. If ((tedea.modelstat eq 1 and tedea.solvestat eq 1),
63. Put @1, subobs1.tl, @10, "optimal", @20, "normal completion"/
64. Else
65. Put @1, subobs1.tl, @10, tedea.modelstat:>2:0, @20,
66. Tedea.solvestat:>2:0/
67. )
68. );
69. Score1(subobs1,"CU")=score1(subobs1,"TE")/score1(subobs1,"cap");
70. Parameter capest(subobs1) capacity estimate;
71. Capest(subobs1)=sum(output, score1(subobs1,"cap")*act(subobs1, output));
72. File res /caputil1.csv/;
73. Res.pc=5;
74. Res.pw=160;
75. Put res;
76. Put 'obs';
77. Loop (output,
78. Put output.tl);
79. Loop (input,
80. Put input.tl);
81. Put 'TE', 'capout', 'capacity', 'CU',
82. Loop (subobs1,
83. Put /
84. Put subobs1.tl,
85. Loop (output,
86. Put act(subobs1,output));
87. Loop (input,
88. Put act(subobs1,input));
89. Put score1(subobs1,"TE"), score1(subobs1,"cap"),
90. Capest(subobs1), score1(subobs1,"CU");
91. );
92. Putclose res;

www.nefsc.noaa.gov
Search
Link Disclaimer
webMASTER
Privacy Policy
(Modified Jun. 13 2008)