通常の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