[懐古シリーズ]GAMSでDEA-CCRモデルのプログラムを作成
![NO IMAGE](https://dicekcom.vivian.jp/wp-content/themes/lionblog/img/img_no.gif)
懐古シリーズは引き続き、自作プログラムたちの紹介。もう10年近く前に作ったやつなのでもっと効率的な記述方法はあるかもしれないですが。備忘録として。
DEA(CCRモデル)のGAMSプログラム(2007/12/7)
需要が全く無いのは分かるけども,あくまで自己満足のために自作したGAMSプログラムを置いていくことにする.今回はDEA-CCR Model.
$title Data Envelopment Analysis - DEA(CCR 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); * 目的関数及び制約条件の設定* 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); *使用モデルと変数の宣言* model dea /dii,dio/; *データの変換作業* 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-
前の記事
[懐古シリーズ]何とかスタンな国々に行った時の話(タジキスタン・キルギス出張) 2015.11.03
-
次の記事
[懐古シリーズ]GAMSでDEA-BCCモデルのプログラムを作成 2015.11.08