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

【数学建模】TOPSIS法简介及应用

文章目录

  • TOPSIS法的基本原理
  • TOPSIS法的基本步骤
  • TOPSIS法的应用
  • 总结

多目标决策分析中,我们常常需要在多个选择中找到一个最优解。 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法是一个广泛应用的决策方法,基于理想解与负理想解的距离来评估各个选项的优劣。本文将简要介绍TOPSIS法的基本原理、步骤以及其在实际决策中的应用。

TOPSIS法的基本原理

TOPSIS法的核心思想是:对于一个多属性决策问题,首先确定每个方案与理想解(最大化各属性)和负理想解(最小化各属性)的距离,然后通过比较这些距离来确定每个方案的优劣。
理想解负理想解分别代表了在所有方案中最佳最差的情形。TOPSIS法的目的是:选择出这样一个方案:最接近理想解,最远离负理想解

TOPSIS法的基本步骤

  1. 构建决策矩阵
    假设有 m m m个备选方案, n n n个评价指标。决策矩阵 X \mathbf{X} X m × n m \times n m×n的矩阵,其中每个元素 x i j x_{ij} xij 表示第 i i i个方案在第 j j j个评价指标上的得分。

  2. 标准化决策矩阵
    消除量纲的影响,首先对决策矩阵进行标准化处理。常用的标准化方法是向量标准化,即将每个元素 x i j x_{ij} xij 除以该列的欧几里得范数。标准化后的矩阵元素$ r_{ij} $表示为:

    r i j = x i j ∑ i = 1 m x i j 2 ∀ j = 1 , 2 , … , n r_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{m} x_{ij}^2}} \quad \forall j = 1, 2, \dots, n rij=i=1mxij2 xijj=1,2,,n

  3. 构造加权标准化决策矩阵
    若不同指标的重要性不同,可以为每个指标分配不同的权重 w j w_j wj。加权后的标准化决策矩阵 V \mathbf{V} V为:

    v i j = r i j × w j ∀ i = 1 , 2 , … , m , j = 1 , 2 , … , n v_{ij} = r_{ij} \times w_j \quad \forall i = 1, 2, \dots, m, \, j = 1, 2, \dots, n vij=rij×wji=1,2,,m,j=1,2,,n
    权重的确定可以通过主观方法,也可以通过客观方法。主观方法可以参考:【数学建模】层次分析法(AHP)详解及其应用;客观方法可以参考:【数学建模】熵权法;等等。

  4. 确定理想解与负理想解
    理想解( A + A^+ A+)和负理想解( A − A^- A)分别是各列的最大值和最小值。即:

    A + = ( max ⁡ ( v 1 j ) , max ⁡ ( v 2 j ) , … , max ⁡ ( v m j ) ) ∀ j A^+ = \left( \max(v_{1j}), \max(v_{2j}), \dots, \max(v_{mj}) \right) \quad \forall j A+=(max(v1j),max(v2j),,max(vmj))j

    A − = ( min ⁡ ( v 1 j ) , min ⁡ ( v 2 j ) , … , min ⁡ ( v m j ) ) ∀ j A^- = \left( \min(v_{1j}), \min(v_{2j}), \dots, \min(v_{mj}) \right) \quad \forall j A=(min(v1j),min(v2j),,min(vmj))j

  5. 计算各方案与理想解及负理想解的距离
    使用欧几里得距离计算每个方案与理想解和负理想解的距离。理想解与第 i i i个方案的距离 D i + D_i^+ Di+为:

    D i + = ∑ j = 1 n ( v i j − A j + ) 2 D_i^+ = \sqrt{\sum_{j=1}^{n} \left(v_{ij} - A^+_j\right)^2} Di+=j=1n(vijAj+)2

    负理想解与第 i i i个方案的距离 D i − D_i^- Di为:

    D i − = ∑ j = 1 n ( v i j − A j − ) 2 D_i^- = \sqrt{\sum_{j=1}^{n} \left(v_{ij} - A^-_j\right)^2} Di=j=1n(vijAj)2

  6. 计算相对接近度
    最后,计算每个方案相对于理想解的相对接近度(即综合评估值) C i C_i Ci

    C i = D i − D i + + D i − C_i = \frac{D_i^-}{D_i^+ + D_i^-} Ci=Di++DiDi

    其中, C i C_i Ci的值越大,说明第 i i i个方案越接近理想解优先选择该方案。

TOPSIS法的应用

TOPSIS法广泛应用于各类决策问题中,尤其是在多标准评价场景下,如:

  • 供应商选择:在选择供应商时,可以综合考虑多个因素(如价格、质量、交货期等),通过TOPSIS法来评估不同供应商的优劣。
  • 项目评估:在评估多个项目的优先级时,TOPSIS法可以帮助决策者根据多个评估标准(如成本、收益、风险等)做出最优选择。
  • 人才招聘:在筛选多个候选人时,考虑多个维度(如学历、经验、技能等),使用TOPSIS法进行排名。

总结

TOPSIS法通过综合考虑各个方案与理想解的距离,能够清晰地排序出最优方案。其简洁明了、易于理解的特点使其在实际应用中得到了广泛的使用。然而,TOPSIS法也有一些限制,如对于权重的选择较为敏感,且假设评价指标之间是独立的,这在某些实际情况下可能不完全成立。尽管如此,TOPSIS法仍然是一个有效的多目标决策工具,尤其适用于需要综合考虑多个因素的决策场景。

相关文章:

【数学建模】TOPSIS法简介及应用

文章目录 TOPSIS法的基本原理TOPSIS法的基本步骤TOPSIS法的应用总结 在 多目标决策分析中,我们常常需要在多个选择中找到一个最优解。 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法是一个广泛应用的决策方法…...

Beans模块之工厂模块注解模块@Qualifier

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...

清晰易懂的 Conda 彻底卸载与清理教程

一、Windows 系统卸载 Conda(Anaconda/Miniconda) 步骤 1:通过控制面板卸载主程序 打开 控制面板 → 程序 → 程序和功能。在列表中找到 Anaconda 或 Miniconda,右键选择 卸载。 提示:若安装的是 Miniconda 且未通过…...

pytorch小土堆学习有感

一、环境修改问题 pip install tensorboard pip uninstall tensorboard pip install tensorboard2.12.0 常用pip install torch来安装pytorch 版本合适才可以用的哈。 二、控制台和代码调试 变量可以在控制台方便查看 或者点行号左边打一个断点,便于使用deb…...

ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面

ChatTTS(Chat Text To Speech),专为对话场景设计的文本生成语音(TTS)模型,适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。支持中文和英文,还可以穿插笑声、说话间的停顿、以…...

【linux】统信操作系统修改默认编辑模式从nano改为vim

统信操作系统修改默认编辑模式从nano改为vim 适用命令update-alternatives --config editor rootuos-PC:~# update-alternatives --config editor 有 3 个候选项可用于替换 editor (提供 /usr/bin/editor)。选择 路径 优先级 状态 ---------------------…...

单一职责原则开闭原则其他开发原则

一、单一职责原则(Single Responsibility Principle, SRP) 定义 一个类应该有且仅有一个引起它变化的原因(即一个类只负责一个职责)。 核心思想 高内聚:类的功能高度集中 低耦合:减少不同职责之间的相互影…...

数据结构---图的深度优先遍历(DFS)

一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点: 2.图的深度优先遍历 先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点&#xff0c…...

健康养生:拥抱生活,从呵护身心开始

在这个瞬息万变的时代,人们好似不停旋转的陀螺,在忙碌中迷失了对健康的关注。然而,健康养生绝非可有可无的点缀,它是幸福生活的基石,如同阳光与空气,滋养并支撑着我们的生命。当我们懂得拥抱健康养生&#…...

基线定位系统:长基线与超短基线的原理与应用

基线定位系统:长基线与超短基线的原理与应用 在测量、导航、天文等领域,基线是两个已知位置之间的距离或方向,常用于三角测量、卫星定位等方法来确定其他位置的相对关系。本文将深入探讨长基线(Long Baseline, LBL)与…...

QT网页显示的几种方法及对比

一.直接跳转打开网页 1.使用QDesktopServices::openUrl调用系统浏览器 原理:直接调用操作系统默认浏览器打开指定URL,不在应用程序内嵌入网页。 优点: 实现简单,无需额外模块或依赖。 适用于仅需跳转外部浏览器的场景。 缺点&…...

深入浅出理解LLM PPO:基于verl框架的实现解析之一

1. 写在前面 强化学习(Reinforcement Learning,RL)在大型语言模型(Large Language Model,LLM)的训练中扮演着越来越重要的角色。特别是近端策略优化(Proximal Policy Optimization,PPO)算法,已成为对齐LLM与人类偏好的主流方法之一。本文将基于verl框架(很多复刻De…...

Linux python 安装 conda(内部自带的有python的版本了)

位置网站 https://repo.anaconda.com/miniconda/也可以在https://www.anaconda.com/download/success 官方下载之后方linux中 切换路径之后 执行 bash Miniconda3-py310_25.1.1-2-Linux-x86_64.sh [rootVM-4-5-centos ~]# [rootVM-4-5-centos ~]# uname -a Linux VM-4-5-cen…...

git原理与常用命令及其使用

认识工作区、暂存区、版本库 ⼯作区:是在电脑上你要写代码或⽂件的⽬录。 暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们 把暂存区有时也叫作索引(index&#xf…...

19681 01背包

19681 01背包 ⭐️难度:中等 🌟考点:动态规划、01背包 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10001…...

Guava:Google开源的Java工具库,太强大了

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建

本文围绕使用 Docker 构建 FastAPI 应用镜像展开,着重介绍了多阶段构建的 Dockerfile 编写及相关操作。借助多阶段构建,不仅实现了 Docker 构建的加速,还有效减小了镜像体积。 1. Dockerfile 内容 以下是我们要使用的 Dockerfile 内容&…...

蓝桥杯每日一题----海底高铁

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 P3406 海底高铁 - 洛谷https://www.luogu.com.cn/problem/P3406 解题思路 在这道题来说,主要使用的想法就是使用一维的差分数组,这道题中有两个买…...

触动精灵对某东cookie读取并解密--记lua调用C语言

在Mac上构建Lua扩展模块:AES解密与Base64解码实战 今天我要分享一个实用技术:如何在Mac系统上为Lua编写和编译C扩展模块,特别是实现一个某东iOS PIN码解密功能的扩展。这对于需要在Lua环境中执行高性能计算或使用底层系统功能的开发者非常有…...

分布式中间件:基于 Redis 实现分布式锁

分布式中间件:基于 Redis 实现分布式锁 一、背景引入 在当今的互联网应用中,分布式系统变得越来越常见。在分布式环境下,多个服务实例可能会同时对共享资源进行读写操作,这就很容易引发数据不一致等问题。比如电商系统中的库存扣…...

鸿蒙开发工程师简历项目撰写全攻略

一、项目结构的黄金法则 建议采用「41」结构: 项目背景(业务价值)技术架构(鸿蒙特性)核心实现(技术难点)个人贡献(量化成果)附加价值(延伸影响) …...

MSE分类时梯度消失的问题详解和交叉熵损失的梯度推导

下面是MSE不适合分类任务的解释,包含梯度推导。以及交叉熵的梯度推导。 前文请移步笔者的另一篇博客:大模型训练为什么选择交叉熵损失(Cross-Entropy Loss):均方误差(MSE)和交叉熵损失的深入对比…...

【设计模式】三十二、策略模式

系列文章|源码 https://github.com/tyronczt/design-mode-learn 文章目录 系列文章|源码一、模式定义与核心思想二、模式结构与Java实现1. 核心角色2. Java代码示例 三、策略模式的五大核心优势四、适用场景五、与其他模式的对比六、最佳实践建议总结 🚀进阶版【更…...

Cyberchef实用功能之-json line格式文件美化和查询

本文将介绍一下如何使用cyberchef对json line格式数据进行美化方便阅读,以及json line格式数据的批量查询操作。 之前的文章介绍了json格式数据的美化和查询,即Cyberchef实用功能之-json解析美化和转换,Cyberchef实用功能之-批量提取json数据…...

Java求101-200之间有多少素数

Java学习笔记 今天看教程看到了这个题,对于一名打过算法竞赛的选手还是很简单的,但由于之前是c组的,所以用java写一下,练一下手。 代码: package com.itheima.hello;public class Test1 {public static void main(S…...

计算机基础:编码03,根据十进制数,求其原码

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:计算机基础:编码02,有符号数编码&#xf…...

FaryGui文字shader修改,弧线排列

因项目要求,希望将文字进行标题那样的弧线排列,如下图: 对FaryGUI的文字Shader进行了一些修改,基本达到要求,shader设置如下: shader代码如下: // Upgrade NOTE: replaced _Object2World with unity_ObjectToWorld // Upgrade NOTE: replaced mul(UNITY_MATRIX_MVP,*) with Un…...

QT笔记---JSON

QT笔记---JSON JSON1、JSON基本概念1.1、判断.json文件工具 2、生成.json数据3、解析.json数据 JSON 在现代软件开发中,数据的交换和存储格式至关重要。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,以其简洁易…...

C++ string的模拟实现

Hello!!大家早上中午晚上好,昨天复习了string的使用,今天来模拟实现一下string!!! 一、string的框架搭建 1.1首先我们需要一个string的头文件用来做变量、函数、类等声明;再需要一个test文件来做测试,还需…...

使用LangChain实现基于LLM和RAG的PDF问答系统

目录 前言一.大语言模型(LLM)1. 什么是LLM?2. LLM 的能力与特点 二、增强检索生成(RAG)三. 什么是 LangChain?1. LangChain 的核心功能2. LangChain 的优势3. LangChain 的应用场景4. 总结 四.使用 LangChain 实现基于 PDF 的问答系统 前言 本文将介绍 …...