层析分析法(AHP)

层析分析法(AHP)

建模比赛中最基础的建模之一,其主要运用与解决评价类问题(例如选择哪种方案最好、运用那位员工表现最优秀等等)

1.模型介绍

指标选择 实例演示

高考报考时小明纠结于是选择华中科技大学还是武汉大学。
这个时候可以根据问题进行一些指标的比较。
这里小明最关心的是以下几点:

项目 权重
学习氛围 0.4
就业前景 0.3
男女比例 0.2
校园景色 0.1

权重里面的数值表示小明认为的重要程度(权重),其和为1。
接下来小明通过上网查资料,了解以上的内容,并根据内容进行了自己的打分。得到权重表格:

项目 权重 华中科技大学得分 武汉大学得分
学习氛围 0.4 0.7 0.3
就业前景 0.5 0.5 0.5
男女比例 0.2 0.7 0.3
校园景色 0.1 0.25 0.75

由这个权重表格得到了华科和武大的比分
华中科技大学最终得分:
0.4×0.7+0.5×0.5+0.2×0.7+0.1×0.25=0.515
武汉大学最终得分:
0.4×0.3+0.5×0.5+0.2×0.7+0.25×0.75=0.485
因为华科的比分比较高,所以小明最终选择去了华中科技大学。

示例总结

根据这个例子,使用打分解决评价问题,只需要我们补充完成下面这张表格即可:

指标权重 方案1 方案2
指标1 a b b b
指标2 a c c c
指标3 a d d d
a e e e

其中相同字母的单元格的和为1,它们表示针对某一因素所占的权重。

下面我们开始引入层次分析法。

填好志愿以后,小明想出去旅游,在查阅了网上的攻略之后,他初步选择了苏杭、北戴河、和桂林三地之一做为目标景点。请你确定评价指标、形成评价体系来为小明选择最佳的方案。

做为评价类问题,首先要想三个问题:
① 我们的评价目标是什么?
② 我们为了达到这个目标有哪几种方案可以选择?
③评价的标准是什么或者说指标是什么?

针对小明旅游问题我们开始回答这三个问题:

问题 回答
评价目标 为小明同学选择最佳的旅游景点
可选方案 苏杭、北戴河、桂林
问题指标 这个题目上没有相关数据支撑,需要调查相关资料

假如我们调查了相关的资料,得到了以下的五个指标:
①景点景色
②旅游花费
③居住环境
④饮食情况
⑤交通便利程度
接下来就是给这五个指标定权重,但是如果直接定指标的话需要同时考虑五个指标的占比程度的权重,这个权重难以确定,往往考虑不周,而且主观上可能还会有变化。

判断矩阵

所以这里引入层次分析法的思想:两个两个指标进行比较,最终根据两两比较的结果来推算出权重。比较的方法如下:

标度 含义
1 表示两个因素相比,具有同样重要性
3 表示两个因素相比,一个因素比另一个因素稍微重要
5 表示两个因素相比,一个因素比另一个因素明显重要
7 表示两个因素相比,一个因素比另一个因素强烈重要
9 表示两个因素相比,一个因素比另一个因素极端重要
2、4、6、8 上述两相邻判断的中值
倒数 A和B相比如果标度为3,那么B和A相比就是3/1

接下来进入提问环节:
Q1:请你比较景色和花费的重要程度
A1:我认为花费比景色略微重要(介于同等重要1和稍微重要3之间吧)
Q1:请你比较景色和居住的重要程度
A1:我认为景色比居住要重要一点(介于略微重要3和明显重要5之间吧)
以此类推,提问小明十次【组和数C(5,2)】,根据他的回答,我们的到了这张表:

景色 花费 居住 饮食 交通
景色 1 1/2 4 3 3
花费 2 1 7 5 5
居住 1/4 1/7 1 1/2 1/3
饮食 1/3 1/5 2 1 1
交通 1/3 5/1 3 1 1

上面是一个5×5的方阵,我们记为A,对应元素为aij,这个方阵有如下特点:
①aij表示的意义是,与指标j相比,i的重要程度。
②当i与j,两个指标相同,因此同等重要记为1,这就解释了主对角线元素为1。
③ aij>0,且满足aij×aji=1 (我们称满足这一条件的矩阵为正互反矩阵)
实际上,上面这个矩阵就是层次分析法中的判断矩阵

不一致现象

接下来开始判断苏杭、北戴河、桂林各个指标的权重,下面以景色为例:

景色 苏杭 北戴河 桂林
苏杭 1 2 4
北戴河 2/1 1 2
桂林 1/4 1/2 1

但是这里可能会出现一种情况(不一致现象)如果出现了以下的情况:
苏杭比北戴河景色好一点,苏杭>北戴河
苏杭和桂林景色一样好,苏杭=桂林
北戴河比桂林景色好一点,北戴河>桂林

景色 苏杭 北戴河 桂林
苏杭 1 2 1
北戴河 2/1 1 2
桂林 1 1/2 1

就会出现矛盾之处,被称为不一致现象。

一致矩阵

景色 苏杭 北戴河 桂林
苏杭 1 2 4
北戴河 2/1 1 2
桂林 1/4 1/2 1

上面就是一个一致矩阵,其中的元素有:
a i j = i 的 重 要 程 度 j 的 重 要 程 度 a_{ij}= \frac{i的重要程度}{j的重要程度} aij=ji
a j i = j 的 重 要 程 度 i 的 重 要 程 度 a_{ji}= \frac{j的重要程度}{i的重要程度} aji=ij
a j k = j 的 重 要 程 度 k 的 重 要 程 度 a_{jk}= \frac{j的重要程度}{k的重要程度} ajk=kj

所以一致矩阵的特点就是:各行和格列之间是成倍数关系的。
在使用判断矩阵求权重之前,必须对其进行一致性检验。

一致性检验

原理:检验我们构造的判断矩阵和一致矩阵是否有太大的区别。
因为一致矩阵(A)为n阶方阵,且r(A)=1,则A有一个特征值为tr(A)=n,其余特征值均为0,并且可以很容易得到,特征值为n时,对应的特征向量刚好为
k ( 1 a 11 , 1 a 12 , . . . . . . , 1 a 1 n ) T k(\frac{1}{a_{11},}\frac{1}{a_{12}},......,\frac{1}{a_{1n}})^T k(a11,1a121,......,a1n1)T

引理:n介正互反矩阵A为一致矩阵时当且仅当最大特征值λmax=n。 且当正互反矩阵A非一致时,一定满足λmax>n。

接下来开始进行一致性检验,分为三步:
第一步:计算一致性指标CI
C I = λ m a x − n n − 1 CI=\frac{\lambda_{max}-n}{n-1} CI=n1λmaxn
第二步:查找对应的平均随机一致性指标RI

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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

注:在实际运用中,n很少超过10,如果指标个数大于10,则可以考虑建立二级指标体系。
第三步:计算一致性比例CR
C R = C I R I CR=\frac{CI}{RI} CR=RICI
如果CR<0.1,则可以认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正。

一致矩阵计算权重

先从简单的一致矩阵入手,先来看一致矩阵:

景色 苏杭 北戴河 桂林
苏杭 1 2 4
北戴河 2/1 1 2
桂林 1/4 1/2 1

开始计算权重,因为一致矩阵各行格列成比例,所以我们随便选取其中一列下面选取的时第一列。
苏杭=1/(1+0.5+0.25)
北戴河=0.5/(1+0.5+0.25)
桂林=0.25/(1+0.5+0.25)

注:权重要进行归一化处理

非一致矩阵计算权重

非一致矩阵权重的计算有三种方法,分别为:算数平均法,几何平均法,特征值法
1.算数平均法
下面来看算数平均法如何计算非一致矩阵权重:

景色 苏杭 北戴河 桂林
苏杭 1 2 5
北戴河 2/1 1 2
桂林 1/5 1/2 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.5882+0.5714+0.625)/3=0.5949
北戴河=(0.2941+0.2857+0.25)/3=0.2766
桂林=(0.1177+0.1429+0.125)/3=0.1285

总结:用算数平均法计算权重总体上分为三步:
第一步:将判断矩阵按照列归一化(每一个元素除以其所在列的和)
第二步:将归一化的各列相加(按列求和)
第三步:将相加后得到的向量中每个元素除以n即可得到权重。权重即为:
ω = 1 n ∑ j = 1 n a i j ∑ k = 1 n a k j , ( i = 1 , 2 , . . . , n ) \omega=\frac{1}{n}\sum_{j=1}^n\frac{a_{ij}}{\sum_{k=1}^{n}a_{kj}},(i=1,2,...,n) ω=n1j=1nk=1nakjaij,(i=1,2,...,n)

2.几何平均法
对于非一致矩阵,还有一种使用几何平均法求权重的方法,和算数平均法类似,下面就直接给出计算方法了。
第一步:将A的元素按照行相乘得到一个新的列向量
第二步:将新的向量每个分量开n次方
第三步:对该列向量进行归一化即可得到权重向量。那么用几何平均法得到的权重向量为:
ω = ( ∏ j = 1 n a i j ) 1 n ∑ k = 1 n ( ∏ j = 1 n a k j ) 1 n ( i = 1 , 2 , . . . , n ) \omega=\frac{(\prod_{j=1}^na_{ij})^\frac{1}{n}}{\sum_{k=1}^n(\prod_{j=1}^na_{kj})^{\frac{1}{n}}}(i=1,2,...,n) ω=k=1n(j=1nakj)n1(j=1naij)n1(i=1,2,...,n)
下面我们进行通过两种方法得出权重比较:

算数平均法权重 几何平均法权重
苏杭 0.5949 0.5954
北戴河 0.2766 0.2764
桂林 0.1285 0.1283

3.特征值法
在一致矩阵当中有一个特征值为n,其余特征值均为0。另外,我们可以很容易地得到,特征值为n时,对应的特征向量刚好为:
k ( 1 a 11 , 1 a 12 , . . . . . . , 1 a 1 n ) T k(\frac{1}{a_{11},}\frac{1}{a_{12}},......,\frac{1}{a_{1n}})^T k(a11,1a121,......,a1n1)T
这一特征向量刚好为一致矩阵的第一列.

假如我们的判断矩阵一致性可以接受,那么我们可以仿照一致矩阵权重的求法。
第一步:求出矩阵A的最大特征值以及其对应的特征向量
第二步:对求出的特征向量进行归一化即可得到我们的权重

算数平均法权重 几何平均法权重 特征值法权重
苏杭 0.5949 0.5954 0.5954
北戴河 0.2766 0.2764 0.2764
桂林 0.1285 0.1283 0.1283

(这里特征值法和几何平均值法权重相等,一定是巧合,一定是巧合。在比赛当中,我们一般情况下是留下特征值法)

最终计算

景色 花费 居住 饮食 交通
景色 1 1/2 4 3 3
花费 2 1 7 5 5
居住 1/4 1/7 1 1/2 1/3
饮食 1/3 1/5 2 1 1
交通 1/3 5/1 3 1 1

我们对于这个判断矩阵分别使用三种方法,得到权重:

算数平均值法 几何平均法 特征值法
景色 0.2632 0.2636 0.2636
花费 0.4744 0.4773 0.4758
居住 0.0545 0.0531 0.0538
饮食 0.0985 0.0988 0.0981
交通 0.1103 0.1072 0.1087

这里我们保留特征值法的权重,下面我们在计算出其他指标对应景点的权重,得到权重矩阵

指标权重 苏杭 北戴河 桂林
景色 0.2636 0.5954 0.2764 0.1283
花费 0.4758 0.0819 0.2363 0.6817
居住 0.4758 0.0819 0.2363 0.6817
饮食 0.0981 0.6337 0.1919 0.1744
交通 0.1987 0.1667 0.1667 0.6667

下面将景点列和权重指标列相乘求和就可以得出每个景点的得分啦。
苏杭得分:0.5954×0.2636+0.0819×0.4758+0.4286×0.0538+0.6337×0.0918+0.1667×0.1087=0.299
类似的可以得到北戴河得分为0.245,桂林得分为0.455,因此最佳的旅游景点为桂林。在这里可以使用EXCEL计算来减轻工作量(F4可以锁定单元格)

论文书写

第一步:分析系统中各因素之间的关系,建立系统的递阶层次关系

选择旅游地 O
景色 C1
花费 C2
居住 C3
饮食 C4
交通 C5
苏杭 P1
北戴河 P2
桂林 P3

这里用mermaid画的有点丑,但是是这个意思,大家在书写论文的时候可以用PPT来画这个层次结构图。图的左侧要写出目标层(O),标准层(C),方案层(P )
注:如果用到了层次分析法,那么这个层次分析结构图一定要放在你的建模论文当中哦。

第二步:对于同一层次的个元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)

这里判断矩阵几乎都是自己填的(dddd)。
标准层,方案层的判断矩阵的数值要结合实际来填写,如果题目中有其他数据,可以考虑利用这些数据进行计算。

第三步:由判断矩阵被比较的元素对于该准则的相对权重,并进行一致性检验

三种权重计算方法:(1)算数平均法(2)几何平均法 (3)特征值法
这里大家三种方法都需要使用,并在论文中这样写:
为了保证结果的稳健性,本文采用了三种方法分别求出了权重,再根据得到的权重矩阵计算各方案的得分,并进行排序和综合分析,这样避免了采用单一方法所产生的偏差,得出的结论将更全面、更有效。
如果一致性检验时发现CR>0.1,我们就对判断矩阵A进行修改,具体吧,就往一致矩阵上调整(一致性矩阵各行成倍数关系~)。

第四步:计算各层元素对系统目标的合成权重,并进行排序

现在把我们算出来的值填到最后的权重矩阵当中,并求出得分,就可以得到最优目标了。

层次分析法的一些局限性

① 评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵的差异可能会很大。
②如果决策层中指标的数据是已知的,那我们就无法自己填写数据,用层次分析法就不客观了。就不能使用层次分析法了。要使用TOPSIS法,后面会具体介绍。

好了,层次分析法就介绍到这里了,大家喜欢的话可以点个关注支持以下,嘻嘻。

你可能感兴趣的:(数学建模,数学建模,层次模型,美国大学生数学建模竞赛)