📅  最后修改于: 2023-12-03 15:23:43.295000             🧑  作者: Mango
多标准决策 (MCDM) 是一种管理科学方法,用于在多个决策标准的影响下进行决策。这些决策标准可能涉及到不同的约束条件和优先级,例如成本、质量、可靠性等等。MCDM 旨在为决策者提供决策支持,以便更好地理解不同选择之间的权衡。
TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) 方法是一种常见的 MCDM 方法。它通过将决策选择与理想解决方案进行比较,确定每个选择的相似性得分,从而指导决策。
TOPSIS 方法的基本思想是,在多个标准下,每个决策选择都有其理想的解决方案和最差的解决方案。然后,在标准化和加权每个标准评分之后,TOPSIS 通过计算每个解决方案与理想解决方案之间的距离和每个解决方案与最差解决方案之间的距离,为每个解决方案分配一个相似性得分,指导决策者做出最佳选择。
具体来说,使用 TOPSIS 方法进行多标准决策,需要按照以下步骤进行:
在 Python 中,可以使用 SciPy 库来计算每种决策选择与理想解决方案和最差解决方案之间的距离。同时,可以使用 Pandas 库来读取和处理评估数据,以及计算标准化的数据和权重。
下面是一个使用 Python 实现 TOPSIS 方法的代码示例:
import pandas as pd
import numpy as np
from scipy.stats import rankdata
from typing import List
def topsis(data: pd.DataFrame, weights: List[float], impacts: List[str]):
# normalize the data
norm_data = data.apply(lambda x: x / np.sqrt(np.sum(x**2)), axis=0)
# multiply by the weights
weighted_data = norm_data.apply(lambda x: x * weights, axis=1)
# calculate the ideal and anti-ideal solutions
ideal = weighted_data.max().to_numpy()
anti_ideal = weighted_data.min().to_numpy()
# calculate the distance to the ideal and anti-ideal solutions
d_pos = np.sqrt(np.sum((weighted_data - ideal)**2, axis=1))
d_neg = np.sqrt(np.sum((weighted_data - anti_ideal)**2, axis=1))
# calculate the relative closeness
rc = d_neg / (d_pos + d_neg)
# apply the impact matrix
for i, impact in enumerate(impacts):
if impact == '-':
rc = 1 / rc
# rank the relative closeness
ranks = len(rc) - rankdata(rc, method='ordinal') + 1
# return the ranking
return pd.DataFrame({'Rank': ranks, 'Relative Closeness': rc}, index=data.index)
其中,data
参数是一个 Pandas DataFrame,包含需要评估的每种决策选择和每个标准的评估数据;weights
参数是一个权重列表,包含每个标准的权重;impacts
参数是一个影响列表,包含每个标准的影响,可以为 '+'(正向)、'-'(负向)或 'o'(不确定)。
使用该方法,可以得到一个包含每种决策选择排名和相似性得分的 Pandas DataFrame。
多标准决策 (MCDM) 的 TOPSIS 方法提供了一种可靠的方法来为决策者提供决策支持,并接受多个决策标准之间的权衡。使用 Python 和相关库,可以轻松实现该方法,并为决策者提供合理的决策建议。