利用topsis法排序代码
时间: 2023-12-07 14:01:05 浏览: 85
Topsis方法是一种多标准决策分析方法,用于排序和选取最佳方案。以下是一个简单的Python代码示例,用于利用Topsis方法对一组方案进行排序。
首先,我们需要导入numpy库,该库提供了用于数值计算的各种功能。然后,我们定义一个名为topsis_sort的函数,该函数接受两个参数:一个包含方案评估值的二维数组和一个包含权重值的一维数组。
```
import numpy as np
def topsis_sort(data, weights):
# 归一化处理
normalized_data = data / np.sqrt((data * data).sum(axis=0))
# 加权归一化处理
weighted_data = normalized_data * weights
# 理想解和负理想解
ideal_solution = np.max(weighted_data, axis=1)
negative_ideal_solution = np.min(weighted_data, axis=1)
# 计算到理想解和负理想解的距离
distance_to_ideal = np.sqrt(((weighted_data - ideal_solution) ** 2).sum(axis=1))
distance_to_negative_ideal = np.sqrt(((weighted_data - negative_ideal_solution) ** 2).sum(axis=1))
# 排序并返回结果
topsis_scores = distance_to_negative_ideal / (distance_to_ideal + distance_to_negative_ideal)
sorted_indices = np.argsort(topsis_scores)[::-1]
return sorted_indices
```
使用这个函数,我们可以对一组方案进行排序。假设我们有一个4x3的二维数组data,它包含四个方案的三个评估值,和一个长度为3的一维数组weights,它包含三个权重值。
```
data = np.array([[3, 4, 5],
[1, 2, 6],
[2, 5, 4],
[4, 3, 2]])
weights = np.array([0.3, 0.4, 0.3])
sorted_indices = topsis_sort(data, weights)
print(sorted_indices)
```
这段代码将打印出一个按照Topsis方法排序后的方案索引列表。根据具体需求,你可以使用这个列表来获取被排序方案的其他信息,如名称、得分等。
阅读全文