层次分析模型算法实现(python)

​
#层次分析模型代码:
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")

​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值