【数学建模】层次分析代码(python)

上一篇学习了层次分析的理论,今天用代码实现一下吧!

 判断矩阵的一致性检验

import numpy as np
A = np.array([[1,2,3,5],[1/2,1,1/2,2],[1/3,2,1,2],[1/5,1/2,1/2,1]])
n = A.shape[0]#获取A的行
eig_val, eig_vec=np.linalg.eig(A)#计算方阵的特征值和特征向量
Max_eig=max(eig_val)
CI = (Max_eig - n) / (n-1)
RI=[0,0.0001,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1.59]
#n=2时,一定是一致矩阵,CI=0,但为了分母!=0,所以=0.0001
CR=CI/RI[n-1]
print("一致性指标CI=",CI)
print("一致性比例CR=",CR)
if CR < 0.10:
    print("因为CR<0.10,所以判断矩阵A的一致性可以接受!")
else:
    print("因为CR>0.10,所以判断矩阵A需要进行修改!")

算数平均法求权重 

#算数平均法求权重
Asum=np.sum(A,axis=0)
Stand_A=A/Asum
Asumr=np.sum(Stand_A,axis=1)
weigt=Asumr/n
print("权重:",weigt)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值