本文章是学习清风老师数学建模视频后所做的笔记,其中一些图片及代码实现来源于清风老师的B站视频: 【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DW411s7wi

如果大家发现文章中有任何错误,欢迎在留言区批评指正,我也会持续更新有关数学建模学习的笔记。


目录

一、算法简介

二、问题分析及理论基础

层次分析法的思想:

一致性检验步骤:

计算权重:

1、算术平均法

2、几何平均法:求几何平均值

3、特征值法:

总结:

层次分析法步骤

三、层次分析法的缺点

四、代码实现

五、例题  耳机挑选问题



一、算法简介

层次分析法(The analytic hierarchy process,简称AHP),建模比赛中最基础的一类模型之一,主要用于解决评价类问题(例如:选择哪种方案最好、哪位运动员或者员工表现的更加优秀)。

该方法将定量分析与定性分析结合起来,通过决策者的经验或者搜集得到的数据,对评价准则和方案划定权重,最后得到一个综合权重,结合实际问题得到最优方案。

二、问题分析及理论基础

在建模题目中当看到确定评价指标,形成评价体系等字眼,可看作评价类问题。注意:评价类问题可用打分解决(也就是权重表格的形式)

当我们在解决这一问题时,我们可以从三个问题出发确定思路:

1、我们评价的目标是什么?(一般题目中会出现,例如选择哪种方案最好)

2、我们为了达到这个目标有哪几种可选方案?

3、评价准则或者说标准是什么?(题目中会出现或者查询论文得到相关准则)

例如在小明高考后选择学校的问题中,我们评价的目标是在武大和华科中选择一个更适合小明的学校,有武大和华科两种可选方案,通过查询得知,评价一个学校的标准可简要分为几类:学习氛围、就业前景、男女比例、校园景色。确定好方案和准则后,由小明来为方案和准则打分(划定权重),最后算出综合权重,来确定武大华科哪一个学校更适合小明。

层次分析法的思想:

在为方案和准则打分时,也就是划定权重时,容易面临一个问题:当一次性考虑多个指标之间的关系时,容易考虑不周,以致于对方案多次划定权重时,每一次的权重会不一样。

解决方法:指标之间两两相比划定权重,最后根据两两比较的结果得到最后多个指标之间的权重关系。

  接下来将介绍如何进行两两相比,以及如何推算出最终权重。

首先这是一个判断矩阵,我们会对景色、花费等五个准则进行两两打分,

当我们根据数据进行打分时,如果认为花费比景色略微重要(介于同样重要与稍微重要之间),在标度表中处于2的重要性,就在A[2,1]处标上2,同时景色比花费的标度为1/2,在A[1,2]处标上1/2。

当我们两两打分后可以得到一个完整的判断矩阵。

同时还要根据每一个准则对方案打分,就当前例子而言:想得到苏杭、北戴河、桂林在景色、花费、居住等五个方面的权重,就要按每一个准则对三种方案进行打分,换句话说,有几个准则,就要打几次分,最终得到在每个准则下的方案权重。

但这里会面对一个问题:可能会出现矛盾之处(如下图),也就是不一致的现象。这就需要我们去改动权重,但实际操作中,如果判断矩阵的准则很多,无法轻易得知是否有不一致的现象。所以需要了解一致矩阵的特征:各行(各列)之间存在倍数关系。

但在实际建模过程中,绝对的一致矩阵(这里指:得到的判断矩阵完美符合一致矩阵的定义)是不存在的,所以我们在计算最终权重之前,需要对判断矩阵进行一致性检验,来检验判断矩阵和一致矩阵之间是否存在较大差距。

一致性检验步骤:

1、计算一致性指标CI

2、查表找到平均随机一致性指标RI

 3、计算一致性比例CR

如果计算得到CR<0.1,则该判断矩阵通过一致性检验,一致性可以接受。

如果未通过,则要修改权重,是判断矩阵更加贴合一致矩阵。

计算权重:

1、算术平均法

一致矩阵:对每一列进行归一化

因为一致矩阵每一列都存在倍数关系,所以用任何一列求权重都是可以的,以上公式为第一个指标所占权重。

对于非一致矩阵,因为每一列不存在倍数关系,所以对每一列进行归一化会得到不同的权重,还需对权重进行处理,也就是求均值。

2、几何平均法:求几何平均值

3、特征值法:

对于一致矩阵来说,因为各行之间存在倍数关系,通过行变换后,可以得到秩为1的矩阵,有一个特征值为一致矩阵的迹n,其余特征值为0。可以得到当特征值为n时,特征向量正好为,正好为一致矩阵的第一列,由此可计算权重。

假如判断矩阵通过一致性检验时,可以仿照一致矩阵权重的求法,算出对应的特征向量后进行归一化处理。

一般论文中使用特征值法得到权重,但比赛中推荐三种方法都用。

总结:

层次分析法步骤

1、分析系统中各因素之间的关系,建立系统的递阶层次结构。

2、对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。

3、对判断矩阵进行一致性检验,一致性检验通过后,计算权重。

4、计算各层元素对系统目标的合成权重,并进行排序。

最终权重=准则权重*方案权重

三、层次分析法的缺点

1、评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异可能会很大。

2、在理想情况下,准则两两评价的打分是由专家讨论研究得到,而比赛中则由参赛者自己打分,对于题目中有关决策层已经给出数据,无法打分的情况下,层次分析法不能很好的解决这类问题。

四、代码实现

%% 注意:在论文写作中,应该先对判断矩阵进行一致性检验,然后再计算权重,因为只有判断矩阵通过了一致性检验,其权重才是有意义的。
%% 在下面的代码中,我们先计算了权重,然后再进行了一致性检验,这是为了顺应计算过程,事实上在逻辑上是说不过去的。
%% 因此大家自己写论文中如果用到了层次分析法,一定要先对判断矩阵进行一致性检验。
%% 而且要说明的是,只有非一致矩阵的判断矩阵才需要进行一致性检验。
%% 如果你的判断矩阵本身就是一个一致矩阵,那么就没有必要进行一致性检验。disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A);
% % % % % % % % % % % % %方法1: 算术平均法求权重% % % % % % % % % % % % %
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)
% % % % % % % % % % % % %方法2: 几何平均法求权重% % % % % % % % % % % % %
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A ./ sum(Prduct_n_A))
% % % % % % % % % % % % %方法3: 特征值法求权重% % % % % % % % % % % % %
[V,D] = eig(A);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )
% % % % % % % % % % % % %下面是计算一致性比例CR的环节% % % % % % % % % % % % %
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];  %注意哦,这里的RI最多支持 n = 15
% 这里n=2时,一定是一致矩阵,所以CI = 0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
elsedisp('注意:CR >= 0.10,因此该判断矩阵A需要进行修改!');
end

五、例题  耳机挑选问题

首先在知网上查询耳机等关键词查询资料,得到耳机购买的四个影响因素:音质、价格、外观、功能。然后2020耳机排行榜上得到排行榜前三的三个品牌:索尼、漫步者、苹果、形成三个方案。

对准则和方案进行评价,在对准则进行评价时主观性较大,此处评价为笔者自行打分,

准则 音质 价格 外观 功能
音质

1

4 6 8
价格 1/4 1 4 5
外观 1/6 1/4 1 2
功能 1/8 1/5 1/2 1

方案评价:方案评价中参考知乎对三个品牌耳机的评价

音质 索尼 漫步者 苹果
索尼 1     4     8    
漫步者  1/4 1     4    
苹果  1/8  1/4 1    
价格 索尼 漫步者 苹果
索尼 1      1/2  1/4
漫步者 2     1      1/2
苹果 4     2     1    
外观 索尼 漫步者 苹果
索尼 1      1/2  1/6
漫步者 2     1      1/3
苹果 6     3     1    
功能 索尼 漫步者 苹果
索尼 1      1/3  1/8
漫步者 3     1      1/4
苹果 8     4     1    

通过一致性检验后,利用算数平均法,几何平均法,特征值法形成最终权重

准则权重 索尼 漫步者 苹果
音质 0.6147 0.7071 0.2227 0.0702
价格 0.245 0.1429 0.2857 0.5714
外观 0.0865 0.1111 0.2222 0.6667
功能 0.0539 0.0783 0.02051 0.07167
最终权重 0.48349539 0.227215979 0.244677503

(此处用excel处理时,可以F4锁定准则权重加以计算)

得到最终权重,综合来看对小明来说购买索尼耳机比较合适。

[清风数学建模]层次分析法(AHP)笔记及代码实现相关推荐

  1. 数学建模 --- 层次分析法(AHP模型)

    层次分析法 评价类问题 该问题思路 选出相关指标,求各个指标之间的权重 和 对某个指标而言各个选择权重(分而治之思想) 计算每个方案的得分 层次分析法 层次分析法第一步 --- 层次结构图 层次分析法 ...

  2. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  3. 数学建模|层次分析法笔记

    一.什么是层次分析法?  定义: 由目标.方案.指标三部分组成. 框架图: 1.含子准则: 2.方案多种(方案交叉): 3.一对多(一准则多方案,方案不交叉): 二.层次分析法如何设计? 层次分析法步 ...

  4. 数学建模层次分析法例题及答案_斩获国际特等奖!兰理工数学建模团队为百年校庆献礼...

    近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布. 兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(Outstanding Winner)1项.一等奖(Meritorious ...

  5. 数学建模 层次分析法

    层次分析法介绍 层次分析法是对一些较为复杂而且模糊的问题做出分析的一种简易方法,它适用于解决难以完全定量的问题. 该方法在数学建模中运用较多,但是主观因素很大,特别是构造成对比较矩阵的时候,必须要有完 ...

  6. 数学建模层次分析法一致性检验建立

    2023年2月11日,备赛美赛复习建模需要使用的算法.在复习层次分析法的过程可以发现,层次分析法建立判断矩阵时具有强主观性,这个时候就需要建立一致性检验,对模型的差异性进行评估. 计算一致性比例: ​ ...

  7. 数学建模-层次分析法

    决策 层次分析法原理 相对重要权值的确定 算法步骤 目标层 准则层 方案层 层次分析法解决旅游问题 B1~B5表示 5个属性对于三地的各个重要性 通过层次分析矩阵 得到 各个属性相对于目标的权重. 最 ...

  8. 数学建模层次分析法例题及答案_【热门推荐】影响力意志力创新力、数学建模简明教程...

    <影响力•意志力•创新力> 索书号:B848.4-49/1028 作者:邢群麟编著 出版社:浙江工商大学出版社,2018 馆藏地:新馆304室 简介:本书在总结众多成功人士经验的基础上, ...

  9. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

最新文章

  1. oracle rac ora 12537,解决11gR2 Rac ORA-12537: TNS:connection closed 一例
  2. (转)目前比较全的CSS重设(reset)方法总结
  3. Python mat与array的区别
  4. html 正方形缩略图,html – 纯CSS图像缩略图
  5. 局域网网速太慢的问题
  6. 【推荐】HDC2021华为开发者大会技术分论坛内部课件合集
  7. 计算机高中期末总结作文,高中学期总结作文
  8. 二阶齐次线性微分方程的通解公式_二阶常系数齐次线性微分方程通解
  9. fanuc机器人四边形编程_FANUC机器人编程与操作
  10. 问题 D: 寻找丢失的LZY
  11. DNC: A deep neural network-based clustering-oriented network embedding algorithm 2021
  12. 获取手机状态栏的高度
  13. 论文阅读:CVPR2016 Paper list
  14. 对啊英语音标---一、什么是字母的名称音和发音
  15. layui实现空气日历动态日期变色
  16. 带着问题学 Kubernetes 抽象对象 Service 服务间调用
  17. 滴滴云GPU服务器做深度学习之tensorflow object detect 对象检测 实践
  18. 【PyTorch】nn.Conv2d函数详解
  19. 协同办公系统(OA系统)选型对比参考
  20. pytorch转换onnx,再转换caffe 测试caffe, pytorch 模型结果是否一致

热门文章

  1. 菜鸟站长之家带你了解什么是百度SEO快排技术
  2. Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
  3. css中“zoom:1”是什么意思
  4. Hadoop随堂练习
  5. android bitmap转图片_这是一份面向Android开发者的复习指南
  6. 事实、循环、条件判断
  7. 搭建服务器 运用阿里云DNS自己实现DDNS
  8. (贫民窟系列)Raspberry 树莓派+L298N+Python控制小车
  9. MTK平台基于EV1527的无线接收和发射程序
  10. pika rabbitmq ssl