层次分析法简介
层次分析法(AHP)主要是通过建立梯阶层次结构,将复杂的问题分解成主要的目标(O)、方案§、准则©三个结构层,并通过对准则和方案的两两比较,确定各准则、方案间的权重。
层次分析法的基本步骤
(i) 分析问题中各因素间的关系,建立递阶层次结构模型。
(ii) 构造出各层次的所有判断矩阵
(iii) 根据判断矩阵计算被比较元素对于该准则的相对权重,进行一致性检验
(iv) 层次总排序及一致性检验
模型建立过程
建立递阶层次结构模型
在应用AHP模型时,我们需要对模型解决的问题进行层次化,构造出一个有层次地结构模型。该模型将复杂地问题分解为三个层次(目标层、准则层、措施层/方案层),每个层次又包含着若干元素。上一层次的元素作为准则对下一层次有关元素起着支配作用。下面是各个层次的简介:
(i) 目标层:分析问题的预定目标或者结果,该层次只有一个元素。
(ii) 准则层:为了实现目标而涉及的中间环节,它可以由若干个层次。
(iii)方案层/措施层:为实现目标可供选择的各种措施、决策方案。
一般来说每一层次中的元素不要超过9个,因为支配的元素过度哦会给两两比较判断带来困难。
引用《数学建模算法与应用》中的一个例子:
例:
在该例中,为了解决“选择旅游目的地”问题,将准则层分为“景色”、“费用”、“居住”、“饮食”、“旅途”五个准则层,措施层有P1、P2、P3三个。
构造出各层次的所有判断矩阵
AHP中构建判断矩阵A的方式是对因子进行两两比较,其中判断矩阵中aij表示与i指标相比,j的重要程度。确定aij的值一般采用Satty建议的标度:
标度 | 标度 |
---|---|
1 | 表示两个因素相比,具有相同重要性 |
3 | 表示两个因素相比,前者比后者稍重要 |
5 | 表示两个因素相比,前者比后者明显重要 |
7 | 表示两个因素相比,前者比后者强烈重要 |
9 | 表示两个因素相比,前者比后者极端重要 |
2,4,6,8 | 表示上述相邻判断的中间值 |
计算权重,进行一致性检验
判断矩阵A对应最大特征值**$\lambda$的特征向量W,该特征向量进行归一化处理**后既为同一层次的权重。
再将W经归一化后进行排序,得到同一层次相应因素对于上一层次某因素相对重要性的排序权值。但我们综合全部比较结果时,难免包含一定的非一致性,所以需要我们进行一致性检验。
一致性检验的步骤
(1) 计算一致性指标CI
$$
CI=\frac{\lambda_m-n}{n-1}
$$
(2) 查找相应的平均随机一致性指标RI(RI的计算方法略,直接查表就好了。)
n | 1 2 3 4 5 6 7 8 9 |
---|---|
RI | 0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 |
(3) 计算一致性比例CR
$$
CR=\frac{CI}{CR}
$$
当CR<0.10时,认为判断举证的一致性是可以接受的,否则要对判断矩阵作适当修改
计算总得分,进行排序
在AHP中,总排序权重要自上而下地将单准则下的权重进行合成。计算的方法类似于将权重*因素得分,但需要注意的是,计算出来的层次总排序也需要作一致性检验。
$$
CR=\frac{\sum_{j=1}^{m}CI(j)a_j}{\sum_{j=1}^{m}RI(j)a_j}
$$
当CR<0.10时认为层次总排序结果具有较满意的一致性并接受该分析结果
Matlab实现
1 | clc,clear |
其中fid=fopen('txt3.txt','r');
为打开txt3.txt文件,该文件为引例中的判断矩阵
1 | 输出结果为: |
方案1得分最高为0.3952,说明选择方案1。
参考
[1]司守奎,孙兆亮,数学建模算法与应用,北京:国防工业出版社,2015年,p192-p194.
[2]司守奎,数学建模算法与应用,海军航空工程学院,p167-p172