数学建模——TOPSIS法
发布人:shili8
发布时间:2024-11-07 16:09
阅读次数:0
**数学建模——TOPSIS法**
在决策理论中,多属性决策(MADM)是指在决策过程中涉及多个属性或目标的决策问题。TOPSIS法是一种常用的MADM方法,它通过比较各个方案的优劣来确定最优方案。
**TOPSIS法原理**
TOPSIS法的核心思想是:首先,根据给定的数据集,计算出每个方案的正向和负向属性值,然后利用这些值计算出每个方案的综合评分。最后,比较各个方案的综合评分,选择综合评分最高的方案作为最优方案。
**TOPSIS法步骤**
1. **数据准备**: 将决策问题中的数据集转换为矩阵形式,每列代表一个属性,每行代表一个方案。
2. **正向和负向属性值计算**: 根据给定的数据集,计算出每个方案的正向和负向属性值。正向属性值表示该属性对决策问题的贡献程度,而负向属性值则表示相反的贡献程度。
3. **综合评分计算**: 利用正向和负向属性值计算出每个方案的综合评分。综合评分越高,表明该方案越优。
4. **最优方案选择**: 比较各个方案的综合评分,选择综合评分最高的方案作为最优方案。
**TOPSIS法数学公式**
假设有 n 个方案,每个方案有 m 个属性。我们将每个方案的正向和负向属性值表示为:
* 正向属性值:$r_{ij}$(i=1,2,...,n;j=1,2,...,m)
* 负向属性值:$b_{ij}$(i=1,2,...,n;j=1,2,...,m)
综合评分计算公式:
$$S_i = sum_{j=1}^{m} (r_{ij} - b_{ij})$$最优方案选择公式:
$$text{Optimal Scheme} = argmax S_i$$**Python代码示例**
import numpy as npdef topsis(data): # 正向和负向属性值计算 r = data.max(axis=0) b = data.min(axis=0) # 综合评分计算 s = np.sum((r - b), axis=1) # 最优方案选择 optimal_scheme = np.argmax(s) return optimal_scheme# 示例数据data = np.array([[10,20,30], [40,50,60], [70,80,90]]) # 执行TOPSIS法optimal_scheme = topsis(data) print("最优方案:", optimal_scheme +1) # 最优方案索引从0开始,+1表示转换为实际索引
**注释**
* `data` 是决策问题中的数据集,每行代表一个方案,每列代表一个属性。
* `r` 和 `b` 分别是正向和负向属性值的矩阵。
* `s` 是综合评分的向量。
* `optimal_scheme` 是最优方案的索引。
**总结**
TOPSIS法是一种常用的MADM方法,通过比较各个方案的优劣来确定最优方案。该方法涉及数据准备、正向和负向属性值计算、综合评分计算以及最优方案选择等步骤。Python代码示例展示了如何使用TOPSIS法来解决决策问题。