层次分析法(附代码)

        层次分析法(The Analytic Hierarchy Process即AHP)是一种系统分析与决策的综合评价方法,其较合理地解决了定性问题定量化的处理过程。AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因素两两之间重要度的比较上,从而把难以量化的定性判断转化为可操作的重要度的比较上面。

步骤:

  1. 建立递阶的层次结构,将因素分为目标层、准则层、方案层等多个层次。
  2. 建立两两判断矩阵
  3. 计算各元素权重

以层次分析法在太阳镜产品质量评价中的应用这篇文章中的评价数据为例展示计算过程:

下图是太阳镜产品质量评价体系结构图:左中右分别为目标层、准则层和方案层

为便于表述,将准则层六个因素记为B1,...,B6,将方案层的因素记为C1,...,C20。

随后列出判断矩阵,以外观与结构(B1)为例

判断矩阵B1-C
B1C1C2C3
C1153
C20.210.3333
C30.333331

(判断矩阵中数据采用九分制标度法),记为 \begin{Bmatrix} a_{ij} \end{Bmatrix}

  •  a_{ij} 表示与指标j相比,i的重要程度
  • 当i=j,两个指标相同,故记为1
  • a_{ij}> 0 且满足 a_{ij}\times a_{ji}=1 (我们称满足这一条件的矩阵为正互反矩阵)

在使用判断矩阵求权重之前,必须对其进行一致性检验。

若正互反矩阵满足a_{ij}\times a_{ji}=a_{ik} ,我们称其为一致矩阵。

一致性检验,即检验我们构造的判断矩阵和一致矩阵是否有太大的差别。

引理:n阶正互反矩阵A为一致矩阵时当且仅当最大特征值 \lambda _{max}= n 且当正互反矩阵A非一致时,一定满足\lambda _{max}> n

一致性检验的步骤:

  1. 计算一致性指标CI:CI=\frac{\lambda _{max}-n}{n-1} (若特征值中有虚数,比较的是特征值的模长
  2. 查找对应的平均随机一致性指标RI
  3. 计算一致性比例CR:CR=\frac{CI}{RI}  如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
[V,D] = eig(A);
Max_eig = max(max(D));
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 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];
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
    disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
    disp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end

接下来用三种不同的方法求权重

算术平均法

第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)
第二步:将归一化的各列相加 ( 按行求和 )
第三步:将相加后得到的向量中每个元素除以 n 即可得到权重向量
clc,clear
disp('请输入判断矩阵A')
A=input('A=');
[n,n]=size(A);
Sum_A=sum(A); %得到总和的列向量
SUM_A=repmat(Sum_A,n,1); %得到与原矩阵相匹配的总和矩阵
Stand_A = A ./ SUM_A; %得到权重向量
disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)

几何平均法

第一步:将 A 的元素按照行相乘得到一个新的列向量
第二步:将新的向量的每个分量开 n 次方
第三步:对该列向量进行归一化即可得到权重向量
clc,clear
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
Prduct_A = prod(A,2); %得到一个包含每一行乘积的列向量。
Prduct_n_A = Prduct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))

特征值法

假如我们的判断矩阵一致性可以接受,那么我们可以仿照一致矩阵权重的求法。
第一步:求出矩阵A的最大特征值以及其对应的特征向量
第二步:对求出的特征向量进行归一化即可得到我们的权重
clc,clear
disp('请输入判断矩阵A')
A=input('A=');
[V,D] = eig(A); 
Max_eig = max(max(D)); %得到最大特征值
[r,c]=find(D == Max_eig , 1);  %得到最大特征值所在行列
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )

 

 

论文中采取数据与后两个方法相同,可根据需求进行选择。

将所有判断矩阵所得权重向量综合称一个权重矩阵,再乘以目标层到准则层得到的指标权重,可获得需要的结果。


为了保证结果的稳健性,本文采用了三种方法分别求出了权重后计算平均值,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。

层次分析法的局限性: 评价的决策层不能太多,太多的话 n 会很大,判断矩阵和一致矩阵差异 可能会很大。
  • 17
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zedkyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值