AHP|Python实现

AHP | Python实现

步骤:

  1. 首先对指标进行相互打分
  2. 计算矩阵的最大特征值
  3. 使用最大特征值进行一致性检验
  4. 若第三步通过,则计算最大特征值对应的特征向量,归一化后即为指标的权重矩阵

核心代码:

import numpy as np


# 最大特征值对应的特征向量
def calculate_weight_vector(matrix):
    eigvals, eigvecs = np.linalg.eig(matrix)
    max_eigval_index = np.argmax(eigvals)
    max_eigvec = eigvecs[:, max_eigval_index]
    weight_vector = max_eigvec / np.sum(max_eigvec)
    return np.real(weight_vector), np.real(eigvals[max_eigval_index])


# 一致性检验
def calculate_consistency_ratio(matrix,  max_eigval):
    n = matrix.shape[0]
    ci = (max_eigval - n) / (n - 1)
    ri_dict = {1: 0, 2: 0, 3: 0.58, 4: 0.9, 5: 1.12, 6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45, 10: 1.49}
    ri = ri_dict.get(n, 1.49)
    cr = ci / ri
    return cr


comparison_matrix = np.array([])  # 填入比较的正互反矩阵
weight_vector, max_eigval = calculate_weight_vector(comparison_matrix)
consistency_ratio = calculate_consistency_ratio(comparison_matrix, max_eigval)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值