当前位置: 首页 > article >正文

数学建模学习(130):使用Python基于模糊TOPSIS算法的多准则决策分析

目录

  1. 引言
  2. 模糊TOPSIS算法原理与步骤
    • 2.1 MCDA背景与模糊TOPSIS的适用性
    • 2.2 模糊TOPSIS算法的详细步骤解析与数学公式
  3. 案例背景与应用场景
  4. 数据说明与标准化处理
    • 4.1 数据
    • 4.2 数据标准化步骤与权重选择
  5. 代码实现
    • 5.1 代码
    • 5.2 结果分析

1. 引言

在当前信息密集和快速变化的商业环境中,决策者经常面对多维度、多准则的复杂决策问题。例如,在供应链管理中,选择合适的供应商不仅需要考虑成本,还要综合考虑质量、交货周期、信誉等多个因素。这类问题通常涉及到多准则决策分析(MCDA),而TOPSIS(Technique for Order of Preference by Similarity to Ideal Solution)算法作为MCDA方法中的经典代表,以其直观、计算简洁的特点被广泛应用于供应链、项目选择、风险管理等多个领域。

然而,在现实场景中,许多评价标准往往不是精确的数值,存在主观性或不确定性。模糊TOPSIS结合了模糊集理论,能够有效地处理模糊数据,帮助决策者在不确定条件下选择最优方案。本文将详细探讨模糊TOPSIS算法的原理与应用,并结合真实案例,通过Python代码演示其实际效果。


2. 模糊TOPSIS算法原理与步骤

2.1 MCDA背景与模糊TOPSIS的适用性

多准则决策分析(MCDA)是一类用于帮助决策者在多个相互冲突的评价标准下选择最优方案的方法。TOPSIS算法提出的核心思想是通过计算每个备选方案与理想解和负理想解的距离进行排序。其基本假设是:最佳方案应该尽可能接近理想解(Positive Ideal Solution, PIS),同时远离负理想解(Negative Ideal Solution, NIS)。

传统TOPSIS算法处理的是精确数据,而模糊TOPSIS通过模糊数来表达不确定信息,能够有效处理模糊条件下的决策问题。适用的场景包括:

  • 供应商选择:需要综合考虑价格、质量、交货期等模糊标准。
  • 风险管理:风险指标无法精确量化。
  • 项目选择:多个模糊评价指标,如成本、收益和可行性。

2.2 模糊TOPSIS算法的详细步骤解析与数学公式

模糊TOPSIS算法的具体步骤如下:

第一步:构建模糊决策矩阵

根据每个备选方案在各个评价指标上的表现,将专家打分数据转化为三角模糊数,形成模糊决策矩阵 D = [ x ~ i j ] D = [\tilde{x}_{ij}] D=[x~ij],其中 x ~ i j \tilde{x}_{ij} x~ij 表示第 i i i 个方案在第 j j j 个指标上的模糊数,以三元组 ( a , b , c ) (a, b, c) (a,b,c) 表示, a ≤ b ≤ c a \leq b \leq c abc 分别为最小值、均值、最大值。

第二步:构建模糊权重矩阵

根据每个指标的重要性,分配权重向量 W = [ w ~ j ] W = [\tilde{w}_j] W=[w~j],其中 w ~ j \tilde{w}_j w~j 表示第 j j j 个指标的模糊权重。

第三步:标准化模糊决策矩阵

模糊标准化将指标的尺度统一,保证不同单位下的指标具有相同量纲。标准化分为效益型和成本型两种:

  • 效益型指标(值越大越好)标准化公式:
    r ~ i j = ( x ~ i j x ~ j max ⁡ , x ~ i j x ~ j max ⁡ , x ~ i j x ~ j max ⁡ ) \tilde{r}_{ij} = \left(\frac{\tilde{x}_{ij}}{\tilde{x}_{j}^{\max}}, \frac{\tilde{x}_{ij}}{\tilde{x}_{j}^{\max}}, \frac{\tilde{x}_{ij}}{\tilde{x}_{j}^{\max}}\right) r~ij=(x~jmaxx~ij,x~jmaxx~ij,x~jmaxx~ij)
  • 成本型指标(值越小越好)标准化公式:
    r ~ i j = ( x ~ j min ⁡ x ~ i j , x ~ j min ⁡ x ~ i j , x ~ j min ⁡ x ~ i j ) \tilde{r}_{ij} = \left(\frac{\tilde{x}_{j}^{\min}}{\tilde{x}_{ij}}, \frac{\tilde{x}_{j}^{\min}}{\tilde{x}_{ij}}, \frac{\tilde{x}_{j}^{\min}}{\tilde{x}_{ij}}\right) r~ij=(x~ijx~jmin,x~ijx~jmin,x~ijx~jmin)
第四步:构建加权标准化决策矩阵

将标准化矩阵中的元素与权重相乘,得到加权标准化决策矩阵 v ~ i j = w ~ j × r ~ i j \tilde{v}_{ij} = \tilde{w}_j \times \tilde{r}_{ij} v~ij=w~j×r~ij

第五步:确定正理想解和负理想解

正理想解和负理想解分别表示各指标的最优和最劣表现。定义如下:

  • 正理想解(PIS) A + = ( v ~ 1 + , v ~ 2 + , . . . , v ~ n + ) A^+ = (\tilde{v}_1^+, \tilde{v}_2^+, ..., \tilde{v}_n^+) A+=(v~1+,v~2+,...,v~n+)
  • 负理想解(NIS) A − = ( v ~ 1 − , v ~ 2 − , . . . , v ~ n − ) A^- = (\tilde{v}_1^-, \tilde{v}_2^-, ..., \tilde{v}_n^-) A=(v~1,v~2,...,v~n)

其中:
v ~ j + = max ⁡ i v ~ i j , v ~ j − = min ⁡ i v ~ i j \tilde{v}_j^+ = \max_{i} \tilde{v}_{ij}, \quad \tilde{v}_j^- = \min_{i} \tilde{v}_{ij} v~j+=imaxv~ij,v~j=iminv~ij

第六步:计算每个方案与正负理想解的距离

采用欧几里得距离计算每个方案与正理想解和负理想解的距离:
d i + = ∑ j = 1 n ( v ~ i j − v ~ j + ) 2 , d i − = ∑ j = 1 n ( v ~ i j − v ~ j − ) 2 d_i^+ = \sqrt{\sum_{j=1}^n (\tilde{v}_{ij} - \tilde{v}_j^+)^2}, \quad d_i^- = \sqrt{\sum_{j=1}^n (\tilde{v}_{ij} - \tilde{v}_j^-)^2} di+=j=1n(v~ijv~j+)2 ,di=j=1n(v~ijv~j)2

第七步:计算贴近度系数(Closeness Coefficient)

计算每个方案的贴近度系数 C C i CC_i CCi,公式为:
C C i = d i − d i + + d i − CC_i = \frac{d_i^-}{d_i^+ + d_i^-} CCi=di++didi
贴近度越大,方案越优。


3. 案例背景与应用场景

以某制造公司选择供应商为例。该公司需综合考虑成本、质量、交货时间、信誉四个评价标准,以确保选择的供应商在长期合作中能够提供性价比高的产品和优质服务。每个供应商在这些标准上的表现具有一定的主观性和模糊性,因此采用模糊TOPSIS方法更为适宜。


4. 数据说明与标准化处理

4.1 数据

在本案例中,某制造公司正在评估四个潜在供应商,以便在长期合作中选择出最具性价比和可靠性的一家。由于选择供应商是一个多维度的决策问题,公司采用四个主要评价标准,即成本质量交货期信誉,以便更全面地衡量每家供应商的表现。

各标准的定义如下:

  • 成本(万元):供应商提供的产品或服务的价格,单位为万元。成本越低对公司越有利,因此此项为“成本型”指标。

  • 质量评分:供应商提供的产品质量的评价,评分范围从低到高,越高表示质量越好。质量直接影响公司的生产效率和成品质量,因此公司优先考虑质量高的供应商,此项为“效益型”指标。

  • 交货期(天):供应商的交货速度,单位为天。交货期越短越好,可以有效保障公司的生产进度,此项为“成本型”指标。

  • 信誉评分:供应商在行业中的声誉和信用评分。信誉反映了供应商的稳定性和可靠性,是评价供应商长期合作潜力的关键。信誉评分越高越好,此项为“效益型”指标。

在本案例中,为了更好地处理数据中的主观性和不确定性,公司采用了三角模糊数来表达每个供应商在各标准上的表现。三角模糊数用三元组表示,分别为最低值、可能值和最高值,用以涵盖评价的模糊性和不确定性。

供应商成本(万元)质量评分交货期(天)信誉评分
A(75, 80, 85)(80, 85, 90)(20, 25, 30)(85, 90, 95)
B(65, 70, 75)(75, 80, 85)(15, 20, 25)(80, 85, 90)
C(85, 90, 95)(90, 95, 100)(25, 30, 35)(90, 95, 100)
D(55, 60, 65)(65, 70, 75)(10, 15, 20)(75, 80, 85)

4.2 数据标准化步骤与权重选择

为了统一数据量级,对模糊数矩阵进行标准化。假设各标准权重相等(即[0.25, 0.25, 0.25, 0.25]),标准化后矩阵消除了各标准量纲的影响。


5. 代码实现

5.1 代码

基于上述的数据,以下是模糊TOPSIS算法的Python代码实现,使用 pyDecision 库中 topsis_method 函数完成TOPSIS分析。

import numpy as np
from pyDecision.algorithm import topsis_method

# 原始数据矩阵 (未标准化)
# 四个供应商在成本、质量、交货期和信誉上的评分
matrix = np.array([
    [80, 85, 25, 90],  # 供应商A
    [70, 80, 20, 85],  # 供应商B
    [90, 95, 30, 95],  # 供应商C
    [60, 70, 15, 80]   # 供应商D
])

# 数据标准化
# 使用向量归一化方法,对每列(每个标准)进行标准化,以消除量纲差异
matrix_standardized = matrix / np.sqrt((matrix ** 2).sum(axis=0))

# 定义权重向量
# 假设四个标准同等重要,权重均为0.25
weights = [0.25, 0.25, 0.25, 0.25]

# 定义标准类型
# 成本和交货期为成本型指标(min),质量和信誉为效益型指标(max)
criteria_types = ['min', 'max', 'min', 'max']

# 运行TOPSIS算法
# verbose=True 以输出详细计算过程
topsis_results = topsis_method(matrix_standardized, weights, criteria_types, graph=False, verbose=True)

# 输出结果
print("TOPSIS相对接近度结果:", topsis_results)

5.2 结果分析

运行代码后,得到的各供应商相对接近度为:

TOPSIS相对接近度结果: [0.3876707  0.6123293  0.31356661 0.68643339]
各供应商分析
  • 供应商A (A1):接近度为0.39

    • 供应商A的相对接近度为0.39,说明其表现相对较弱,距离理想解较远。这表明供应商A在成本、质量、交货期和信誉等方面的综合表现不理想,处于劣势地位。
  • 供应商B (A2):接近度为0.61

    • 供应商B的相对接近度为0.61,处于中等偏上的水平,靠近理想解。尽管其表现不如供应商D,但在多个标准上表现较优,是一个可行的备选供应商,尤其在成本和交货期等方面可能具备优势。
  • 供应商C (A3):接近度为0.31

    • 供应商C的相对接近度最低,仅为0.31,显示其在各标准上的表现较差。该结果表明,供应商C的成本较高或质量和信誉相对不佳,是四个供应商中最不理想的选择。
  • 供应商D (A4):接近度为0.69

    • 供应商D的接近度最高,为0.69,最接近理想解。供应商D在各个关键标准上表现优异,尤其是在质量和信誉等对决策者至关重要的标准上具备明显优势,因此被评为最优供应商,是企业的最佳选择。
供应商表现的进一步分析
  • 较差供应商:供应商A和供应商C的接近度较低,显示其在关键标准上表现不佳。成本较高、交货期较长、或信誉较低可能是导致其整体表现不佳的原因。
  • 较优供应商:供应商B和供应商D的接近度较高,尤其是供应商D,它接近理想解。这说明供应商D在各标准上表现更好,特别是在质量和信誉方面的优势使其脱颖而出。
结果的商业意义
  • 最佳选择:供应商D
    供应商D的相对接近度最高,说明其在各项关键标准上均表现优秀。企业可以优先考虑与供应商D建立长期合作关系,以确保供应链的稳定和优质。

  • 备选供应商:供应商B
    虽然供应商B的接近度不如供应商D,但仍是一个可以考虑的次优选择。如果供应商D因库存不足、价格波动等原因不可用,供应商B可作为替代选项。

  • 次优选择和放弃选项
    供应商A和供应商C的接近度较低,不建议作为优先合作伙伴。特别是供应商C,其接近度最低,显示其在多个关键标准上表现不佳,选择该供应商可能存在质量或信誉风险。

结果的敏感性分析

在实际应用中,TOPSIS算法的结果会对标准的权重设置产生一定的敏感性。如果决策者调整标准的权重(如增加成本或交货期的权重),结果的排序可能发生变化。因此,企业可以根据实际需求对各标准权重进行调整,重新运行算法,以测试排序结果的稳定性与敏感性。


http://www.kler.cn/a/373786.html

相关文章:

  • 摄像机实时接入分析平台LiteAIServer视频智能分析软件视频诊断中的抖动检测功能
  • golang 高阶函数
  • 如何在短时间内入门并掌握深度学习?
  • KOA——基于Node的Web框架
  • Vant入门
  • git:将多个提交合并为一个
  • 聆听用户声音的3个方法,挖掘客户真实潜在需求
  • 24年10月Google Play政策更新通知
  • 字符串逆序(c语言)
  • 在Android开发中实现静默拍视频
  • 数智时代:以低代码开发为催化剂 加速中国制造转型升级
  • 适配器模式适用的场景
  • PostgreSQL用load语句加载插件
  • Spring 设计模式之装饰器模式
  • Vue组件学习 | 八、 v-bind指令
  • Spring Boot 集成 RabbitMQ
  • linux上使用scp从windows往linux传数据
  • 易优cms webshell
  • STM32 第17章 EXIT--外部中断/事件控制器
  • 【福建医科大学附属第一医院-注册安全分析报告】
  • nvm 版本管理工具
  • 【Python爬虫实战】网络爬虫的完整指南:基础、工作原理与实战
  • 成都云腾五洲科技“智联引擎”服务平台已发布
  • 明达云:赋能化工园区,智绘安全高效新蓝图
  • 道路安全员题库分享
  • Kafka 与传统 MQ 消息系统之间有三个关键区别?