层次分析法(Analytic Hierarchy Process, AHP)是一种用于解决复杂决策问题的有效方法,广泛应用于多个领域,例如资源分配、优先级排序以及风险评估等。AHP的基本思想是将复杂问题分解为多个层次,通过构建判断矩阵并进行比较,从而帮助决策者得出合理的决策方案。

AHP的基本步骤

  1. 建立层次结构:将决策问题分解为目标层、准则层和方案层等多个层次,形成层次结构模型。

  2. 建立判断矩阵:围绕同一层级中的各因素进行两两比较,构建判断矩阵。比较的标准通常采用1-9尺度法,即1表示同等重要,9表示极端重要。

  3. 一致性检验:对判断矩阵进行一致性检验,确保判断的可靠性。如果一致性比例(CR)大于0.1,通常需要重新调整判断矩阵。

  4. 计算权重:利用判断矩阵计算各因素的权重,通过特征值或加权平均的方法得到各层次的权重。

  5. 综合评估:基于权重汇总各方案的得分,最终选出最佳方案。

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("判断矩阵的一致性不通过,需要调整")

代码说明

  1. compute_weights 函数计算给定判断矩阵的特征值和特征向量,通过特征向量计算出各因素的权重。

  2. consistency_ratio 函数用于计算一致性比例(CR),通过比较判断矩阵的最大特征值和随机一致性指标(RI)。

  3. 在示例数据中,我们构建了一个简化的判断矩阵,使用了3个标准的比较结果,最终输出了各标准的权重和一致性测试结果。

总结

层次分析法作为一种有效的决策支持工具,通过层次结构的建立和判断矩阵的构建,使得复杂决策问题变得更加清晰。通过Python实现AHP方法的示例,可以帮助决策者更好地理解和运用这种方法,提高决策的科学性与合理性。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部