TOPSIS距离计算代码
时间: 2024-09-01 08:00:43 浏览: 42
Topsis(Technique for Order of Preference by Similarity to Ideal Solution)中的距离计算通常是通过欧氏距离公式进行的。假设我们有n个评价指标,每个指标有一个得分(si)和一个目标(ai),其中i表示第i个指标,最好的情况分数记为Pi^+,最坏的情况分数记为Pi^-。下面是简单的Python代码示例:
```python
import numpy as np
def calculate_distance(score_matrix, ideal_score, anti_ideal_score):
# 获取行数(即方案的数量)
num_solutions = score_matrix.shape[0]
# 计算靠近理想解的距离 (Positive Distance)
pos_distance = np.linalg.norm((score_matrix - ideal_score), axis=1)
# 计算远离反理想解的距离 (Negative Distance)
neg_distance = np.linalg.norm(score_matrix - anti_ideal_score, axis=1)
# 合并两个距离并取最小作为最终距离
total_distance = np.min(np.stack([pos_distance, neg_distance], axis=-1), axis=0)
return total_distance
# 示例:
score_matrix = np.array([[4, 3], [3, 4], [5, 2]]) # 方案的得分矩阵
ideal_score = np.array([4, 4]) # 理想得分
anti_ideal_score = np.array([1, 1]) # 反理想得分
distance = calculate_distance(score_matrix, ideal_score, anti_ideal_score)
```
这个函数会返回每个方案到理想解和反理想解的最小距离,然后根据这些距离计算出优势指数。优势越大,说明方案越接近理想解,因此最后的选择通常是距离最小的那个方案。
阅读全文