写在前面:
笔记为自行整理,内容出自课程《数学建模学习交流》,主讲人:清风
文章相关代码参考链接: 层次分析法Python实现.
The analytic hierarchy process(AHP)
层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标)、多方案优化决策的系统方法。
层次分析法是将决策问题按总目标、各层子目标、评价准则直至具体的备投方案的顺序分解为不同的层次结构,然后用求解判断矩阵特征向量的办法,求得每一层次的各元素对上一层次某元素的优先权重,最后再加权和的方法递阶归并各备择方案对总目标的最终权重,此最终权重最大者即为最优方案。
层次分析法比较适合于具有分层交错评价指标的目标系统,而且目标值又难于定量描述的决策问题。1
评价类问题可以用打分解决
已知张三最关心大学里的以下四个方面:
学习氛围(0.4);就业前景(0.3);男女比例(0.2);校园景色(0.1)
括号内的数值表示张三认为的重要性程度(权重),其和为1
对于每个评价指标对学校进行打分
– | 学习氛围 | 就业前景 | 男女比例 | 校园景色 |
---|---|---|---|---|
清华大学: | 0.7 | 0.5 | 0.3 | 0.25 |
北京大学: | 0.3 | 0.5 | 0.7 | 0.75 |
张三最终整理好了如下表格
指标 | 指标权重 | 清华 | 北大 |
---|---|---|---|
学习氛围 | 0.4 | 0.7 | 0.3 |
就业前景 | 0.3 | 0.5 | 0.5 |
男女比例 | 0.2 | 0.3 | 0.7 |
校园景色 | 0.1 | 0.25 | 0.75 |
对于每所大学,用其学校得分乘以对应指标的权重并加和,可以得到:
清华最终得分:0.515 (0.4×0.7+0.3×0.5+…)
北大最终得分:0.485 (0.4×0.3+0.3×0.5+…)
最终张三选择了清华大学
总结:
使用打分解决评价问题,只需完成如下表格:
指标 | 指标权重 | 方案1 | 方案2 | … |
---|---|---|---|---|
指标1 | ||||
指标2 | ||||
… |
如何确定评价指标并形成评价体系来选择最佳方案?
在本例中分别对应:
为张三选择最佳旅游地点
苏杭、北戴河、桂林三种方案
题目没有数据支撑,需自己查阅相关资料
一般而言,前两个问题的答案是易寻的,第三个问题需要我们把题目中的背景材料、常识以及网上搜集到的参考资料相结合来确定出合适的指标
经查询最终确定了以下五个指标:
经典景色、旅游花费、居住环境、饮食情况、交通便利程度
很容易想到如下这张表格
指标 | 指标权重 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|---|
景色 | ||||
花费 | ||||
居住 | ||||
饮食 | ||||
交通 |
但对于多指标的打分并不具有准确性,多个指标放在一起同时打分并不容易确定
因而可以选择两个两个的指标进行比较,最终根据两两比较结果来推算出权重
用1-9表示重要程度
标度 | 含义 |
---|---|
1 | 两个因素相比,同等重要 |
3 | 两个因素相比,一个因素比另一个因素稍微重要 |
5 | 明显重要 |
7 | 强烈重要 |
9 | 极度重要 |
2,4,6,8 | 重要程度的中值 |
倒数 | A和B相比如果标度为3,那么B和A相比就是1/3 |
指标 | 景色 | 花费 | 居住 | 饮食 | 交通 |
---|---|---|---|---|---|
景色 | 1 | ||||
花费 | 1 | ||||
居住 | 1 | ||||
饮食 | 1 | ||||
交通 | 1 |
模拟如下场景:
Q1:张三,你举得景色和花费哪个重要?
A1:花费重要,不过只是比景色稍稍重要那么一点点。
由此可填入
指标 | 景色 | 花费 | 居住 | 饮食 | 交通 |
---|---|---|---|---|---|
景色 | 1 | 1/2 | |||
花费 | 2 | 1 | |||
居住 | 1 | ||||
饮食 | 1 | ||||
交通 | 1 |
Q2:那你觉得景色和居住哪个重要?
A2:景色重要,重要一些。
#指标景色 | 花费 | 居住 | 饮食 | 交通 |
---|---|---|---|---|
景色 | 1 | 1/2 | 4 | |
花费 | 2 | 1 | ||
居住 | 1/4 | 1 | ||
饮食 | 1 | |||
交通 |
以此类推 问张三10次即可填满这张表
指标 | 景色 | 花费 | 居住 | 饮食 | 交通 |
---|---|---|---|---|---|
景色 | 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 | 1/5 | 3 | 1 | 1 |
上表是一个5×5的矩阵,记为A,对应元素为aij
在层次分析中,该矩阵称为判断矩阵
对于景色而言:
景色 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|
苏杭 | 1 | 2 | 5 |
北戴河 | 1/2 | 1 | 2 |
桂林 | 1/5 | 1/2 | 1 |
同理可得到:
花费 | 苏杭 | 北戴河 | 桂林 | 居住 | 苏杭 | 北戴河 | 桂林 | 饮食 | 苏杭 | 北戴河 | 桂林 | 交通 | 苏杭 | 北戴河 | 桂林 | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
苏杭 | 1 | 1/3 | 1/8 | 苏杭 | 1 | 1 | 3 | 苏杭 | 1 | 3 | 4 | 苏杭 | 1 | 1 | 1/4 | |||
北戴河 | 3 | 1 | 1/3 | 北戴河 | 1 | 1 | 3 | 北戴河 | 1/3 | 1 | 1 | 北戴河 | 1 | 1 | 1/4 | |||
桂林 | 8 | 3 | 1 | 桂林 | 1/3 | 1/3 | 1 | 桂林 | 1/4 | 1 | 1 | 桂林 | 4 | 4 | 1 |
但需要注意的是,填写过程中可能出现不一致的情况,例如下面:
景色 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|
苏杭 | 1 | 2 | 1 |
北戴河 | 1/2 | 1 | 2 |
桂林 | 1 | 1/2 | 1 |
可以解释为:在景色方面,张三认为,苏杭要比北戴河好,苏杭和桂林一样,但桂林又比北戴河差,这样就出现了矛盾
我们知道aij = i 的 重 要 程 度 j 的 重 要 程 度 \frac{i的重要程度}{j的重要程度} j的重要程度i的重要程度,ajk = j 的 重 要 程 度 k 的 重 要 程 度 \frac{j的重要程度}{k的重要程度} k的重要程度j的重要程度,所以aik = i 的 重 要 程 度 k 的 重 要 程 度 \frac{i的重要程度}{k的重要程度} k的重要程度i的重要程度=aij×ajk,一致矩阵则需要满足这个关系。
除此之外,一直矩阵的各行各列间一定成倍数关系,因此可以得到如下定义:
若矩阵中每个元素aij>0且满足aij×aji=1,则称该矩阵为正互反矩阵。
在层次分析法中构造的判断矩阵均是正互反矩阵。
若正互反矩阵满足aij×ajk=aik,则称其为一致矩阵。
注: 在使用判断矩阵求权重之前,必须对其进行一致性检验。
原理: 检验构造的判断矩阵和一致矩阵是否有太大的差别。
[ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] 为一直矩阵的充要条件: { a i j > 0 a 11 = a 22 = ⋯ = a n n = 1 [ a i 1 , a i 2 , ⋯ , a i n ] = k i [ a 11 , a 12 , ⋯ , a 1 n ] \left[ \begin{matrix} a_{11}& a_{12}& \cdots& a_{1n}\\ a_{21}& a_{22}& \cdots& a_{2n}\\ \vdots& \vdots& \ddots& \vdots\\ a_{n1}& a_{n2}& \cdots& a_{nn}\\ \end{matrix} \right] \text{为一直矩阵的充要条件:}\left\{ \begin{array}{l} a_{ij}>0\\ a_{11}=a_{22}=\cdots =a_{nn}=1\\ \left[ a_{i1},a_{i2},\cdots ,a_{in} \right] =k_i\left[ a_{11},a_{12},\cdots ,a_{1n} \right]\\ \end{array} \right. ⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎦⎥⎥⎥⎤为一直矩阵的充要条件:⎩⎨⎧aij>0a11=a22=⋯=ann=1[ai1,ai2,⋯,ain]=ki[a11,a12,⋯,a1n]
引理: A为n阶方阵,且 r ( A ) = 1 r(A)=1 r(A)=1,则A有一个特征值为 t r ( A ) tr(A) tr(A),其余特征值均为0.(一致性矩阵各行成比例,则其秩一定为1)
由此可得,一直矩阵有一个特征值为 n n n,其余特征值均为0.
此外可以得到,特征值为n时,对应的特征向量为 k [ 1 a 11 , 1 a 12 , ⋯ 1 a 1 n ] T ( k ≠ 0 ) k\left[ \frac{1}{a_{11}},\frac{1}{a_{12}},\cdots \frac{1}{a_{1n}} \right] ^T\left( k\ne 0 \right) k[a111,a121,⋯a1n1]T(k=0)
引理: n阶正互反矩阵A为非一致矩阵时当且仅当最大特征值 λ m a x = n \lambda_{max}=n λmax=n.且当正互反矩阵A非一致时,一定满足 λ m a x > n \lambda_{max}>n λmax>n.
判断矩阵与其一致性矩阵越不一致,最大特征值与 n n n相差越大。
步骤:
第一步:计算一致性指标CI
C I = λ m a x − n n − 1 CI =\frac{ \lambda_{max}-n}{n-1} CI=n−1λmax−n
第二步:查找对应的平均随机一致性指标RI
n | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|
RI | 0.52 | 0.89 | 1.12 | 1.26 | 1.36 | 1.41 | 1.46 | 1.49 |
(注:在实际运用中,指标数n很少超过10,若n大于10,则可考虑建立二级指标体系)
第三步:计算一致性比例CR
C R = C I R I CR=\frac{CI}{RI} CR=RICI
如果 C R < 0.1 CR<0.1 CR<0.1,则可认为判断矩阵的一致性可以接受,即判断矩阵通过一致性检验;否则需要对判断矩阵进行修改。
权重要进行归一化处理
以下表为例
景色 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|
苏杭 | 1 | 2 | 5 |
北戴河 | 1/2 | 1 | 2 |
桂林 | 1/5 | 1/2 | 1 |
对于第一列:
对于第二列:
对于第三列:
最终的权重可用三组权重求算数平均获得
苏杭 = (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
第一步: 求出矩阵A的最大特征值以及其对应的特征向量
第二步: 对求出的特征向量进行归一化即可得到权重
最大特征值为3.0055,一致性比例CR=0.0053<<1
对应特征向量:[-0.8902, -0.4132, -0.1918]
归一化后:[0.5954, 0.2764, 0.1283]
将权重填入下表中:
指标 | 指标权重 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|---|
景色 | 0.5954 | 0.2764 | 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 | 1/5 | 3 | 1 | 1 |
指标 | 指标权重 | 苏杭 | 北戴河 | 桂林 |
---|---|---|---|---|
景色 | 0.2636 | 0.5954 | 0.2764 | 0.1283 |
花费 | 0.4758 | 0.0819 | 0.2363 | 0.6817 |
居住 | 0.0538 | 0.4286 | 0.4286 | 0.1429 |
饮食 | 0.0981 | 0.6337 | 0.1919 | 0.1744 |
交通 | 0.1087 | 0.1667 | 0.1667 | 0.6667 |
最终:
苏杭得分=指标权重与苏杭两列对应行相乘后求和
即:0.2636×0.5954+0.4758×0.0819+…+0.1087×0.1667=0.299
类似的,北戴河得分:0.245;桂林得分:0.455
因此桂林得分最高
2.对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造判断矩阵。
3.由判断矩阵计算被比较元素对于该准则的相对权重,并进行一致性检验,只有通过一致性检验的才可以使用。
4.计算各层元素对系统目标的合成权重,并进行排序。
许树柏. 实用决策方法:层次分析法原理[M]. 天津大学出版社, 1988. ↩︎