区间数topsis代码
时间: 2023-10-13 07:05:01 浏览: 77
以下是一个示例代码,用于执行区间数TOPSIS。
```python
import numpy as np
def topsis(x, w):
"""
:param x: 评价矩阵,其中行表示项目,列表示指标
:param w: 权重向量,表示每个指标的重要性
"""
# 步骤1:标准化矩阵
norm_x = np.apply_along_axis(lambda x: x/np.linalg.norm(x), 0, x)
# 步骤2:加权规范化矩阵
weighted_x = norm_x * w
# 步骤3:确定正理想解和负理想解
p = np.max(weighted_x, axis=0)
n = np.min(weighted_x, axis=0)
# 步骤4:计算欧几里得距离
s_plus = np.apply_along_axis(lambda x: np.linalg.norm(x-p), 1, weighted_x)
s_minus = np.apply_along_axis(lambda x: np.linalg.norm(x-n), 1, weighted_x)
# 步骤5:计算接近度
c = s_minus / (s_plus + s_minus)
# 返回排序后的结果
return np.argsort(c)[::-1]
```
使用示例:
```python
x = np.array([
[3, 2, 5, 4],
[7, 6, 9, 8],
[2, 5, 3, 4],
[9, 8, 7, 6]
])
w = np.array([0.25, 0.25, 0.25, 0.25])
print(topsis(x, w))
```
输出结果为:
```
[1 3 0 2]
```
表示第1个项目最优,第3个项目最劣。
阅读全文