文章目录

  • 一、TOPSIS的应用场景
  • 二、TOPSIS法的模型建立
    • 1.对原始决策矩阵正向化
    • 2.决策矩阵标准化
    • 3.计算得分并归一化
  • 三、TOPSIS与(组合)赋权法结合
  • 代码

一、TOPSIS的应用场景

Topsis法,全称为Technique for Order Preference by Similarity to an Ideal Solution,中文常翻译为优劣解距离法,该方法能够根据现有的数据,对个体进行评价排序。根据有限个评价对象与理想化目标的接近程度进行排序的方法,是在现有的对象中进行相对优劣的评价。

下图中假设只有两个评价指标,因此是二维坐标。

TOPSIS法其中“理想解”和“负理想解”是TOPSIS法的两个基本概念。

  • 所谓理想解是一设想的最优的解(方案),它的各个属性值都达到各备选方案中的最好的值
  • 负理想解是一设想的最劣的解(方案),它的各个属性值都达到各备选方案中的最坏的值。

二、TOPSIS法的模型建立

主要步骤:

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

1.对原始决策矩阵正向化

构造决策矩阵A=(aij)m×nA=\left(a_{i j}\right)_{m \times n}A=(aij​)m×n​,每一列是一个评价指标,每一行是一条待评价样本。

有的数据是越大越好,有的数据是靠近某个值越好,有的是在一个区间中最好,这种不同的方向和区间让分析变得混乱,为了简化分析我们将数据进行正向化处理,都让他越大越好。

最常见的四种指标:


所谓的将原始矩阵正向化,就是要将所有的指标类型统一转化为
极大型指标。

  • 极小型指标转化为极大型指标:
    使用公式
    max⁡−x\max -x max−x
    如果所有的元素均为正数,那么也可以使用1x\dfrac{1}{x}x1​
  • 中间型指标转化为极大型指标:
    xˉi=1−∣xi−xbest ∣max⁡(∣X−xbest ∣)\bar{x}_{i}=1-\frac{\left|x_{i}-x_{\text {best }}\right|}{\max \left(\left|X-x_{\text {best }}\right|\right)} xˉi​=1−max(∣X−xbest ​∣)∣xi​−xbest ​∣​
  • 区间型指标转化为极大型指标:
    M=max⁡{a−min⁡{xi},max⁡{xi}−b},x~i={1−a−xiM,xi<a1,a≤xi≤b1−xi−bM,,xi>bM=\max \left\{a-\min \left\{x_{i}\right\}, \max \left\{x_{i}\right\}-b\right\}, \tilde{x}_{i}= \begin{cases}1-\frac{a-x_{i}}{M}, & x_{i}<a \\ 1 & , a \leq x_{i} \leq b \\ 1-\frac{x_{i}-b}{M}, & , x_{i}>b\end{cases} M=max{a−min{xi​},max{xi​}−b},x~i​=⎩⎪⎨⎪⎧​1−Ma−xi​​,11−Mxi​−b​,​xi​<a,a≤xi​≤b,xi​>b​
    其中[a, b]是最佳区间。

2.决策矩阵标准化

标准化的目的是消除不同指标量纲的影响,常用方法有max-min标准化和Z-score标准化,本文介绍Z-score标准化。

假设有nnn个要评价的对象,mmm个要评价指标(已经正向化)构成的正向化矩阵如下:
X=[x11x12⋯x1mx21x22⋯x2m⋮⋮⋱⋮xn1xn2⋯xnm]X=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 m} \\ x_{21} & x_{22} & \cdots & x_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n 1} & x_{n 2} & \cdots & x_{n m} \end{array}\right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xn1​​x12​x22​⋮xn2​​⋯⋯⋱⋯​x1m​x2m​⋮xnm​​⎦⎥⎥⎥⎤​
,记对其进行标准化的矩阵为Z,Z中的每一个元素通过如下公式计算:
zij=xij/∑i=1nxij2z_{i j}=x_{i j} / \sqrt{\sum_{i=1}^{n} x_{i j}^{2}} zij​=xij​/i=1∑n​xij2​​
例:下表是5位同学身体相关参数,请用TOPSIS法来对同学身体情况进行一个综合的评价。

正向化后矩阵:

得到标准化后的矩阵:

3.计算得分并归一化

假设有nnn个要评价的对象,mmm个要评价指标构成的标准化矩阵如下:
Z=[z11z12⋯z1mz21z22⋯z2m⋮⋮⋱⋮zn1zn2⋯znm]Z=\left[\begin{array}{cccc} z_{11} & z_{12} & \cdots & z_{1 m} \\ z_{21} & z_{22} & \cdots & z_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n 1} & z_{n 2} & \cdots & z_{n m} \end{array}\right] Z=⎣⎢⎢⎢⎡​z11​z21​⋮zn1​​z12​z22​⋮zn2​​⋯⋯⋱⋯​z1m​z2m​⋮znm​​⎦⎥⎥⎥⎤​
定义最大值
Z+=(Z1+,Z2+,⋯,Zm+)=(max⁡{z11,z21,⋯,zn1},max⁡{z12,z22,⋯,zm2},⋯,max⁡{z1m,z2m,⋯,zmm})\begin{array}{rlr} Z^{+} & =\left(Z_{1}^{+}, Z_{2}^{+}, \cdots, Z_{m}^{+}\right) \\ & =\left(\max \left\{z_{11}, z_{21}, \cdots, z_{n 1}\right\}, \max \left\{z_{12}, z_{22}, \cdots, z_{m 2}\right\}, \cdots, \max \left\{z_{1 m}, z_{2 m}, \cdots, z_{m m}\right\}\right) \end{array} Z+​=(Z1+​,Z2+​,⋯,Zm+​)=(max{z11​,z21​,⋯,zn1​},max{z12​,z22​,⋯,zm2​},⋯,max{z1m​,z2m​,⋯,zmm​})​
定义最小值
Z−=(Z1−,Z2−,⋯,Zm−)=(min⁡{z11,z21,⋯,zn1},min⁡{z12,z22,⋯,zn2},⋯,min⁡{z1m,z2m,⋯,znm})\begin{aligned} Z^{-} &=\left(Z_{1}^{-}, Z_{2}^{-}, \cdots, Z_{m}^{-}\right) \\ &=\left(\min \left\{z_{11}, z_{21}, \cdots, z_{n 1}\right\}, \min \left\{z_{12}, z_{22}, \cdots, z_{n 2}\right\}, \cdots, \min \left\{z_{1 m}, z_{2 m}, \cdots, z_{n m}\right\}\right) \end{aligned} Z−​=(Z1−​,Z2−​,⋯,Zm−​)=(min{z11​,z21​,⋯,zn1​},min{z12​,z22​,⋯,zn2​},⋯,min{z1m​,z2m​,⋯,znm​})​
定义第iii个评价对象与最大值的距离Di+=∑j=1m(Zj+−zij)2D_{i}^{+}=\sqrt{\sum_{j=1}^{m}\left(Z_{j}^{+}-z_{i j}\right)^{2}}Di+​=∑j=1m​(Zj+​−zij​)2​

定义第iii个评价对象与最小值的距离Di−=∑j=1m(Zj−−zij)2D_{i}^{-}=\sqrt{\sum_{j=1}^{m}\left(Z_{j}^{-}-z_{i j}\right)^{2}}Di−​=∑j=1m​(Zj−​−zij​)2​

那么我们就可以计算得出第iii个评价对象未归一化的得分:Si=Di−Di++Di−S_{i}=\frac{D_{i}^{-}}{D_{i}^{+}+D_{i}^{-}}Si​=Di+​+Di−​Di−​​

很明显0≤Si≤10 \leq S_{i} \leq 10≤Si​≤1,且SiS_iSi​越大Di+D_i^+Di+​越小,即越接近最大值。

最后我们可以将得分归一化:S~i=Si/∑i=1mSi\tilde{S}_{i}=S_{i} / \sum\limits_{i=1}^{m} S_{i}S~i​=Si​/i=1∑m​Si​,可以得知∑i=1mS~i=1\sum\limits_{i=1}^{m} \tilde{S}_{i} = 1i=1∑m​S~i​=1

建模完毕。

三、TOPSIS与(组合)赋权法结合

假设有nnn个要评价的对象,mmm个要评价指标构成的标准化矩阵如下:
Z=[z11z12⋯z1mz21z22⋯z2m⋮⋮⋱⋮zn1zn2⋯znm]Z=\left[\begin{array}{cccc} z_{11} & z_{12} & \cdots & z_{1 m} \\ z_{21} & z_{22} & \cdots & z_{2 m} \\ \vdots & \vdots & \ddots & \vdots \\ z_{n 1} & z_{n 2} & \cdots & z_{n m} \end{array}\right] Z=⎣⎢⎢⎢⎡​z11​z21​⋮zn1​​z12​z22​⋮zn2​​⋯⋯⋱⋯​z1m​z2m​⋮znm​​⎦⎥⎥⎥⎤​
可以使用层次分析法或者熵权法给这mmm个评价指标赋权
Di+=∑j=1mωj(Zj+−zij)2D_{i}^{+}=\sqrt{\sum_{j=1}^{m} \omega_{j}\left(Z_{j}^{+}-z_{i j}\right)^{2}} Di+​=j=1∑m​ωj​(Zj+​−zij​)2​
Di−=∑j=1mωj(Zj−−zij)2D_{i}^{-}=\sqrt{\sum_{j=1}^{m} \omega_{j}\left(Z_{j}^{-}-z_{i j}\right)^{2}} Di−​=j=1∑m​ωj​(Zj−​−zij​)2​

代码

基于熵权法对上例进行求解(matlab)。

%基于熵权法对于TOPSIS的修正
clear;clc;
load X.mat;
%获取行数列数
r = size(X,1);
c = size(X,2);
%首先,把我们的原始指标矩阵正向化
%第二列中间型--->极大型
middle = input("请输入最佳的中间值:");
M = max(abs(X(:,2)-middle));
for i=1:rX(i,2) = 1-abs(X(i,2)-middle)/M;
end
%第三列极小型--->极大型
max_value = max(X(:,3));
X(:,3) = abs(X(:,3)-max_value);
%第四列区间型--->极大型
a = input("请输入区间的下界:");
b = input("请输入区间的下界:");
M = max(a-min(X(:,4)),max(X(:,4))-b);
for i=1:rif (X(i,4)<a)X(i,4) = 1-(a-X(i,4))/M;elseif (X(i,4)<=b&&X(i,4)>=a)X(i,4) = 1;elseX(i,4) = 1-(X(i,4)-b)/M;end
end
disp("正向化后的矩阵为:");
disp(X);
%然后对正向化后的矩阵进行熵权法赋权重
tempX = X;   %代替X进行计算的辅助变量,避免X受到影响而发生改变
%测试:tempX = [1,2,3;-1,0,-6;5,-3,2];
%标准化矩阵,消除负数项,并且把数值控制在0-1区间
min = min(tempX);
max = max(tempX);
min = repmat(min,size(tempX,1),1);
max = repmat(max,size(tempX,1),1);
tempX = (tempX-min)./(max-min);
%求出矩阵的概率矩阵,即能取到该值的概率
sumX = repmat(sum(tempX),size(tempX,1),1);
pX = tempX./sumX;
%求出信息熵矩阵,信息熵越大,能获得的信息就越少
temp = pX.*mylog(pX);
n = size(tempX,1);
sum1 = sum(temp);
eX =  sum1.*(-1/log(n));
%求出信息效用值
dX = 1-eX;
%求出每个指标的熵权
wX = dX./(sum(dX));
%打印输出
disp("每个指标依次的熵权为:");
disp(wX);

数学建模——评价模型之TOPSIS相关推荐

  1. 数学建模——评价模型

    文章目录 一.模糊综合评价模型 1.基础知识 2.一级模糊综合评价 3.二级模糊综合评价 二.灰色关联分析模型 1.灰色关联分析原理 2.灰色关联分析步骤 三. Topsis(理想解法) 1.理想解法 ...

  2. 数学建模常用模型04:灰色关联分析法

    数学建模常用模型04:灰色关联分析法 灰色关联分析法 本文所用的资料参考来源:美赛资料网:美赛资料网 与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用.层次分析用在确定权重上面 ...

  3. 【数学建模】第二讲TOPSIS法

    [数学建模]第二讲TOPSIS法     简介:TOPIS法简称,优劣解距离法,是一种常用的综合评价方法,其能充分利用原始数据的信息,其结果能精确地反映各评价方案之间的差距.    TOPSIS法可以 ...

  4. 数学建模常见模型总结

    数学建模常见模型总结 一.插值 当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法. 常用插值方法 拉格朗日插值 分段线性插值 Hermite 三次样条插值 克里金法 matlab ...

  5. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  6. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  7. 数学建模传染病模型_数学建模| 时间序列模型

    1 数学建模 时间序列模型 1.与实践有关系的一组数据,叫做时间序列: 2.得到时间序列的数据后,要构建模型,其中平稳时间序列的模型,是本节课重点介绍的: 3.y=at+季节性+周期性 一.     ...

  8. 数学建模常用模型(一):灰色预测法

    数学建模常用模型(一):灰色预测法 灰色预测法是一种用于处理少量数据.数据质量较差或者缺乏历史数据的预测方法.它适用于一些非线性.非平稳的系统,尤其在短期预测和趋势分析方面有着广泛的应用.灰色预测法作 ...

  9. 数学建模——多目标规划模型(智能优化算法NSGA-II)

    摘要 本篇笔记对数学建模中常见的多目标规划问题提供了解法:在建立传统的多目标规划的常用模型的基础上,使用智能优化算法对多目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解 ...

  10. 数学建模优化模型简单例题_数学建模之优化模型:存储模型

    点击上方「蓝字」关注我们 最近,为申报市级精品课程,我为我校"数学建模与科学计算"课程录制了讲课视频,下面是3.1节优化模型的第一个例子:存储模型.敬请大家批评指正! 优化模型是数 ...

最新文章

  1. Ubuntu 虚拟机空间不足增加空间笔记
  2. 在C#程序设计中使用Win32 API
  3. Qtum量子链AUR开发工具包即日上线
  4. 东北大学计算机 大一物理考试题,东北大学大学物理期末考题及答案Word版
  5. LeetCode 255. 验证前序遍历序列二叉搜索树(单调栈)*
  6. php 精度问题怎么解决,JavaScript 中精度问题以及解决方案
  7. 2018.9.10.Matlab实验二:Matlab基本运算
  8. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo
  9. Open-Set recognition会议记录
  10. 使用bat向文件的第一行中写入内容
  11. linux程序执行时内存情况
  12. 登录账号提示服务器出错怎么办,教育平台号和密码都正确,就是显示用户名和或密码错误,登不上怎么办呀?...
  13. python爬虫--代理的使用
  14. 网站域名备案流程是什么样的?
  15. C语言 金明的预算方案(动态规划):金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用 的很宽敞的房间。
  16. Notepad ++中的一个著名插件FingerText
  17. 虚拟主机的构建——基于域名、端口、IP
  18. 正则验证邮箱、8到16位数字字母特殊符号组合
  19. net.sf.json
  20. 怎么用视频转换器把mp4转换成mp3

热门文章

  1. 联想服务器一直在初始化系统,为什么联想“一键恢复”一直在初始化
  2. matlab匿名函数求导,MATLAB匿名函数和函数句柄
  3. web前端顶岗实习总结报告_web前端年度工作总结范文
  4. 计算机科学与技术导论报告
  5. C#代码混淆加壳利器ConfuserEx的使用
  6. winrara注册文件
  7. HTML爱心网页制作[樱花+爱心]
  8. 大数据技术体系(长期更新)
  9. 现代交换技术的基本概念及基本知识
  10. C语言打印金字塔,菱形,V形图案