critic权重法 Python 实现代码
时间: 2023-08-08 11:09:03 浏览: 119
Python实现CRITIC赋权法
以下是使用Python实现CRITIC权重法的示例代码:
```python
import numpy as np
# 构建判断矩阵
# 这里以三个决策因素为例,每个因素有三个指标
judgement_matrix = np.array([
[1, 3, 1/5],
[1/3, 1, 1/7],
[5, 7, 1]
])
# 归一化判断矩阵
normalized_matrix = np.zeros_like(judgement_matrix)
for i in range(judgement_matrix.shape[0]):
sum_of_row = np.sum(judgement_matrix[i])
for j in range(judgement_matrix.shape[1]):
normalized_matrix[i][j] = judgement_matrix[i][j] / sum_of_row
# 计算特征向量和特征值
eigen_values, eigen_vectors = np.linalg.eig(normalized_matrix)
max_eigen_value = np.max(eigen_values)
max_eigen_index = np.argmax(eigen_values)
weight_vector = eigen_vectors[:, max_eigen_index]
weight_vector = weight_vector / np.sum(weight_vector)
print("决策因素的权重为:", weight_vector)
```
这段代码中,首先构建了一个判断矩阵`judgement_matrix`,然后对其进行归一化,得到`normalized_matrix`。
接着,使用`np.linalg.eig`函数计算了判断矩阵的特征向量和特征值,找到最大特征值和对应的特征向量,即可得到各决策因素的权重。
最后输出权重向量`weight_vector`即可。
阅读全文