数学建模常见的一些方法【02TOPSIS/优劣解距离法】

数学建模常见的一些方法

TOPSIS法

(Technique for Order Preference by Similarity to Ideal Solution)

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

TOPSIS的介绍

C.L.Hwang 和 K.Yoon 于1981年首次提出 TOPSIS (Technique forOrder Preference by Similarity to an Ideal Solution),可翻译为逼近理想解排序法,国内常简称为优劣解距离法.。
  TOPSIS 法是一种常用的综合评价方法,能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距。
  基本过程为先将原始数据矩阵统一指标类型(一般正向化处理)得到正向化的矩阵,再对正向化的矩阵进行标准化处理以消除各指标量纲的影响,并找到有限方案中的最优方案和最劣方案,然后分别计算各评价对象与最优方案和最劣方案间的距离,获得各评价对象与最优方案的相对接近程度,以此作为评价优劣的依据。该方法对数据分布及样本含量没有严格限制,数据计算简单易行。

优劣解距离法操作步骤

1. 将原始矩阵正向化
指标名称指标特例子
极大型(效益型)指标越大(多)越好成绩、GDP增速、企业利润
极小型(成本型)指标越小(少)越好费用、坏品率、污染程度
中间型指标越接近某个值越好水质量评估时的PH值
区间型指标落在某个区间最好体温、水中植物性营养物量
  • 所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为极大型指标。
1.1 极小型指标 → 极大型指标

在这里插入图片描述

1.2 中间型指标 → 极大型指标

在这里插入图片描述

1.3 区间型指标 → 极大型指标

在这里插入图片描述

2. 正向化矩阵标准化

在这里插入图片描述
具体计算过程看后部分

3. 计算得分并归一化

在这里插入图片描述
具体计算过程看后部分


标准化处理公式

在这里插入图片描述
计算代码:

>> X = [89,1;60,3;74,2;99,0]
>> [n,m]=size(X)
>> X ./ repmat(sum(X .* X) .^0.5, n,1)

计算过程:

>> X = [89,1;60,3;74,2;99,0]
X =
    89     1
    60     3
    74     2
    99     0

>> [n,m]=size(X)
n = 4
m = 2

>> sum(X .* X)
ans = 26798   14

>> sum(X .* X) .^0.5
ans = 163.7009  3.7417

>> repmat(sum(X .* X) .^0.5, n,1)
ans =
  163.7009    3.7417
  163.7009    3.7417
  163.7009    3.7417
  163.7009    3.7417

>> X ./ repmat(sum(X .* X) .^0.5, n,1)
ans =
    0.5437    0.2673
    0.3665    0.8018
    0.4520    0.5345
    0.6048         0

类比只有一个指标计算得分

在这里插入图片描述
计算代码:

>> X = [89,1;60,3;74,2;99,0]
>> [n,m]=size(X)
>> Z = X ./ repmat(sum(X .* X) .^0.5, n,1)
>> D_P = sum([(Z - repmat(max(Z),n,1)).^2 ],2) .^ 0.5 %D+向量
>> D_N = sum([(Z - repmat(min(Z),n,1)).^2 ],2) .^ 0.5 %D-向量
>> A = D_N ./ (D_P + D_N) % 未归一化的得分
>> A ./ repmat(sum(A),n,1) % 归一化的得分

计算过程:

>> max(Z)
ans = 0.6048    0.8018

>> min(Z)
ans = 0.3665         0

>> repmat(max(Z),n,1)
ans =
    0.6048    0.8018
    0.6048    0.8018
    0.6048    0.8018
    0.6048    0.8018

>> repmat(min(Z),n,1)
ans =
    0.3665         0
    0.3665         0
    0.3665         0
    0.3665         0

>> (Z - repmat(max(Z),n,1)).^2
ans =
    0.0037    0.2857
    0.0568         0
    0.0233    0.0714
         0    0.6429

>> (Z - repmat(min(Z),n,1)).^2
ans =
    0.0314    0.0714
         0    0.6429
    0.0073    0.2857
    0.0568         0

>> sum([(Z - repmat(max(Z),n,1)).^2 ],2)
ans =
    0.2894
    0.0568
    0.0948
    0.6429

>> sum([(Z - repmat(min(Z),n,1)).^2 ],2)
ans =
    0.1028
    0.6429
    0.2930
    0.0568

>> D_P = sum([(Z - repmat(max(Z),n,1)).^2 ],2) .^ 0.5
D_P =
    0.5380
    0.2382
    0.3078
    0.8018

>> D_N = sum([(Z - repmat(min(Z),n,1)).^2 ],2) .^ 0.5
D_N =
    0.3206
    0.8018
    0.5413
    0.2382

>> A = D_N ./ (D_P + D_N) % 未归一化的得分
A =
    0.3734
    0.7709
    0.6375
    0.2291

>> A ./ repmat(sum(A),n,1) % 归一化的得分
ans =
    0.1857
    0.3834
    0.3170
    0.1139

参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

slience_me

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

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

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

打赏作者

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

抵扣说明:

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

余额充值