TOPSIS python
时间: 2023-10-18 14:30:43 浏览: 115
TOPSIS-Python是一种优化算法,用于计算每个备选方案与理想备选方案之间的几何距离。它通过标识每个准则的权重并标准化每个准则的得分来实现补偿性汇总。在Python中,可以使用源代码实现TOPSIS算法。
以下是一个使用Python编写的TOPSIS算法的示例代码:
```python
import copy
import pandas as pd
import numpy as np
# 导入数据
data = pd.read_excel('D:\桌面\TOPSIS.xlsx')
label_need = data.keys()[1:]
data1 = data[label_need].values
# 计算行数和列数
[m, n = data1.shape
# 数据标准化
data2 = data1.astype('float')
for j in range(0, n):
data2[:, j = data1[:, j / np.sqrt(sum(np.square(data1[:, j])))
# 计算信息熵
p = data2
for j in range(0, n):
p[:, j = data2[:, j / sum(data2[:, j])
E = data2 = -1 / np.log(m) * sum(p[:, j * np.log(p[:, j]))
# 计算权重
w = (1 - E) / sum(1 - E)
# 得到加权后的数据
R = data2 * w
# 得到最大值最小值距离
r_max = np.max(R, axis=0)
r_min = np.min(R, axis=0)
# 计算d向量
d_z = np.sqrt(np.sum(np.square((R - np.tile(r_max, (m, 1)))), axis=1))
d_f = np.sqrt(np.sum(np.square((R - np.tile(r_min, (m, 1)))), axis=1))
# 得到评分
s = d_f / (d_z + d_f)
Score = 100 * s / max(s)
for i in range(0, len(Score)):
print(f"第{i+1}个投标者百分制得分为:{Score[i]}")
```
这段代码会读取一个名为`TOPSIS.xlsx`的Excel文件中的数据,并根据TOPSIS算法计算出每个投标者的百分制得分。你可以根据自己的需求修改代码中的文件路径和数据处理逻辑。
需要注意的是,这只是一个示例代码,实际应用中可能需要根据具体情况进行适当的调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [TOPSIS-Python:python中TOPSIS优化算法的源代码](https://download.csdn.net/download/weixin_42146086/18799448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [TOPSIS法 —— python](https://blog.csdn.net/qq_25990967/article/details/122762897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文