1. 程式人生 > >層次分析法(AHP)—matlab實現

層次分析法(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