参考:

  1. (中文)https://zhuanlan.zhihu.com/p/35051786
  2. (中文繁体)www.nhu.edu.tw/~ykhuang/AHP.doc
  3. (英文,作者即AHP提出者,美国运筹学家、匹兹堡大学T. L. Saaty教授)THE ANALYTIC HIERARCHY PROCESS-WHAT IT IS AND HOW IT IS USED

1. 概述

我们遇到的大多数问题(决策目标),都可以逐层拆解为:准则,子准则,……,最底层即所有的可选方案。
拆解层级如图。注意对于父层的每一个因素,必须包含(联系于)子层的所有因素。

我们知道,大多数决策过程既存在客观成分(客观指标),也存在主观因素(心理,偏好等)。
AHP正是一种很好的解决方案,可以结合主、客观因素,定量作出决策。

作者的原话是:

For a long time people have been concerned with the measurement of both physical and psychological events. By physical...
By contrast, the psychological is the realm of the intangibles as it relates to subjective ideas and beliefs of the individual about himself of herself and the world of experience. The question is whether there is a coherent theory that can deal with both these worlds of reality without compromising either. The AHP is a method that can be used to establish measures in both the physical and social domains.

由于AHP的本质方法是计算各个因素的权值,因此也常用于对各影响因素进行重要性排序。
实际上,人作决策时往往也会对各参考因素排序,因此AHP和人的决策过程具有一致性。

2. AHP算法

2.1. 建立层级

对于一个既定决策目标(目标层),我们将其逐层拆解为多层,名为准则层;最底层即方案层。
AHP的最终目标,就是确定方案层中的每一个方案,对于目标层的相对权重。

如上图,“选购笔记本”属于目标层,三款电脑属于方案层,中间的参考因素都属于准则层。

注意,同一层级的元素之间必须是相互独立的(Independence),否则,应考虑网络分析法ANP。

2.2. 构造 成对 比较 矩阵

假设某\(f_1\)层有一个元素source。我们想探究,下一层\(f_2\)中的所有元素,对于source元素而言的重要性。
绝对重要性是很难量化的,但相对重要性比较好量化。
因此我们构造如下矩阵:

其中,\(a_{ij} = \frac{w_{i}}{w_{j}}\)代表:\(f_2\)层中,\(i\)元素与\(j\)元素相比,对于\(f_1\)层source元素的相对重要程度。\(w_{i}\)即该层级中准则\(i\)的绝对权重。
Saaty建议用整数\(1\)到\(9\)及其倒数,作为\(a_{ij}\)的值域。该值域又称为比例尺度Ratio Scale
比如,若\(a_{ij}=9\),那么与\(j\)元素相比,\(i\)元素对于source元素绝对重要得多得多得多得多。
又如,若\(a_{ij}=1\),那么\(j\)和\(i\)元素对于source元素是同等重要的。

显然,成对比较矩阵元素\(a_{ij}\)满足:

  1. \(a_{ij}>0\)
  2. \(a_{ji} = \frac{w_{j}}{w_{i}} = \frac{1}{\frac{w_{i}}{w_{j}}} = \frac{1}{a_{ji}}\)
  3. \(a_{ii}=1\)

基于以上特点,该矩阵又称为正互反矩阵(Positive Reciprocal Matrix)

由于相对重要性的判断容易出现偏差,因此Saaty建议同一层级的元素不要超过7个。作者原话是:

The question is, "How much should one include in a hierarchy?" A general rule is that the hierarchy should be complex enough to capture the situation, but small and nimble enough to be sensitive to changes.

2.3. 成对比较矩阵的 一致性检验 与 层次单排序

假设\(i\)元素(对source元素)的重要性是\(j\)元素的3倍,\(j\)元素的重要性是\(k\)元素的2倍。
那么符合直觉的是:\(i\)元素(对source元素)的重要性是\(k\)元素的6倍。
这就称为传递性(Transitivity),也称为一致性(Consistency)

若一个成对比较矩阵中的元素都满足:\(a_{ik} \cdot a_{kj} = a_{ij}\),则称\((a_{ij})_{n \times n}\)为一致性矩阵。判断定理如下:
定理:\(n\)阶正互反矩阵\(A\)为一致性矩阵,等价于:\(A\)的最大特征值\({\lambda}_{max} = n\),其余特征值为0。
证明:参见这篇论文

其中关键的一点是:设\(\overline{w} = (w_1,w_2,\cdots,w_n)^T\)是权值向量,那么有\(A\overline{w} = n\overline{w}\),特征向量\(\overline{w}\)对应的特征值就是\(n\)。

实际操作中,我们难遇完全一致的成对比交矩阵,一是因为客观事物并不简单(相互关联等),二是人的判断有主观性。
因此,Saaty建议先求出\(A\)的最大特征值,其对应的特征向量归一化后(使元素和为1)即权值向量。这一过程称为层次单排序
在实际应用中,最大特征值往往是近似求解的。可以参见各路PPT。

但是显然,这种近似是有条件的:\(A\)需要满足一定程度的一致性。
一致性指标(Consistence Index)的检验方法,就称为一致性检验:\(CI = \frac{\lambda_{max}-n}{n-1}\)。
显然,当\(CI = 0\)时,表示完全一致;\(CI\)越大,一致性越差。
CI是否能为负?正互反矩阵的最大特征值是否一定不小于其阶数?考证了很久没得到结果。。

Oak Ridge National Laboratory & Wharton School进行了一项研究。假设\(A\)具有某一阶数,其值是随机生成的。
经过1000次随机模拟后,我们统计了平均的\(CI\)值:

这又称为随机性指标(Random Index)。显然,如果我们的\(A\)具有和\(RI\)相近的\(CI\),那么我们的矩阵很可能是无效的。

因此规定,只有当一致性比率(Consistency Ratio)\(CR = \frac{CI}{RI} <0.1\)时,一致性才令人满意。

2.4. 层次总排序

在层次单排序后,我们把各层权重合成。合成后也可以计算一致性指标,但通常不予考虑。详见第一个参考链接。

Maths | 层次分析法(Analytic Hierarchy Process)的更多相关文章

  1. 层次分析法(Analytic Hierarchy Process,AHP)

    昨天晚上室友问我什么是层次分析法?我当时就大概给他介绍了一下,没有细讲. 今天我仔细讲讲这个. 层次分析法是运筹学里面的一种方法,是讲与决策总是有关的元素分解成目标.准则.方案等层次,在此基础上进行定 ...

  2. 从Elo Rating System谈到层次分析法

    1. Elo Rating System Elo Rating System对于很多人来说比较陌生,根据wikipedia上的解释:Elo评分系统是一种用于计算对抗比赛(例如象棋对弈)中对手双方技能水 ...

  3. 层次分析法、模糊综合评测法实例分析(涵盖各个过程讲解、原创实例示范、MATLAB源码公布)

    目录 一.先定个小目标 二.层次分析法部分 2.1 思路总括 2.2 构造两两比较矩阵 2.3 权重计算方法 2.3.1 算术平均法求权重 2.3.2 几何平均法求权重 2.3.3 特征值法求权重 2 ...

  4. 同TTX更可爱的层次分析法游戏破解

    最近的工作太忙,没啥时间写文章,今天遇到一点点的游戏,浅析.以中午的优势写这篇文章. 移动MM的游戏.前面我们已经写过非常多文章,没有看过的朋友,自行查找就可以,今天我们继续分析一个类似的游戏,只是使 ...

  5. ahp层次分析法软件

    http://www.jz5u.com/Soft/trade/Other/58808.html 权重计算 归一化 本组当前数 - 本组最小 / 本组最大-本组最小 http://blog.csdn.n ...

  6. 层次分析法MATLAB

    输入成对比较矩阵,输出权重值和一致性检验结果. disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n, ...

  7. 网络分析法(Analytic Network Process,ANP)

    什么是网络分析法 网络分析法(ANP)是美国匹兹堡大学的T.L.Saaty教授于1996年提出的一种适应非独立的递阶层次结构的决策方法,它是在层次分析法(Analytic Hierarchy Proc ...

  8. matlab-层次分析法

    层次分析法(AHP)是把问题条理化.层次化,构造出一个有层次的结构模型的方法. 比如要选择旅游地,有3个选择方案,苏杭.北戴河和桂林.选择过程需要考虑多个因素,比如景色.费用.居住.饮食和旅途. 1. ...

  9. 2017人生总结(MECE分析法)

    试着用MECE分析法对人生的整个规划做一下总结.作为技术人员,其实除了编码架构能力之外,分析问题的能力的重要程度也会随着职业发展越来越重要.<美团点评技术博客>说这几天要在黄金时段头版头条 ...

随机推荐

  1. Ymodem协议说明

      模块的固件烧录过程,由Term(发送方)发送固件文件,模块(接收方)接收并写入MCU,期间使用的数据传输协议是ymodem协议. 一.概述 ymodem协议是一种发送并等待的协议,即发送方发送一个 ...

  2. Epson 微型打印机打印 LOGO C#

    由于项目需要使用EPSON微型打印机打印LOGO,在网上查看了很多都是安装驱动然后设置打印机图片. 项目需要使用Bytes发送流,最后在网上找到了一些资料,记录下来方便自己和其他人使用. public ...

  3. C++/CLI

    [C++/CLI] A C++/CLI application or component uses extensions to C++ syntax (as allowed by the C++ Sp ...

  4. 深入理解C++11【4】

    [深入理解C++11[4]] 1.基于范围的 for 循环 C++98 中需要告诉编译器循环体界面范围.如for,或stl 中的for_each: int main() { ] = { , , , , ...

  5. JavaScript进度条(datalist/repeater等多个进度条)

    JS代码: function SingleProgressBar() { var iload = document.getElementById("iLoading"); var ...

  6. LeetCode Smallest Range

    数据范围是3500,3500也就是说n的平方是可以接受的.这里告诉你就是有序的,也就是在提醒你可能会是一个类似于二分的算法,所以的话其实基于这两个认识的话我们就可以利用一个枚举叫二分的算法来解决这道题 ...

  7. JVM学习03:性能监控工具

    JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...

  8. Kubernetes节点维护

    1.设置节点为不可调度 kubectl cordon $NODENAME 2.使用kubectl drain优雅的结束节点上的所有 pod 并同时标记节点为不可调度 kubectl drain $NO ...

  9. select 两层 第二个select需要加别名

    select t.id from (select xxx) t

  10. MySQL千万级数据库查询怎么提高查询效率

    在实际项目中,当MySQL表的数据达到百万级别时候,普通查询效率直线下降,而且当使用的where条件较多,其查询效率是让人无法容忍的.假如一个taobao订单查询详情要几十秒,可想而知的用户体验是多差 ...