[懐古シリーズ]GAMSでDEA-BCCモデルのプログラムを作成
つづいてBCCモデル。結構まめに整理していたんだなぁと当時の自分に感心。
DEA(BCCモデル)のGAMSプログラム(2007/12/7)
すぐお分かりかと思うが,変えているのは制約条件のみ.制約条件の中でlamdaのSumを1にすることによって収穫可変を表現している.
$title Data Envelopment Analysis - DEA(BCC Model dual) ********************************************************** *2007/12/01 *programmed by dice-K (Harmony*Harmony) * ********************************************************** *変数及びDMUの宣言* *iはDMU,jは変数の種類* sets i "DMU's" /city1*city10/ j 'inputs and outputs and costs' /speed,c_pkm, p_pkm/ inp(j) 'inputs' /c_pkm, p_pkm/ outp(j) 'outputs' /speed/; *分析対象DMUの決定* set j0(i) 'current DMU'; *データの入力* Table data(i,j) speed c_pkm p_pkm city1 50.51 5454.2 1135.92 city2 27.30 5109.75 957.59 city3 55.75 24656.93 357.85 city4 35.33 3261.41 1763.58 city5 37.57 4354.82 1735.63 city6 57.35 8105.73 3114.18 city7 32.17 6967.87 665.79 city8 58.19 12639.91 719.8 city9 45.26 5741.48 1612.8 city10 46.60 11208.22 925.28 ; *変数の決定* Positive variable lamda(i); parameter x(i,inp), y(i,outp); Variable eff; *使用する式の宣言* Equations dii(i,inp), dio(i,outp),convex; * 目的関数及び制約条件の設定* dii(j0,inp).. sum(i, lamda(i)*x(i,inp)) =l= eff*x(j0,inp); dio(j0,outp).. sum(i, lamda(i)*y(i,outp)) =g= y(j0,outp); convex.. sum(i,lamda(i)) =e=1; *使用モデルと変数の宣言* model dea /dii,dio,convex/; *データの変換作業* alias(i,iter); x(i,inp) = data(i,inp); y(i,outp) = data(i,outp); *出力の際の変数の設定* parameter efficiency(i),lam(iter,i); *効率性計算のためのループ* loop(iter, j0(i) = no; j0(iter) = yes; solve dea using lp minimizing eff; abort$(dea.modelstat<>1) "LP was not optimal"; lam(iter,i) = lamda.l(i); efficiency(iter) = eff.l ;) *結果の表示* display efficiency,lam;
最新情報をお届けします
Twitter でdicekcomをフォローしよう!
Follow @dicekcom-
前の記事
[懐古シリーズ]GAMSでDEA-CCRモデルのプログラムを作成 2015.11.08
-
次の記事
[懐古シリーズ]GAMSでDEA出力指向型モデルのプログラムを作成 2015.11.08