topsis的python代码
时间: 2023-07-10 19:13:31 浏览: 159
好的,下面是一个简单的Python实现TOPSIS方法的代码示例:
```python
import numpy as np
def topsis(decision_matrix, weights, impacts):
"""
:param decision_matrix: 决策矩阵,每一行表示一个样本,每一列表示一个指标
:param weights: 各指标的权重
:param impacts: 各指标的影响方向,+1表示正向,-1表示负向
:return: 各样本的TOPSIS得分
"""
m, n = decision_matrix.shape
# 归一化决策矩阵
norm_matrix = decision_matrix / np.sqrt(np.sum(decision_matrix**2, axis=0))
# 加权归一化决策矩阵
weighted_matrix = norm_matrix * weights
# 计算理想解和负理想解
ideal_best = np.max(weighted_matrix, axis=0)
ideal_worst = np.min(weighted_matrix, axis=0)
# 计算各样本到理想解和负理想解的距离
d_best = np.sqrt(np.sum((weighted_matrix - ideal_best)**2, axis=1))
d_worst = np.sqrt(np.sum((weighted_matrix - ideal_worst)**2, axis=1))
# 计算各样本的TOPSIS得分
topsis_score = d_worst / (d_best + d_worst)
# 将负向指标的得分取反
topsis_score *= np.where(impacts == 1, 1, -1)
return topsis_score
```
这段代码实现了TOPSIS方法的主要步骤,包括归一化决策矩阵、加权归一化决策矩阵、计算理想解和负理想解、计算各样本到理想解和负理想解的距离以及计算各样本的TOPSIS得分等。需要注意的是,这个代码示例只适用于所有指标都是数值型的情况,如果有分类型指标,需要进行额外的处理。
阅读全文