从零开始的数学建模生活——AHP层次分析法

层次分析法(AHP)是一种解决复杂模糊决策问题的方法,适用于难以定量分析的问题。通过建立递阶层次结构,构造判断矩阵,进行一致性检验,得出决策权重。本文介绍了AHP的基本原理、步骤和应用,强调了其主观性和一致性检验的重要性,并提供了简单的案例说明。同时指出,AHP在实际应用中需要根据实际情况构建模型和进行定量化分析。

层次分析法

层级分析法(Analytic Hierarchy Process,简称 AHP)是对一些较为复杂、较为模糊的问题作出决策的简易方法,特别适用于难以完全定量分析的问题。

个人建议,由于层级分析法模型简单,且具有较强的主观性,如果想拿好名次一般情况下不建议使用层次分析法,但不完全否定层次分析法。该方法作为大部分数模入门的同学使用比较简单,且仍存在使用层次分析法获得较好名次的情况,需要看个人对模型和问题的把握。

这句话是在写完后加上的,整个写下来太复杂了,我自己还有学业之类的事情要忙,后续会调整形式,少讲计算过程,多讲原理和应用,算的时候各位可以另寻教程或者直接找代码算好了

简要说明: 个人认为层级分析法就是通过个人主观(不一定是参赛者主观,可以寻找参考材料,遵循专家意见,但这也是个人主观,就是可信度高一些)给出某一结果的影响因素和各因素的影响程度,从而得出该题目的数学模型。

层次分析法的基本原理和步骤

由于现实情况中的诸多问题常常是多个互相关联、互相制约的终端因素构成的负责而缺少定量数据的系统,AHP为此提供了一种间接的建模方法

层次分析法建模,大致可按照一下四步进行:
(i).建立递阶层次结构模型;
(ii).构造出各层次中的所有判断矩阵;
(iii).层次单排序及一致性检验
(iv).层次总排序及一致性检验

递阶层次结构的建立与特点

在使用AHP分析决策问题时,首先需要把问题条例化、层次化,构建出一个有层次的结构模型。通过这个模型,把复杂的问题分解为多个元素组成的问题。这些元素按照其属性或关系可分为若干层次。上一层的元素作为准则对下一层次有关元素起支配作用,这次层次可以分为三类:

  • 最高层:本层只有一个元素,一般情况下是问题的预定目标或理想结果,也称目标层
  • 中间层:这一层包含为了实现目标所涉及的全部中间环节,可以由若干层组成,包含需要考虑的全部准则(子准则),也称准则层
  • 最底层:这一层包括了为实现目标可供需那种的各种措施、决策方案等,因此也称为措施层或方案层。

中间层的层数与问题的复杂程度及需求分析的详尽程度有关,一般情况下,不建议层数过多,或每层的元素不建议过多,否则会增加元素两两之间对比的困难
以下给出一个简单的案例来说明该结构
层次结构模型

例1: 你想买一个苹果,现在有苹果甲和苹果乙可供你选择,需要确定一个最好的苹果来买
在此问题中,你会根据苹果的颜色、大小、光泽、果蒂、保存日期等一些准则来比较两个苹果哪个更好,可以建立如图所示的层级结构模型

构造判断矩阵

层级结构模型反应了因素之间的关系,但是准则层中各准则在目标衡量中所占的比重并不一定相同,比如,你更喜欢颜色漂亮、比较大的苹果,那么颜色和大小就会占据更多的比例,更加容易影响到决策。

在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难就是比重难以量化。当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度的影响时,常常会因为考虑不周全而使结果与决策者认为的出现较大的偏差,甚至可能出现矛盾的点(比如买苹果,你认为颜色比大小更重要,又认为大小比光泽重要,又认为光泽比颜色重要,那这三个标准谁高谁底呢?)

那么要如何才能给出可信的数据呢?

Saaty(美国运筹学家,AHP就是他提出来的)建议可以对因子采取两两比较,将对比结果建立成比较矩阵。将决策层的 n n n个决策因子定义为 X = { x 1 , ⋯   , x n } X=\left\{x_{1},\cdots,x_{n}\right\} X={x1,,xn},每次取两个因子互相比较,以 a i j a_{ij} aij表示 x i x_{i} xi x j x_{j} xj对目标的影响(下文把这个目标因素称为 Z Z Z),全部的比较结果就可以用 A = ( a i j ) n × n A=\left(a_{i j}\right)_{n \times n} A=(aij)n×n表示,那么我们就可以把这个矩阵 A A A称为 Z − X Z-X ZX之间的成对比较判断矩阵(叫什么名字不重要,知道这个矩阵是怎么来的就行,后文简称判断矩阵了

很容易看出如果买苹果时你认为颜色比大小重要2倍,并且我们把这个记为 x i x_{i} xi x j x_{j} xj的影响之比为 a i j = 2 a_{ij}=2 aij=2,那么显然我们如果把它反过来比较,那大小比颜色就是 1 2 \frac{1}{2} 21,很明显 a j i = 1 a i j a_{j i}=\frac{1}{a_{i j}} aji=aij1,那么这个矩阵就是关于对角线互为倒数的。

注: 矩阵中每一个元素均大于0,这个是个很显然的结论,两个元素相比总不可能存在负数吧,如果你的队友在层次分析法的判断矩阵中搞出了负数,那么他可能是来捣乱的

我们将这个矩阵称之为正互反矩阵(显然 a i i = 1 , i = 1 , . . . , n a_{ii}=1, i=1,...,n aii=1,i=1,...,n

那么两个因素间互相评判的标准有没有一个标度呢?
当然是有的,Satty等人建议引用数字1~9及其倒数作为其标度,如表格所示

标度含义
1表示两个因素相比,具有相同的重要性
3表示两个因素相比,前者比后者稍重要
5表示两个因素相比,前者比后者明显重要
7表示两个因素相比,前者比后者强烈重要
9表示两个因素相比,前者比后者极端重要
2,4,6,8表示上述相邻判断的中间值
倒数见上文,如果你不知道为什么会出现倒数,那可能你没认真看

从心理学的观点来看,分级太多会超越人们的判断能力,既增加了作判断的难度,也容易因此提供虚假数据。最后,普遍认为做 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1)次判断是有必要的。有人可能会认为,我只需要把其中一个因素作为标准,其他每个因素都和这个因素比较一次,那么不是只用比较 n − 1 n-1 n1次就可以了吗?这种方法存在一些问题,如果在做判断的时候出现失误,就有可能会导致不合理的排序,但判断的失误对于一个难以定量的判断系统是难以避免的(如果可定量那我们也不会使用层次分析法了)。所以进行 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1)次比较可以提供更多的信息,从而获得一个相对合理的排序。

层次单排序及一致性检验

此部分涉及较多数学知识,可能比较枯燥,我大部分是抄书
以下只是告诉你怎么进行一致性检验,以及为什么进行一致性检验,不感兴趣可以不看,反正等建模的时候也是用软件算

判断矩阵A对应于最大特征值 λ max ⁡ \lambda_{\max } λmax的特征向量 W W W,经归一化后即为同一层次相应因素对于上一层次某因素的相对重要性的排序权值,这一过程称为层次单排序。
上述构造成对比较判断矩阵的办法虽能减少其他因素的干扰,较客观的反映出一堆因子影响力的差别。但综合全部比较结果的时候,难免会包含一定程度的非一致性。如果比较结果是前后完全一致的,则矩阵 A A A的元素应满足:
a i j a j k = a i k , ∀ i , j , k = 1 , 2 , ⋯ n ( 1 ) a_{i j} a_{j k}=a_{i k}, \quad \forall i, j, k=1,2, \cdots n (1) aijajk=aik,i,j,k=1,2,n1
定义: 满足关系式(1)的正互反矩阵称为一致矩阵

需要检验构造出来的(正互反)判断矩阵 A A A是否严重的非一致,以确定题目能否用 A A A来衡量,不能的话就要重新确定判断矩阵。
定理: 正互反矩阵 A A A的最大特征根 λ max ⁡ \lambda_{\max } λmax必为正实数,其对应的特征向量的所有分量均为正实数。 A A A的其余特征值的模均严格小于 λ max ⁡ \lambda_{\max } λmax
定理: A A A为一致矩阵,则
(i) A A A必为正互反矩阵
(ii) A A A的转置矩阵 A T A^{T} AT也是一致矩阵
(iii) A A A的任意两行成比例,比例因子大于0,从而 r a n k ( A ) = 1 rank(A)=1 rank(A)=1(任意两列同理)
(iv) A A A的最大特征值 λ max ⁡ = n \lambda_{\max }=n λmax=n, n n n为矩阵 A A A的阶。 A A A的其余特征根均为零
(v)若 A A A的最大特征值 λ max ⁡ \lambda_{\max } λmax对应的特征向量为 W = ( w 1 , ⋯   , w n ) T W=\left(w_{1}, \cdots, w_{n}\right)^{T} W=(w1,,wn)T,则 a i j = w i w j , ∀ i , j = 1 , 2 , ⋯   , n a_{i j}=\frac{w_{i}}{w_{j}},\forall i, j=1,2, \cdots, n aij=wjwii,j=1,2,,n A = [ w 1 w 1 w 1 w 2 ⋯ w 1 w n w 2 w 1 w 2 w 2 ⋯ w 2 w n ⋯ ⋯ ⋯ ⋯ w n w 1 w n w 2 ⋯ w n w n ] A=\left[\begin{array}{llll} \frac{w_{1}}{w_{1}} & \frac{w_{1}}{w_{2}} & \cdots & \frac{w_{1}}{w_{n}} \\ \frac{w_{2}}{w_{1}} & \frac{w_{2}}{w_{2}} & \cdots & \frac{w_{2}}{w_{n}} \\ \cdots & \cdots & \cdots & \cdots \\ \frac{w_{n}}{w_{1}} & \frac{w_{n}}{w_{2}} & \cdots & \frac{w_{n}}{w_{n}} \end{array}\right] A=w1w1w1w2w1wnw2w1w2w2w2wnwnw1wnw2wnwn
定理: n阶正互反矩阵 A A A为一致矩阵当且仅当其最大特征根 λ max ⁡ = n \lambda_{\max }=n λmax=n,且当正互反矩阵 A A A非一致时,必有 λ max ⁡ > n \lambda_{\max }>n λmax>n

根据上述定理,我们可以通过 λ max ⁡ \lambda_{\max } λmax是否等于n来判断矩阵 A A A是否为一致矩阵。由于特征根连续的依赖于 a i j a_{ij} aij,故 λ max ⁡ \lambda_{\max } λmax比n大得越多, A A A的非一致性程度也就越严重, λ max ⁡ \lambda_{\max } λmax对应的标准化特征向量也就越不能真实的反应出 X = { x 1 , ⋯   , x n } X=\left\{x_{1},\cdots,x_{n}\right\} X={x1,,xn},在对因素 Z Z Z的影响中所占的比重。一i那次,对决策者提供的判断矩阵有必要做一次一致性检验,以决定是否能接受它。

对判断矩阵的一致性检验的步骤如下:
  1. 计算一致性指标 C I CI CI
    C I = λ max ⁡ − n n − 1 C I=\frac{\lambda_{\max }-n}{n-1} CI=n1λmaxn
  2. 查找相应的平均一致性指标 R I RI RI。对 n = 1 , ⋯   , 9 n=1,\cdots,9 n=1,,9,Saaty给出了 R I RI RI的值,如下表所示
n123456789
R I RI RI000.580.901.121.241.321.411.45

不用关心这个 R I RI RI是怎么得到的,建模时查表就好了

  1. 计算一致性比例 C R CR CR
    C R = C I R I C R=\frac{C I}{R I} CR=RICI
    C R < 0.10 CR<0.10 CR<0.10时,认为判断矩阵的一致性是可以接受的,否则需对判断矩阵进行适当修正

层次总排序及一致性检验

通过上文我们得到了一组元素对其上一层某元素的权重向量。我们最终要得到各元素,尤其是底层中各方案对应目标的排序权重,以此来选择执行哪个方案。总排序权重要自上而下的将单准则下的权重进行合成。在这里插入图片描述
设上一层次( A A A层)包含 A 1 , ⋯   , A m A_{1},\cdots,A_{m} A1,,Am m m m个因素,他们的层次总排序权重分别为 a 1 , ⋯   , a m a_{1},\cdots,a_{m} a1,,am。又设其后的下一层次( B B B层)包含 n n n个因素 B 1 , ⋯   , B n B_{1},\cdots,B_{n} B1,,Bn,他们关于 A j A_{j} Aj的层次单排序权重分别为 b 1 , ⋯   , b m b_{1},\cdots,b_{m} b1,,bm(当 B i B_{i} Bi A j A_{j} Aj无关联时, b i j = 0 b_{ij}=0 bij=0。现求 B B B层中各因素关于总目标的权重,即求 B B B层各因素的层次总排序权重 b 1 , ⋯   , b m b_{1},\cdots,b_{m} b1,,bm,计算方式如上表所示

对总排序也需要做一致性检验,虽然每层都做了,但是每层的非一致性有可能会积累起来,进而导致最终的分析结果严重偏离。
C R = ∑ j = 1 m C I ( j ) a j ∑ j = 1 m R I ( j ) a j C R=\frac{\sum_{j=1}^{m} C I(j) a_{j}}{\sum_{j=1}^{m} R I(j) a_{j}} CR=j=1mRI(j)ajj=1mCI(j)aj
C R < 0.10 CR<0.10 CR<0.10时,认为结果较满意并可接受该结果

层次分析法的应用

终于到这部分了,前面写的也很枯燥…

我们在使用AHP层次分析法的时候,主要面临两个问题
1. 如何根据实际情况给出贴切的层次模型
2. 如何对各因素给出接近实际情况的定量化分析
第一点的主观性极大,主要依赖与认面的经验,即使排除了思维过程中的非一致性也难以排除决策者个人的片面性(即使那个人是专家,更何况我们不是专家

那么我们来举个例子
还是上文中提到的买苹果的例子又是买苹果
那么,如果我更喜欢颜色好看的苹果,我将颜色和大小进行比较,我认为颜色和大小的重要程度之比为5,我又喜欢光泽好的苹果,我认为颜色和光泽的重要程度之比为 1 2 \frac{1}{2} 21后续同理,不多赘述
那么,我们就可以建立如下的决策层判断矩阵
在这里插入图片描述
然后就是套公式计算了,由于过程过于繁琐,我也不想重复一遍,在这里就省略了,根据上文内容一步一步计算就可以了,由于此矩阵是我随意填写的,有可能达不到一致性检验的要求。
在后续的博客中我会更新此模型的python代码和matlab代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值