上一篇学习了层次分析的理论,今天用代码实现一下吧!
判断矩阵的一致性检验
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)