数学建模--国赛备赛---TOPSIS算法

news2024/11/14 21:39:50

目录

1.准备部分

1.1提交材料

1.2MD5码相关要求

2.TOPSIS算法

2.1算法概述

2.2基本概念

2.3算法核心思想

2.4拓展思考

3.适用赛题

3.1适用赛题说明

3.2适用赛题举例

4.赛题分析

4.1指标的分类

4.2数据预处理

4.2.1区间型属性的变换

4.2.2向量规范化

4.3数据加权处理

4.4求解的相关数据含义

4.5求解过程的再次复盘

5.代码求解

5.1数据导入

5.2区间型数据变换

5.3向量规范化

5.4加权处理后求得结果

5.5完整代码


1.准备部分

1.1提交材料

数学建模论文和相应的支撑材料,这个数学建模论文pdf提交,支撑材料尽量压缩(zip格式),命名这个支撑材料合理即可;

1.2MD5码相关要求

记得去阅读这个MD5码的相关要求,这个不可以随意更改,必须严格的按照要求;

2.TOPSIS算法

2.1算法概述

2.2基本概念

正理想解和负理想解的相关说明,在这个TOPSIS算法里面,我们那这个例子来进行说明,这个里面一共就只有两个指标,这个盗窃成功次数里面的最大值我们叫做这个指标的正理想解即为4,同理我们既可以得到这个盗窃总价值里面的正理想解就是4,负理想解就是这个指标里面的最小值,分别是这个4,2;上面的完成之后,我们把两个指标的正理想解作为一个指标在二维的坐标平面里面画出来,把这个负理想解同样画出来;

可能有些同学会有疑问,问什么这个负理想解不可缺少,因为这个里面只能有一个盗圣,如果是只会绘制出来这个正理想解和其他的四个坐标,这个里面的张三和李四到达这个正理想解点的距离是一样的,这个时候我们无法评选出来,但是有了这个负理想解之后,这个负理想解的顶点到达这两个点的距离就不一样,我们就可以依据这个那个点到达这个负理想解的距离更加远去进行判断这个谁是盗圣,因为那个店距离这个负理想解越近,就说明这个点距离这个差的标准的越近,这个就不会复合盗圣的要求(在比较的情况下看来);

2.3算法核心思想

上面我们已经介绍了这个正理想解和负理想解,什么是真正的TOPSIS,这个算法的核心思想又是什么,我们介绍一下:实际上就是一句话;

根据这个不同的已知点到达这个正理想解和负理想解的距离进行判断的;

2.4拓展思考

我们上面的这个指标只有两个,而且都是正面的,无论是这个盗窃成功的次数还是这个盗窃的总价值,这个指标都是越大越可以证明这个人越接近盗圣,但是如果出现这个多个指标的情况,我们的这个二维的平面图形就显得捉襟见肘了,而且这个负面指标,例如这个盗窃失败的次数如果也是作为一个指标,我们又应该如何考虑这个问题;

这个里面的盗窃的总价值显示的就是万元作为单位,但是如果我们把这个单位给去掉,这个表格里面的数据就不在一个数量级上面了,我们这个时候如果直接进行运算,这个和盗窃的金额相比之下,这个盗窃成功的次数就显得很小,我们就会忽略不计,否则这个就会增加我们的这个计算量,我们这个时候就无法让这个盗窃成功的次数发挥它的作用;

以上的这些问题或许你觉得讲的很有道理,但是这个究竟如何解决,你可能还是没有思路,不需要着急,在下面的这个赛题的解析部分,我们将会通过在题目里面遇到这些问题并且给予你们相应的解决方案;

3.适用赛题

3.1适用赛题说明

首先我们的这个问题的评价是和客观的,还记得之前介绍的这个层次分析法的思路吗,这个就不是很客观,需要我们进行这个一致性检验之类的,因为这个对应的权重以及分数就是我们自己主观臆断的,但是这个TOPSIS算法就是很客观;

3.2适用赛题举例

我们接下来对于这个赛题的介绍,就是以这个赛题作为案例的,这个里面囊括了很多的情况,例如我们上面介绍的这个不仅仅是只有两个指标,而且不同的指标的这个数量级也是不一样的,而且每一个指标并不都是越大越好,这个下面我们还会进行分析;

4.赛题分析

4.1指标的分类

我们把上面的这4个指标划分为了下面的三个不同的类型,效益型数据,成本型数据,以及这个区间型数据,很好理解不再赘述;

4.2数据预处理

4.2.1区间型属性的变换

这个就是使用的下面的这个图片里面的公式,我们的区间行变换针对的就是区间性的数据,这个生师比就是这个类型的数据,因此这个区间型属性的变换就是处理的生师比这个指标;

具体的处理方法就是直接套用这个公式,其中这个里面需要有无法容忍的下限,和无法容忍的上限,还有一个就是最优的属性区间,这个上限和下限就是不合理的比例的边界情况;

在这个最有区间里面的数值,我们记作1,超出这个上限和下限的,我们记作0,在这个上限下面,下限上面的数据,我们需要套用公式进行处理,aij就是我们已知的,需要进行处理的数据;

第一个和第二个院校都是在这个最优区间里面的,我们直接记作1,第五个院校低于这个下限,我们记作0,这个34院校就需要进行计算了;

为什么是a2,因为这个生师比在这个指标里面是属于第二个指标7这个数据需要带入分段函数的第三个进行计算,10也是需要带入第三个函数进行运算;

4.2.2向量规范化

我们的向量规范化就是在进行这个数量级的统一,经过这个处理之后达到的效果就是这个所有的数据全部位于0~1之间,我们的向量规范化是在区间型属性变换的基础上面进行的,而不是在原始的数据上面进行的,实际上只有师生比经过了区间型属性变换,其他的这个数据进行向量化规范的时候使用的还是原始的数据;

这个计算的方法公式的分母就是这个指标的每一列数据的平方和再求得算术平方根,分子就是每一个表格里面的数据;

4.3数据加权处理

就是这个也是有权重的,只不过这个权重不像之前的这个层次分析法一样对于这个结果的影响很大,这个里面我们的权重合理即可;

例如这个0.2,0.3,0.4,0.1这个权重就是我们设置的,计算的话,例如这个上面的数据预处理之后的第一个数据0.0638直接乘以这个0.2即可得到这个权重处理之后的数据;

4.4求解的相关数据含义

我们基本思路韩式求每一个点到达这个正理想解和负理想解的距离,具体这个正理想解越大,这个效益就会越好,距离负理想解越远,这个结果也会越好(对于这个效益而言);

我们最后还要求解这个综合评价指数,这个公式我们进过变形就可以发现,这个就是TOPSIS算法的核心思想(根据这个分子分母的关系即可确定);

4.5求解过程的再次复盘

我们现实对于这个原始数据进行预处理,这个里面包括了区间型属性的变换,以及这个向量的规范化,然后对于这个处理之后的数据进行甲醛处理,最后求解距离带入求解指标,指标越大,说明这个院校教育质量就越好;

5.代码求解

5.1数据导入

5.2区间型数据变换

这个就是套公式,这个里面使用到了函数句柄,这个东西我自己也是第一次见到,但是这个并不是很难理解,这个可以建立在编程C语言的逻辑判断的上面进行理解,蓝色的点表示这个是一句话,只不过我们写在多行上面;

@就是函数句柄的标志,这个下面是有3行,代表的就是分段函数的3种情况,你可能会好奇,这个分段函数不是有4种情况嘛,为什么这个函数句柄里面只有三种,因为这个0自动就是一种结果

例如这个@下面的第一行,后半部分实际上就是区间,如果在这个区间里面,我们的这一行的  表达式的就会执行,其他行的逻辑判断就是0,如果这个上面显示的三个情况都不符合,这个逻辑判断的结果都是0,那么这个a2就是0,正好对应我们的分段函数的第四种情况;

函数句柄里面实际上就有这个最优区间的变量名字,相关参数还包括了最大上限和最小下限,最后一行就是利用这个函数句柄对于这个生师比进行变换,就是把第二列的所有的数据传递进去作为函数的参数,得到新的变换之后的数据;

5.3向量规范化

这个两个点就表示所有的数据,我们这个里面使用的就是循环,我拿一个进行说明,就例如第一次循环的时候这个j=1,我们这个时候的循环语句就是b(:,1)表示的就是第一行第一列的数据和第二行第一列的数据,第三行第一列的数据,以及第四行第一列的数据,第五行第一列的数据,分别对应各自的规范化处理之后的结果;

5.4加权处理后求得结果

我们这个里面使用到了repmat函数,这个函数实际上的作用就是矩阵的复制,第三个参数1表示这个矩阵的复制是在列的方向上进行的,w就是我们自己设置的权重这个矩阵,m是我们之前求解的这个原始数据的行数和列数(在整个程序的最开始部分);

因为这个里面的正理想解和负理想解有不同类型的数据,例如这个延毕率就是越小越好,其他的各项指标都是越大越好的,我们进行其他的指标处理的时候,正理想解直接取得这个最大值即可,但是这个延毕率的最小值才是正理想解,在求解负理想解的时候也是如此;

接下来我们利用循环求解这个到达正理想解,负理想解的距离,带入这个公式得到综合评价指数f最后使用sort函数,加上这个descend参数表示这个结果是按照降序进行排列的,我们就可以得到这几个院校的最终排名;

5.5完整代码


clc, clear


% 输入原始数据
a=[0.1	5	5000	4.7
 0.2	6	6000	5.6
 0.4	7	7000	6.7
 0.9	10	10000	2.3
 1.2	2	400	    1.8];
[m,n]=size(a);      % m是行数(方案数),n是列数(属性数)



%区间型属性变换

% 定义函数句柄b2,相当于在此定义了一个函数
% @(qujian,lb,ub,x)意味着调用b2时,需要给它括号里的四个参数
% (x>=lb & x<qujian(1))是逻辑与,如果&符号左右两边的条件都满足,则为1,否则为0
% 四种情况是互斥的,所以可以乘以各自区间条件逻辑计算后相加
a2=@(qujian,lb,ub,x)...
(1-(qujian(1)-x)./(qujian(1)-lb)).*(x>=lb & x<qujian(1))...
+(x>=qujian(1) & x<=qujian(2))...
+(1-(x-qujian(2))./(ub-qujian(2))).*(x>qujian(2) & x<=ub); 

% 设最优区间等参数
qujian=[5,6]; lb=2; ub=12;
a(:,2)=a2(qujian,lb,ub,a(:,2));     % 对生师比进行变换



%向量规范化

for j=1:n
    b(:,j)=a(:,j)/norm(a(:,j));  %向量规划化
end



%加权求解

w=[0.2 0.3 0.4 0.1];  
ww = repmat(w,m,1);     % repmat复制得到m个权重矩阵w,在矩阵下面排列
c=b.*ww;      %求加权后的矩阵;

% 注意正理想解和负理想解的定义
% max(c)是包含矩阵c每一列的最大值的行向量
Cstar=max(c);    %求正理想解
Cstar(4)=min(c(:,4))  %属性4为成本型的!!!专门修改它
C0=min(c);       %q求负理想解
C0(4)=max(c(:,4))        %属性4为成本型的!!!专门修改它

for i=1:m
    Sstar(i)=norm(c(i,:)-Cstar);  %求到正理想解的距离
    S0(i)=norm(c(i,:)-C0);      %求到负理想的距离
end

% 综合评价指数f
f=S0./(Sstar+S0);
[sf,ind]=sort(f,'descend')       % 'descend'表示降序排序,得分高的放在第一位

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

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

相关文章

vue 侧边锚点外圆角

环境&#xff1a;uniapp、vue3、unocss、vant4 效果&#xff1a; 代码 主要是&#xff1a;pointTop 、pointCentent 、pointBottom&#xff0c;这三个样式 html <div v-show"!showPoint" class"fixedLeftDiv"><div><div class"pointT…

RPG素材Unity7月20闪促限时4折游戏开发资产兽人角色模型动画休闲放置模板物理交互流体水下焦散VR界面UI2D模板场景20240720

今天这个是RPG素材比较多&#xff0c;还有一些休闲放置模板、FPS场景素材、角色模型、动画、特效。 详细内容展示&#xff1a;www.bilibili.com/video/BV1Tx4y1s7vm 闪促限时4折&#xff1a;https://prf.hn/l/0eEOG1P 半价促销&#xff1a;https://prf.hn/l/RlDmDeQ 7月闪促…

java开发报错合集

mapstruct 1. 报错信息&#xff1a; mapstruct 错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误 解决方案&#xff1a; mapstruct 错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误_mapstruct nosuchmethoderror-CSDN博客 2. 报错信息&#xff1a; maps…

数据结构——线性表(单链表)

一、链式存储结构定义 线性表的链式存储结构定义是指使用指针将线性表中的元素按照其逻辑次序依次存储在存储空间中&#xff0c;通过指针来表示数据元素之间的逻辑关系。具体来说&#xff0c;链式存储结构由数据域和指针域组成&#xff0c;数据域存储数据元素的数值&#xff0…

手机接Usb hub再连接电脑下D+D-波形

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

UE4-光照渲染、自动曝光、雾

目录 一.光源种类 二.灯光的移动性 三.自动曝光 四.指数级高度雾 五.实现光束 一.光源种类 1.定向光源 用来模拟现实中的太阳光。 2.点光源 比如现实中的灯泡 3.聚光源 4.矩形光源 是这几个光源中性能开销最大的&#xff0c;一般不用到游戏场景中&#xff0c;因为游…

win安装mysql

解压到目录没如果多个mysql创建不同的名字 创建data和my.ini my.ini内容 [client] default-character-setutf8mb4[mysqld] #设置3306端口 port 3306 # 设置mysql的安装目录 basedirF:\mysql-5.7.31 # 设置mysql的数据存放目录 datadirF:\mysql-5.7.31\data # 允许最大连接数 …

ComfyUI面部修复FaceDetailer使用指南

原文&#xff1a;ComfyUI面部修复完全指南 (chinaz.com) 让我们开始使用ComfyUI中的人脸详细修复器吧。人脸详细修复器节点乍一看可能很复杂&#xff0c;但不要担心&#xff0c;我们会一点一点地分解它。通过理解每个输入、输出和参数&#xff0c;你很快就能像专业人士一样使用…

处理AI模型中的“Type Mismatch”报错:数据类型转换技巧

处理AI模型中的“Type Mismatch”报错&#xff1a;数据类型转换技巧 &#x1f504; 处理AI模型中的“Type Mismatch”报错&#xff1a;数据类型转换技巧 &#x1f504;摘要引言正文内容1. 错误解析&#xff1a;什么是“Type Mismatch”&#xff1f;2. 数据类型转换技巧2.1 检查…

大数据环境下的房地产数据分析与预测研究的设计与实现

1绪论 1.1研究背景及意义 随着经济的快速发展和城市化进程的推进&#xff0c;房地产市场成为了国民经济的重要组成部分。在中国&#xff0c;房地产行业对经济增长、就业创造和资本投资起到了重要的支撑作用。作为中国西南地区的重要城市&#xff0c;昆明的房地产市场也备受关…

SwiftUI 在 WWDC 24 之后的新变化

文章目录 前言视图集合新的标签栏体验英雄动画滚动位置Entry 宏预览其他总结 前言 WWDC 24 已经到来&#xff0c;我们有很多内容要讨论。每年&#xff0c;SwiftUI 都会通过引入更多功能来赶上 UIKit。今年也不例外。让我们深入了解 SwiftUI 框架引入的新功能。 我首先要提到的…

JavaDS —— 优先级队列(堆) PriorityQueue

优先级队列的概念 我们在前面就已经学习过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;那么在该场景下&#xff0c;使…

详解数据结构之队列、循环队列(源码)

详解数据结构之队列、循环队列(源码) 队列属于线性表 队列&#xff1a;就好比如&#xff0c;我们在排队买东西时排队&#xff0c;第一个先来的第一个买&#xff0c;最后一个到的最后一个买&#xff0c;这里的队列也是满足先进先出&#xff0c;后进后出的规律&#xff08;First …

如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

Adobe国际认证详解-视频设计认证专家行业应用场景解析

在当今数字化时代&#xff0c;视频设计已成为各行各业不可或缺的一环。而视频设计认证专家&#xff0c;作为经过Adobe国际认证体系严格考核的专业人才&#xff0c;更是行业内炙手可热的存在。他们凭借深厚的视频设计理论基础和实践经验&#xff0c;为行业提供了高质量的视频设计…

ROS2中间件

ROS2 是重新设计的 Robot Operating System&#xff0c;无论从用户API接口到底层实现都进行了改进。这里主要关注ROS2 的中间件。 1. 通信模式 ROS2 使用DDS协议进行数据传输&#xff0c;并通过抽象的rmw&#xff0c;支持多个厂家的DDS实现&#xff08;FastDDS&#xff0c;Cyc…

Django 执行原生SQL

在Django中&#xff0c;你可以使用Raw SQL queries来执行原生的SQL查询。这对于需要进行复杂查询或Django的ORM无法满足的查询非常有用。 1&#xff0c;添加模型 Test/app11/models.py from django.db import modelsclass Post(models.Model):title models.CharField(max_le…

arthas:介绍

文章目录 一、Arthas&#xff08;阿尔萨斯&#xff09;能为你做什么&#xff1f;二、运行环境要求三、快速安装四、卸载五、通过浏览器连接arthas 一、Arthas&#xff08;阿尔萨斯&#xff09;能为你做什么&#xff1f; Arthas是Alibaba开源的Java诊断工具&#xff0c;深受开发…

buu--web做题(4)

目录 [BJDCTF2020]ZJCTF&#xff0c;不过如此 [BUUCTF 2018]Online Tool [BJDCTF2020]ZJCTF&#xff0c;不过如此 <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)&q…

vue3运行若依前后台项目步骤(2024-07-19)

环境配置 1、jdk > 1.8 (我的1.8&#xff09; 2、mysql >5.7 (我的5.8&#xff09; 3、navicat (数据库管理器&#xff0c;连接mysql使用 ,我的是15) 4、mysql&#xff08;数据库&#xff0c;我的5.0&#xff09; 4、npm (我的是18.20.0) 5、idea编辑器,webtorm &#x…