需要评价指标:网络搜索……
问题描述
问题分为三层:目标层,准则层,方案层。
以一个经典的旅游地选取为例,问题得层次结构如下:
问题解决步骤
正互反矩阵(判断矩阵)
判断矩阵的作用:
对每一层的指标进行打分,得到指标的权重,然后将这些权重用于下一层的指标。
性质 :
\(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,判断矩阵的一致性可以接受,否则需要修正)
一致矩阵计算权重:
对于每个指标权重的计算有三种方法:
-
直接算特征向量(最好)
-
算数平均法求权重:
每列的数据,按列进行归一化。
算数平均法公式:
-
几何平均法求权重:
有三步:
第一步:将A的元素按照行相乘得到一个新的列向量
第二步:将新的向量的每个分量开n次方
第三步:对该列向量进行归一化即可得到权重向量
几何平均法公式:
对于后两种方法,非一致性矩阵算出的每列的权重可能不同,可以求平均值。
代码
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
标签:特征值,层次,特征向量,矩阵,pos,分析法,一致性,权重
From: https://www.cnblogs.com/cxy1114blog/p/18300837