[懐古シリーズ]GAMSでDEA出力指向型モデルのプログラムを作成
通常のDEAは入力指向で、出力フィックスで入力要素の最小化を図ることになるのですが、出力の最大化をどうしても表現したいときはこのモデルを。
DEA出力指向モデル(2007/12/18)
DEA出力指向モデル(出力の最大化を目指すモデル)のGAMSプログラム.
$title Data Envelopment Analysis - DEA(出力指向モデル) ********************************************************** *2007/12/18 *programmed by dice-K (Harmony*Harmony) * ********************************************************** *変数及びDMUの宣言* *iはDMU,jは変数の種類* sets i "DMU's" /city1*city5/ j 'inputs and outputs' /out1,in1,in2/ inp(j) 'inputs' /in1,in2/ outp(j) 'outputs' /out1/ ; *分析対象DMUの決定* set j0(i) 'current DMU'; *データの入力* Table data(i,j) out1 in1 in2 city1 10843 71.87 633.35 city2 16880 23.60 363.10 city3 4825 64.70 609.24 city4 9755 85.20 580.70 city5 16563 23.10 500.46 ; *変数の決定* Positive variable lamda(i) dual weights; parameter x(i,inp) 'inputs of DMU i' y(i,outp) 'outputs of DMU i'; Variable eff 'efficiency'; *使用する式の宣言* Equations dii(i,inp) 'input duals' dio(i,outp) 'output duals' convex 'BCC model' ; * 目的関数及び制約条件の設定* dii(j0,inp).. sum(i, lamda(i)*x(i,inp)) =l= x(j0,inp); dio(j0,outp).. sum(i, lamda(i)*y(i,outp)) =g= eff*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 maximizing eff; lam(iter,i) = lamda.l(i); efficiencydi(iter) = eff.l ;) *結果の表示* display efficiency,lam;
最新情報をお届けします
Twitter でdicekcomをフォローしよう!
Follow @dicekcom-
前の記事
[懐古シリーズ]GAMSでDEA-BCCモデルのプログラムを作成 2015.11.08
-
次の記事
[懐古シリーズ]GAMSでInverted DEAモデルのプログラムを作成 2015.11.08