本段代码介绍了如何在MATLAB环境中应用TOPSIS方法进行多准则决策分析,通过计算各方案与理想解和负理想解的距离来确定最优方案。
数学建模中的优劣解距离法(TOPSIS)是一种常用的多准则决策方法。这种方法通过计算每个方案与最优解、最差解之间的相对接近程度来评价各个方案的优劣。
以下是使用Python实现的一个简单案例程序,用于演示如何应用优劣解距离法进行分析:
```python
import numpy as np
def topsis(decision_matrix, weights, impacts):
# 计算归一化矩阵
normalized_decision_matrix = decision_matrix / (np.sqrt(np.sum(decision_matrix ** 2, axis=0)))
# 计算加权规范化决策矩阵
weighted_normalized_decision_matrix = normalized_decision_matrix * weights
# 确定最优解和最差解
ideal_best_solution = np.amax(weighted_normalized_decision_matrix, axis=0)
ideal_worst_solution = np.amin(weighted_normalized_decision_matrix, axis=0)
for i in range(len(impacts)):
if impacts[i] == -:
ideal_best_solution[i], ideal_worst_solution[i] = \
ideal_worst_solution[i], ideal_best_solution[i]
# 计算每个方案与最优解和最差解的距离
distance_to_ideal_best = np.sqrt(np.sum((weighted_normalized_decision_matrix -
np.array([ideal_best_solution]*len(decision_matrix))) ** 2, axis=1))
distance_to_ideal_worst = np.sqrt(np.sum((weighted_normalized_decision_matrix -
np.array([ideal_worst_solution]*len(decision_matrix))) ** 2, axis=1))
# 计算相对接近度
relative_closeness = distance_to_ideal_best / (distance_to_ideal_best + distance_to_ideal_worst)
return relative_closeness
# 示例数据,决策矩阵(假设为3个方案、4个准则)、权重向量和影响符号列表
decision_matrix = np.array([[0.1, 0.2, 0.8, 0.7],
[0.5, 0.6, 0.9, 0.8],
[0.3, 0.4, 1., 1.]])
weights = np.array([1/len(decision_matrix[0])]*len(decision_matrix[0]))
impacts = [+, +, +, +]
# 调用TOPSIS函数
relative_closeness = topsis(decision_matrix, weights, impacts)
print(相对接近度:, relative_closeness)
```
以上代码展示了如何使用Python计算优劣解距离法中每个方案的相对接近程度,从而帮助决策者做出更加科学的选择。