一、层次分析法 AHP 学习笔记
主要用于解决多因素的评价类问题。例如高考填报志愿时,需要考虑到学习氛围,校园景色,男女比例等等。
法一
根据权重计算得分
优点:计算量小
缺点:片面,不周全
直接考虑各因子对因素有多大程度影响时,常常会因考虑不周,而使决策者提出与他实际认为的重要性程度不相一致的数据 --《数学建模算法与应用》
法二
分而治之,两两指标互相比较
表中数据代表相对重要性程度,如花费比景色稍微重要,则填2,景色比居住明显重要,则填4
填完表之后,我们就会得到一个判断矩阵,但也可能出现问题(换了一个表,但影响不大🤭):
由上图可得,苏杭 > 北戴河,北戴河 > 苏桂林, 苏杭 = 桂林,出现不一致了现象,这属于决策者的失误,因而我们需要对最终所得的判断矩阵进行一致性检验。
一致矩阵:
- 各行(各列)之间成倍数关系
- 正互反矩阵满足aij * ajk = aik
1.一致性检验步骤
- CI = (λmax -n)/ (n-1)λ 为特征值
- 根据n,查询RI表
- CR = CI / RI
CR < 0.1,则一致性可接受,反之则需对矩阵修正
2.计算矩阵权重
算术平均法
列归一化,行归一化即可
几何平均法
A的元素按行相乘,开n次方,归一化即可
特征值法
求出矩阵的λmax,及特征向量,对特征向量归一化
3.结果填入权重表并计算各方案得分
最好三种方法都使用,最后求出一个平均值,使结果更具稳健性。
AHP的局限性
- 评价的决策层不能太多,太多的话n会很大,判断矩阵和一致矩阵差异
可能会很大。 - 决策层中指标的数据是已知的。
matlab 代码
·prod() --类似于sum(),prod是乘法运算
·eig(V,D) – 求矩阵的特征值D以及特征向量V
·repmat() – 复制矩阵