【不带权重的TOPSIS模型详解】——数学建模

news2024/11/18 20:00:31

目录索引

  • ==定义:==
  • ==问题引入:==
    • 不合理之处:
    • 进行修改:
  • ==指标分类:==
  • ==指标正向化:==
    • 极小型指标正向化公式:
    • 中间型指标正向化公式:
    • 区间型指标正向化公式:
  • ==标准化处理(消去单位):==
    • 代码解析:
  • ==计算得分:==
    • 过程解析:
    • 代码解析:

部分资料取自于b站:数学建模学习交流清风老师

定义:

  • TOPSIS法可翻译为逼近理想解排序法,国内常简称为优劣解距离法
  • 它是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间地差异。

举个例子: 数学成绩越高代表学习能力越强。跑100米花费的时间越少代表体育天赋越好。那怎么样结合这两项不同单位的指标进行综合考量通过打分,得出一名学生最后的得分呢?这就需要使用TOPSIS法,它一般用于已知数据。

问题引入:

在这里插入图片描述

我们需要对一个学生进行评分,成绩越高打的分数自然越高。但是排名数字是从低到高开始的。所以我们需要修正,让修正后的排名数字大小能反映各个学生的评分。如第一名得4分,最后一名得1分。然后进行归一化处理,处理后的评分相加应为1

不合理之处:

在这里插入图片描述

如图所示:按照这种方法进行评价的话。成绩大小可以随意修改,只要不影响排名。这样的话,就会有失合理性。

进行修改:

我们想让成绩的具体分数影响最后的得分,这就必须要引入最高成绩和最低成绩了。通过这两个极值来构造计算评分的公式

在这里插入图片描述

改造后的评分未经过归一化处理时:最高分为1,最低分为0。不用担心0这个数字或者1这个数字过于特殊。实际上,指标通常都在两个以上,综合下来不会出现0和1这种极端情况

在这里插入图片描述

指标分类:

在这里插入图片描述

这两个指标一个是越大越好,一个是越少越好。这样的指标就存在分类

常见指标:

  1. 极大型指标(效益型指标):数值越大(多)越好。例子:利润
  2. 极小型指标(成本型指标):数值越小(少)越好。例子:费用
  3. 中间型指标:越接近某个值越好。例子:PH值
  4. 区间型指标:落在某个区间内最好。例子:体温

指标正向化:

极小型指标正向化公式:

根据上图指出的两个指标来看,成绩越高越好。争吵次数确实越少越好。一个高,一个低不利于进行综合评判。所以我们就需要将所有的指标正向化处理全部化为==极大型指标。==包括中间型指标和区间型指标。

在这里插入图片描述

当然了,若是所有元素均为正数,那么也可以使用1/x。但还是推荐第一种max-x

中间型指标正向化公式:

在这里插入图片描述

区间型指标正向化公式:

在这里插入图片描述

标准化处理(消去单位):

为了消去不同指标量纲的影响(比如上一题一个单位是分,一个单位是次数),我们需要对已经正向化的矩阵进行标准化处理

在这里插入图片描述

  1. 当前列每一个元素取平方
  2. 对取平方后的列元素求和,再开根号
  3. 用当前元素除以2值就是标准化后的结果
  4. 标准化后的数值不改变相对大小

代码解析:

%正向化矩阵
X = [89 1;60 3;74 2;99 0];
%对矩阵的行和列进行拆包,n为行,m为列
[n,m] = size(X);
%标准化处理,repmat函数可以将矩阵视为一个整体。按几行几列复制。
res = X./repmat(sum(X.^2).^0.5,n,1)

计算得分:

标准化后的数据还需要计算各指标的总得分,这里不区分权重,所以各项系数均为1

在这里插入图片描述
在这里插入图片描述

过程解析:

求出z与最大值的距离,最小值同理

  1. 求出每个指标下最大的元素,并将它构成行向量
  2. 用z的每个指标数据减去1所得的行向量,取平方,再求和。
  3. 开根号

代码解析:

clear
clc
%运行标准化结果的文件
run("biao_zhun_hua.m");
[n,m] = size(res);
%求最大距离
max_res = sum((repmat(max(res),n,1)-res).^2,2).^0.5;
%求最小距离
min_res = sum((repmat(min(res),n,1)-res).^2,2).^0.5;
%未归一化后的得分
final_res = min_res./(max_res + min_res);
%归一化后的得分
answer = final_res./repmat(sum(final_res),n,1)

特别注意,这里sum的求和要行求和,因为是各个指标的相加。最后得到的结果是一个列向量,每一列对应一个人的综合得分最大值或者最小值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch报错torch.cuda.is_available()结果false处理方法

文章目录 问题及起因问题起因 解决方法 问题及起因 问题 前几天跑项目,笔记本上的GPU可以正常跑起来。要跑VAE模型,重新安装了torch,GPU就无法使用了,我重新安装了 cuda,torch.cuda.is_available()的结果依然是False。 起因 配置项目环境…

测试人员的BUG防不胜防

“灵异事件!程序里发现了新Bug但是它正常运行啦!”、“谁敢信,我电脑死机竟然是因为放青藏高原的时候硬盘共振振幅太大了——”…… 人生处处有Bug,哪一个最令你目瞪口呆,久久不能忘怀?今天就来浅浅分享一…

Spring系列篇--关于IOC【控制反转】的详解

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.什么是Spring 二.Spring的特点 三.什…

TCP服务器—实现数据通信

目录 前言 1.接口介绍 2.编写服务器 3.编写客户端 4.编译链接 5.测试 6.总结 前言 今天我们要介绍的是使用TCP协议实现数据通信,相比于之前写的UDP服务器实现数据信,在主体逻辑上并没有差别。客户端向服务器发送信息,服务器接受信息并回…

如何进行无线网络渗透测试?

今天我们将继续深入探讨Kali Linux的应用,这次我们将重点介绍如何使用Kali Linux进行无线网络渗透测试。无线网络渗透测试是评估无线网络安全性的重要步骤,而Kali Linux作为一款专业的渗透测试发行版,提供了丰富的工具来帮助你进行这项任务。…

支持https访问

文章目录 1. 打开自己的云服务器的 80 和 443 端口2. 安装 nginx3. 安装 snapd4. 安装 certbot5. 生成证书6. 拷贝生成的证书到项目工作目录7. 修改 main.go 程序如下8. 编译程序9. 启动程序10. 使用 https 和端口 8081 访问页面成功11. 下面修改程序,支持 https 和…

【RocketMQ】NameServer总结

NameServer是一个注册中心,提供服务注册和服务发现的功能。NameServer可以集群部署,集群中每个节点都是对等的关系(没有像ZooKeeper那样在集群中选举出一个Master节点),节点之间互不通信。 服务注册 Broker启动的时候会…

grafana-zabbix基础操作篇------导入数据源

文章目录 一、grafana的安装1.1、下载地址1.2、下载后导入所安装机器1.3、yum安装解决依赖1.4、启动grafana1.5、查看端口是否启用(端口默认3000)1.6、浏览器访问 二、添加zabbix数据源2.1、导入数据源 **下一篇 我们讲讲构建仪表板的操作** 今天&#x…

SpringMVC拦截器的介绍,拦截器的基本实现,拦截器链配置

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 拦截器 一、拦截器概念二、拦截器与过滤器的区别三、拦截器…

【ChatGLM】ChatGLM-6B模型Win+4GB显卡本地部署笔记

ChatGLM-6B是清华大学知识工程和数据挖掘小组发布的一个类似ChatGPT的开源对话机器人,由于该模型是经过约1T标识符的中英文训练,且大部分都是中文,因此十分适合国内使用。 预期环境 本机电脑备注: Win10专业版 32G内存256固态系统…

【BASH】回顾与知识点梳理(三十一)

【BASH】回顾与知识点梳理 三十一 三十一. 进程的管理31.1 给进程发送讯号kill -signal PIDlinux系统后台常驻进程killall -signal 指令名称 31.2 关于进程的执行顺序Priority 与 Nice 值nice :新执行的指令即给予新的 nice 值renice :已存在进程的 nice…

绿盾客户端文件加密不显示锁的图标,加密功能正常

环境: 绿盾客户端7.0 Win10 专业版 问题描述: 绿盾客户端文件加密不显示锁的图标,加密功能正常 解决方案: 1.查看控制台是否设置隐藏图标 (未解决) 控制台-规则中心-安全选项-“加密文件显示加密图标”和“不显示Explorer 鼠标右键菜单”是否打钩 如果没打钩,则不…

(学习笔记-进程管理)怎么避免死锁?

死锁的概念 在多线程编程中,我们为了防止多线程竞争共享资源而导致数据错乱,都会在操作共享资源之前加上互斥锁,只有成功获得到锁的线程,才能操作共享资源,获取不到锁的线程就只能等待,直到锁被释放。 那…

(分治) 剑指 Offer 16. 数值的整数次方 ——【Leetcode每日一题】

❓剑指 Offer 16. 数值的整数次方 难度:中等 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即, x n x^n xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n …

Linux系统安装Google Chrome

1.进入谷歌浏览器官网 Google Chrome - Download the Fast, Secure Browser from GoogleGet more done with the new Google Chrome. A more simple, secure, and faster web browser than ever, with Google’s smarts built-in. Download now.http://www.google.cn/intl/en_…

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

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

图卷积网络:GNN 简介【01/4】

图片来源:作者 一、说明 图形神经网络 (GNN) 代表了深度学习领域最迷人、发展最迅速的架构之一。作为旨在处理结构化为图形的数据的深度学习模型,GNN 带来了非凡的多功能性和强大的学习能力。 在各种类型的GNN中,图卷…

使用Java服务器实现UDP消息的发送和接收(多线程)

目录 简介:1. 导入必要的库2. 创建服务器端代码3. 创建客户端代码4. 实现多线程处理5. 测试运行示例代码:函数说明服务器端代码说明:客户端代码说明: 总结: 简介: 在本篇博客中,我们将介绍如何…

Spring的三种异常处理方式

1.SpringMVC 异常的处理流程 异常分为编译时异常和运行时异常,编译时异常我们 try-cache 进行捕获,捕获后自行处理,而运行时异常是不 可预期的,就需要规范编码来避免,在SpringMVC 中,不管是编译异常还是运行…