TOPSIS法(Technique for Order Preference by Similarity to an Ideal Solution )可以理解为逼近理想解排序法,国内也称作优劣解距离法。该方法只要求各效用函数具有单调递增(或递减)性就行。TOPSIS法是多目标决策分析中一种常用的有效方法。
举个例子:一个寝室四个人的高数成绩如下:


在这种情况下,我们如何确定权重(评分)呢?归一化!
归一化:是一种无量纲处理手段,使物理系统数值的绝对值变成某种相对值关系。简化计算,缩小量值的有效办法。
那么你可能也听说过标准化这个词
标准化:当几种参数的单位不一致时,使用标准化去除量纲。
这里我们采用的构造方式为(x−minmax−min)\genfrac (){1pt}{1}{x-min}{max-min}(max−minx−min​) ,缩小量值,然后归一化,让他们评分相加为1.

我们为什么采用这样的评分标准:

  1. 首先一般评价的对象一般远超于2个。
  2. 比较的指标也往往不是一个方面。
  3. 有很多指标不存在理论上的最大最小值,例如GDP增速。

当我们增加一个指标时:

成绩属于极大型指标(效益性指标),属于越大越好。
争吵属于极小型指标(成本型指标),属于越小越好。
此时,我们需要把两种指标转化为相同方向。(统一指标类型)
将所有指标正向化处理,极小型指标转化极大型指标公式max−xmax-xmax−x

此时我们可以发现,争吵次数与成绩是两种不同单位的指标参数,所以我们利用标准化来去除量纲的影响。
假设有n个要评价的对象,m个指标参数(都已经正向化),构成的正向化矩阵为:X = [x11...x1mx21...x2m.........xn1...xnm]\begin{bmatrix} x_{11} & ... & x_{1m} \\ x_{21} & ... & x_{2m} \\ ... & ... & ... \\ x_{n1} & ... & x_{nm} \\ \end{bmatrix}⎣⎢⎢⎡​x11​x21​...xn1​​............​x1m​x2m​...xnm​​⎦⎥⎥⎤​,那么标准化后的矩阵记为Z,Z中的每一个元素:zij=xij/∑i=1nxij2z_{ij}= x_{ij}/\sqrt{\displaystyle\sum_{i=1}^nx_{ij}^2}zij​=xij​/i=1∑n​xij2​​,经过变换:
[891603742990]\begin{bmatrix} 89 &1 \\ 60 &3\\ 74&2\\ 99&0 \\ \end{bmatrix}⎣⎢⎢⎡​89607499​1320​⎦⎥⎥⎤​ =====>[0.54370.26730.36650.80180.45200.53450.60480]\begin{bmatrix} 0.5437 &0.2673 \\ 0.3665 &0.8018\\ 0.4520&0.5345\\ 0.6048&0 \\ \end{bmatrix}⎣⎢⎢⎡​0.54370.36650.45200.6048​0.26730.80180.53450​⎦⎥⎥⎤​ 相关代码:清风数学建模

1.类比只有一个指标的计算得分

假设有n个要评价的对象,m个指标指标的标准化矩阵:Z=[z11...z1mz21...z2m.........zn1...znm]Z = \begin{bmatrix} z_{11} & ... & z_{1m} \\ z_{21} & ... & z_{2m} \\ ... & ... & ... \\ z_{n1} & ... & z_{nm} \\ \end{bmatrix}Z=⎣⎢⎢⎡​z11​z21​...zn1​​............​z1m​z2m​...znm​​⎦⎥⎥⎤​,我们定义每一指标的最大值Zi+Z^+_iZi+​ ,最小值Zi−Z^-_iZi−​,定义第i(i=1,2,3…n)个评价对象与最大值的距离 Di+=∑j=1m(Zi+−zij)2D_i^+= \sqrt{\displaystyle\sum_{j=1}^m(Z_i^+-z_{ij})^2}Di+​=j=1∑m​(Zi+​−zij​)2​,第i(i=1,2,3…n)个评价对象与最小值的距离 Di−=∑j=1m(Zi−−zij)2D_i^-= \sqrt{\displaystyle\sum_{j=1}^m(Z_i^--z_{ij})^2}Di−​=j=1∑m​(Zi−​−zij​)2​,那么评价对象未归一化的得分:Si=Di−Di−+Di+S_i =\tfrac{D_i^-}{D_i^-+D_i^+}Si​=Di−​+Di+​Di−​​,明显可以看出SiS_iSi​一定是在0到1之间,即Di+D_i^+Di+​这个最大距离越小,SiS_iSi​越大,即越接近最大值。这也是为什么TOPSIS也叫做优劣解距离法

2.解题步骤

第一步:将原始矩阵正向化
最常见的四种指标:

如何极小型转化极大型:

  1. max - x:最大值减去当前x
  2. 如果所有元素都为正数,直接变成倒数1x\tfrac{1}{x}x1​

如何中间型转化极大型:
设中间型为xbestx_{best}xbest​,那么未归一化得分公式为M=max(∣xi−xbest∣)M = max(|x_i-x_{best}|)M=max(∣xi​−xbest​∣),xi~=1−∣xi−xbest∣M\widetilde{x_i}=1-\tfrac{|x_i-x_{best}|}{M}xi​​=1−M∣xi​−xbest​∣​

如何区间型转化极大型:
是指值落在某个区间内最好,设区间为[a,b],有M=max(a−min(xi),max(xi)−b)M = max(a-min(x_i),max(x_i)-b)M=max(a−min(xi​),max(xi​)−b)
xi~={1−a−xM,x<a1,a<=x<=b1−x−bM,x>b\widetilde{x_i} = \begin{cases} 1- \tfrac{a-x}{M} ,x < a \\ 1 ,a <= x <= b\\ 1- \tfrac{x-b}{M} ,x > b \end{cases}xi​​=⎩⎪⎨⎪⎧​1−Ma−x​,x<a1,a<=x<=b1−Mx−b​,x>b​

第二步: 将正向化转换成标准化:假设有n个要评价的对象,m个指标参数(都已经正向化),构成的正向化矩阵为:X=[x11...x1mx21...x2m.........xn1...xnm]X = \begin{bmatrix} x_{11} & ... & x_{1m} \\ x_{21} & ... & x_{2m} \\ ... & ... & ... \\ x_{n1} & ... & x_{nm} \\ \end{bmatrix}X=⎣⎢⎢⎡​x11​x21​...xn1​​............​x1m​x2m​...xnm​​⎦⎥⎥⎤​,那么标准化后的矩阵记为Z,Z中的每一个元素:
zij=xij/∑j=1mxij2z_{ij}= x_{ij}/\sqrt{\displaystyle\sum_{j=1}^mx_{ij}^2}zij​=xij​/j=1∑m​xij2​​每一个元素/其所在列的平方和每一个元素/\sqrt{其所在列的平方和}每一个元素/其所在列的平方和​

第三步: 计算得分并归一化。
这就是TOPSIS的流程~

补充:基于熵权法对TOPSIS模型的修正

由于层次分析法的主观性影响太大,所以我们利用熵权法(一种客观客观赋权的方法)。
什么是熵权法:

按照信息论基本原理的解释,信息是系统有序程度的一个度量,熵是系统无序程度的一个度量;如果指标的信息熵越大,该指标提供的信息量越大,在综合评价中所起作用理当越大,权重就应该越高。因此,可利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。

这里的信息熵我们看作是方差,方差越大,波动程度越大,意味着权重也就越大。

越可能发生的事情,信息量越小;
越不可能发生的事情,信息量就越大。

熵权法的计算步骤

1.判断输入的矩阵中是否存在负数,如果有则要重新标准化到非负区间(后面计算概率时要保证每一个元素为非负数)
Z(ij)=x(ij)−min(x(ij))max(x(ij))−min(x(ij))Z_(ij) = \tfrac{x_(ij)-min(x_(ij))}{max(x_(ij))-min(x_(ij))}Z(​ij)=max(x(​ij))−min(x(​ij))x(​ij)−min(x(​ij))​
2.计算第j项指标下第i个样本所占的权重,并将其看作相对熵计算所用到的概率。
Z~=[z~11...z~1mz~21...z~2m.........z~n1...z~nm]\widetilde Z = \begin{bmatrix} \widetilde z_{11} & ... &\widetilde z_{1m} \\ \widetilde z_{21} & ... &\widetilde z_{2m} \\ ... & ... & ... \\ \widetilde z_{n1} & ... &\widetilde z_{nm} \\ \end{bmatrix}Z=⎣⎢⎢⎡​z11​z21​...zn1​​............​z1m​z2m​...znm​​⎦⎥⎥⎤​
pij=z~ij/∑i=1nz~ijp_{ij} = \widetilde z_{ij}/\sqrt{\displaystyle\sum_{i=1}^n\widetilde z_{ij}}pij​=zij​/i=1∑n​zij​​
保证了每一个概率之和相加为1.
3.计算每个指标的信息熵,并计算信息效用值,并归一化得到每一个指标的熵权。对于第j个指标而言,其信息熵的计算公式为:
ej=−1lnn∑i=1npijln(pij)e_j = - \tfrac{1}{lnn}\sum_{i=1}^np_{ij}ln(p_{ij})ej​=−lnn1​i=1∑n​pij​ln(pij​)
eje_jej​越大,所代表第j个指标的信息熵越大,信息熵越大他本身所包含的信息量就越少,就像前面例子所说,每次考试都考第一名高考一定会考上清华,毋庸置疑,大家是一定相信的,所以包含的信息相对少;而吊车尾突然考上清华,大家就会猜测,他是怎么考上的呢?这里包含的信息量就相对大。
信息效用值:dj=1−ejd_j = 1 - e_jdj​=1−ej​信息效用值越大,其对应所含的信息就越多。将信息效用值进行归一化,我们就能得到每一个指标的熵权:Wj=dj/∑j=1mdj(j=1,2,3...)W_j = d_j /\displaystyle\sum_{j=1}^md_j (j = 1,2,3...)Wj​=dj​/j=1∑m​dj​(j=1,2,3...)

熵权法的依据原理

指标的变异程度越小,所反映的信息量也越少,其对应的权值也相应越低。

数学建模之TOPSIS法相关推荐

  1. 数学建模(2)--TOPSIS法

    数学建模--TOPSIS法 概括 概括 TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L ...

  2. 数学建模之topsis法(c语言实现)

    1.步骤 (1).数据的标准化处理: (2).选出最优方案和最劣方案: (3).计算出各个对象和最优以及最劣之间的距离: (4).再使用Dbest/(Dbest+Dwors)计算出各对象的评分,值越小 ...

  3. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  4. 【Matlab】数学建模_变异系数法

    [Matlab]数学建模_变异系数法 1.基本思想 2.数据集介绍 3.文件结构 4.详细代码及注释 5.运行结果 6.结果说明 1.基本思想 变异系数法通常用于解决数据分布不同的问题.它是一个用于测 ...

  5. 数学建模笔记 Topsis和熵权法

    Topsis法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法. ​ ...

  6. 【数学建模】Topsis优劣解距离法

    内容来自这篇 https://blog.csdn.net/weixin_43819566/article/details/112342602 评价方法大体上可分为两类,其主要区别在确定权重的方法上.一 ...

  7. [数学建模]---2.Topsis优劣距离法

    一.有关excel数据的导入 ①可以直接在工作区将矩阵的元素直接复制粘贴过去,并创建一个变量X来存储代表这个矩阵 ②右击这个变量,另存为一个.mat文件,下次再用的时候,代码区直接  load wat ...

  8. 数学建模 --- 层次分析法(AHP模型)

    层次分析法 评价类问题 该问题思路 选出相关指标,求各个指标之间的权重 和 对某个指标而言各个选择权重(分而治之思想) 计算每个方案的得分 层次分析法 层次分析法第一步 --- 层次结构图 层次分析法 ...

  9. 数学建模之主成分分析法

    评价方法大体可分为两类,其主要区别在确定权重的方法上.一类是主观赋权法,多数采取综合咨询评分确定权重,如综合指数法,模糊综合评价法,层次分析法,功效系数法等.另一类是客观赋权,根据各指标间相关关系或各 ...

  10. 数学建模层次分析法例题及答案_斩获国际特等奖!兰理工数学建模团队为百年校庆献礼...

    近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布. 兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(Outstanding Winner)1项.一等奖(Meritorious ...

最新文章

  1. BF算法优化-------KMP算法
  2. 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表 (15 分)
  3. 在Hinton看来是“宇宙答案”GPT-3,到LeCun这里却“对世界一无所知”
  4. 用CSS制作圆角框的方法一,二
  5. 女儿问了我一个问题:什么是抽象?
  6. 《TCP/IP详解》之二:流式数据交互
  7. dos c语言显示符号图案,在DOS命令行窗口中显示出用各种字符拼凑出来的各种图案的实现方法,如本人头像...
  8. 比Postman更好用!在国产接口调试工具Apipost中使用Mock
  9. 南京理工大学计算机专业考研,2020南京理工大学计算机考研初试科目、参考书目、复试详情汇总...
  10. 开源经济模型 MAKRO
  11. 计算机组装与维修blos,计算机组装与维护标准教程 设置bios参数.pptx
  12. windows server 试用激活 及 设置用户数
  13. 灰度重心法提取中心线遇到的问题
  14. ppt插入html,如何在PPT中嵌入网页?
  15. keil4出现目标未被创建,keil 目标未创建
  16. 我是江西人 (二)江右商帮
  17. Codeforces Round #731 (Div. 3)(ABCDEFG)
  18. python如何调用函数计算出成绩的不及格率_(求excle公式:95分以上为优、94分-85分为良、84分-75分为中、74分-60分为合格、60分以下为不合格)excel成绩及格率...
  19. 「文化」是企业最后的倔强
  20. 代码重构的力量:如何衡量重构成功

热门文章

  1. 上位机与西门子PLC通信协议
  2. java 普元_也谈普元 - 狂奔 lion - BlogJava
  3. MATLAB通信系统建模
  4. N039_自动标记地区_import_cpca自动提取省市区和详细地址
  5. VS2017 Visual Assist X破解方法
  6. nmap命令教程详解
  7. Windows批处理命令
  8. 嵌入式软件开发是什么?
  9. 还在烦恼没有项目?手把手带你从 0 开始用 React 重写学成在线 II
  10. Kafka权威指南-学习笔记---第四章