层次分析法

需要评价指标:网络搜索……

问题描述

问题分为三层:目标层,准则层,方案层。

以一个经典的旅游地选取为例,问题得层次结构如下:

问题解决步骤

首先,对准则层构造判断矩阵,得到特征向量,验证一致性,若一致性良好,则特征向量可以表示每个准则的权重。

然后,对于准则层的每个准则,都可以构建一个所有方案再该准则上的矩阵,得到特征向量作为所有方案在某个指标上的得分。

最后,再利用权重算总分。

正互反矩阵(判断矩阵)

判断矩阵的作用:

对每一层的指标进行打分,得到指标的权重,然后将这些权重用于下一层的指标。

性质 :

\(A_{ij}*A_{ji}=1\)

\(A_{11}=A_{22}=……=1\)

\(A_{ij}>0\)

一致反矩阵:每一行或每一列成比例

引理:n阶一致反矩阵A的特征值\(λ_{max}=n,\)

当且仅当A为正互反矩阵且不一致时,一定满足\(λ_{max}>n.\)

一致性检验步骤:

一致性检验合格的矩阵才能使用,从而获得权重。

1.计算一致性检验指标\(CI=(λ_{max}n)/(n-1).\)

2.查找对应的平均随机一致性指标RI

3.计算一致性比例\(CR=CI/RI\).(CR<0.1,判断矩阵的一致性可以接受,否则需要修正)

一致矩阵计算权重:

直接算特征向量,以特征值最大的向量的各个分量作为权重。

代码

function [w,t] = AHP(A)
%w为准则层特征向量,t为则层最大特征根
%判别矩阵具有完全一致性
[n,n]=size(A); % 得到矩阵的阶数
[V,D]=eig(A); % 求得特征向量和特征值

% 求出最大特征值和它所对应的特征向量
tempNum=D(1,1); % 特征值的初值
pos=1; % 标记的第一个数
for h=1:n
    if D(h,h)>tempNum
        tempNum=D(h,h);
        pos=h; % 最大特征值的位置
    end
end
w=abs(V(:,pos)); % 找最大特征值对应的特征向量
w=w/sum(w); % 归一化处理
t=D(pos,pos); % t指的是最大的特征值
disp('准则层特征向量w=');disp(w);disp('准则层最大特征根t=');disp(t);

% 一致性检验
CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59 1.60 1.61 1.615 1.62 1.63];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
else disp('此矩阵的一致性验证失败,请重新进行评分!');
end

end
posted @ 2024-07-13 22:19  West11  阅读(81)  评论(0)    收藏  举报