【数学建模入门】TOPSIS算法

TOPSIS法

背景知识

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

与层次分析法相比,topsis的先决条件是有初始的数据,所以我们更应该通过这些数据进行分析

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

最常见的四种指标:

指标名称指标特点例子
极大型(效益型)越大越好成绩、GDP
极小型(成本型)越小越好费用、污染程度
中间型越接近某个值越好水质量评估时的PH值
区间型落在某个区间最好体温、人体的血压

所谓正向化就是将所有指标转化为极大型指标

类型1:极小型–>极大型

姓名成绩处分次数正向化后的处分次数
小王7804
小杨8922
小张7813
小吴9040
小曾8731

此时我们可以取正向化函数为:
f ( x ) = m a x − x f(x)=max-x f(x)=maxx
此时正向化完成,正向化函数可以不一致的

类型2:中间值型–>极大型

水样标本名称PH正向化后的指标
恒河水100
泰晤士河水80.6667
长江河水71
密西西比河水60.6667

(水样的PH值肯定越接近7越好)
假设 x i 是一组中间值指标序列,且最佳的数值为 x b ,那么正向化的公式如下: 假设{x_i}是一组中间值指标序列,且最佳的数值为x_{b},那么正向化的公式如下: 假设xi是一组中间值指标序列,且最佳的数值为xb,那么正向化的公式如下:

M = m a x ∣ x i − x b ∣ , x i = 1 − ∣ x i − x b ∣ / M M=max{|x_i-x_b|},x_i=1-|x_i-x_b|/M M=maxxixb,xi=1xixb∣/M

类型3:区间型指标–>极大型指标

姓名体温正向化后的体温
张三36.51
李四37.90.4705
王五35.10.4705
杨六35.20.5294
曾七38.70

一般人体的体温都是在36~37为正常,所以范围是[36,37]

公式化就是:
[ x i ] 是一组区间型指标,且最佳区间是 [ a , b ] , 那么正向化公式是: [x_i]是一组区间型指标,且最佳区间是[a,b],那么正向化公式是: [xi]是一组区间型指标,且最佳区间是[a,b],那么正向化公式是:
​ M=max{a-min(x),max(x)-b}
x i 正向化后 = { 1 − ∣ x i − a ∣ / M , x i < a 1 , a < = x i < = b 1 − ∣ x i − b ∣ / M , x i > b x_{i正向化后} = \begin{cases} 1-|x_i-a|/M,&x_i<a\\ 1,&a<=x_i<=b\\ 1-|x_i-b|/M,&x_i>b \end{cases} xi正向化后= 1xia∣/M,1,1xib∣/M,xi<aa<=xi<=bxi>b
此题中,M=1.7,最佳区间是[a,b]=[36,37].

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

目的是消除不同指标量纲的影响。

假设有n个评价对象,m个评价指标(均已正向化)构成的正向化矩阵如下:
在这里插入图片描述

那么就对,对其每一个元素标准化后的矩阵为Z,其中Z中的每个元素为:在这里插入图片描述

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

有以下标准化矩阵:
在这里插入图片描述

计算得分公式的公式为:

在这里插入图片描述

这里的距离可以理解为向量之间的距离

定义最大值:
Z m a x = ( Z 1 m a x , Z 2 m a x , . . . , Z m m a x ) = ( m a x { z 11 , z 21 , z 31 , . . . , z n 1 } , m a x { z 12 , z 22 , z 32 , . . . , z n 2 } , . . . , m a x { z 1 m , z 2 m , z 3 m , . . . , z n m } ) Z_{max}=(Z_{1max},Z_{2max},...,Z_{mmax})\\=(max\{z_{11},z_{21},z_{31},...,z_{n1}\},max\{z_{12},z_{22},z_{32},...,z_{n2}\},...,\\max\{z_{1m},z_{2m},z_{3m},...,z_{nm}\}) Zmax=(Z1max,Z2max,...,Zmmax)=(max{z11,z21,z31,...,zn1},max{z12,z22,z32,...,zn2},...,max{z1m,z2m,z3m,...,znm})
定义最小值:
Z m i n = ( Z 1 m i n , Z 2 m i n , . . . , Z m m i n ) = ( m i n { z 11 , z 21 , z 31 , . . . , z n 1 } , m i n { z 12 , z 22 , z 32 , . . . , z n 2 } , . . . , m i n { z 1 m , z 2 m , z 3 m , . . . , z n m } ) Z_{min}=(Z_{1min},Z_{2min},...,Z_{mmin})\\=(min\{z_{11},z_{21},z_{31},...,z_{n1}\},min\{z_{12},z_{22},z_{32},...,z_{n2}\},...,\\min\{z_{1m},z_{2m},z_{3m},...,z_{nm}\}) Zmin=(Z1min,Z2min,...,Zmmin)=(min{z11,z21,z31,...,zn1},min{z12,z22,z32,...,zn2},...,min{z1m,z2m,z3m,...,znm})
定义第i个对象与最大值的距离(就是向量之间的距离的求法):

在这里插入图片描述

定义第i个对象与最大值的距离(就是向量之间的距离的求法):

在这里插入图片描述

具体例子

姓名成绩处分次数正向化后的处分次数
小王7804
小杨8922
小张7813
小吴9040
小曾8731

以此为例:

step1:正向化

易得已正向化

step2:标准化

由公式得以下矩阵:

姓名成绩正向化处分次数
小王0.4120.730
小杨0.4710.365
小张0.4120.548
小吴0.4760
小曾0.4600.183

step3:计算得分

最大的向量为[0.476,0.730]

最小的向量为[0.412,0]

有公式可以得

姓名成绩正向化处分次数最小距离最大距离评分
小王0.4120.7300.730.0640.919
小杨0.4710.3650.3700.3650.503
小张0.4120.5480.5480.1930.740
小吴0.47600.0640.730.081
小曾0.4600.1830.1890.5470.257
归一化评分
0.368
0.201
0.296
0.032
0.103

由此可以得出小王的评分最高

带有权值topsis算法

有上题,成绩和处分次数真得一样重要吗?其实在现实生活中许多指标它们的权值是不一样的。

所以将权值引入topsis只需要改变第三步的公式,改变如下:
w j 代表第 j 个指标的权值, w_j代表第j个指标的权值, wj代表第j个指标的权值,
将如下公式改为

在这里插入图片描述
最小距离同上

而权值可以根据层次分析法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值