[懐古シリーズ]GAMSでInverted DEAモデルのプログラムを作成
GAMSプログラム紹介シリーズラストです。Inverted DEAのプログラムです。DEAが効率性を計測するモデルなのに対し、Inverted DEAは「非効率性」を計測するモデルということになります。両者は効率値の評価式の取り方が異なるため、DEAの効率値とIDEAの非効率値の間に本質的には関係がないということが重要なのですが、その辺は以下の論文等で詳しく書かれてます。興味ある方はご覧ください。
円谷友英・前田豊・田中英夫:区間効率値によるDEAモデル, 数理解析研究所講究録, Vol.1079, pp.224-232, 1999.
Inverted DEAのGAMSプログラム例(2018/1/16)
主問題のみ.λ使った双対問題はまた今度紹介する.(→と言いつつ、2015年現在、紹介できていないわけですが・・・まぁ、また追々ということで・・・)
************************************************* *Inverted DEA Model * *Dice-K 2008/01/16 ************************************************* *パラメータの設定* sets i "DMU's" /DMU1*DMU5/ j 'inputs and outputs' /out,in1,in2/ inp(j) 'inputs' /in1,in2/ outp(j) 'output' /out/ ; *対象DMUの設定* set j0(i) 'current DMU'; *データ入力* Table data(i,j) out in1 in2 DMU1 50 5454 1135 DMU2 27 5109 957 DMU3 55 2465 357 DMU4 35 3261 1763 DMU5 37 4354 1735 ; *変数をデータから拾う* parameter x(inp,i) 'inputs of DMU i' y(outp,i) 'outputs of DMU i' ; *係数の設定* positive variables v(inp) 'input weights' u(outp) 'output weights' ; *無次元パラメータの設定* variable eff 'efficiency' sigm ; *数式の定義* equations objective(i) 'objective function: maximize efficiency' normalize(i) 'normalize input weights' limit(i) "limit other DMU's efficiency" ; *目的関数* objective(j0).. eff =e= sum(inp, v(inp)*x(inp,j0)); *制約条件* normalize(j0).. sum(outp, u(outp)*y(outp,j0))+sigm =e= 1; limit(i).. sum(outp, u(outp)*y(outp,i))+sigm =g= sum(inp, v(inp)*x(inp,i)); *モデルの定義* model dea /objective, normalize, limit/; *データの変換* alias(i,iter); x(inp,i) = data(i,inp); y(outp,i) = data(i,outp); parameter efficiency(i), out(i,outp),in(i,inp) 'efficiency of each DMU'; *効率性計算のループ* loop(iter, j0(i) = no; j0(iter) = yes; solve dea using lp maximizing eff; abort$(dea.modelstat<>1) "LP was not optimal"; efficiency(iter) = eff.l; out(iter,outp) = u.l(outp); in(iter,inp) = v.l(inp); ;) *結果の出力* display efficiency,out,in;
最新情報をお届けします
Twitter でdicekcomをフォローしよう!
Follow @dicekcom-
前の記事
[懐古シリーズ]GAMSでDEA出力指向型モデルのプログラムを作成 2015.11.08
-
次の記事
[懐古シリーズ]SFAやDEAといった効率性分析ソフトならこちらをどうぞ 2015.11.08