层次分析法,简称AHP,是一个运筹学方法

方法背景及应用概述

AHP方法是美国运筹学家匹茨堡大学教授萨蒂于20世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。

  • 公司要选拔人才,会考核多个维度,选谁是主观选,还是有客观的方法论?
  • 要送父母一个椅子,多个品牌怎么选?
  • 要做一次国庆节的旅游,多个目标地点怎么选?
  • 用JS手撕一下这个方法,并将其通用化

先从实际的例子来了解这个方法的步骤

  • 景色要好,但费用不能太贵
  • 费用便宜的话,住的和吃的会不会太差?
  • 对多个属性,可能无法一次性端平

  • 上图啥意思?
  • 这是一个带有主观判断的表,例如
  • 景色:费用,你认为是多少?我认为景色稍微重要 ,那就是 3:1,如果反过来 就是 1:3
  • 于是 景色:费用 就是一个 数值
  • 依次类推,每个决策维度两两比较,形成一个  「判断矩阵」

  • 矩阵对角是互为倒数,这就说明我们只需要对比一遍就可以获得 「判断矩阵」
  • 只需要完成矩阵中的,上三角 或 下三角,其他自动完成

一致性判断

  • 两两比较 的时候,可能会出现 A比B 好,B比C好,C比A好,这样的,前后不一致的比例判断,我们可以采用 「层次单排序及一致性检验」
  • 一致性指标:

  • 是特征值

    ,n是特征个数

  • CI 接近 0 ,有满意的一致性
  • CI 越大, 越不一致
  • 求出CI后,再用CR = CI / RI < 0 .1 来判断是否一致
  • 如果不满足一致性,请重新两两对比
  • RI (随机一致性指标) 查表得出,要自己求RI,可以构造n个对比矩阵,然后求特征值的平均数
  • RI如下
  • n=1~12时,RI分别为 0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54
  • 查表很简单,判断的维度不超过12,上例是5
  • 上面的公式需要求出,矩阵的特征值,计算略微复杂,我们使用和积法来近似求 「特征值」以及 「特征向量」

上JS代码来求一个判断矩阵的CR和特征向量

  • 增加注解详细说明代码

  • 有了这个函数,我们就完成了此方法的核心

每个判断维度对应目标的对比矩阵

  • 简单的说,选定景色,这个维度,两两比较,苏杭、北戴河、桂林的对比矩阵,然后确保一致性。
  • 这样一共会出现5个 对比矩阵,都是3*3的
  • 加上维度的对比矩阵,一共有6个矩阵
  • 具体矩阵如下

  • 再一次观察,其实都是对角互为倒数的
  • 下面的代码就SO EASY了,就这么短

结果如下

有了这个小工具,我们可以做人才选拔

  • 当然AHP方法是带有主观性的,可以用多个人产生对比矩阵,形成决策树,这样评判更公平😄
  • 我们可以将上面的过程,做成一个可视化的界面,例如这样:

  • 我们在《需求反馈系统》中,实战就用到了AHP算法😄

总结

  • 了解AHP,使用到实际业务场景
  • 通过JS实现之,通用化后,可以解决任何需要多层决策的问题

加推
12 声望2 粉丝

加推官方技术号,加推专注SaaS领域,致力于企业的销售增长。