清风数学建模学习笔记——TOPSIS法(优劣解距离法)

TOPSIS法是一种综合评价方法,通过计算与理想解和负理想解的距离来评估方案。它包括四个步骤:正向化、标准化、计算得分和归一化。正向化确保所有指标为极大型,标准化消除量纲影响,计算得分通过比较与最大值和最小值的距离,最后归一化得出评价分数。此方法适用于多指标决策问题,尤其当决策因素不受限制时。
摘要由CSDN通过智能技术生成

优劣解距离法

  TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution)可翻译为逼近理想解排序法,国内常简称为优劣解距离法。
  TOPSIS 法是一种常用的 综合评价方法,其能 充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。

  那么如何利用原始数据的信息呢?在上一篇 层次分析法 中,我们提到了层次分析法的局限性,如:决策因素不能太多,数据已知的情况下不容易用数据进行准确的说明。那么TOPSIS法就是利用数据进行说明,而且也对决策因素没有限制。



一、建模步骤

topsis进行建模,大致分为以下四个步骤:

  1. 将原始矩阵正向化
  2. 将正向化矩阵标准化
  3. 计算得分并归一化

接下来,我们根据例题讲解,并在相应出进行解释。


二、建模实现

  例:小明同宿舍共有四名同学,他们第一学期的成绩、以及与他们吵架的次数(两种因素)如下表所示,请你为这四名同学进行评分,该评分能合理的描述综合成绩的高低。

姓名成绩与他人吵架的次数
小明892
小王600
小张741
小李993

第一步:将原始矩阵正向化

在生活中,常见的指标有四种:

指标名称指标特点例子
极大型(效益型)指标越大(多)越好成绩、GDP增速、企业利润
极小型(成本型)指标越小(少)越好费用、坏品率、污染程度
中间型指标越接近某个值越好水质量评估时的PH值
区间型指标落在某个区间最好体温、水中植物性营养物量

  那么,在 TOPSIS 方法中,就是要将所有指标进行统一正向化,即统一转化为极大型指标。 那么就需要极小型、中间型以及区间型的指标进行转化为极大型指标。


极小型指标 👉 极大型指标

姓名成绩与他人吵架的次数正向化后的争吵次数
小明8921
小王6003
小张7412
小李9930
指标类型极大型极小型极大型

极小型指标转换为极大型指标的公式: m a x − x max-x maxx
如果所有的元素均为正数,那么也可以使用: 1 / x {1}/{x} 1/x,公式不唯一!


中间型指标 👉 极大型指标

中间型指标: 指标值既不要太大也不要太小,取某特定值最好(如水质量评估 PH 值)。{ x i x_i xi }是一组中间型指标序列,且最佳的数据为 x b e s t x_{best} xbest,那么正向化的公式如下:

M = m a x { ∣ x i − x b e s t ∣ } , x ˉ i = 1 − ∣ x i − x b e s t ∣ M M=max\lbrace|x_i-x_{best}|\rbrace,\bar x_i =1- \frac{|x_i-x_{best}|}{M} M=max{xixbest},xˉi=1Mxixbest

那么:  x b e s t = 7 , M = m a x { ∣ 6 − 7 ∣ , ∣ 7 − 7 ∣ , ∣ 8 − 7 ∣ , ∣ 9 − 7 ∣ } = 2 那么:\ x_{best}=7, M=max\lbrace |6-7|,|7-7|,|8-7|,|9-7| \rbrace = 2\\ 那么: xbest=7,M=max{∣67∣,∣77∣,∣87∣,∣97∣}=2

在这里插入图片描述


区间型指标 👉 极大型指标

区间型指标: 指标值落在某个区间内最好,例如人的体温在36°~37°这个区间比较好。{ x i x_i xi}是一组区间型指标序列,且最佳的区间为 [ a , b ] [a,b] [a,b], 那么正向化的公式如下:

M = m a x { a − m i n { x i } , m a x { x i } − b } , x ~ i = { 1 − a − x i M , x i < a 1 , a ≤ x i ≤ b 1 − x i − b M , x i > b M=max\lbrace a-min\lbrace x_i \rbrace , max\lbrace x_i \rbrace-b \rbrace, \tilde x_i=\begin{cases} & \text 1-\frac{a-x_i}{M},x_i<a \\ & \text 1 \qquad\quad,a≤x_i≤b \\& \text 1-\frac{x_i-b}{M},x_i>b \end{cases} M=max{amin{xi},max{xi}b},x~i= 1Maxixia1axib1Mxibxib
那么: a = 36 , b = 37 , M = m a x { 36 − 35.2 , 38.4 − 37 } = 1.4 那么:a=36,b=37,M=max\lbrace 36-35.2,38.4-37\rbrace=1.4 那么:a=36,b=37,M=max{3635.2,38.437}=1.4

在这里插入图片描述


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

标准化的目的就是消除不同量纲的影响。

假设有n个要评价的对象,m个评价指标(已经正向化了)构成的正向化矩阵如下:

X = [ x 11 x 12 ⋯ x 1 m x 21 x 22 ⋯ x 2 m ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n m ] X= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1m} \\ x_{21}& x_{22} & \cdots &x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{nm} \end{bmatrix} X= x11x21xn1x12x22xn2x1mx2mxnm

那么对其标准化后的矩阵记为Z,Z的每一个元素:

z i j = x i j ∑ i = 1 n x i j 2 z_{ij}=\frac{x_{ij}}{\sqrt{\displaystyle\sum_{i=1}^{n}x_{ij}^2}} zij=i=1nxij2 xij

即(每一个元素/根号下所在列元素的平方和)
得到标准化矩阵Z:

Z = [ z 11 z 12 ⋯ z 1 m z 21 z 22 ⋯ z 2 m ⋮ ⋮ ⋱ ⋮ z n 1 z n 2 ⋯ z n m ] Z= \begin{bmatrix} z_{11} & z_{12} & \cdots &z_{1m} \\ z_{21}& z_{22} & \cdots &z_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n1}& z_{n2} & \cdots &z_{nm} \end{bmatrix} Z= z11z21zn1z12z22zn2z1mz2mznm

注意:标准化的方法不唯一,但目的都是为了去量纲。

那么对题目中的矩阵进行处理:
[ 89 1 60 3 74 2 99 0 ] 经过标准化就变成了 [ 0.5437 0.2673 0.3665 0.8018 0.4520 0.5345 0.6048 0 ] \begin{bmatrix} 89 & 1 \\ 60 & 3 \\ 74 & 2 \\ 99 & 0 \end{bmatrix} 经过标准化就变成了 \begin{bmatrix} 0.5437 & 0.2673 \\ 0.3665& 0.8018 \\ 0.4520 & 0.5345 \\ 0.6048& 0 \end{bmatrix} 896074991320 经过标准化就变成了 0.54370.36650.45200.60480.26730.80180.53450


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

定义最大值:

Z + = ( m a x { z 11 , z 21 , ⋯   , z n 1 } , m a x { z 12 , z 22 , ⋯   , z n 2 } , ⋯   , m a x { z 1 m , z 2 m , ⋯   , z n m } ) Z^+=(max\lbrace z_{11},z_{21},\cdots,z_{n1} \rbrace,max\lbrace z_{12},z_{22},\cdots,z_{n2} \rbrace,\cdots,max\lbrace z_{1m},z_{2m},\cdots,z_{nm} \rbrace) Z+=(max{z11,z21,,zn1},max{z12,z22,,zn2},,max{z1m,z2m,,znm})

定义最小值:
Z − = ( m i n { z 11 , z 21 , ⋯   , z n 1 } , m i n { z 12 , z 22 , ⋯   , z n 2 } , ⋯   , m i n { z 1 m , z 2 m , ⋯   , z n m } ) Z^-=(min\lbrace z_{11},z_{21},\cdots,z_{n1} \rbrace,min\lbrace z_{12},z_{22},\cdots,z_{n2} \rbrace,\cdots,min\lbrace z_{1m},z_{2m},\cdots,z_{nm} \rbrace) Z=(min{z11,z21,,zn1},min{z12,z22,,zn2},,min{z1m,z2m,,znm})

定义第i(i = 1,2,…,n)个评价对象与最大值的距离:

D i + = ∑ j = 1 m ( Z j + − z i j ) 2 D_i^+=\sqrt{\displaystyle\sum_{j=1}^{m}(Z_j^+-z_{ij})^2} Di+=j=1m(Zj+zij)2

定义第i(i = 1,2,…,n)个评价对象与最小值的距离 :

D i − = ∑ j = 1 m ( Z j − − z i j ) 2 D_i^-=\sqrt{\displaystyle\sum_{j=1}^{m}(Z_j^--z_{ij})^2} Di=j=1m(Zjzij)2

那么,我们可以计算得出第 i( i = 1,2,…,n) 个评价对象未归一化的得分:

S i = D i − D i + + D i − S_i=\frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi

很明显 0≤Si≤1,且 Si 越大 Di+ 越小,即越接近最大值。


那么对题目进行计算得分:

上一步标准化后的矩阵如下表:
在这里插入图片描述

最大值:[0.6048, 0.8018],最小值:[0.3665, 0]

在这里插入图片描述

未归一化的得分:

S i = D i − D i + + D i − S_i=\frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi

得分结果如下:

姓名D+D-未归一化得分归一化后的得分排名
小明0.53800.32060.37340.18573
小王0.23820.80180.77090.38341
小张0.30780.54130.63750.31702
小李0.80180.23820.22910.11394

三、模型扩展 (★)

  本道题目中默认了各项指标的权重相同,但在实际的评价中指标都是有各自的权重,因此应该用权重对公式进行修正,修正后的公式如下,ω 代表权重。
D i + = ∑ j = 1 m ω j ( Z j + − z i j ) 2 , D i − = ∑ j = 1 m ω j ( Z j − − z i j ) 2 D_i^+=\sqrt{\displaystyle\sum_{j=1}^{m}\omega_j(Z_j^+-z_{ij})^2},D_i^-=\sqrt{\displaystyle\sum_{j=1}^{m}\omega_j(Z_j^--z_{ij})^2} Di+=j=1mωj(Zj+zij)2 Di=j=1mωj(Zjzij)2

ω 可以由偏主观的层次分析法得出,也可由偏客观的熵权法得出,但是我建议使用综合主观与客观的权重,因为其更具有才更具说服力!


四、模型总结

  TOPSIS 法别名优劣解距离法,其主要利用数据的信息,精确的反应评价方案之间的优劣差距。TOPSIS 法多用于解决多指标的决策性问题,其实现原理为通过计算各备选方案与正负理想解之间的相对距离来进行排序并做出选择。其主要步骤如下:

  1. 将原始矩阵正向化。(为了统一指标,方便后面计算,因此将指标统一为极大型指标)
  2. 将正向化矩阵标准化。(消除量纲的影响)
  3. 计算得分并归一化。(统计各指标的最大值,与最小值,并计算得分)

公式: S i = D i − D i + + D i − Si = \frac{D_i^-}{D_i^++D_i^-} Si=Di++DiDi,实际上是 x − m i n m a x − m i n \frac{x-min}{max-min} maxminxmin的变形:
x − m i n m a x − m i n → x − m i n ( m a x − x ) + ( x − m i n ) → x 与最小值的距离 x 与最大值的距离 + x 与最小值的距离 \frac{x-min}{max-min}→\frac{x-min}{(max-x)+(x-min)} → \color{red}{\frac{x与最小值的距离}{x与最大值的距离+x与最小值的距离}} maxminxmin(maxx)+(xmin)xminx与最大值的距离+x与最小值的距离x与最小值的距离

还有一点, D i + D_i^+ Di+ D i − D_i^- Di 实际上是 欧氏距离,TOPSIS就是求得当前评价对象各指标与正负理想解相对距离,来最终做出评价的!


  本文借鉴了数学建模清风老师的课件与思路,如果大家发现文章中有不正确的地方,欢迎大家在评论区留言,也可以点击查看下方链接查看清风老师的视频讲解~

原文链接:https://www.bilibili.com/video/BV1DW411s7wi

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiu Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值