TOPSIS方法原理、步骤与应用

在多指标综合评价中,我们经常遇到这种问题:

  • 想在多个方案中选最优(选供应商、选项目、选路线……)
  • 指标很多,既越大越(收益型),也越小越好(成本型)
  • 指标量纲不同:有的是万元、有的是天

简单地加权平均经常有两个问题:

  1. 指标量纲不同,直接相加不合理;
  2. 只看“加权平均值”,缺乏“离理想有多近”的几何解释。

TOPSIS(优劣解距离法)正是为解决这类问题而提出的:

  • 构造一个“最理想方案”和一个“最差方案”,
  • 看每个真实方案离二者有多远,
  • 谁离最理想最近、离最差最远,谁就排名更靠前。

它既直观(与“理想解”的距离),又兼容各种权重(等权、AHP、熵权法等)。

1. TOPSIS 的核心思想

假设我们有: $n$ 个评价对象(方案):$A_1, A_2, \dots, A_n$ $m$ 个评价指标:$C_1, C_2, \dots, C_m$ 指标权重:$\omega_1, \dots, \omega_m$(可由熵权法或 AHP 求得,也可等权)

核心思想可以用一句话概括:

==构造一个“各指标都取最好值”的正理想解,一个“各指标都取最差值”的负理想解,然后看每个方案的指标向量离这两个正负理想解向量的相对接近程度。==

数学上,就是在标准化后的指标空间里,计算每个方案到两个“极端向量”的欧式距离,最后得到一个 0~1 之间的相对贴近度得分。

2. TOPSIS 标准步骤

步骤 1:准备原始矩阵

准备原始矩阵$X$,为不同对象在不同指标下的评分数据,$n×m$的矩阵,$n$为对象个数,$m$为指标个数。

$$ 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] $$

步骤 2:数据无量纲化

不同指标往往具有不同的量纲和数量级,需要先进行无量纲化处理。一般可以采用极差法,可以同时完成指标正向化和标准化两个任务。

正向指标(越大越好,如收益、满意度)

$$ z_{ij} = \dfrac{x_{ij} - x_j^{\min}}{x_j^{\max} - x_j^{\min}} $$

负向指标(越小越好,如成本、报废率)

$$ z_{ij} = \dfrac{x_j^{\max} - x_{ij}}{x_j^{\max} - x_j^{\min}} $$

适度指标(在某个区间内最优)

设最优区间为[a,b],则

$$ z_{ij} = \begin{cases} 1 - \dfrac{a - x_{ij}}{\max(a - x_j^{\min},, x_j^{\max} - b)}, & x_{ij} < a \ 1, & a \le x_{ij} \le b \ 1 - \dfrac{x_{ij} - b}{\max(a - x_j^{\min},, x_j^{\max} - b)}, & x_{ij} > b \end{cases} $$

步骤 3:构建加权标准化矩阵

计算TOPSIS之前,我们已经使用AHP或者熵权法等赋权方法计算出了指标的权重,在构建加权标准化矩阵时,需要将标准化后的数据乘以相应的权重。

$$ Z=\left[\begin{array}{cccc} \omega_1 * z_{11} & \omega_2 * z_{12} & \cdots & \omega_m * z_{1 m} \newline \omega_1 * z_{21} & \omega_2 * z_{22} & \cdots & \omega_m * z_{2 m} \newline \vdots & \vdots & \ddots & \vdots \newline \omega_1 * z_{n 1} & \omega_2 *z_{n 2} & \cdots & \omega_m * z_{n m} \end{array}\right] $$

步骤 4:确定正负理想解

此时,我们已有加权标准化矩阵 $Z = (z_{ij})$。 对每一个指标 $j$:

  • 正理想值 $Z_j^+$:该列的最大值;
  • 负理想值 $Z_j^-$:该列的最小值。

将各指标的理想值拼成两个向量:

  • 正理想解: $$ Z^{+} = (Z_1^{+}, Z_2^{+}, \dots, Z_m^{+}) $$
  • 负理想解: $$ Z^{-} = (Z_1^{-}, Z_2^{-}, \dots, Z_m^{-}) $$

步骤 5:计算到正/负理想解的距离

对每个方案 $i$,计算它到正理想解、负理想解的加权欧式距离:

  • 到正理想解的距离: $$ D_i^{+}=\sqrt{\sum_{j=1}^m \left(Z_j^{+}-z_{ij}\right)^2} $$
  • 到负理想解的距离: $$ D_i^{-}=\sqrt{\sum_{j=1}^m \left(Z_j^{-}-z_{ij}\right)^2} $$

$D_i^{+}$ 越小,说明方案 $i$ 越接近“最好”; $D_i^{-}$ 越大,说明方案 $i$ 越远离“最差”。

步骤 6:计算相对接近度并排序

为了把“离最好近、离最差远”综合成为一个 0~1 之间的得分,TOPSIS 定义了相对贴近度:

$$ S_i = \dfrac{D_i^{-}}{D_i^{+} + D_i^{-}} $$

  • $S_i$ 越大,方案越好;
  • $S_i$ 取值在 0~1 之间,可以视为一种“相对分数”。

有时还会做一步归一化处理(让所有 $S_i$ 加和为 1):

$$ S_i^{*} = \dfrac{S_i}{\sum_{i=1}^n S_i} $$

最终按 $S_i$ 或 $S_i^{*}$ 从大到小排序,就得到了方案的优劣顺序。

3. 完整案例计算流程

让我们通过一个具体案例来完整演示TOPSIS方法的计算过程。

3.1 案例背景

某研究机构要评价7家企业的综合绩效,选择了4个评价指标:

  • X1(正向指标):越大越好
  • X2(负向指标):越小越好
  • X3(适度指标):最优值为15000(适度指标的特殊情况:上下限相同)
  • X4(适度指标):最优范围为160-170

原始数据如下:

企业 X1 X2 X3 X4
企业1 104 24698 11883 131.97
企业2 109 27272 12874 132.2
企业3 115 29488 14186 143.67
企业4 116 30576 15527 160.17
企业5 119 33418 17042 169.7
企业6 128 35816 19250 222.1
企业7 132 37821 21784 250.3

3.2 准备原始矩阵

根据上述数据,我们得到$7 \times 4$的原始评价矩阵$X$:

$$ X = \begin{bmatrix} 104 & 24698 & 11883 & 131.97 \ 109 & 27272 & 12874 & 132.2 \ 115 & 29488 & 14186 & 143.67 \ 116 & 30576 & 15527 & 160.17 \ 119 & 33418 & 17042 & 169.7 \ 128 & 35816 & 19250 & 222.1 \ 132 & 37821 & 21784 & 250.3 \end{bmatrix} $$

其中,$n=7$(7家企业),$m=4$(4个指标)。

3.3 数据无量纲化

X1指标(正向指标)处理: $x_{1}^{\max} = 132$, $x_{1}^{\min} = 104$

企业1:$z_{11} = \frac{104-104}{132-104} = 0$

企业2:$z_{21} = \frac{109-104}{132-104} = 0.1786$

企业3:$z_{31} = \frac{115-104}{132-104} = 0.3929$

企业4:$z_{41} = \frac{116-104}{132-104} = 0.4286$

企业5:$z_{51} = \frac{119-104}{132-104} = 0.5357$

企业6:$z_{61} = \frac{128-104}{132-104} = 0.8571$

企业7:$z_{71} = \frac{132-104}{132-104} = 1$

X2指标(负向指标)处理:

$x_{2}^{\max} = 37821$, $x_{2}^{\min} = 24698$

企业1:$z_{12} = \frac{37821-24698}{37821-24698} = 1$

企业2:$z_{22} = \frac{37821-27272}{37821-24698} = 0.8039$

企业3:$z_{32} = \frac{37821-29488}{37821-24698} = 0.635$

企业4:$z_{42} = \frac{37821-30576}{37821-24698} = 0.5521$

企业5:$z_{52} = \frac{37821-33418}{37821-24698} = 0.3355$

企业6:$z_{62} = \frac{37821-35816}{37821-24698} = 0.1528$

企业7:$z_{72} = \frac{37821-37821}{37821-24698} = 0$

X3指标(适度指标)处理:

特殊情况:最优范围上下限相同

最优范围:[15000, 15000](即最优值为15000)

计算分母:

$a - x_{3}^{\min} = 15000 - 11883 = 3117$

$x_{3}^{\max} - b = 21784 - 15000 = 6784$

$\max(a-x_{3}^{\min}, x_{3}^{\max}-b) = \max(3117, 6784) = 6784$

各企业计算:

企业1(11883 < 15000):$z_{13} = 1 - \frac{15000-11883}{6784} = 0.5405$

企业2(12874 < 15000):$z_{23} = 1 - \frac{15000-12874}{6784} = 0.6866$

企业3(14186 < 15000):$z_{33} = 1 - \frac{15000-14186}{6784} = 0.88$

企业4(15527 > 15000):$z_{43} = 1 - \frac{15527-15000}{6784} = 0.9223$

企业5(17042 > 15000):$z_{53} = 1 - \frac{17042-15000}{6784} = 0.699$

企业6(19250 > 15000):$z_{63} = 1 - \frac{19250-15000}{6784} = 0.3735$

企业7(21784 > 15000):$z_{73} = 1 - \frac{21784-15000}{6784} = 0$

X4指标(适度指标)处理: 最优范围:[160, 170]

计算分母: $a - x_{4}^{\min} = 160 - 131.97 = 28.03$

$x_{4}^{\max} - b = 250.3 - 170 = 80.3$

$\max(a-x_{4}^{\min}, x_{4}^{\max}-b) = \max(28.03, 80.3) = 80.3$

各企业计算:

企业1(131.97 < 160):$z_{14} = 1 - \frac{160-131.97}{80.3} = 0.6509$

企业2(132.2 < 160):$z_{24} = 1 - \frac{160-132.2}{80.3} = 0.6538$

企业3(143.67 < 160):$z_{34} = 1 - \frac{160-143.67}{80.3} = 0.7966$

企业4(160.17,在范围内):$z_{44} = 1$

企业5(169.7,在范围内):$z_{54} = 1$

企业6(222.1 > 170):$z_{64} = 1 - \frac{222.1-170}{80.3} = 0.3512$

企业7(250.3 > 170):$z_{74} = 1 - \frac{250.3-170}{80.3} = 0$

无量纲化后的矩阵:

企业 X1 X2 X3 X4
企业1 0 1 0.5405 0.6509
企业2 0.1786 0.8039 0.6866 0.6538
企业3 0.3929 0.635 0.88 0.7966
企业4 0.4286 0.5521 0.9223 1
企业5 0.5357 0.3355 0.699 1
企业6 0.8571 0.1528 0.3735 0.3512
企业7 1 0 0 0

3.4 构建加权标准化矩阵

在TOPSIS方法中,我们需要先确定各指标的权重。这里我们使用熵权法计算得到的权重(详细计算过程可参考熵权法文章):

指标权重:

  • $w_1 = 0.2916$(29.16%)
  • $w_2 = 0.2947$(29.47%)
  • $w_3 = 0.2017$(20.17%)
  • $w_4 = 0.2120$(21.20%)

将无量纲化矩阵的每一列乘以对应的权重,得到加权标准化矩阵:

以企业1为例:

  • $Z_{11} = 0.2916 \times 0 = 0$
  • $Z_{12} = 0.2947 \times 1 = 0.2947$
  • $Z_{13} = 0.2017 \times 0.5405 = 0.109$
  • $Z_{14} = 0.212 \times 0.6509 = 0.138$

加权标准化矩阵:

企业 X1 X2 X3 X4
企业1 0 0.2947 0.109 0.138
企业2 0.0521 0.2369 0.1385 0.1386
企业3 0.1146 0.1871 0.1775 0.1689
企业4 0.125 0.1627 0.186 0.212
企业5 0.1562 0.0989 0.141 0.212
企业6 0.25 0.045 0.0753 0.0745
企业7 0.2916 0 0 0

3.5 确定正负理想解

对加权标准化矩阵的每一列,找出最大值和最小值:

正理想解(各列最大值): $$Z^{+} = (0.2916, 0.2947, 0.186, 0.212)$$

负理想解(各列最小值): $$Z^{-} = (0, 0, 0, 0)$$

3.6 计算到正负理想解的距离

对每个企业,计算其到正理想解和负理想解的欧式距离。

企业1: $$D_1^{+} = \sqrt{(0.2916-0)^2 + (0.2947-0.2947)^2 + (0.186-0.109)^2 + (0.212-0.138)^2}$$ $$= \sqrt{0.085 + 0 + 0.0059 + 0.0055} = \sqrt{0.0964} = 0.3105$$

$$D_1^{-} = \sqrt{(0-0)^2 + (0-0.2947)^2 + (0-0.109)^2 + (0-0.138)^2}$$ $$= \sqrt{0 + 0.0868 + 0.0119 + 0.019} = \sqrt{0.1177} = 0.3431$$

企业2: $$D_2^{+} = \sqrt{(0.2916-0.0521)^2 + (0.2947-0.2369)^2 + (0.186-0.1385)^2 + (0.212-0.1386)^2}$$ $$= \sqrt{0.0574 + 0.0033 + 0.0023 + 0.0054} = \sqrt{0.0684} = 0.2615$$

$$D_2^{-} = \sqrt{(0-0.0521)^2 + (0-0.2369)^2 + (0-0.1385)^2 + (0-0.1386)^2}$$ $$= \sqrt{0.0027 + 0.0561 + 0.0192 + 0.0192} = \sqrt{0.0972} = 0.3118$$

企业3 到 企业7 的距离计算过程类似,这里不再赘述。

距离计算汇总表:

企业 $D_i^{+}$ $D_i^{-}$
企业1 0.3105 0.3431
企业2 0.2615 0.3118
企业3 0.2119 0.3288
企业4 0.2126 0.3487
企业5 0.2421 0.3147
企业6 0.3085 0.2753
企业7 0.4078 0.2916

3.7 计算相对贴近度并排序

使用公式 $S_i = \frac{D_i^{-}}{D_i^{+} + D_i^{-}}$ 计算每个企业的相对贴近度:

企业1:$S_1 = \frac{0.3431}{0.3105 + 0.3431} = \frac{0.3431}{0.6536} = 0.525$

企业2:$S_2 = \frac{0.3118}{0.2615 + 0.3118} = \frac{0.3118}{0.5733} = 0.544$

企业3:$S_3 = \frac{0.3288}{0.2119 + 0.3288} = \frac{0.3288}{0.5407} = 0.608$

企业4:$S_4 = \frac{0.3487}{0.2126 + 0.3487} = \frac{0.3487}{0.5613} = 0.621$

企业5:$S_5 = \frac{0.3147}{0.2421 + 0.3147} = \frac{0.3147}{0.5568} = 0.565$

企业6:$S_6 = \frac{0.2753}{0.3085 + 0.2753} = \frac{0.2753}{0.5838} = 0.472$

企业7:$S_7 = \frac{0.2916}{0.4078 + 0.2916} = \frac{0.2916}{0.6994} = 0.417$

TOPSIS综合评价结果:

企业 $D_i^{+}$ $D_i^{-}$ 相对贴近度 $S_i$ 排序
企业1 0.3105 0.3431 0.525 5
企业2 0.2615 0.3118 0.544 4
企业3 0.2119 0.3288 0.608 2
企业4 0.2126 0.3487 0.621 1
企业5 0.2421 0.3147 0.565 3
企业6 0.3085 0.2753 0.472 6
企业7 0.4078 0.2916 0.417 7

3.8 结果分析

从TOPSIS分析结果可以看出:

(1)企业4表现最优($S_4 = 0.621$):该企业在各项指标上表现均衡,特别是X3和X4两个适度指标都处于最优范围内,综合绩效最好。

(2)企业3排名第二($S_3 = 0.608$):各项指标表现较为均衡,与理想解距离较近。

(3)企业5排名第三($S_5 = 0.565$):虽然X1指标表现较好,但X2指标(成本类)偏高,X3指标偏离最优值较多。

(4)企业7表现最差($S_7 = 0.417$):虽然X1指标达到最大值,但X2、X3、X4三个指标都处于最差状态,说明单一指标优秀不能弥补其他指标的严重不足。

与熵权法综合得分对比:

企业 熵权法得分 熵权法排序 TOPSIS贴近度 TOPSIS排序
企业1 0.5417 5 0.525 5
企业2 0.5661 4 0.544 4
企业3 0.6481 2 0.608 2
企业4 0.6857 1 0.621 1
企业5 0.6081 3 0.565 3
企业6 0.4447 6 0.472 6
企业7 0.2916 7 0.417 7

对比分析:

  1. 两种方法得到的排序完全一致,说明评价结果稳健可靠;
  2. 熵权法通过加权求和得到综合得分,TOPSIS通过距离理想解的远近得到相对贴近度;
  3. TOPSIS方法的优势在于同时考虑了"接近最优"和"远离最差"两个维度,几何意义更加直观;
  4. 两种方法结合使用(熵权法确定权重 + TOPSIS进行排序)是学术研究和实际应用中的常见做法。

4. 小结

本文从 TOPSIS 的理论原理出发,按照下面这条主线开展:

  1. 用极差法对矩阵标准化,同时完成了正向化和标准化;
  2. 基于AHP、熵权法等赋权方法计算的权重,计算加权标准化矩阵;
  3. 构造正理想解(各指标最大值)和负理想解(各指标最小值);
  4. 计算每个方案到正、负理想解的欧式距离;
  5. 用相对贴近度 $S_i = D_i^- / (D_i^+ + D_i^-)$作为综合得分;
  6. 按 $S_i$从大到小排序,得到最终优先级。