python权重法CRITIC求各个变量的权重代码
时间: 2024-01-14 13:02:32 浏览: 197
下面是使用Python实现CRITIC方法求解各个变量的权重的代码:
```python
import numpy as np
# 定义判别矩阵
D = np.array([[1, 3, 5],
[1/3, 1, 3],
[1/5, 1/3, 1]])
# 归一化处理
n = D.shape[0]
A = np.zeros((n, n))
for i in range(n):
A[i, :] = D[i, :] / np.sum(D[i, :])
# 计算平均化矩阵
w = np.mean(A, axis=0)
# 计算一致性指标
lambda_max = np.max(np.linalg.eigvals(D))
CI = (lambda_max - n) / (n - 1)
RI = np.array([0, 0, 0.58])
CR = CI / RI[n-1]
# 输出结果
if CR < 0.1:
print('一致性指标CR={:.2f},通过检验'.format(CR))
print('各变量的权重为:', w)
else:
print('一致性指标CR={:.2f},未通过检验,请重新调整判别矩阵'.format(CR))
```
其中,`D`为判别矩阵,`n`为矩阵的阶数,`A`为标准化矩阵,`w`为权重向量,`lambda_max`为特征值的最大值,`CI`为一致性指标,`RI`为随机一致性指标,`CR`为一致性比率。根据CR是否小于0.1,判断判别矩阵是否满足一致性要求。如果满足,输出各个变量的权重。
阅读全文