从零开始的数学建模:(二)Topsis

一、基本Topsis

(1)确定指标类型并正向化

不同与上一讲的层次分析法,这个模型中的数据必须是具体的,而不是人为给出的;

指标有常见的四种类型:

image-20210127121700515

无论是哪种指标,首先都需要进行正向化;

①极小型指标正向化:对所有元素执行\(max-x\)

②中间型指标正向化:\(x_{best}\)为理想的中间值,计算\(M = max\lbrace|x_i-x_{best}|\rbrace\),对每个\(x_i\),计算\(\tilde x=1-\frac{|x_i-x_{best}|}{M}\)\(\tilde x\)即为正向化后的值;

③区间型指标正向化:假设最佳的区间为\([a,b]\),计算:

\[M=max\lbrace a-min\lbrace x_i \rbrace,max\lbrace x_i\rbrace -b \rbrace \]

\[\tilde x = \begin{cases} 1-\frac{a-x}{M}&,x<a\\1&,a \leqslant x \leqslant b\\ 1-\frac{x-b}{M}&,x>b \end{cases} \]

\(\tilde x\)即为正向化后的值;

(2)正向化矩阵标准化

image-20210127135936738

(3)计算得分并归一化

image-20210127140156171

注意,根据以上方法确定的最终得分,是默认所有因素的权重相等,显然这不现实,可利用之前的层次分析法确定权重;但是层次分析法的硬伤在于主观性太强,熵权法是更客观的方法;

二、基于熵权法的Topsis模型修正

(1)确定指标类型与标准化

步骤与一般Topsis类型类似,指标的正向化就不再提了;唯一不同的是,如果输进行正向化后存在负数,需要将所有值映射到\([0,1]\)区间:

\[\tilde z_{ij} = \frac {x_{ij}-min\lbrace x_{1j},x_{2j},\cdot\cdot\cdot,x_{nj}\rbrace}{max\lbrace{x_{1j},x_{2j},\cdot\cdot\cdot,x_{nj}}\rbrace-min\lbrace x_{1j},x_{2j},\cdots,x_{nj}\rbrace} \]

(2)计算概率

\(\tilde z_{ij}\)矩阵中的每个元素除以每一列的和,得到\(p_{ij}\)矩阵;

(3)计算信息熵与信息效用性

对于第\(j\)个指标而言,计算信息熵:

\[e_j = -\frac{1}{\ln{n}}\sum_{i=1}^{n}p_{ij}\ln({p_{ij}})\quad(j=1,2,\cdots,m) \]

计算信息效用值:

\[d_j = 1-e_j \]

最终得到每个指标的熵权:

\[W_j = \frac{d_j}{\sum_{j=1}^{m}d_j}\quad (j=1,2,\cdots,m) \]

但实际上,这个方法仅限于数学建模比赛,真正的科学意义或许并不大,首先这个概率是用频率的计算方式算出来的,如果样本不大的话,根本没有说服力;其次这个方法得到的权重是基于方差大小的(相当不科学),方差越大,说明能提供的信息越多,信息效用值越大,计算出来的权重也就越大,反之亦然;所以这是一个为比赛而服务的模型罢了。

本文算法思想参考源于清风建模,特此注明

posted @ 2021-01-27 16:13  AIchemistar  阅读(818)  评论(0)    收藏  举报