数学建模方法——层次分析法(AHP)

article/2025/9/12 2:45:15

目录:

  1. 层次分析法简介
  2. 层次分析法基本原理
  3. 构造判断矩阵
  4. 一致性检验
  5. 一致性检验通过的判断矩阵求权重
    4.1 算数平均法求权重
    4.2 几何平均法求权重
    4.3 特征值法求权重
  6. 总结

0. 层次分析法简介
层次分析法(Analytic Hierarchy Process,简称AHP)主要是对于定性的决策问题进行定量化分析的方法。举个例子,在日常生活中,我们经常需要进行感性的判断,比如报高考志愿,感觉清华北大都很好,到底要报哪个;再比如去市场买菜,到底是买青椒做青椒炒鸡蛋,还是买黄瓜做黄瓜炒鸡蛋;再比如想去出游,到底是去公园A还是公园B。上面提到的这些问题,都是决策,也叫做评价类问题,最终的目的就是要评价到底哪个更好。这个方法在数学建模比赛,比如美赛等比赛中有时会用到,另外对日常的生活也有一定的指导。

那么如何用数学的评价体系去解决这类看似非常感性的问题呢,这就诞生了我们今天要讲的层次分析法。这里我们从浅入深对于层次分析法进行一个讲解。

1. 层次分析法基本原理

这里我们举一个例子让大家大致的了解层次分析法的基本原理。假如,小明想买一瓶饮料喝,他在纠结到底是买可乐好,还是雪碧好,还是汇源果汁,他非常的纠结,于是想建个模型来分析到底买哪种饮料好。

为了实现这个评价,首先我们要确定评价的指标,比如这里我们设定三种指标:饮料的口味,饮料的价格和饮料健康程度,那么最直观的量化方法就是给各个因素一个权重,然后给各个饮料进行打分,如下表:
在这里插入图片描述

表格中相同颜色的区域加和需要为1,这是为了标准化。所以我们来看一下这个表格,在评价指标方面,小明很注重健康因为给了健康0.5的权重,其次是口味0.3,最后是价格0.2; 具体的在口味方面,小明觉得可乐和雪碧差不多(0.35),果汁稍微差一点是0.3 以此类推,小明就只做了这张表格,为了计算每种饮料的得分,我们只需要把备选方案的权重乘对应的评价指标的权重并且加和即可,也就是:

可乐的最终得分是0.35×0.3+0.4×0.2+0.1×0.5 = 0.1005;
雪碧的最终得分是 0.35×0.3+0.4×0.2+0.2×0.5 = 0.1505;
汇源果汁的最终得分是 0.3×0.3+0.2×0.2+0.7×0.5 = 0.379;

通过比大小我们就看得出来汇源果汁的最终得分最高,所以小明应该选择汇源果汁。

回顾一下,为了量化的评价,我们需要确定评价指标,和备选方案两个重要的因素,接着分配权重(记得加和为1),最终通过乘法然后加和的方式得到最终的量化得分,从而做出最终的评价。

2. 构造判断矩阵

层级分析法就是简单的编造几个权重然后进行抉择么?当然不是,如何客观合理的设定表格中的权重才是重中之重,因此,我们这里介绍如何构造判断矩阵。

在现实问题中,往往存在很多个评价指标,让小明从饮料的口味,价格,健康,瓶盖能不能兑奖,瓶子是不是好看,自己是不是汇源果汁的代言人……等很多评价指标中给出合理的权重是一个非常困难的事情,也许小明现在给出的权重和一会儿给出的权重就完全不同,所以,为了简化思维过程,我们首先进行评价指标的两两比较,再将比较结果汇总成最终的权重。

为了量化两两比较的结果,我们要祭出一个评价体系表格(不要问我从哪里来~它的故乡在远方)说白了,就是在A和B两者比较中划分了一个1到9的重要等级。
在这里插入图片描述

举个例子,假如说饮料的健康性(A)和口味(B)相比,健康要明显重要,则我们就可以说A比B的权重是5。之后我们开始构建我们的判断矩阵。

在这里插入图片描述

上述的表格就是一个判断矩阵,我们可以看到这个判断矩阵有几个特点,对角线都为1,而且对角线对称的元素相乘都为1,这样的矩阵也被称为正互反矩阵。
为了更加数学的描述,我们设定矩阵的元素定义为a_ij代表了与j相比i的重要性,其中i表示行,j表示列, 其中a_ij>0而且a_ij×a_ji=1即对称元素相乘为1。当i=j时,也就是元素在对角线上时,元素为1。另外理想的情况下要满足a_ij=a_ik×a_kj 这个理想的条件我们在以后说明

在构造判断矩阵的过程中我们的元素是两两进行判断的,所以是不是有可能出现问题呢?答案是有可能的,我们将表格中的元素进行一个更改,并用绿色标记出,随后得到了如下的表格

在这里插入图片描述

我们看第一行,口味比价格重要(口味>价格)同时健康比口味重要(健康>口味),那么按照正常的推理我们是不是应该得到健康比价格重要(健康>口味>价格)然而实际上表格中填写的是价格比健康重要(价格>健康)这就出现了矛盾,也就是不一致现象。在理想情况下,在这里插入图片描述
,所以说,在理想的情况下a_ij=a_ik×a_kj 。理想的情况下的判断矩阵也有一些很好的性质,比如行列成比例,也就是说矩阵的秩为1,这里不进行深入的讨论。但是大部分的情况下,没办法达到如此的完美,那么为了量化评价这种不一致现象的大小,就需要在运算权重之前进行一致性的检验。

回顾一下,为了更合理的得到层次分析法表格中的权重,我们引入了数值为1-9的标度体系,并且用两两比较的方法构建了一个判断矩阵用于之后的权重计算,然而判断矩阵存在不一致的问题,因此我们要从数值的角度评价不一致的大小,以此引出一致性的检验。

3. 一致性检验

为了构建一个一致性的指标来验证矩阵的一致性,学者们主要参考了线性代数中的两个定理:

定理1:若A为一致性矩阵,则A的最大特征值λ_max⁡ = n,其中n为矩阵A的阶,A的其余特征值均为0。

定理2:n阶正互反矩阵为一致性矩阵,当且仅当其最大特征值λ_max⁡ = n,并且当正互反矩阵非一致时,必有λ_max⁡ > n。

从定理2的后半句中,我们可以看到,当一个正互反矩阵为非一致的矩阵的时候必有最大的特征值大于矩阵的阶,所以就想到可以使用最大特征值和矩阵的阶的差值来定义不一致性。这种想法看似复杂,其实超级朴素,比如时间不能倒流,所以出生后经过的年数就定义为你的年龄(年数-0)。

为此就定义了一致性指标CI,CI = (λ_max – n) / (n -1)。也就是说一致性指标CI越大,整个矩阵就越不一致,当CI是0的时候是完全理想的一直矩阵。(难道这不应该叫不一致性指标么???)

另外,为了得到计算出来的一致性指标到底是大还是小,我们又构建了平均随机一致性指标RI,该指标的构建方法是随机构建1000个正互反矩阵,并计算一致性指标的平均值。这里的RI也就是说当矩阵的阶数为n的时候随机的平均一致性。这相当于一把尺子,告诉大家如果完全随机(瞎蒙)的填写这个判断矩阵的结果的话,那么你的一致性指标的期望就大概是这个RI的值。RI如何计算呢?查表就可以了。
在这里插入图片描述
当CI和RI的比值小于0.1的时候,我们认为这个矩阵是一致的,也就是说你矩阵的一致性指标,要比平均的瞎蒙的一致性指标小一个数量级的时候,我们认为你就不是乱猜的了。这样我们就构建了我们的一致性比例CR = CI/ RI。如果说一个正互反矩阵的一致性比例没有小于0.1,那么就需要调整矩阵以满足要求。

在这里插入图片描述

举个例子,我们以这个判断矩阵为例,计算它是否满足一致性的要求,第一步是计算其最大的特征值,在matlab中,我们可以使用[x,y] = eig([1,3,1/5;1/3,1,1/6;5,6,1]); l_max = max(diag(y)); 计算得到,最后计算得到的最大特征值为3.0940, 我们可以看到这个值满足我们定理2中所说的要比矩阵的阶数3大。CI = (l_max -3) / ( 3 -1 ); 计算CI值是0.0470。RI值通过查表得到是0.52,最后我们的RI值就是CI/RI = 0.0904 < 0.1 所以这个矩阵满足一致性的要求。

回顾一下,这里主要讲如何验证矩阵的一致性,为了验证一致性构造了一致性比例CR,满足CR小于0.1的就认为该判断矩阵合理,不满足的就要对判断矩阵进行调整,得到合理的判断矩阵,得到合理的判断矩阵之后,就可以进行最初的,层次分析法的计算了。

4.一致性检验通过的判断矩阵求权重

得到了合理的判断矩阵我们这里就要计算每个影响因素所占的权重,这里主要有三种方法,算数平均法,几何平均法,和特征值法求权重
4.1 算数平均法求权重:(列归一化,行平均值)
对每列进行归一化处理,并且按照行求平均值就得到了我们最终的权重,这是最简单的计算方法,具体的方法如下:step1:列归一化
最左上角的元素归一化就是1/(1+1/3+5)=0.18;
第一行第二个元素的计算方法就是3/(3+1+6)=0.30以此类推;

在这里插入图片描述

Step2:行平均值
口味:(0.18+0.30+0.17)/3 = 0.22;
价格:(0.06+0.10+0.14)/3 = 0.10;
健康:(0.88+0.60+0.83)/3 = 0.77;
正常权重的加和是1,这里因为四舍五入的原因有一定的偏差。得到了权重之后,我们就可以写入最开始的表格了(还记得嘛?在算了这么多之后一定要牢记使命,别忘了最开始计算这些东西的目的是什么)

在这里插入图片描述

4.2 几何平均法求权重:(行相乘开n次方,列归一化)

这里的计算方法就是将行的元素都相乘,然后再开对应的n次方,并对得到的n个数字进行归一化即可。

4.3 特征值法求权重:(最大特征值的特征向量归一化)

特征值法其实是应用最多的一个方法,就是求最大特征值所对应的特征向量并进行归一化处理,matlab的计算方法如下:[x,y] = eig([1,3,1/5;1/3,1,1/6;5,6,1]); vec_max = x(:,1);得到的vec_max就是最大特征值对应的特征向量了。在本例中是0.26,0.12,0.96在对其进行归一化的处理,得到0.19,0.09,0.72 这样我们就用另一种方法求得了权重。

回顾一下这里介绍了三种不同的方法对判断矩阵的权重进行计算。除了这三个影响因素的判断矩阵以外,具体的表格中可乐,雪碧和汇源果汁的判断矩阵构造方法也是一样的。只需要列出以下的表格,检验一致性并最终计算即可。

在这里插入图片描述

5. 总结
以上就是层次分析法的全部过程,有几个小的问题需要进一步的讲解,当判断矩阵不满足一致性的时候我们调整的方法就是重新梳理整个矩阵的各个元素,可以利用理想状态下,行和列的元素成比例的性质进行微调。另外,层次分析法考虑的因素不能过多,不论是候选的种类,还是评价的指标都不能太多。除此之外,层次分析法主要是在主观的评价体系中进行决策,或者满意度的评价,当在一个问题中,已经有很多已知的数据的时候,这种方法就显得不太好了。


http://chatgpt.dhexx.cn/article/uVRhI8rW.shtml

相关文章

层次分析法(AHP)算法简介

一、模型介绍 层次分析法&#xff08;AHP&#xff09;是美国运筹学家萨蒂于上世纪70年代初&#xff0c;为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分…

层次分析法(AHP)原理_例题应用及代码

层次分析法(AHP)原理应用及代码 1.AHP算法步骤2.算法举例第一步:建立递阶层次图第二步:建立判断矩阵计算五个指标的判断矩阵计算三个方案相对于某一指标的权重第三步:进行一致性检验一致性检验的步骤第一步:计算一致性指标 C I CI CI第二步:查找对应的平均随机一致性指标…

小话层次分析法(AHP)

在目标决策领域&#xff0c;有的决策数据信息是量化的&#xff0c;如一个项目的未来收益、消耗成本等&#xff0c;通过对各种信息进行计算可以做出较好的决策&#xff1b;但有的决策数据信息并不全是数字化的&#xff0c;如项目信息为“这个收益更好”、“这个成本更高”这样的…

清风数学建模学习笔记——层次分析法(AHP)

层次分析法 层次分析法&#xff08;analytic hierarchy process&#xff09;&#xff0c;简称AHP。是建模比赛中比较基础的模型之一&#xff0c;其主要解决评价类的问题。如选择哪种方案最好&#xff0c;哪位员工表现最好等。 它是一个较为 主观 的评价方法&#xff0c;其在赋权…

层次分析法-yaahp软件使用

yaahp下载资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Y08-wgn0YTzrDCaqToZLRg 提取码&#xff1a;avkc 目录 一.打开yaahp软件 1.新建AHP空白文件 2.进入画布页面。 3.点击检查模型按钮&#xff0c;检查模型是否正确 二、构造判断矩阵 1.先创建决策…

AHP层次分析法详解

APH简介 起源 层次分析法&#xff08;AHP&#xff09;是美国运筹学家Saaty于上世纪70年代初&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分析方法。层次分析法是一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将…

AHP(层次分析法)的全面讲解及python实现

一、层次分析法的使用流程&#xff1a; 1. 建立层次结构模型 首先绘出层次结构图&#xff0c;正常三层是比较常见的&#xff1a;决策的目标、考虑的决策准则因素和决策对象。按它们之间的相互关系分为最高层、中间层和最低层&#xff08;如下图是四层结构的&#xff09; 2. 分…

层次分析法(AHP)基础概念整理+步骤总结

层次分析法是用来根据多种准则&#xff0c;或是说因素从候选方案中选出最优的一种数学方法 递阶层次的建立与特点 一般分为三层&#xff0c;最上面为目标层&#xff0c;最下面为方案层&#xff0c;中间是准则层或指标层。 最顶层是我们的目标&#xff0c;比如说选leader&…

层次分析法(AHP)模型的应用案例

层次分析法&#xff08;AHP&#xff09;模型的特点就是通过搭建递阶的层次结构&#xff0c;把我们生活中的判断事件转化到两两比较层次上面&#xff0c;从而把难于定性的判断来变为可实现数据操作的重要程度方面。在实际情况下&#xff0c;决策者可使用层次分析法&#xff08;A…

层次分析法(AHP)详细步骤

1. 算法简介 层次分析法&#xff08;AHP&#xff09;是美国运筹学家萨蒂于上世纪70年代初&#xff0c;为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时&#xff0c;应用网络系统理论和多目标综合评价方法&#xff0c;提出的一种层次权重决策分…

第一讲 综合评价分析—层次分析法(AHP)

写在前面&#xff1a;本文仅用于记录清风数模课程的笔记总结 AHP的主要特点是通过建立递阶层次结构&#xff0c;把人类的判断转化到若干因 素两两之间重要度的比较上&#xff0c;从而把难于量化的定性判断转化为可操作的重 要度的比较上面。在许多情况下&#xff0c;决策者可以…

层次分析法(AHP法)

目录 一、介绍 二、层次分析法的基本原理 三、层次分析法的主要步骤 四、层次分析法评价过程 1&#xff0c;建立多级阶梯的层次结构 2&#xff0c;求判断矩阵A 3&#xff0c;计算相对权重 1&#xff09;求和法 2&#xff09;求根法 4,结果 5&#xff0c;综合重要度计算 一…

层次分析法(AHP)详解+完整代码

层次分析法&#xff08;AHP&#xff09; 1.算法简述与原理分析 ​ 层次分析法是一种主观赋值评价方法也是一个多指标综合评价算法&#xff0c;常用于综合评价类模型。层次分析法将与决策有关的元素分解成目标、准则、方案等多个层次&#xff0c;并在此基础上进行定性和定量分…

层次分析法(AHP),超详解,进来秒懂!!

层次分析法&#xff0c;简称AHP&#xff0c;是指将与决策总是有关的元素分解成目标、准肌、方案等层次&#xff0c;在此基础之上进行定性和定量分析的决策方法&#xff0c;该方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年初提出。 接下来&#xff0c;我会分为四个部分来讲…

AHP层次分析法

层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称 AHP&#xff09;是对一些较为复杂、较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那些难于完全定量分析的问题。人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的…

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

层次分析法的特点&#xff1a;在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上&#xff0c;利用较少的定量信息使决策的思维过程数学化&#xff0c;从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。是对难于完全定量的复杂系统作出…

层次分析法(AHP)

层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称 AHP&#xff09;是对一些较为复杂、较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那些难于完全定量分析的问题。它是美国运筹学家 T. L. Saaty 教授于上世纪 70 年代初期提出的一种简便、灵活而…

【AHP】层次分析法 | 过程解读 案例实践

层次分析法 | 过程解读 案例实践 导读 本文将带领读者了解 AHP 法&#xff0c;通过案例学习&#xff0c;学会使用 AHP 法解决实际问题。在适当的地方将深入了解&#xff0c;例如 AHP 法过程中出现的不一致情况&#xff0c;我们将详细讨论为什么会出现不一致情况&#xff0c;如…

AHP层次分析法与python代码讲解(处理论文、建模)

目录 AHP是啥 题目 ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 、几何平均法、特征值法求权重 方法1&#xff1a;算术平均法求权重 一般步骤 表达式解释 代码实现 方法2&#xff1a;几何平均法求权重 一般步骤 表达式解释 代码实现 方法3&#xff…

用人话讲明白AHP层次分析法(非常详细原理+简单工具实现)

用人话讲明白AHP层次分析法&#xff08;非常详细原理简单工具实现&#xff09; 文章目录 目录 1、前言与算法简述 2、AHP层次分析法过程 2.1 构建层次评价模型 2.2 构造判断矩阵 2.3 层次单排序与一致性检验 2.3.1 层次单排序 2.3.2 求解最大特征根与CI值 2.3.3 根据…