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

数学建模之“TOPSIS数学模型”原理和代码详解

一、简介

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)是一种多准则决策分析方法,用于解决多个候选方案之间的排序和选择问题。它基于一种数学模型,通过比较每个候选方案与理想解和负理想解之间的相似性来评估其优劣。

TOPSIS方法包括以下步骤:

  1. 确定决策准则:首先确定影响决策的准则,例如成本、效益、可行性等。这些准则应该能够量化,并与候选方案相关联。

  2. 归一化:对每个准则进行归一化处理,将其转化为标准化的0-1范围内的值。这样可以确保不同准则的权重在计算中得到平等的考虑。

  3. 确定理想解和负理想解:根据每个准则的重要性,确定一个理想解和一个负理想解。理想解是在各个准则上表现最佳的方案,而负理想解则是在各个准则上表现最差的方案。

  4. 计算相似性:使用距离度量方法(如欧几里得距离或曼哈顿距离)计算每个候选方案与理想解和负理想解之间的相似性。

  5. 计算综合评分:根据相似性计算每个候选方案的综合评分。综合评分越接近1,表示该方案越接近理想解;综合评分越接近0,表示该方案越接近负理想解。

  6. 排序和选择:按照综合评分对候选方案进行排序,并选择得分最高的方案作为最优解。

TOPSIS方法的优点包括简单易用、不需要主观权重设定、能够有效处理多准则决策问题。然而,它也有一些限制,例如对准则之间的相互关系没有考虑,不能处理不确定性和不完备信息等。

总之,TOPSIS数学模型是一种常用的多准则决策方法,可以帮助决策者在多个候选方案中做出合理的选择和排序。

二、实例

以下是一个典型的TOPSIS例题:

假设你是一家公司的采购经理,你需要从三个供应商中选择一个最佳的供应商来购买某种原材料。你考虑的准则有:价格、质量和交货时间。根据这些准则,你收集到了每个供应商的数据如下:

供应商A:价格 8, 质量 9, 交货时间 5
供应商B:价格 6, 质量 7, 交货时间 8
供应商C:价格 9, 质量 8, 交货时间 7

现在使用TOPSIS方法来选择最佳供应商。

1. 归一化:
首先,对每个准则进行归一化处理,将它们转化为0-1范围内的标准化值。这里我们可以使用最小-最大归一化方法。

供应商A:价格 8/9 ≈ 0.89, 质量 9/9 = 1, 交货时间 5/9 ≈ 0.56
供应商B:价格 6/9 ≈ 0.67, 质量 7/9 ≈ 0.78, 交货时间 8/9 ≈ 0.89
供应商C:价格 9/9 = 1, 质量 8/9 ≈ 0.89, 交货时间 7/9 ≈ 0.78

2. 确定理想解和负理想解:
根据每个准则的重要性,确定理想解和负理想解。对于价格和交货时间,理想解是最小值,负理想解是最大值;对于质量,理想解是最大值,负理想解是最小值。

理想解:价格 0, 质量 1, 交货时间 0
负理想解:价格 1, 质量 0, 交货时间 1

3. 计算相似性:
使用距离度量方法(如欧几里得距离)计算每个供应商与理想解和负理想解之间的相似性。

供应商A:与理想解的相似性 = √((0.89-0)^2 + (1-0)^2 + (0.56-0)^2) ≈ 1.12
         与负理想解的相似性 = √((0.89-1)^2 + (1-0)^2 + (0.56-1)^2) ≈ 0.84
供应商B:与理想解的相似性 = √((0.67-0)^2 + (0.78-1)^2 + (0.89-0)^2) ≈ 0.73
         与负理想解的相似性 = √((0.67-1)^2 + (0.78-0)^2 + (0.89-1)^2) ≈ 1.24
供应商C:与理想解的相似性 = √((1-0)^2 + (0.89-1)^2 + (0.78-0)^2) ≈ 0.26
         与负理想解的相似性 = √((1-1)^2 + (0.89-0)^2 + (0.78-1)^2) ≈ 1.12

4. 计算综合评分:
根据相似性计算每个供应商的综合评分,使用正负理想解的相对距离。

供应商A:综合评分 = 0.84 / (0.84 + 1.12) ≈ 0.43
供应商B:综合评分 = 1.24 / (0.73 + 1.24) ≈ 0.63
供应商C:综合评分 = 0.26 / (0.26 + 1.12) ≈ 0.19

5. 排序和选择:
根据综合评分对供应商进行排序,并选择得分最高的供应商作为最优解。

综合评分排序:供应商B > 供应商A > 供应商C

因此,在这个例子中,供应商B被认为是最佳供应商,因为它在价格、质量和交货时间准则上相对于其他供应商更接近理想解。

 //

三、补充

TOPSIS是一种解决多属性决策问题的评价方法,亦称理想点解法。

这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解。通过计算每个方案到理想方案(即靠近正理想解和远离负理想解)的相对贴近程度来对备选方案进行排序,从而选出最优方案。

用理想解法求解多属性决策问题的概念简单,只要在属性空间定义适当的距离测度就能计算备选方案与理想方案的距离。为了区分这两个备选方案与正理想解的距离相同的情况,引入备选方案与负理想解的距离,离负理想解远者为优。

这里所指的距离通常是指欧式距离。需要指出的是:正理想解是一个并不存在的虚拟的最佳方案,它的每个属性值都是决策矩阵中该属性的最优值;负理想解是虚拟的最差方案,它的每个属性值都是决策矩阵中该属性的最差值。 

 

 

 

相关文章:

数学建模之“TOPSIS数学模型”原理和代码详解

一、简介 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)是一种多准则决策分析方法,用于解决多个候选方案之间的排序和选择问题。它基于一种数学模型,通过比较每个候选方案与理想解和负理想解之间的相…...

threejs使用gui改变相机的参数

调节相机远近角度 定义相机的配置: const cameraConfg reactive({ fov: 45 }) gui中加入调节fov的方法 const gui new dat.GUI();const cameraFolder gui.addFolder("相机属性设置");cameraFolder.add(cameraConfg, "fov", 0, 100).name(…...

计算机竞赛 图像识别-人脸识别与疲劳检测 - python opencv

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是…...

PHP8的字符串操作3-PHP8知识详解

今天继续分享字符串的操作,前面说到了字符串的去除空格和特殊字符,获取字符串的长度,截取字符串、检索字符串。 今天继续分享字符串的其他操作。如:替换字符串、分割和合成字符串。 5、替换字符串 替换字符串就是对指定字符串中…...

Unity VR:XR Interaction Toolkit 输入系统(Input System):获取手柄的输入

文章目录 📕教程说明📕Input System 和 XR Input Subsystem(推荐 Input System)📕Input Action Asset⭐Actions Maps⭐Actions⭐Action Properties🔍Action Type (Value, Button, Pass through) ⭐Binding …...

智慧工地一体化云平台源码:监管端、工地端、危大工程、智慧大屏、物联网、塔机、吊钩、升降机

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最终实现项目对人、机、料、法、环的全…...

C# 表达式体方法 C#算阶乘

//表达式体方法private int Add(int a, int b) > a b;[Fact]public void Test(){var result1 Factorial(1);//1var result2 Factorial(2);//2var result3 Factorial(3);//6var result4 Factorial(4);//24var result5 Factorial(5);//120var result6 Add(100, 200);//…...

互联网发展历程:保护与隔离,防火墙的安全壁垒

互联网的快速发展,不仅带来了便利和连接,也引发了越来越多的安全威胁。在数字时代,保护数据和网络安全变得尤为重要。然而,在早期的网络中,安全问题常常让人担忧。 安全问题的困扰:网络威胁日益增加 随着互…...

基于IMX6ULLmini的linux裸机开发系列七:中断处理流程

中断上下文 cpu通过内核寄存器来运行指令并进行数据的读写处理的,它在进入中断前一个时刻的具体值,称为中断上下文 中断上下文是指CPU在进入中断之前保存的寄存器状态和其他相关信息。当CPU接收到中断请求时,它会保存当前正在执行的指令的状…...

Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求

本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到Postman软件,并进行API请求测试的方法。 Postman是一款流行的API开发和测试工具,它提供了一个用户友好的界面,用于创建、测试、调试和文档化API。本文就介…...

react go实现用户历史登录列表页面

refer: http://ip-api.com/ 1.首先需要创建一个保存用户历史的登录的表,然后连接go 2.在用户登录的时候,获取用户的IP IP位置,在后端直接处理数据即可(不需要在前端传递数据) (1)增加路由&am…...

如何做好服务性能测试

一、什么是性能测试 新功能上线或切换底层数据库或扩容调优,根据实际业务场景的需要,做必要的性能压测,收集性能数据,作为上线的基准报告。 性能测试一般分一下几个阶段: 1. 性能测试 并发量小(jmeter 并…...

速通蓝桥杯嵌入式省一教程:(五)用按键和屏幕实现嵌入式交互系统

一个完整的嵌入式系统,包括任务执行部分和人机交互部分。在前四节中,我们已经讲解了LED、LCD和按键,用这三者就能够实现一个人机交互系统,也即搭建整个嵌入式系统的框架。在后续,只要将各个功能加入到这个交互系统中&a…...

虚拟拍摄,如何用stable diffusion制作自己的形象照?

最近收到了某活动的嘉宾邀请,我将分享: 主题:生成式人工智能的创新实践 简要描述:从品牌营销、智能体、数字内容创作、下一代社区范式等方面,分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向&#xff…...

开启AI创新之旅!“华为云杯”2023人工智能应用创新大赛等你来挑战

简介 近年来,人工智能技术的发展如日中天,深刻地改变着我们的生活方式和产业格局。 为了培养AI人才,持续赋能AI企业,推进国家新一代人工智能开放创新平台建设,打造更加完善的AI技术创新生态,华为&#xf…...

npm和node版本升级教程

cmd中查看本地安装的node版本 node -v //查询node的位置 where node2.官网下载所需要的node版本,安装在刚查出来的文件夹下,即覆盖掉原来的版本 3.查看node版本是否已经更新 4.查看npm版本是否和node版本相匹配 cnpm install -g npm...

C++入门篇9---list

list是带头双向循环链表 一、list的相关接口及其功能 1. 构造函数 函数声明功能说明list(size_type n,const value_type& valvalue_type())构造的list中包含n个值为val的元素list()构造空的listlist(const list& x)拷贝构造list(InputIterator first, InputIterator…...

STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

文章目录: 第一部分:项目开始前的计划与准备 1.项目策划和开发规范 1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分:调通硬件电路与驱动程序 第三部分:编写最基础的应用程序 第四部分&…...

Hive on Spark (1)

spark中executor和driver分别有什么作用? Spark中Executor 在 Apache Spark 中,Executor 是分布式计算框架中的一个关键组件,用于在集群中执行具体的计算任务。每个 Executor 都在独立的 JVM 进程中运行,可以在集群的多台机器上…...

PostgreSQL基本操作总结

安装按PostgreSQL数据库后,会默认创建用户postgres和数据库postgres,这个用户是超级用户,权限最高,可以创建其他用户和权限,在实际开发过程中,会新创建用户和业务数据库,本文主要介绍用户权限和…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...