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

数学建模--Topsis

一、Topsis 基本概念

Topsis(Technique for Order Preference by Similarity to Ideal Solution即逼近理想解排序法,是一种常用的多属性决策分析方法。它通过构建评价问题的正理想解和负理想解,计算各方案与这两个理想解的距离,进而根据相对贴近度对方案进行排序,以此选出最优方案。

二、Topsis 核心思想

Topsis 的核心思想是最优方案应同时距离正理想解最近、距离负理想解最远。正理想解是在各属性上都达到最好水平的虚拟方案,负理想解则是在各属性上都处于最差水平的虚拟方案。通过衡量各实际方案与这两个理想解的接近程度,来判断方案的优劣。

三、Topsis 具体步骤

(一)构建原始决策矩阵
设评价对象有 m 个方案,n 个评价指标,原始决策矩阵为X=(xij)m×nX=(x_{ij})_{m\times n}X=(xij)m×n,其中xijx_{ij}xij表示第 i 个方案在第 j 个指标上的取值。
(二)数据标准化处理
由于不同指标的量纲和数量级可能不同,为了消除其影响,需要对原始数据进行标准化处理。常用的标准化方法有极差标准化和均值 - 标准差标准化等。
对于效益型指标(指标值越大越好),标准化公式为:zij=xij−min⁡jxijmax⁡jxij−min⁡jxijz_{ij}=\frac{x_{ij}-\min_j x_{ij}}{\max_j x_{ij}-\min_j x_{ij}}zij=maxjxijminjxijxijminjxij

对于成本型指标(指标值越小越好),标准化公式为:zij=max⁡jxij−xijmax⁡jxij−min⁡jxijz_{ij}=\frac{\max_j x_{ij}-x_{ij}}{\max_j x_{ij}-\min_j x_{ij}}zij=maxjxijminjxijmaxjxijxij

标准化后得到标准化矩阵(Z=(z_{ij}){m\times n}\。
(三)确定权重
根据各评价指标的重要程度,赋予相应的权重$w_j)((j = 1,2,\cdots,n$,且满足∑j=1nwj=1\sum_{j = 1}^n w_j=1j=1nwj=1。权重的确定方法有主观赋权法(如层次分析法)和客观赋权法(如熵值法)等。
(四)构建加权标准化矩阵
将标准化矩阵中的每个元素乘以对应的权重,得到加权标准化矩阵(V=(v
{ij}){m\times n}),其中(v{ij}=z_{ij}\times w_j)。
(五)确定正理想解和负理想解
正理想解(V^+):每个指标取加权标准化矩阵中该指标的最大值,即vj+=max⁡{v1j,v2j,⋯ ,vmj}v_j^+=\max\{v_{1j},v_{2j},\cdots,v_{mj}\}vj+=max{v1j,v2j,,vmj}
负理想解(V^-):每个指标取加权标准化矩阵中该指标的最小值,即vj−=min⁡{v1j,v2j,⋯ ,vmj}v_j^-=\min\{v_{1j},v_{2j},\cdots,v_{mj}\}vj=min{v1j,v2j,,vmj}
(六)计算各方案与正、负理想解的距离
通常采用欧氏距离来计算,公式如下:
第 i 个方案与正理想解的距离di+=∑j=1n(vij−vj+)2d_i^+=\sqrt{\sum_{j = 1}^n (v_{ij}-v_j^+)^2}di+=j=1n(vijvj+)2
第 i 个方案与负理想解的距离di−=∑j=1n(vij−vj−)2d_i^-=\sqrt{\sum_{j = 1}^n (v_{ij}-v_j^-)^2}di=j=1n(vijvj)2
(七)计算各方案的相对贴近度
相对贴近度(C_i)的计算公式为:Ci=di−di++di−C_i=\frac{d_i^-}{d_i^+ + d_i^-}Ci=di++didiCiC_iCi越接近 1,说明该方案越接近正理想解,方案越优
(八)根据相对贴近度对方案进行排序
按照相对贴近度从大到小的顺序对各方案进行排序,即可得到方案的优劣次序

四、优点与缺点

(一)优点
直观可靠
对数据分布和样本量没有严格限制,适用范围广
(二)缺点
指标权重的确定对评价结果影响较大,若权重确定不合理,可能导致评价结果有误
当指标较多时,计算量相对较大
只能对方案进行排序,不能直接判断方案是否达到了预期标准

http://www.dtcms.com/a/344675.html

相关文章:

  • LLM实践系列:利用LLM重构数据科学流程04 - 智能特征工程
  • Redis事务与锁的顺序抉择:事务里加锁 vs 先锁再事务的“微妙差异”分享
  • C#自定义工具类-时间日期工具类
  • 【python与生活】如何用Python写一个简单的自动整理文件的脚本?
  • 常用 CMake 内置变量合集与说明
  • Python 环境变量:从基础到实战的灵活配置之道
  • Logstash——输出(Output)
  • Jenkins自动化部署服务到Kubernetes环境
  • 云计算学习100天-第27天
  • python程序函数计时
  • unity资源领取反作弊工具加密器
  • 递归思路:从DFS到二叉树直径的实战(通俗易懂)
  • redis设置密码及配置conf
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|21th Aug. , 2025
  • 异常值检测:孤立森林模型(IsolationForest)总结
  • 并发编程:浅析LockSupport工具
  • 大数据世界的开拓者:深入浅出MapReduce分布式计算经典范式
  • MyBatis-Flex
  • 【中微半导体】嵌入式C语言,函数指针表驱动状态机( 代码风格抽象,在 C 里模拟了“对象“、“多态“的效果)
  • 【日常学习】2025-8-22 类属性和实例属性+小白学调试
  • 数据结构 -- 树
  • Vue3+Ant-design-vue+SSE实现实时进度条
  • 前端快讯看这里
  • 基于导频的OFDM系统的信道估计(使用LS估计算法)
  • 突击复习清单(高频核心考点)
  • 【C++高阶六】哈希与哈希表
  • 线程池拒绝策略踩坑
  • uniappx与uniapp的区别
  • 【UniApp打包鸿蒙APP全流程】如何配置并添加UniApp API所需的鸿蒙系统权限
  • MySQL B+树索引使用