📜  多标准决策 (MCDM) 的 TOPSIS 方法(1)

📅  最后修改于: 2023-12-03 15:23:43.295000             🧑  作者: Mango

介绍多标准决策 (MCDM) 的 TOPSIS 方法

什么是多标准决策 (MCDM)?

多标准决策 (MCDM) 是一种管理科学方法,用于在多个决策标准的影响下进行决策。这些决策标准可能涉及到不同的约束条件和优先级,例如成本、质量、可靠性等等。MCDM 旨在为决策者提供决策支持,以便更好地理解不同选择之间的权衡。

什么是 TOPSIS 方法?

TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) 方法是一种常见的 MCDM 方法。它通过将决策选择与理想解决方案进行比较,确定每个选择的相似性得分,从而指导决策。

TOPSIS 方法的基本思想是,在多个标准下,每个决策选择都有其理想的解决方案和最差的解决方案。然后,在标准化和加权每个标准评分之后,TOPSIS 通过计算每个解决方案与理想解决方案之间的距离和每个解决方案与最差解决方案之间的距离,为每个解决方案分配一个相似性得分,指导决策者做出最佳选择。

如何使用 TOPSIS 方法进行多标准决策?

具体来说,使用 TOPSIS 方法进行多标准决策,需要按照以下步骤进行:

  1. 收集决策标准和每个决策选择的评估数据。
  2. 将评估数据标准化,然后为每个标准分配一个权重。
  3. 计算每种决策选择与理想解决方案和最差解决方案之间的距离。
  4. 使用 TOPSIS 公式计算每种决策选择的相似性得分。
  5. 对每个选择进行排序,以确定最佳决策。
如何使用 Python 实现 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 和相关库,可以轻松实现该方法,并为决策者提供合理的决策建议。