数学建模学习笔记(二)——Topsis优劣解距离法

(续上篇文章)层次分析法的局限

上一篇文章中,层次分析法有这样的局限

  1. 评价决策层不能太多;
  2. 数据是已知的的话,便无法使用层次分析法进行精确的分析评价;

因此,为对这些情况做出更为精准的分析,我们可以使用Topsis优劣解距离法。

Topsis优劣解距离法介绍

Topsis优劣解距离法是一种综合评价方法,主要优点是能够充分利用原始数据来进行分析。

主要步骤为:

  1. 将原始数据正向化
  2. 将正向化矩阵进行标准化(消除量纲的影响)
  3. 计算样本数据与最大值、最小值的距离
  4. 根据公式,利用距离计算未归一化的得分
  5. 最后进行排序即可

正向化简介

指标名称指标特点实例
极大型指标数据越大越好成绩、水体氧气含量……
极小型指标数据越小越好细菌含量、水体富营养化程度……
中间型指标数据越靠近一个中间的值越好PH值……
区间型指标数据在一个区间中最好人体体温、水体植物量

在Topsis第一步中,我们需要将数据进行正向化处理,一般的处理模式都是将其他类型指标转化为极大型指标。下面叙述转化方法:

  1. 极小型指标 → \rightarrow 极大型指标
    转 化 公 式 为 : m a x − x 转化公式为:max-x maxx同时,如果所有数据都是正数(注意正数不包含0哦~~)也可以使用公式 1 x \frac{1}{x} x1,但主要推荐使用 m a x − x max-x maxx 来转化。
    (正向化公式不唯一,如果有更好的公式,欢迎告诉我,我会持续更新hhh)
  2. 中间型指标 → \rightarrow 极大型指标
    中间型指标一般会有一个最佳数值,记为 x b e s t x_{best} xbest ,设 { x i x_i xi} 是中间型指标序列,那么正向化公式为: 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}|} \\ \hat{x_i} = 1 - \frac{|x_i - x_{best}|}{M} M=maxxixbestxi^=1Mxixbest例如:对于PH值的正向化( x b e s t = 7 , m a x = 3 x_{best}=7, max=3 xbest=7,max=3)
PHPH(正向化后)
1 1 − 6 3 = − 1 1-\frac{6}{3}=-1 136=1
6 1 − 1 3 = 2 3 1-\frac{1}{3}=\frac{2}{3} 131=32
8 1 − 1 3 = 2 3 1-\frac{1}{3}=\frac{2}{3} 131=32
10 1 − 3 3 = 0 1-\frac{3}{3}=0 133=0
  1. 区间型指标 → \rightarrow 极大型指标
    区间型指标一般也会有一个最佳区间 [ a , b ] [a, b] [a,b] ,同样设 { x i } \{x_i\} {xi} 是区间型指标序列,那么正向化公式为: M = m a x { a − m i n { x i } , m a x { x i − b } } x i ^ = { 1 − a − x i M , a < x i , 1 , a ≤ x i ≤ b , 1 − x i − b M , x i < b M = 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{amin{xi},max{xib}}xi^=1Maxi,a<xi,1,axib,1Mxib,xi<b例如对于人体体温的转化:
    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
体温提问(正向化后)
35.20.4286
35.80.8571
36.61
37.10.9286
37.80.4286
38.40

下面来看一个具体的例子

  1. 原始数据为:
姓名成绩过失次数竞赛次数总和
小明892250
小刚600460
小张741670
小李993880

由原始数据可知,成绩指标为极大型指标,过失次数为极小型指标,竞赛次数为区间型指标,总和为中间型指标。

根据上面描述的方法可以得到正向化矩阵为: X = [ 89 1 0 0.5 60 3 1 1 74 2 1 0.5 99 0 0 0 ] 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.502. 将正向化的矩阵进行标准化去除量纲的影响
标 准 化 公 式 为 : z i j = x i j ∑ i = 1 n x 0 2 ( 每 一 个 元 素 / 其所在列的元素的平方和 ) 标准化公式为:z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^n x_0^2}}(每一个元素 / \sqrt{\text{其所在列的元素的平方和}}) zij=i=1nx02 xij(/其所在列的元素的平方和 ) S = [ 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 ] 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 + = ( 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\{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 − = ( 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\{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)个评价对象与最大值的距离 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++DiDi,即: S t a n d _ X = [ 0.1731 0.4240 0.3279 0.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

总结:

  1. Topsis优劣距离法的核心在于计算距离 z与最小值的距离 z与最大值的距离+z与最小值的距离 \frac{\text{z与最小值的距离}}{\text{z与最大值的距离+z与最小值的距离}} z与最大值的距离+z与最小值的距离z与最小值的距离
  2. 要区别归一化和标准化,前者是对计算结果计算比例,后者是去除量纲的影响。

模型拓展

Topsis模型还可以加入权重,因此可以将上一篇文章中的层次分析法应用于该模型中。只需要在计算距离时乘以权重即可。具体公式为: 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{\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=1mωj(Zj+zij)2 Di=j=1mωj(Zjzij)2 ( ω j \omega_j ωj为权重)

这就是Topsis优劣距离法的步骤。其中的数据处理可以使用 M a t l a b Matlab Matlab编程计算。如果有什么错误的话,烦请告知~~~

有什么建议也请告诉我哦~~~
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值