#层次分析模型代码:
import numpy as np
#计算特征向量和最大特征值
a=np.array([[1,3,1,1/3],[1/3,1,1/2,1/5],[1,2,1,1/3],[3,5,3,1]]) #a为自己构造的输入判别矩阵
w=np.linalg.eig(a) #np.linalg.eig(matri)返回特征值和特征向量
tzz=np.max(w[0]) #最大特征值
t=np.argwhere(w[0]==tzz) #寻找最大特征值所在的行和列
tzx=w[1][::-1,t[0]] #最大特征值对应的特征向量
#一致性检验
RILIST=[0,0,0.58,0.9,1.12,1.24,1.32,1.41,1.45,1.49,1.52,1.54,1.56,1.58,1.59]
n=a.shape[0]
RI=RILIST[n]
CI=(tzz-n)/(n-1)
CR=CI/RI
print(CR)
print("通过一致性检验") if CR<0.1 else print("没有通过一致性检验")
P=np.array([[8,7,6,8],[7,8,8,7]]) #每一行代表一个对象的指标评分
#赋权重
quan=np.zeros((n,1));
quan=tzx/sum(tzx)
Q=quan
#显示出所有评分对象的评分值
score=np.dot(P,Q) #矩阵乘法
for i in range(len(score)):
print('对象{:}得分={:}'.format(i+1,score[i,0].real))
print("最终结果:")
if score[0,0].real>score[1,0].real:
print("对象1大于对象2")
else:
print("对象2大于对象1")
层次分析模型算法实现(python)
于 2023-05-27 21:01:14 首次发布