层次分析法(Analytic Hierarchy Process, AHP)是一种用于解决复杂决策问题的有效方法,广泛应用于多个领域,例如资源分配、优先级排序以及风险评估等。AHP的基本思想是将复杂问题分解为多个层次,通过构建判断矩阵并进行比较,从而帮助决策者得出合理的决策方案。
AHP的基本步骤
-
建立层次结构:将决策问题分解为目标层、准则层和方案层等多个层次,形成层次结构模型。
-
建立判断矩阵:围绕同一层级中的各因素进行两两比较,构建判断矩阵。比较的标准通常采用1-9尺度法,即1表示同等重要,9表示极端重要。
-
一致性检验:对判断矩阵进行一致性检验,确保判断的可靠性。如果一致性比例(CR)大于0.1,通常需要重新调整判断矩阵。
-
计算权重:利用判断矩阵计算各因素的权重,通过特征值或加权平均的方法得到各层次的权重。
-
综合评估:基于权重汇总各方案的得分,最终选出最佳方案。
Python 实现 AHP 方法
以下是一个简单的 Python 实现 AHP 方法的示例代码,利用 NumPy 库进行矩阵运算。
import numpy as np
def compute_weights(matrix):
# 计算判断矩阵的特征值及对应的特征向量
eigvalues, eigvectors = np.linalg.eig(matrix)
max_index = np.argmax(eigvalues)
principal_eigenvector = eigvectors[:, max_index].real
# 计算权重
weights = principal_eigenvector / np.sum(principal_eigenvector)
return weights
def consistency_ratio(matrix, weights):
# 计算判断矩阵的大小
n = matrix.shape[0]
# 计算λmax
weighted_sum = np.dot(matrix, weights)
lambda_max = np.sum(weighted_sum / weights) / n
# 计算一致性指数 CI
CI = (lambda_max - n) / (n - 1)
# 随机一致性指标 RI
RI = [0.0, 0.0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49] # n=1到n=10的RI
CR = CI / RI[n-1] if n <= 10 else 0.0
return CR
# 示例数据
# 假设我们有三个标准 A, B, C,构建判断矩阵
# A 相对 B 的重要性为 3,A 相对 C 的重要性为 5,B 相对 C 的重要性为 2
matrix = np.array([[1, 3, 5],
[1/3, 1, 2],
[1/5, 1/2, 1]])
# 计算权重
weights = compute_weights(matrix)
print("各标准的权重:", weights)
# 一致性检验
CR = consistency_ratio(matrix, weights)
print("一致性比例(CR):", CR)
if CR < 0.1:
print("判断矩阵的一致性通过")
else:
print("判断矩阵的一致性不通过,需要调整")
代码说明
-
compute_weights 函数计算给定判断矩阵的特征值和特征向量,通过特征向量计算出各因素的权重。
-
consistency_ratio 函数用于计算一致性比例(CR),通过比较判断矩阵的最大特征值和随机一致性指标(RI)。
-
在示例数据中,我们构建了一个简化的判断矩阵,使用了3个标准的比较结果,最终输出了各标准的权重和一致性测试结果。
总结
层次分析法作为一种有效的决策支持工具,通过层次结构的建立和判断矩阵的构建,使得复杂决策问题变得更加清晰。通过Python实现AHP方法的示例,可以帮助决策者更好地理解和运用这种方法,提高决策的科学性与合理性。