层次分析法
需要评价指标:网络搜索……
问题描述
问题分为三层:目标层,准则层,方案层。
以一个经典的旅游地选取为例,问题得层次结构如下:
问题解决步骤
首先,对准则层构造判断矩阵,得到特征向量,验证一致性,若一致性良好,则特征向量可以表示每个准则的权重。
然后,对于准则层的每个准则,都可以构建一个所有方案再该准则上的矩阵,得到特征向量作为所有方案在某个指标上的得分。
最后,再利用权重算总分。
正互反矩阵(判断矩阵)
判断矩阵的作用:
对每一层的指标进行打分,得到指标的权重,然后将这些权重用于下一层的指标。
性质 :
一致反矩阵:每一行或每一列成比例
引理:n阶一致反矩阵A的特征值
当且仅当A为正互反矩阵且不一致时,一定满足
一致性检验步骤:
一致性检验合格的矩阵才能使用,从而获得权重。
1.计算一致性检验指标
2.查找对应的平均随机一致性指标RI
3.计算一致性比例
一致矩阵计算权重:
直接算特征向量,以特征值最大的向量的各个分量作为权重。
代码
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
本文作者:cxy1114blog
本文链接:https://www.cnblogs.com/cxy1114blog/p/18300837
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步