层次分析法
需要评价指标:网络搜索……
问题描述
问题分为三层:目标层,准则层,方案层。
以一个经典的旅游地选取为例,问题得层次结构如下:

问题解决步骤
首先,对准则层构造判断矩阵,得到特征向量,验证一致性,若一致性良好,则特征向量可以表示每个准则的权重。
然后,对于准则层的每个准则,都可以构建一个所有方案再该准则上的矩阵,得到特征向量作为所有方案在某个指标上的得分。
最后,再利用权重算总分。
正互反矩阵(判断矩阵)
判断矩阵的作用:
对每一层的指标进行打分,得到指标的权重,然后将这些权重用于下一层的指标。
性质 :
\(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

浙公网安备 33010602011771号