层次分析法的应用场景

AHP的本质是根据人们对事物的认知特征,将感性认识进行定量化的过程。
主要有以下场景:

  1. 评价、评判类的题目。例如:奥运会的评价、彩票方案的评价、城市空气质量分析等
  2. 资源分配和决策类的题目。例如:方案的选择问题,旅游景点的选择、电脑的选择、学校的选择等,可以转化为评价类题目
  3. 一些优化问题,特别是多目标优化问题。多目标规划借助层次分析法确定各个目标的权重,从而将多目标规划问题转化为可以求解的单目标规划问题

    AHP的思想

  • 层次分析法是一种系统分析与决策得综合评价方法,是在充分研究了人类思维过程得基础上提出来的,它较合理地解决了定性问题定量化地处理过程。
  • AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重要度的比较上面。
  • [x] 整个过程体现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避决策者主观判断的缺点。

    递阶层次结构

  • [x] 解决评价类问题,我们首先要想到我们的目标、方案和评价的准则是什么

  • 分析系统中各因素之间的关系,建立系统的递阶层次结构

层次分析法(AHP) - 图1

判断矩阵

  • 对于同一层次的各元素关于上一层次中的某一准则的重要性进行两两比较,构造两两比较矩阵,即判断矩阵
  • [x] 此题中有6个判断矩阵 | | 指标权重 | 苏杭 | 北戴河 | 桂林 | | —- | —- | —- | —- | —- | | 景色 |
    | | | | | 花费 |
    | | | | | 居住 |
    | | | | | 饮食 |
    | | | | | 交通 |
    | | | |

  • 同颜色的部分相加为1

  • 一次性考虑5个指标之间的关系,往往考虑不周,那么两个两个指标进行比较,最终根据两两比较的结果来推算出权重
  • 如果用1-9表示重要程度(见下表),则可以得到一个判断矩阵 | | 景色 | 花费 | 居住 | 饮食 | 交通 | | —- | —- | —- | —- | —- | —- | | 景色 | 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 |
景色 苏杭 北戴河 桂林
苏杭 1 2 1
北戴河 1/2 1 2
桂林 1 1/2 1
标度 含义
1 同样重要
3 稍微重要
5 明显重要
9 强烈重要
2 4 6 8 上述两相邻判断的中值
倒数 层次分析法(AHP) - 图2与指标层次分析法(AHP) - 图3相比,层次分析法(AHP) - 图4的重要程度

一致矩阵

  • 注意:景色的判断矩阵出现了矛盾,苏杭比北戴河好,苏杭和桂林一样好,那么桂林应该比北戴河好
  • 为了解决这一矛盾,引出一致矩阵 | 景色 | 苏杭 | 北戴河 | 桂林 | | —- | —- | —- | —- | | 苏杭 | 1 | 2 | 4 | | 北戴河 | 1/2 | 1 | 2 | | 桂林 | 1/4 | 1/2 | 1 |

层次分析法(AHP) - 图5
层次分析法(AHP) - 图6

  • [x] 一致矩阵的特点:各行(各列)之间成倍数关系

    一致性检验

  • [x] 检验我们构造的判断矩阵和一致矩阵是否有太大区别

  • 层次分析法(AHP) - 图7阶正反矩阵A为一致矩阵时当且仅当最大特征值层次分析法(AHP) - 图8
  • 一致性检验的步骤
  1. 计算一致性指标层次分析法(AHP) - 图9
  2. 查找对应的平均随机一致性指标RI | n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- | | RI | 0 | 0 | 0.52 | 0.89 | 1.12 | 1.26 | 1.36 | 1.41 | 1.46 | 1.49 |

  3. 计算一致性比例层次分析法(AHP) - 图10

  • [x] 如果CR<0.1,则可认为判断矩阵的一致性可以接受;否则需要对判断矩阵进行修正

    权重矩阵

    一致矩阵计算权重

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

  • [x] 对于景色而言,苏杭的重要性如果是1,那么北戴河的重要性就是1/2,桂林的重要性就是1/4

  • 权重一定要进行归一化处理

层次分析法(AHP) - 图11

判断矩阵计算权重

景色 苏杭 北戴河 桂林
苏杭 1 2 4
北戴河 1/2 1 2
桂林 1/4 1/2 1
  • 每一列都有一个权重,结果如下 |
    | 第一列 | 第二列 | 第三列 | | —- | —- | —- | —- | | 苏杭 | 0.558 | 0.5714 | 0.625 | | 北戴河 | 0.2941 | 0.2857 | 0.25 | | 桂林 | 0.1177 | 0.1429 | 0.125 |

方法一:算术平均法求权重

  • 综合上述三列,我们求平均权重

层次分析法(AHP) - 图12

方法二:几何平均法求权重

  1. 将判断矩阵A的元素按行相乘得到一个新的列向量
  2. 将新的列向量的每个分量开n次方
  3. 对该列进行归一化处理得到权重向量

层次分析法(AHP) - 图13

方法三:特征值法求权重

  • 一致矩阵有一个特征值为n,其余特征值为0,特征值为n时,对应的特征项链刚好为一致矩阵的第一列
  • 假如判断矩阵一致性可以接受,那么我们可以仿照一致矩阵权重的求法
  1. 求出判断矩阵A的最大特征值以及对应的特征向量
  2. 对求出的特征向量进行归一化即得我们得权重

我们可以得到使用特征值法求得得权重矩阵,根据此矩阵,我们可以计算出每个景点得得分。

指标权重 苏杭 北戴河 桂林
景色 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.59540.2636+…+0.16670.1087=0.299

    AHP的步骤

  1. 建立递阶层次结构
  2. 构造判断矩阵
  3. 对判断矩阵进行一致性检验
  4. 若通过检验,则计算权重;若没有通过,则往一致矩阵上调整
  5. 根据权重矩阵计算得分,并进行排序

    AHP的局限性

  6. 评价的决策层不能太多,否则判断矩阵和一致矩阵差异很大

  7. 如果决策层中的数据是已知的,那么如何利用这些数据评价更准确?

    Matlab程序设计

    ```matlab %% 数据读入 clc clear all A=[1 2 6; 1/2 1 4; 1/6 1/4 1];% 评判矩阵 %% 一致性检验和权向量计算 [n,n]=size(A); [V,D]=eig(A);%[V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 AV = VD。 [d,ind]=sort(diag(D),’descend’);%提取出D的对角元素并按降序排列,ind是对应的索引 D_s=D(ind,ind);V_s=V(:,ind);%特征值和特征向量重新排序 r=D_s(1,1);%特征值并未排序,要找出最大的特征值以及特征向量 CI=(r-n)/(n-1);%一致性指标 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59];%平均随机一致性指标 CR=CI/RI(n);%一致性比例 if CR<0.10 CR_Result=’通过’; else CR_Result=’不通过’;
    end

%% 权向量计算 %方法1: 算术平均法求权重 Sum_A = sum(A); SUM_A = repmat(Sum_A,n,1); Stand_A = A ./ SUM_A;%对判断矩阵进行归一化处理 disp(‘算术平均法求权重的结果为:’); disp(sum(Stand_A,2)./n)%按行求和再平均

%方法2: 几何平均法求权重 Prduct_A = prod(A,2); Prduct_n_A = Prduct_A .^ (1/n); disp(‘几何平均法求权重的结果为:’); disp(Prduct_n_A ./ sum(Prduct_n_A))

%方法3: 特征值法求权重 w=V_s(:,1)/sum(V_s(:,1)); w=w’; disp([‘特征值法求权重的结果为:’ num2str(w)]);

%% 结果输出 disp(‘该判断矩阵权向量计算报告:’); disp([‘一致性指标:’ num2str(CI)]); disp([‘一致性比例:’ num2str(CR)]); disp([‘一致性检验结果:’ CR_Result]); ```