AHP(Analytic Hierarchy Process,层次分析法)
AHP(Analytic Hierarchy Process,层次分析法)是由美国运筹学家托马斯·萨蒂(Thomas L. Saaty)于20世纪70年代初提出的一种将定性与定量相结合的多准则决策分析方法。它通过将复杂的决策问题分解为多个层次和因素,利用主观判断进行两两比较,最终得出各备选方案的权重和优先级。
以下是AHP算法的完整步骤与详细说明:
1. 建立递阶层次结构模型
AHP的第一步是将决策问题按照总目标、各层子目标、评价准则直至具体的备选方案进行分解,构建一个金字塔式的层次结构。典型的层次结构包含三层:
- 目标层(最高层):决策要实现的总目标(例如:选择最佳旅游目的地)。
- 准则层(中间层):实现总目标需要考虑的各项准则或子准则(例如:景色、费用、饮食、居住、交通等)。
- 方案层(最低层):可供选择的具体方案(例如:桂林、黄山、北戴河)。
2. 构造两两比较判断矩阵
在确定各层次元素后,需要针对上一层的某个元素,对下一层的各个元素进行两两比较,评估它们的相对重要性。AHP采用1-9标度法将主观判断转化为数值:
- 1:两因素同等重要
- 3:一因素比另一因素稍微重要
- 5:一因素比另一因素明显重要
- 7:一因素比另一因素重要得多
- 9:一因素比另一因素极端重要
- 2, 4, 6, 8:上述相邻判断的中间状态
- 倒数:若因素i与j比较得到 $a_{ij}$,则因素j与i比较得到 $1/a_{ij}$(即互反性)。
将所有两两比较的结果填入矩阵,即可得到正互反判断矩阵。
3. 计算权重向量
构建判断矩阵后,需计算各元素相对于上一层某元素的相对权重。常用的计算方法有两种:
- 和积法(算术平均法/规范列平均法):将判断矩阵按列归一化,然后对归一化后的矩阵按行求算术平均值,得到权重向量。
- 方根法(几何平均法):计算判断矩阵每行元素的乘积,再求其 $n$ 次方根($n$ 为矩阵阶数),最后进行归一化处理得到权重向量。
4. 一致性检验
由于判断矩阵是基于人的主观判断构建的,可能会出现逻辑上的不一致(例如:认为A比B重要,B比C重要,却又认为C比A重要)。为保证决策的合理性,必须进行一致性检验。
- 计算一致性指标 (CI):公式为 $CI = \frac{\lambda_{max} - n}{n - 1}$,其中 $\lambda_{max}$ 为判断矩阵的最大特征值,$n$ 为矩阵阶数。
- 查询随机一致性指标 (RI):RI值与矩阵阶数相关(例如:3阶为0.58,4阶为0.90,5阶为1.12等)。
- 计算一致性比率 (CR):公式为 $CR = \frac{CI}{RI}$。
- 检验标准:当$CR < 0.1$时,认为判断矩阵的一致性是可以接受的;若 $CR \ge 0.1$,则需要重新调整判断矩阵。
5. 层次总排序与最终决策
完成单层次排序和一致性检验后,需要进行层次总排序。即自上而下地将上层元素的权重与下层元素的局部权重相乘并累加,计算出最底层(方案层)各方案对总目标的综合权重(最终得分)。综合权重最高的方案即为最优决策方案。
AHP算法的优缺点
- 优点:系统性分析强,能将复杂问题结构化;定性与定量相结合,将主观判断转化为客观数据;具备严格的一致性检验机制,保证了逻辑的严密性。
- 缺点:主观性较强,高度依赖决策者或专家的经验判断;当准则和备选方案数量过多时,两两比较的矩阵规模呈平方级增长,计算和判断难度会显著上升。
基于层次分析法 (AHP) 计算部件下各指标的权重。indicators数组顺序即重要性降序(第一位最重要),自动构造判断矩阵计算权重。
一致性检验(Consistency Check)是 AHP 算法中的一个数学校验步骤,用来判断权重计算的逻辑是否自洽。
直观理解
当你说「A 比 B 重要 3 倍,B 比 C 重要 3 倍」时,逻辑上应该推导出「A 比 C 重要 9 倍」。如果手动填写的判断矩阵违反了这个逻辑(比如填成 A 比 C 只重要 2 倍),就会出现数学矛盾。
一致性比率 CR 就是衡量这个矛盾程度的指标:
CR < 0.1 → 逻辑自洽,权重可信
CR ≥ 0.1 → 存在逻辑矛盾(如 A>B, B>C 但 C>A),权重可能不准
但在这个项目里,用户不需要关心
因为我们是从 indicators 的顺序自动生成判断矩阵(按固定的相邻位差标度:差 1 位 → 3 倍,差 2 位 → 5 倍...),不是用户手动填写的。自动生成的矩阵天然就是完美一致的,CR 始终远小于 0.1。
这就是为什么把它从 API 响应中移除、只记录到日志 — 它对本项目的实际业务没有影响,仅作为调试信息存在。
