matlab層次分析法迅速求權重

層次分析法是一種用處非常廣的決策算法

雖然內容等於拍腦袋,不過有時候我們就是需要爲拍腦袋找到合適的說法。

雖然它往往用於解決多目標選擇的問題,但我們也可對其因素進行分析,來得到一個因素權重。

當然對於各因素求權重,需要建立一個評價矩陣(也就是拍腦袋)

本段matlab代碼即時利用評價矩陣求權重的內容,相當於目標決策的前半段部分,非常簡單實用。

%層次分析法
A=[1 1/4 1/2 1/3 1/9;4 1 3 2 1/4;2 1/3 1 1/2 1/7;3 1/2 2 1 1/5;9 4 7 5 1];
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1))
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2))
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
31
w=y(:,i)/a;
t=m(i)
disp(w)
[v,d]=eig(A);
r=d(1,1);
CI=(r-n)/(n-1);
RI=[0 0 0.58 0.9 1012 1.24 1.32 1.41 1.45]
CR=CI/RI(n)
if CR<0.1
CR_result='通過'
else
CR_result='不通過'
end
disp('CR_result')

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章