数学建模清风课程笔记——第二章 TOPSIS法

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

TOPSIS法是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能够精确地反映各评价方案之间的差距。


评价类问题

1 TOPSIS法

TOPSIS法概念:

  1. TOPSIS法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能够精确地反映个评价方案之间的差距。
  2. 基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再针对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案与最劣方案之间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

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

所谓的正向化,就是要将所有的指标类型统一转化为极大型指标。(注意:转换的函数形式不唯一)

  • 极大型指标:数值越大越好的指标,如成绩。
  • 极小型指标:数值越小越好的指标,如争吵次数。

下表展示最常见的四种指标:

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

转换方法:

  1. max-x
  2. 如果所有的元素都是正数,也可以使用 1 x \frac{1}{x} x1

示例如下表:

姓名成绩与他人争吵次数正向化后的争吵次数
小明8921
小王6003
小张7412
小闵9930
指标类型极大型极小型极大型
1.1.2 中间型指标->极大型指标

转换方法:

{ 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\{|x_{i}-x_{best}|\},xi'=1-\frac{|x_{i}-x_{best}|}{M} M=max{xixbest},xi=1Mxixbest

示例如下:

PH值(转换前)PH值(转换后)
6 1 − ∣ 6 − 7 2 ∣ = 1 2 1-|\frac{6-7}{2}|=\frac{1}{2} 1267=21
7 1 − ∣ 7 − 7 2 ∣ = 1 1-|\frac{7-7}{2}|=1 1277=1
8 1 − ∣ 8 − 7 2 ∣ = 1 2 1-|\frac{8-7}{2}|=\frac{1}{2} 1287=21
9 1 − ∣ 9 − 7 2 ∣ = 0 1-|\frac{9-7}{2}|=0 1297=0
x b e s t = 7 x_{best}=7 xbest=7 $M=max{6-7
1.1.3 区间型指标->极大型指标

转换方法:

{ 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 M , x < a 1 , a ≤ x ≤ b 1 − x − b M , x > b \begin{equation} M=max\{a-min\{x_{i}\},max\{x_{i}\}-b\} \end{equation} ,x_{i}'=\begin{cases} 1-\frac{a-x}{M},x<a \\ 1 \qquad ,a≤x≤b \\ 1-\frac{x-b}{M},x>b\end{cases} M=max{amin{xi},max{xi}b}xi= 1Maxx<a1,axb1Mxb,x>b

示例如下:

体温(转换前)体温(转换后)
35.20.4286
35.80.8571
36.61
37.10.9286
37.80.4286
38.40
本题中, a = 36 , b = 37 , M = m a x { 36 − 35.2 , 38.4 − 37 } = 1.4 , a=36,b=37,M=max\{36-35.2,38.4-37\}=1.4, a=36,b=37,M=max{3635.2,38.437}=1.4每个数据带入公式转换即可。

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

目的:标准化是为了消除不同指标量纲的影响。

转换方法:

假设有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{\sum_{i=1}^n}x_{ij}^2} zij=i=1n xij2xij
每一个元素 该元素所在列的元素平方和 \frac{每一个元素}{\sqrt{该元素所在列的元素平方和}} 该元素所在列的元素平方和 每一个元素

1.3 计算得分并归一化

转换方法:

假设有n个要评价的对象,m个评价指标的标准化矩阵:
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
定义最大值:
Z + = ( Z 1 + , Z 2 + , . . . , Z m + ) Z^{+}=(Z^{+}_{1},Z^{+}_{2},...,Z^{+}_{m}) Z+=(Z1+,Z2+,...,Zm+)
= ( 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 } ) =(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}\}) =(max{z11,z21,,zn1},max{z12,z22,,zn2},,max{z1m,z2m,,znm})
即每一列元素中最大值构成的 1 × n 1×n 1×n的行向量。
定义最小值:
Z − = ( Z 1 − , Z 2 − , . . . , Z m − ) Z^{-}=(Z^{-}_{1},Z^{-}_{2},...,Z^{-}_{m}) Z=(Z1,Z2,...,Zm)
= ( 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 } ) =(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}\}) =(min{z11,z21,,zn1},min{z12,z22,,zn2},,min{z1m,z2m,,znm})
即每一列元素中最小值构成的 1 × n 1×n 1×n的行向量。
定义第 i ( i = 1 , 2 , ⋯   , n ) i(i=1,2,\cdots,n) i(i=1,2,,n)个评价对象与最大值的距离:
D i + = ∑ j = 1 m ( Z j + − z i j ) 2 D_{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)个评价对象与最小值的距离:
D i − = ∑ j = 1 m ( Z j − − z i j ) 2 D_{i}^{-}=\sqrt{\sum_{j=1}^m(Z_{j}^{-}-z_{ij})^2} Di=j=1m(Zjzij)2
那么我们可以计算得出第 i ( i = 1 , 2 , ⋯   , n ) i(i=1,2,\cdots,n) i(i=1,2,,n)个评价对象未归一化的得分: S i = D i − D i − + D i + S_{i}=\frac{D_{i}^{-}}{D_{i}^{-}+D_{i}^{+}} Si=Di+Di+Di
很明显有 0 ≤ S i ≤ 1 0≤S_{i}≤1 0Si1,且 S i S_{i} Si越大, D i − D_{i}^{-} Di越大,越接近最大值。
上述计算过程整体而言可以用如下简洁语言描述出来:
z 与最小值的距离 z 与最小值的距离 + z 与最大值的距离 \frac{z与最小值的距离}{z与最小值的距离+z与最大值的距离} z与最小值的距离+z与最大值的距离z与最小值的距离

2 例题

题目:评价下表中20条河流的水质情况。
注:含氧量越高越好;PH值接近7越好;细菌总数越少越好;植物性营养物量介于10-20之间最佳。

河流含氧量(ppm)PH值细菌总数(个/mL)植物性营养物量(ppm)
A4.696.595111.94
B2.037.86196.46
C9.116.31468.91
D8.617.054626.43
E7.136.55023.57
F2.396.773824.62
G7.696.79386.01
H9.36.812731.57
I5.457.62518.46
J6.197.27177.51
K7.937.5396.52
L4.47.281725.3
M7.468.242314.42
N2.015.554726.31
O2.046.42317.91
P7.736.145215.72
Q6.357.582529.46
R8.298.413912.02
S3.547.27543.16
T7.446.26828.41
指标类型极大型中间型极小型区间型

代码求解:详情见文件夹中的topsis.m文件。
注:正向化矩阵X可以放在文章附录中。

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值