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

数学建模笔记(2):Topsis分析法

一.评价类问题的几个关键词

1.指标

        评价一个方案或者对象我们需要有评价指标,即从哪几个方面进行评价。比如评价一个人在保研上的竞争力,我们可以从绩点,课外竞赛,科研成果,学生工作,志愿服务等几个方面来对他进行评价。这些就是评价指标。

2.权重

        有了指标之后还不够,我们要分清楚哪些指标是最重要的,哪些指标次要一些,这就涉及到权重的分配,比如上面的例子,我们可以给到绩点分配50%,科研15%,竞赛10%诸如此类,这就是权重。权重的分配又可以分为主观分配和客观分配。主观分配就是通过专家判定或者根据常识等方法。客观的分配方法有熵权法等。

3.打分

        打分就是对评价对象在指标上的评分,打分的过程可以找专家来打分,或者对指标进行拆分为更小的指标来进行层次分析。

4.榜样

        这里是比喻,因为有时候我们评价方案也可以参考过去的榜样(表现最优的对象或者方案),看现有的方案和这个榜样之间的相似度或者距离,从而来对现有的方案进行评估。

        比如,可以找往年的保研的人的前几名的绩点和其他成绩,作为一个标准来比较。这次介绍的Topsis法和后面要说的灰色关联分析都是遵循这种找标准,作比较的方式来对方案进行评估的。

二.Topsis分析法简介

        Topsis分析法的核心思想是上面所说的方案和榜样之间的“距离”。我们选取各项指标中的最优和最差的,把指标作为评价空间的各个维度(类似矩阵空间,可以理解为x轴y轴),找到这个空间中的最优点和最劣点。

        然后计算方案中的点到则两个“榜样”的距离,根据此来评价。

        我们期待的最好方案,应当是与最优点最近,与最劣点最远的那个点。

三.Topsis法的具体实现步骤

1.正向化处理的背景介绍

        首先我们要对指标矩阵进行正向化处理。先介绍一下背景。

        我们知道一个指标,并不是说都是越大越好。比如在评价一个人的整体外在形象的时候,身高和体重,不是越高越好,越重越好,越轻越好,而是在一个合理的区间范围内最好。这种指标叫区间型指标

        还有的指标是越小越好。比如评估空气质量,空气质量指数,污染物浓度,肯定是越低越好。这种指标叫做极小型指标

        还有的指标是存在一个准确的中间值,在这个中间值的时候是最好的。这种例子不好找,大家可以想一想ph值=7是中性这种例子辅助理解。这种指标叫做中间性指标

        因此,我们希望为了方便分析,所有指标都变成越大越好,这就是正向化的概念。

        下面是一个表的总结。

2.针对不同类型指标的正向化方法

       针对上面所说的三种非极大型指标,我们有不同的公式来对他们进行正向化。

       下面是正向化的公式汇总。

3.指标矩阵的标准化处理

        标准化的目的基本就是消除量纲的影响。比如身高以厘米为单位可能都是160-190,而体重一般都不会超过100kg,因此量纲对分析还是会影响的。

        在这里我们采用的方法是:针对每一个指标,我们将所有评价对象在该指标上的值的平方和的平方根作为分母,分子就是每个单独的值,这样就可以完成标准化了。

        具体的公式图示如下。

4.计算最终得分

        我们在以上操作做完以后,从矩阵的每一列(这里的一列是一个指标,一行是一个需要进行评价的对象)中选择出最大和最小的,作为最优点和最劣点的坐标值。 

        距离的计算方法就是几何距离Di,即:对应分量差值的平方和的平方根,公式在下图。

        然后最终结果Si的计算公式要用到到最优点和最劣点的两个距离,公式见下图。

         最后按照分数排序即可得到最终的结果。

         Ok,以上就是我的Topsis学习的笔记,希望对正在备战数模国赛的大家有所帮助!如果觉得有用留下赞和收藏再走吧~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2
  • 【洛谷/水滴题解】[NOIP2005 普及组] 采药
  • C++入门:类和对象(入门篇)
  • 详解Linux命令--zip/unzip
  • 谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
  • Unity动画模块 之 简单创建一个序列帧动画
  • 6 款最佳付费和免费 iPhone 解锁应用和软件
  • [FBCTF2019]RCEService1
  • Redis7-分布式锁
  • 嵌入式学习Day30---Linux软件编程---进程间的通信
  • 网络通信(TCP/UDP协议 三次握手四次挥手 )
  • Webpack Bundle Analysis:减少包体积的技巧
  • Linux——进程(2)
  • IO多路复用—前言
  • 【OneAPI】中国行政区域省市县编码查询
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 2017-08-04 前端日报
  • conda常用的命令
  • Docker: 容器互访的三种方式
  • JSDuck 与 AngularJS 融合技巧
  • js学习笔记
  • js中forEach回调同异步问题
  • k8s如何管理Pod
  • Linux CTF 逆向入门
  • mysql 5.6 原生Online DDL解析
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PHP 小技巧
  • react-native 安卓真机环境搭建
  • Redis中的lru算法实现
  • Vue UI框架库开发介绍
  • 免费小说阅读小程序
  • 如何选择开源的机器学习框架?
  • 如何用vue打造一个移动端音乐播放器
  • 如何在GitHub上创建个人博客
  • 用Visual Studio开发以太坊智能合约
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Linux权限管理(week1_day5)--技术流ken
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #include<初见C语言之指针(5)>
  • (~_~)
  • (+4)2.2UML建模图
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (二)linux使用docker容器运行mysql
  • (七)Activiti-modeler中文支持
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net6使用Sejil可视化日志
  • .Net中的集合
  • @Bean有哪些属性
  • [240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞