优劣解距离法(Topsis)


优劣解距离法(TOPSIS)

摘要

对于解决某个实际问题的若干个方案,常常给出非常多的指标来衡量方案间的优劣性,当这些指标的数据是确定的,比如某项学科的期末成绩、池水含氮量等等,我们需要用优劣解距离法确定最优解。优劣解距离法通过将指标数据正向化后,计算比较空间内的优劣值,再通过计算每个解的指标向量与最劣向量的“距离” 得到每个解的优劣评分,最终,评分最高的解为最优解。

数学描述的优劣性

假设衡量方案 \(A,B,C\) 优劣性的指标只有一个 \(v\),我们获得了各个方案在指标 \(v\) 下的得分:

指标 \(v\) 下的得分
\(A\) \(a\)
\(B\) \(b\)
\(C\) \(c\)

假设指标 \(v\) 的得分越高越好,显然得分最高的方案最优。但仅用原始得分判断并不严谨,因为我们进行比较的 “空间” 只在 \(A,B,C\) 三者之中,我们需要 \(A,B,C\) 三者的在指标 \(v\) 下的得分是 “相互影响” 的。我们给出下面的转化公式:

\[z_i = \frac{v_i-\min}{\max - \min} \]

其中 \(v_i\) 代表方案 \(i\) 在指标 \(v\) 下的原始得分,\(z_i\) 为转化后的得分, \(\max\)\(\min\) 为表格中原始得分的最大值与最小值

然后我们将转化后的得分进行标准化处理,将每个得分除以得分平方和的平方根:

\[Z_i = \frac{z_i}{\sqrt{\sum_{i=1}^{n} z_i^2}} \]

然后将其归一化:

\[Z_i^{'} = \frac{Z_i}{\sum_{i=1}^{n}{Z_i}} \]

于是我们就得到了数学意义下优劣性得分。

指标的类型与指标正向化

极大型指标与正向化

前面描述的指标假定了得分越高越好,比如成绩,这种指标叫做极大型指标。

但有些指标的得分并非越高越好,比如成本。

在进行优劣解距离之前,我们需要将非极大型指标全部转化为极大型指标,叫做指标正向化。

极小型指标与其正向化

指标得分越小越好的指标叫做极小型指标,极小型指标的正向化非常容易:

\[V_i = \max - v_i \]

中间型指标与其正向化

有一类指标为取值越接近某个值越好,这类指标叫做中间型指标。比如饮用水的 \(PH\) 值。

假设得到方案在中间型指标下的得分序列 \(\{x_i\}\) ,该指标的最佳值为 \(x_{best}\) ,那么,正向化公式如下:

\[M = \max\{ \mid x_i - x_{best}\mid\} \\ \\ X_i = 1 - \frac{\mid x_i - x_{best} \mid}{M} \]

\(X_i\) 为正向化后的指标得分值。

区间型指标与其正向化

区间型指标为指标值处于某个区间内最佳,这类指标叫做区间型指标。比如人的体温。

假设得到方案在区间型指标下的得分序列 \(\{x_i\}\) ,该指标的最佳区间为 \([a,b]\) ,那么,正向化公式如下:

\[M = \max{\{ a - \min {\{x_i\}} , \max{\{x_i\}}-b \}} \\ \\ X_i = \begin{cases} 1 - \frac{a-x_i}{M}, &&x<a \\ 1, && a\leq x \leq b \\ 1 - \frac{x_i-b}{M}, &&x>b \\ \end{cases} \]

优劣解距离法

构造正向矩阵

假设我们有方案 \(p_1,p_2,...,p_m\),有指标 \(v_1,v_2,...,v_n\),那么,它们构造成一个指标矩阵 \(X_{m\times n}\)

方案\指标 \(v_1\) \(v_2\) ... \(v_n\)
\(p_1\)
\(p_2\)
...
\(p_m\)

我们将该矩阵的所有指标正向化,形成正向矩阵 \(Z_{m\times n}\)

正向矩阵单位化

我们将正向矩阵中的每个元素除以其所在列的所有元素平方和的平方根,得到单位化后的正向矩阵:

\[z_{ij} = \frac{x_{ij}}{\sqrt{\sum_{i=1}^{n}{x_{ij}^2}}} \]

计算优劣距离

由于此时指标不止一个,于是我们需要在指标 \(V\) 向量空间中考虑最大值与最小值。

极值向量

我们这样定义最大值向量 \(Z^+\)

\[Z^{+} = (Z_1^{+},Z_2^{+},...,Z_n^{+}) = \\ (\max\{z_{i1}\},\max\{z_{i2}\},...,\max\{z_{in}\}) \]

同样,最小值向量 \(Z^-\)

\[Z^{-} = (Z_1^{-},Z_2^{-},...,Z_n^{-}) = \\ (\min\{z_{i1}\},\min\{z_{i2}\},...,\min\{z_{in}\}) \]

优劣距离

我们得到极值向量后,我们计算方案 \(i\) 的优劣距离:

定义方案 \(i\) 在各指标下得到的正向单位化的得分构成指标向量 \(D_i\) ,那么

优距离 \(D_i^+\)

\[D_i^+ = \sqrt{{\mid Z^+ - D_i \mid}^2} \]

劣距离 \(D_i^-\)

\[D_i^- = \sqrt{{\mid Z^- - D_i \mid}^2} \]

于是我们就得到了方案 \(i\) 的优劣性:

\[S_i = \frac{D_i^-}{D_i^+ + D_i^-} \]

方案 优劣性
1 \(S_1\)
2 \(S_2\)
... ...
\(m\) \(S_m\)

然后将其归一化:

\[S_i^{'} = \frac{S_i}{\sum{S_i}} \]

得分 \(S^{'}\) 最高的方案最优

带权优劣距离

在前面的数学模型中,我们预先假定了所有指标的权重相同,然而事实是不同指标的权重不尽相同,比如描述综合成绩优劣的指标中,“语文、数学、外语” 的权重比 “体育、美术、音乐” 高。

带权优劣距离模型

假设我们取得了这些指标的权重 \(w_i\)\(\sum{w_i} = 1\),那么,只需要修正优劣距离公式即可:

将取得的权重组成行向量 \(W\),我们将每个元素取平方根得到 \(W^{'}\)

于是,带权最优距离为

\[D_i^+ = \sqrt{{\mid W^{'}(Z^+ - D_i) \mid}^2} \]

带权最劣距离为

\[D_i^- = \sqrt{{\mid W^{'}(Z^- - D_i) \mid}^2} \]

指标权重可以通过层次分析法确定


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM