数学建模学习笔记(二)——Topsis优劣解距离法
(续上篇文章)层次分析法的局限
上一篇文章中,层次分析法有这样的局限
- 评价决策层不能太多;
- 数据是已知的的话,便无法使用层次分析法进行精确的分析评价;
因此,为对这些情况做出更为精准的分析,我们可以使用Topsis优劣解距离法。
Topsis优劣解距离法介绍
Topsis优劣解距离法是一种综合评价方法,主要优点是能够充分利用原始数据来进行分析。
主要步骤为:
- 将原始数据正向化
- 将正向化矩阵进行标准化(消除量纲的影响)
- 计算样本数据与最大值、最小值的距离
- 根据公式,利用距离计算未归一化的得分
- 最后进行排序即可
正向化简介
指标名称 | 指标特点 | 实例 |
---|---|---|
极大型指标 | 数据越大越好 | 成绩、水体氧气含量…… |
极小型指标 | 数据越小越好 | 细菌含量、水体富营养化程度…… |
中间型指标 | 数据越靠近一个中间的值越好 | PH值…… |
区间型指标 | 数据在一个区间中最好 | 人体体温、水体植物量 |
在Topsis第一步中,我们需要将数据进行正向化处理,一般的处理模式都是将其他类型指标转化为极大型指标。下面叙述转化方法:
- 极小型指标 →\rightarrow→ 极大型指标
转化公式为:max−x转化公式为:max-x转化公式为:max−x同时,如果所有数据都是正数(注意正数不包含0哦~~)也可以使用公式 1x\frac{1}{x}x1,但主要推荐使用 max−xmax-xmax−x 来转化。
(正向化公式不唯一,如果有更好的公式,欢迎告诉我,我会持续更新hhh) - 中间型指标 →\rightarrow→ 极大型指标
中间型指标一般会有一个最佳数值,记为 xbestx_{best}xbest ,设 {xix_ixi} 是中间型指标序列,那么正向化公式为:M=max∣xi−xbest∣xi^=1−∣xi−xbest∣MM = max{|x_i - x_{best}|} \\ \hat{x_i} = 1 - \frac{|x_i - x_{best}|}{M}M=max∣xi−xbest∣xi^=1−M∣xi−xbest∣例如:对于PH值的正向化(xbest=7,max=3x_{best}=7, max=3xbest=7,max=3)
PH | PH(正向化后) |
---|---|
1 | 1−63=−11-\frac{6}{3}=-11−36=−1 |
6 | 1−13=231-\frac{1}{3}=\frac{2}{3}1−31=32 |
8 | 1−13=231-\frac{1}{3}=\frac{2}{3}1−31=32 |
10 | 1−33=01-\frac{3}{3}=01−33=0 |
- 区间型指标 →\rightarrow→ 极大型指标
区间型指标一般也会有一个最佳区间 [a,b][a, b][a,b] ,同样设 {xi}\{x_i\}{xi} 是区间型指标序列,那么正向化公式为:M=max{a−min{xi},max{xi−b}}xi^={1−a−xiM,a<xi,1,a≤xi≤b,1−xi−bM,xi<bM = max\{a-min\{x_i\}, max\{x_i-b\}\} \\ \\ \hat{x_i}=\left\{ \begin{aligned} & 1-\frac{a-x_i}{M}, a<x_i, \\ \\ & 1, a \leq x_i \leq b, \\ \\ & 1-\frac{x_i-b}{M}, x_i<b \end{aligned} \right.M=max{a−min{xi},max{xi−b}}xi^=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧1−Ma−xi,a<xi,1,a≤xi≤b,1−Mxi−b,xi<b例如对于人体体温的转化:
a=36,b=37,M=max{36−35.2,38.4−37}=1.4a=36, b=37, M = max\{36-35.2, 38.4-37\}=1.4a=36,b=37,M=max{36−35.2,38.4−37}=1.4
体温 | 提问(正向化后) |
---|---|
35.2 | 0.4286 |
35.8 | 0.8571 |
36.6 | 1 |
37.1 | 0.9286 |
37.8 | 0.4286 |
38.4 | 0 |
下面来看一个具体的例子
- 原始数据为:
姓名 | 成绩 | 过失次数 | 竞赛次数 | 总和 |
---|---|---|---|---|
小明 | 89 | 2 | 2 | 50 |
小刚 | 60 | 0 | 4 | 60 |
小张 | 74 | 1 | 6 | 70 |
小李 | 99 | 3 | 8 | 80 |
由原始数据可知,成绩指标为极大型指标,过失次数为极小型指标,竞赛次数为区间型指标,总和为中间型指标。
根据上面描述的方法可以得到正向化矩阵为:X=[89100.56031174210.599000]X= \begin{bmatrix} 89 & 1 & 0 & 0.5 \\ 60 & 3 & 1 & 1 \\ 74 & 2 & 1 & 0.5 \\ 99 & 0 & 0 & 0\\ \end{bmatrix}X=⎣⎢⎢⎡89607499132001100.510.50⎦⎥⎥⎤2. 将正向化的矩阵进行标准化去除量纲的影响
标准化公式为:zij=xij∑i=1nx02(每一个元素/其所在列的元素的平方和)标准化公式为:z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^n x_0^2}}(每一个元素 / \sqrt{\text{其所在列的元素的平方和}})标准化公式为:zij=∑i=1nx02xij(每一个元素/其所在列的元素的平方和) S=[0.54370.267300.40820.36650.80180.70710.81650.45200.53450.70710.40820.6048000]S=\begin{bmatrix} 0.5437 & 0.2673 & 0 & 0.4082 \\ 0.3665 & 0.8018 & 0.7071 & 0.8165 \\ 0.4520 & 0.5345 & 0.7071 & 0.4082 \\ 0.6048 & 0 & 0 & 0\\ \end{bmatrix}S=⎣⎢⎢⎡0.54370.36650.45200.60480.26730.80180.5345000.70710.707100.40820.81650.40820⎦⎥⎥⎤
3. 将标准化矩阵进行归一化
- 求解样本数据与最大值和最小值的距离
定义最大值 Z+=(max{z11,z21,⋯,zn1},max{z12,z22,⋯,zn2},⋯,max{z1m,z2m,⋯,znm})Z^+ = (max\{z_{11}, z_{21}, \cdots, z_{n1}\}, max\{z_{12}, z_{22}, \cdots, z_{n2}\}, \cdots, max\{z_{1m}, z_{2m}, \cdots, z_{nm}\})Z+=(max{z11,z21,⋯,zn1},max{z12,z22,⋯,zn2},⋯,max{z1m,z2m,⋯,znm})
定义最小值 Z−=(min{z11,z21},⋯,zn1},min{z12,z22,⋯,zn2},⋯,min{z1m,z2m,⋯,znm})Z^- = (min\{z_{11}, z_{21}\}, \cdots, z_{n1}\}, min\{z_{12}, z_{22}, \cdots, z_{n2}\}, \cdots, min\{z_{1m}, z_{2m}, \cdots, z_{nm}\})Z−=(min{z11,z21},⋯,zn1},min{z12,z22,⋯,zn2},⋯,min{z1m,z2m,⋯,znm})
因此,第i(i=1,2,⋯,n)i(i=1, 2, \cdots, n)i(i=1,2,⋯,n)个评价对象与最大值的距离Di+=∑j=1m(Zj+−zij)2D_i^+ = \sqrt{\sum_{j=1}^{m}(Z_j^+-z_{ij})^2}Di+=∑j=1m(Zj+−zij)2
第i(i=1,2,⋯,n)i(i=1, 2, \cdots, n)i(i=1,2,⋯,n)个评价对象与最小值的距离Di−=∑j=1m(Zj−−zij)2D_i^- = \sqrt{\sum_{j=1}^{m}(Z_j^- - z_{ij})^2}Di−=∑j=1m(Zj−−zij)2
那么,我们可以计算出第 i(i=1,2,⋯,n)i(i=1, 2, \cdots, n)i(i=1,2,⋯,n) 个评价对象未归一化的得分:Si=Di−Di++Di−S_i = \frac{D_i^-}{D_i^+ + D_i^-}Si=Di++Di−Di−,即:Stand_X=[0.17310.42400.32790.0751]Stand\_X=\begin{bmatrix} 0.1731\\ 0.4240\\ 0.3279\\ 0.0751\\ \end{bmatrix}Stand_X=⎣⎢⎢⎡0.17310.42400.32790.0751⎦⎥⎥⎤
因此可以得到最终排序结果为:
姓名 | 排序 |
---|---|
小刚 | 1 |
小张 | 2 |
小明 | 3 |
小李 | 4 |
总结:
- Topsis优劣距离法的核心在于计算距离z与最小值的距离z与最大值的距离+z与最小值的距离\frac{\text{z与最小值的距离}}{\text{z与最大值的距离+z与最小值的距离}}z与最大值的距离+z与最小值的距离z与最小值的距离
- 要区别归一化和标准化,前者是对计算结果计算比例,后者是去除量纲的影响。
模型拓展
Topsis模型还可以加入权重,因此可以将上一篇文章中的层次分析法应用于该模型中。只需要在计算距离时乘以权重即可。具体公式为:Di+=∑j=1mωj(Zj+−zij)2Di−=∑j=1mωj(Zj−−zij)2D_i^+ = \sqrt{\sum_{j=1}^{m}\omega_j(Z_j^+-z_{ij})^2} \\ D_i^- = \sqrt{\sum_{j=1}^{m}\omega_j(Z_j^--z_{ij})^2}Di+=j=1∑mωj(Zj+−zij)2Di−=j=1∑mωj(Zj−−zij)2(ωj\omega_jωj为权重)
这就是Topsis优劣距离法的步骤。其中的数据处理可以使用MatlabMatlabMatlab编程计算。如果有什么错误的话,烦请告知~~~
有什么建议也请告诉我哦~~~
数学建模学习笔记(二)——Topsis优劣解距离法相关推荐
- 【数学建模】Topsis优劣解距离法
内容来自这篇 https://blog.csdn.net/weixin_43819566/article/details/112342602 评价方法大体上可分为两类,其主要区别在确定权重的方法上.一 ...
- TOPSIS(优劣解距离法)【附Python实现代码及可视化代码】
目录 一.指标正向化 1.极小型指标->极大型指标 2.中间型指标->极大型指标 3.区间型指标->极大型指标 二.标准化处理 三.计算得分并归一化(不带权重) 四.计算得分并归一化 ...
- 数学建模学习笔记(四)层次分析法(AHP)
应用场景: 1.最佳方案选取 2.评价类问题 3.指标体系的优选 步骤: 1.建立层次结构模型: 2.构造判断(成对比较)矩阵: 3.层次单排序及其一致性检验: 4.层次总排序及其一致性检验: 建立层 ...
- 数学建模学习笔记(三)熵权法Excel实现
熵权法步骤: 1.标准化处理 正向指标: Z i j = x i j − m i n ( x j ) m a x ( x j ) − m i n ( x j ) Z_{ij}=\cfrac{x_{ij ...
- topsis(优劣解距离法)在matlab上的实现
TOPSIS 模型是 Hwang 和 Yoon 于 1981 年首次 提出,它是一种根据有限评价对象与理想化目标接 近程度进行排序的方法,通过计算评价对象的最优 值和最劣值来进行排序,当评价对象与最优 ...
- TOPSIS 优劣解距离法
目录 举例介绍 TOPSIS步骤 第一步将原始矩阵正向化 极小型指标-->极大型指标 中间型指标->极大型 区间型-->极大型 第二步正向化矩阵标准化 第三步计算得分并归一化 TOP ...
- MATLAB之优劣解距离法Topsis模型
图片来源于清风视频,强烈推举清风视频学建模 一.什么是优劣解距离法 TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距. 二.一些简单的模型 成 ...
- 数学建模——TOPSIS法(优劣解距离法)学习笔记(一)
一.TOPSIS方法 TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简 ...
- 数学建模学习笔记(2):TOPSIS方法(优劣解距离法)和熵权法修正
文章目录 TOPSIS方法概述 TOPSIS方法步骤(重点) 熵权法对TOPSIS模型的修正 熵权法的步骤(重点) TOPSIS方法由C.L.Hwang和K.Yoon在1981年首次提出,在国内常简称 ...
最新文章
- php+羊,PHP之羊生小羊的问题
- js数组遍历、对象遍历、字符串遍历
- java语言实现图的深度优先遍历
- 从零开始实现主成分分析(PCA)算法
- java.util.ListIterator
- jboss调jvm参数_在同一台机器上启动多个JBoss A-MQ JVM
- CORS error 状态码451
- MySQL之在储存过程中使用表名为变量
- elastic search与postgresql的数据同步
- 三国也风流服务器怎么不稳定呢,三国也风流手游
- python自动化办公excel-Python自动化办公之操作Excel文件
- 总结_____大二上
- 灯火阑珊处,都市夜归人
- python如何检验显著性差异_基于python的显著性检验
- 嵌入式C语言编程中经验教训总结(一) 详解const、static和volatile
- wps excel 操作指南
- java网易云信怎么用_网易云信 SDK
- 学前端的你了解这些知识吗?——BFC、IFC、GFC、FFC
- 两个整数之间的所有素数,素数个数,素数和
- 28 电子商务风险控制
热门文章
- Win7系统桌面右下角托盘图标不显示原因和解决方法
- 搜狐视频怎么下载到电脑
- 腾讯视频怎么开启禁止界面硬件加速
- autocomplete 属性 清除input框输入存留历史值,防止下拉历史值显示
- Jersey中ContainerRequestFilter的使用
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- linux 环境变量详解,linux环境变量实例详解
- java8中的map与flatmap区别
- source code怎么用_code-builder代码生成器
- mysql配置文件简易代码_MySQL配置文件my.cnf 例子最详细翻译