数学建模学习笔记——层次分析法

层次分析法

一、简介

层次分析法(AHP)主要用于解决评价类问题,是一种实用的多方案或多目标,定性与定量相结合的决策分析方法。
是将决策问题按总目标、评价准则、备选方案的顺序分解为不同的层次结构,然后求得每一层次的各元素对上一层次某元素的优先权重,最后得出各备选方案对总目标的最终权重,最终权重最大者即为最优方案。
填写这个表格,只需将指标权重与相应方案的准则层对应相乘即可

指标权重方案1方案2方案3
准则1
准则2
准则3

二、步骤

1.建立结构模型,包括目标层、准则层、方案层。
2.构造判断矩阵
由于一次性考虑多个准则之间的关系,往往会考虑不周,所以可以两两进行比较最终根据两两比较的结果来推算出权重

aij 代表i对于j的重要程度,与aji成倒数关系
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
这个矩阵就是判断矩阵
方案层对于准则层各准则的判断矩阵如下

准则方案1方案2方案3
方案11
方案21
方案31
aij1
  • 一致矩阵
    若矩阵中每个元素aij >0且满足aij × aji= 1 ,则称该矩阵为正互反矩阵。
    在层次分析法中,我们构造的判断矩阵均是正互反矩阵。
    若正互反矩阵满足aij× ajk = aik,则我们称其为一致矩阵。

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

3.一致性检验

定义一致性指标, C I = λ   m a x   − n n − 1 CI=\frac {\lambda~max~ -n}{n-1} CI=n1λ max n
CI=0,有完全的一致性;CI接近于0,有满意的一致性;CI越大,不一致越严重。为了衡量CI的大小,引入随机一致性指标RI表。

n1234567891011
RI000.580.901.121.241.321.411.451.491.51

一致性比率 C R = C R R I CR=\frac {CR}{RI} CR=RICR

当CR<0.1时,则认为通过一致性检验,否则要对判断矩阵加以调整
4.按列归一化计算权重
举个例子

景色苏杭北戴河桂林
苏杭125
北戴河1/212
桂林1/51/21

三种方法:
(1)算术平均法
仅使用第一列的数据,计算出来的权重:
苏杭=1/ (1+0.5+0.2)= 0.5882
北戴河=0.5/ (1+0.5+0.2)= 0.2941
桂林=0.2/ (1+0.5+0.2) =0.1177
使用第二列的数据,计算出来的权重:
苏杭=2/ (2+1+0.5) = 0.5714
北戴河=1/ (2+1+0.5) = 0.2857
桂林=0.5/ (2+1+0.5)= 0.1429
使用第三列的数据,计算出来的权重:
苏杭=5/ (5+2+1) =0.625
北戴河=2/ (5+2+1)= 0.25
桂林=1/ (5+2+1) =0.125

得到

景色苏杭北戴河桂林
苏杭0.58820.57140.625
北戴河0.29410.28570.25
桂林0.11770.14290.125
未归一化的权重
苏杭0.5882+0.5714+0.625=1.7846
北戴河0.2941+0.2857+0.25=0.8298
桂林0.1177+0.1429+0.125=0.3856
权重
苏杭1.7846/3=0.5949
北戴河0.8298/3=0.2766
桂林0.3856/3=0.1285

(2)几何平均法

1:将A的元素按照行相乘得到一个新的列向量
2:将新的向量的每个分量开n次方
3:对该列向量进行归一化即可得到权重向量

(3)特征值法
1:求出矩阵A的最大特征值以及其对应的特征向量
2:对求出的特征向量进行归一化即可得到我们的权重

将得出结果填入表格

(一致矩阵只需要算一列,因为成比例判断矩阵,不一致,每列都要算)
再根据这个矩阵计算指标权重,也是以上三种方法
在这里插入图片描述
最后得到

指标权重苏杭北戴河桂林
景色0.26360.59490.27660.1285
花费0.4758
居住0.0538
饮食0.0981
交通0.1087

其余以此类推在这里插入图片描述

注:
一般论文利用层次分析法解决实际问题时,都是采用其中某一种方法求权重,而不同的计算方法可能会导致结果有所偏差。为了保证结果的稳健性,最好采用了三种方法分别求出了权重,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。

计算各方案得分,可使用excel减少工作量
在这里插入图片描述

有些缺点
1.不能为决策提供新方案,只能从备选方案中选择较优者。
2. 定量数据较少,定性成分多,不易令人信服
3. 指标过多时,数据统计量大,且权重难以确定

三、附上代码

%matlab
disp('请输入准则层判断矩阵A(n阶)');
A=input('A=');
[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);
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
  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值