Python 实现层次分析法

使用Python进行层次分析法(AHP)的实现
本文档展示了如何用Python实现层次分析法(AHP),包括计算对比矩阵的一致性检验、特征值和特征向量的获取、归一化处理以及权重计算。通过用户输入对比矩阵数据,程序会自动进行AHP分析并给出结果。
import csv
import numpy as np
import tensorflow as tf
#大概的思路是:
#1.首先输入每个指标下面对应的对比矩阵,每个这个矩阵是由专家比较每两个
#指标之间的相对性重要性形成的,将这个矩阵作为输入,首先计算这个矩阵是否能
#通过一致性的检验。在计算一致性时,要先求出该矩阵的特征值和特征向量。
'''c1,c2 = np.linalg.eig(C)
print (c1)
# [ 2. 1.] 
print (c2)
#[[ 0.89442719 0.70710678]
# [ 0.4472136 0.70710678]]'''
class AHP:
    def __init__(self,array):
        self.row = len(array)
        self.col = len(array[0])
    def get_tezheng(self,array):#获取特征值和特征向量
            te_val ,te_vector = np.linalg.eig(array)
            list1=list(te_val)
            print("特征值为:",te_val)
            print("特征向量为:",te_vector)
            #得到最大特征值对应的特征向量
            max_val = np.max(list1)
            index = list1.index(max_val)
            max_vector = te_vector[:,index]
            print("最大的特征值:"+str(max_val)+"   对应的特征向量为:"+str(max_vector))
            return max_val,max_vector    
  &n
Python实现层次分析法(AHP)可以通过以下步骤完成: 1. 定义准则和方案:在分析问题之前,需要明确准则和方案。准则是问题中要考虑的因素,而方案是针对问题提出的不同解决方案。 2. 构建判断矩阵:根据问题的准则和方案,构建一个$n\times n$的判断矩阵,其中$n$表示准则或方案的数量。在判断矩阵中,每个元素$a_{ij}$表示准则(或方案)$i$相对于准则(或方案)$j$的重要程度,通常用1-9的数值来表示,其中1表示两个准则(或方案)等同重要,9表示一项准则(或方案)相对于另一项准则(或方案)非常重要。 3. 计算加权矩阵:将判断矩阵的每一行进行归一化处理,得到一个$n\times n$的加权矩阵$W=[w_{ij}]$,其中$w_{ij}$表示准则(或方案)$i$相对于准则(或方案)$j$的权重。 4. 计算权重向量:对加权矩阵的每一列进行平均,得到一个长度为$n$的权重向量$w=[w_1,w_2,\cdots,w_n]$,其中$w_i$表示准则(或方案)$i$的权重。 5. 计算一致性比例和随机一致性指标:通过计算一致性比例和随机一致性指标来判断加权矩阵的一致性。一致性比例越接近1,表示加权矩阵越一致,越可靠;随机一致性指标越小,表示判断矩阵越一致。 6. 判断一致性是否满足要求:如果一致性比例足够高且随机一致性指标足够小,则认为判断矩阵具有较高的一致性。如果一致性不满足要求,则需要重新调整判断矩阵,直到满足要求。 7. 应用权重:根据权重向量,对方案进行加权求和,得到最终的结果。如果需要,可以使用Python进行数据可视化或其他进一步的分析。 在Python中,可以使用NumPy库来进行矩阵运算和统计分析,可以使用SciPy库来计算一致性比例和随机一致性指标。可以使用matplotlib库进行数据可视化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值