TOPSIS模型原理以及代码实现

news/2024/10/5 23:20:42/文章来源:https://www.cnblogs.com/dlmuwxw/p/18271263

TOPSIS 法是一种常用的组内综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。下面我们来介绍具体步骤与代码实现

目录
  • 问题提出
  • 第一步:数据输入
    • 1.如何从excel中复制数据直接储存为matlab变量
    • 2.如何将变量储存为mat文件,利用load函数加载数据
  • 第二步:判断是否需要正向化
    • 1.常见指标如图所示
    • 2.正向化方法
    • 3.代码实现
      • (1)提供基础性息,并判断是否需要正向化
      • (2)用户指定需要正向化的与正向化方法
      • (3) Positivization(x,type,i)函数进行计算
  • 第三步:正向化矩阵标准化
    • 1.计算原理
    • 2.代码实现
  • 第四步:计算得分并归一化
    • 1.计算原理
    • 2.代码实现

问题提出

通过这20条河流的4个指标,对这20条河流进行打分

第一步:数据输入

1.如何从excel中复制数据直接储存为matlab变量

选取想要的数据

在matlab的工作区中新建一个变量,将数据复制到变量中

2.如何将变量储存为mat文件,利用load函数加载数据

在matlab工作区右键点击变量,选择另存为,即可把变量储存在文件夹中,使用load(‘变量名’)即可加载数据

第二步:判断是否需要正向化

因为topsis法使用指标值与最优解与最劣解的距离进行评价,但是有些指标不是越大越好,为了计算方便,我们需要将指标值进行正向化

1.常见指标如图所示

2.正向化方法



3.代码实现

代码实现的过程实际上是矩阵计算的过程,要求编程者熟悉对矩阵的语法

(1)提供基础性息,并判断是否需要正向化

(2)用户指定需要正向化的与正向化方法

(3) Positivization(x,type,i)函数进行计算

第一个参数x为需要进行正向化的的列,可以用向量来表示多列。type也可以是一个向量,与x对应表示正向化的方法,而i表示列的索引
代码如图所示,主要表示一个分段函数,其中正向化的方法储存在另外三个函数中

第三步:正向化矩阵标准化

1.计算原理

以列为一个单位,对矩阵进行标准化。也就是对每一个指标分别进行标准化,去除量纲的影响

2.代码实现

sum(X.*X).^0.5为标准化的分母,是一个对列进行平方求和后的行向量,利用repmat函数将其扩展n行,这样就与原矩阵的维度相同,方便进行点除。

第四步:计算得分并归一化

1.计算原理

2.代码实现

此过程与前面的数值计算无异,也就是用向量进行计算。
其中max(Z)表示对Z的每一列求最大值,得到一个行向量,扩展后与原矩阵进行运算;
sum函数将运算后得到的矩阵按列相加,得到一个行向量;
计算出D_positive与D_negtive后即可算出未归一化的得分S;
最后的sort函数则对得分进行排序,并记录下排序的索引。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球首部 Sora 生成宣传片《玩具反斗城的起源》亮相;钉钉全新 AI 小时搜索对所有大模型开放丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点…

【Unity】做了个刻晴跳舞的小Demo,记录下按钮控制多模型骨骼动画播放

1、提前准备好6个绑定好骨骼动画的刻晴模型,布置好场景 2、创建KeQing脚本,接收五个模型public bool start = false;//判断模型骨骼动画播放状态public GameObject animobj1;public GameObject animobj2;public GameObject animobj3;public GameObject animobj4;public Game…

vCenter6.7安装流程记录

vCenter6.7安装流程记录 1. 下载软件压缩包 可以自行到官网查找下载链接,或者我这里提供一个UC网盘的下载链接,这是由我上传的,本次安装所使用的软件包 https://fast.uc.cn/s/c5a89f44c5a94 点击链接接收文件 [VMware-VCSA-all-6.7.0-22509723.zip] 2. 解压压缩包 3. 开始安…

基础篇——MySQL基础操作

基础篇——MySQL基础操作 1. 增加2. 删除3. 修改 update users set name="Admin" where name="admin";4. 查询5. 常用函数 sc表如下所示,id表示选课记录标号,student_name表示学生姓名,course_name表示课程名称。(1) concat, concat_ws, group_concat(2…

关于宝塔安装jenkins的操作方法

1.本文借鉴一下内容参考新版宝塔项目部署:https://www.bt.cn/bbs/thread-76217-1-1.html采用Tomcat8的方式部署1.下载jenkins 去清华大学开源镜像网站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/latest/    2.打开Tomcat8 的文件地址创建文件夹   3.将下载好的…

谷歌地图 | 路线优化 API 助力企业解锁物流新潜能

在当今竞争激烈的市场环境中,企业面临着越来越大的压力,需要提高运营效率、降低成本并满足不断增长的客户期望。对于依赖车队进行交付或服务的企业来说,这些挑战尤为艰巨。 近日, Google 地图平台路线优化 API 已经正式上线。路线优化 API(之前称为 Cloud Fleet Routing)…

.NetCore日志记录之第三方框架Serilog

原文链接:https://www.jb51.net/article/251755.htmhttps://blog.csdn.net/hiose89/article/details/125012881 这篇文章介绍了.Net Core日志记录之第三方框架Serilog 一、前言对内置日志系统的整体实现进行了介绍之后,可以通过使用内置记录器来实现日志的输出路径。而在实际…

Robot Farmework 运行报错failed: AttributeError: ‘Output‘ object has no attribute ‘_xmllogger‘

使用pip list 查看robotframework和robotframework-ride的版本对最近发布的Robot Framework版本7的全面支持在RIDE中还没有完成。您可以使用以前版本的Robot Framework 6.1.1,也可以安装最新的RIDE开发版本,以便在即将发布的正式版本之前开始使用。你可以使用pip: pip instal…

品牌播报 | 璞华科技被评为:苏州市数字金融生态圈企业!

近日,璞华科技以其卓越的技术实力和创新能力,荣获“苏州市数字金融生态圈企业”的称号。这一荣誉不仅彰显了璞华科技在数字金融领域的杰出表现,更预示了其在数字金融生态领域的重要地位。在金融领域中,璞华科技凭借对行业的深刻理解和对市场的敏锐洞察,成功打造了引领数字…

【IDL】IDL 8.4新特性介绍

IDL 8.4于2014年10月15日正式发布。此版本中新增了许多实用的功能和工具,比如数据读取与可视化、新增数据类型等。而且IDL正向着更加现代化的语言发展,比如函数程序设计(Functional Programming)、静态类和方法等。除此之外,IDL工作台本身也变得更加人性化。主要改进如下:…

磁盘离线数据恢复

服务器数据恢复环境: 一台服务器中组建一组raid5磁盘阵列;上层操作系统为linux redhat,部署OA系统,后端数据库为oracle。服务器故障分析检测: raid5中有2块磁盘先后掉线,服务器崩溃。硬盘无明显的物理故障和同步表现。服务器数据恢复过程: 1、将故障服务器中所有硬盘做好…

HP EVA系列存储数据恢复原理

服务器数据恢复环境(EVA系列存储)介绍: EVA系列存储是一套"虚拟"磁盘阵列存储解决方案,其结构不同于基于RAID的普通存储。EVA系列存储常见故障: 1、RSS中多个磁盘掉线,超过冗余保护级别规定的数量。 2、加入新磁盘后迁移数据时,新磁盘存在物理故障。 3、误删除…