層次分析法(AHP)—matlab實現
層次分析法是一種主觀的決策方法,可以用來確定一些指標權重,輔助決策依據的一種定性分析方法,層次分析法運用前需要構造層次模型:決策層,中間層(指標層),底層(選擇層);形成等級層次;然後構造兩兩對比矩陣,通過9分位數來進行構造;對對比矩陣進行求最大特徵值和特徵向量,進行一致性檢驗;最後得到權重向量。具體實現過程如下Matlab程式:
clc;
clear;
A=[1 1.2 1.5 1.5;
0.833 1 1.2 1.2;
0.667 0.833 1 1.2;
0.667 0.833 0.833 1];
%因素對比矩陣A,只需要改變矩陣A
[m,n]=size(A); %獲取指標個數
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
R=rank(A); %求判斷矩陣的秩
[V,D]=eig(A); %求判斷矩陣的特徵值和特徵向量,V特徵值,D特徵向量;
tz=max(D);
B=max(tz); %最大特徵值
[row, col]=find(D==B); %最大特徵值所在位置
C=V(:,col); %對應特徵向量
CI=(B-n)/(n-1); %計算一致性檢驗指標CI
CR=CI/RI(1,n);
if CR<0.10
disp('CI=');disp(CI);
disp('CR=');disp(CR);
disp('對比矩陣A通過一致性檢驗,各向量權重向量Q為:');
Q=zeros(n,1);
for i=1:n
Q(i,1)=C(i,1)/sum(C(:,1)); %特徵向量標準化
end
Q