
1. 从“拍脑袋”到“算距离”为什么我们需要Topsis法在数学建模或者任何涉及多指标决策的场景里我们常常会遇到一个经典难题面对一堆各有千秋的选项到底哪个才是“最好”的比如要评选优秀员工有人业绩突出但团队协作一般有人人缘极佳但创新能力稍弱再比如选择供应商价格、质量、交货期、服务态度每个指标都重要但往往“鱼与熊掌不可兼得”。最开始很多人会凭感觉“拍脑袋”决定或者简单地把几个指标的分数加起来算个总分。但这样做的弊端很明显首先不同指标的量纲和数量级可能天差地别。一个指标动辄几万如销售额另一个指标只是0到1之间的小数如满意度评分直接相加等于让销售额完全主导了结果。其次指标的重要性权重也不同简单相加默认了所有指标同等重要这显然不符合实际情况。于是我们需要一种更科学、更“讲道理”的方法把不同量纲的指标标准化到同一个可比较的尺度上并且能合理地考虑各指标的权重最终计算出一个综合得分来排序。Topsis法全称“优劣解距离法”就是解决这类问题的利器之一。它的核心思想非常直观且符合人的直觉我们想象在一个多维空间里每个指标代表一个维度每个待评价的方案都是一个点。我们定义两个“虚拟”的参考点一个是所有指标都达到最优值的“理想解”正理想解另一个是所有指标都达到最差值的“负理想解”负理想解。那么一个方案的好坏就由它同时与这两个参考点的距离来决定离理想解越近、同时离负理想解越远的方案就越好。这个方法避免了主观设定一个“完美标准”而是从数据本身出发寻找相对的“最优”和“最劣”评价结果相对客观计算过程清晰非常适合在数学建模中处理多属性决策问题。接下来我们就一步步拆解Topsis法的原理和完整实现过程。2. Topsis法的四步核心流程从原始数据到综合排名Topsis法的实施可以清晰地分为四个步骤原始矩阵构造、数据标准化、加权标准化、计算距离与得分。我们通过一个具体的例子来贯穿讲解。假设我们要评估四款手机A, B, C, D考虑三个指标价格越低越好成本型指标、电池容量越大越好效益型指标、摄像头像素越大越好效益型指标。原始数据如下表方案价格元电池容量mAh摄像头像素万手机A29994500120手机B39995000200手机C2599400080手机D349955001502.1 第一步构造决策矩阵并统一指标类型首先我们将上表数据整理成一个决策矩阵 \( X \)。假设有 \( m \) 个评价方案本例中m4\( n \) 个评价指标本例中n3那么 \( X \) 就是一个 \( m \times n \) 的矩阵。\( X \begin{bmatrix} 2999 4500 120 \\ 3999 5000 200 \\ 2599 4000 80 \\ 3499 5500 150 \end{bmatrix} \)接下来是至关重要的一步统一指标类型。指标通常分为效益型越大越好如电池容量、像素和成本型越小越好如价格。Topsis法要求所有指标同向化一般都转化为效益型。对于成本型指标常用的转化方法是取倒数或做差值。但为了保持数据稳定避免分母为0更通用的方法是使用“倒数法”或“向量归一化法”中的成本型处理。这里我们介绍一种清晰的方法对于成本型指标如价格我们通过公式 \( x \frac{\max(x) - x}{\max(x) - \min(x)} \) 将其转化为效益型。这个公式的含义是计算该数值在最大值和最小值区间内的相对位置然后进行“反转”使得原最小值变为新最大值1原最大值变为新最小值0。在我们的例子中价格是成本型指标。先计算\( \max(价格) 3999 \), \( \min(价格) 2599 \)。 那么对于手机A的价格2999转化后为\( (3999 - 2999) / (3999 - 2599) 1000 / 1400 ≈ 0.7143 \)。 同理 手机B: \( (3999 - 3999) / 1400 0 \) 手机C: \( (3999 - 2599) / 1400 1400 / 1400 1 \) 手机D: \( (3999 - 3499) / 1400 500 / 1400 ≈ 0.3571 \)电池容量和摄像头像素本身就是效益型指标为了保持量纲统一我们同样对它们进行正向化但不反转。使用公式 \( x \frac{x - \min(x)}{\max(x) - \min(x)} \)。这被称为“极差变换法”能将所有指标映射到[0, 1]区间。计算电池容量\( \max 5500, \min 4000 \)。 手机A: \( (4500-4000)/(5500-4000) 500/1500 ≈ 0.3333 \) 手机B: \( (5000-4000)/1500 1000/1500 ≈ 0.6667 \) 手机C: \( (4000-4000)/1500 0 \) 手机D: \( (5500-4000)/1500 1500/1500 1 \)计算摄像头像素\( \max 200, \min 80 \)。 手机A: \( (120-80)/(200-80) 40/120 ≈ 0.3333 \) 手机B: \( (200-80)/120 120/120 1 \) 手机C: \( (80-80)/120 0 \) 手机D: \( (150-80)/120 70/120 ≈ 0.5833 \)于是我们得到了同向化且归一化到[0,1]区间的矩阵 \( X \) \( X \begin{bmatrix} 0.7143 0.3333 0.3333 \\ 0 0.6667 1 \\ 1 0 0 \\ 0.3571 1 0.5833 \end{bmatrix} \)注意这里为了演示清晰我提前使用了极差变换法进行归一化。在实际的标准Topsis流程中同向化统一指标类型和归一化消除量纲是两个独立的步骤。更常见的做法是先统一指标类型如成本型转效益型然后进行下一步的“向量归一化”。2.2 第二步标准化决策矩阵消除量纲上一步的极差变换法已经起到了归一化的作用。但在经典Topsis论文中更常用的是“向量归一化”Z-score标准化也常用。我们来演示一下经典方法。假设我们第一步只做了同向化得到一个新的效益型矩阵假设价格已通过倒数法或其他方法转为效益型这里为了计算方便我们直接用上一步的 \( X \) 作为同向化后的结果但注意此时数据范围是[0,1]已无量纲。实际上经典Topsis的第二步是对同向化后的原始数据做向量归一化。公式为\( z_{ij} \frac{x_{ij}}{\sqrt{\sum_{i1}^{m} x_{ij}^2}} \)其中\( x_{ij} \) 是同向化后的原始数据不是上一步的 \( X \)。为了区分我们重新假设同向化后的矩阵为 \( Y \)效益型。但为了流程连贯我们继续使用 \( X \) 作为标准化前的数据对其进行向量归一化。以第一列处理后的价格为例 计算分母\( \sqrt{0.7143^2 0^2 1^2 0.3571^2} \sqrt{0.5102 0 1 0.1276} \sqrt{1.6378} ≈ 1.2798 \) 那么手机A在该列的标准值\( 0.7143 / 1.2798 ≈ 0.5582 \) 手机B: \( 0 / 1.2798 0 \) 手机C: \( 1 / 1.2798 ≈ 0.7814 \) 手机D: \( 0.3571 / 1.2798 ≈ 0.2791 \)对第二列电池容量和第三列摄像头像素进行同样计算得到标准化决策矩阵 \( Z \)。这个过程确保了每个指标的所有数据其平方和为1彻底消除了量纲影响。为了后续演示方便我们简化处理直接使用经过极差变换法得到的矩阵 \( X \) 作为标准化后的矩阵 \( Z \)因为它的值也在0-1之间且已无量纲。在真实建模中需要明确你的归一化方法并保持一致。2.3 第三步构造加权标准化矩阵不同的指标重要性不同。我们需要给每个指标赋予一个权重。权重的确定本身就是一个子课题可以用层次分析法AHP、熵权法、专家打分法等。这里假设我们通过某种方法确定了三个指标的权重向量为价格权重0.3电池容量0.4摄像头像素0.3。满足权重之和为1。加权标准化矩阵 \( V \) 的计算非常简单\( V Z \times W \)其中 \( W \) 是由权重构成的对角矩阵或者等价地将标准化矩阵 \( Z \) 的每一列乘以对应的权重。即\( v_{ij} w_j \times z_{ij} \)使用我们的 \( Z \) 矩阵即 \( X \) 矩阵和权重 \( w [0.3, 0.4, 0.3] \) 手机A: \( [0.71430.3, 0.33330.4, 0.33330.3] [0.2143, 0.1333, 0.1000] \) 手机B: \( [0, 0.66670.4, 10.3] [0, 0.2667, 0.3] \) 手机C: \( [10.3, 0, 0] [0.3, 0, 0] \) 手机D: \( [0.35710.3, 10.4, 0.5833*0.3] [0.1071, 0.4, 0.1750] \)得到加权标准化矩阵 \( V \) \( V \begin{bmatrix} 0.2143 0.1333 0.1000 \\ 0 0.2667 0.3000 \\ 0.3000 0 0 \\ 0.1071 0.4000 0.1750 \end{bmatrix} \)这个矩阵中的每一个值都代表了该方案在某个指标上的“加权表现”。2.4 第四步计算距离与相对贴近度这是Topsis法的画龙点睛之笔。我们先从加权矩阵 \( V \) 中找出理想解 \( V^ \) 和负理想解 \( V^- \)。理想解 \( V^ \)由每个指标在所有方案中的最大值构成。因为我们的指标都已转化为效益型所以就是取每列的最大值。 \( V^ [ \max(V_{*1}), \max(V_{*2}), \max(V_{*3}) ] [0.3000, 0.4000, 0.3000] \)负理想解 \( V^- \)由每个指标在所有方案中的最小值构成。 \( V^- [ \min(V_{*1}), \min(V_{*2}), \min(V_{*3}) ] [0, 0, 0] \)接下来计算每个方案分别到理想解和负理想解的欧氏距离。到理想解的距离 \( S_i^ \sqrt{\sum_{j1}^{n} (v_{ij} - V_j^)^2 } \)到负理想解的距离 \( S_i^- \sqrt{\sum_{j1}^{n} (v_{ij} - V_j^-)^2 } \)以手机A为例 \( S_A^ \sqrt{(0.2143-0.3000)^2 (0.1333-0.4000)^2 (0.1000-0.3000)^2} \sqrt{(-0.0857)^2 (-0.2667)^2 (-0.2000)^2} \sqrt{0.00734 0.07111 0.04000} \sqrt{0.11845} ≈ 0.3442 \) \( S_A^- \sqrt{(0.2143-0)^2 (0.1333-0)^2 (0.1000-0)^2} \sqrt{0.04592 0.01777 0.01000} \sqrt{0.07369} ≈ 0.2715 \)同理计算所有方案的距离 手机B: \( S_B^ \sqrt{(0-0.3)^2(0.2667-0.4)^2(0.3-0.3)^2} \sqrt{0.090.017780} \sqrt{0.10778} ≈ 0.3283 \) \( S_B^- \sqrt{0^20.2667^20.3^2} \sqrt{00.071110.09} \sqrt{0.16111} ≈ 0.4014 \)手机C: \( S_C^ \sqrt{(0.3-0.3)^2(0-0.4)^2(0-0.3)^2} \sqrt{00.160.09} \sqrt{0.25} 0.5 \) \( S_C^- \sqrt{0.3^20^20^2} \sqrt{0.09} 0.3 \)手机D: \( S_D^ \sqrt{(0.1071-0.3)^2(0.4-0.4)^2(0.175-0.3)^2} \sqrt{0.0372200.01563} \sqrt{0.05285} ≈ 0.2299 \) \( S_D^- \sqrt{0.1071^20.4^20.175^2} \sqrt{0.011470.160.03063} \sqrt{0.20210} ≈ 0.4496 \)最后计算每个方案的相对贴近度 \( C_i \) \( C_i \frac{S_i^-}{S_i^ S_i^-} \)这个公式是核心中的核心。分子是到“最差解”的距离分母是到“最优解”和“最差解”的距离之和。\( C_i \) 的值在0到1之间。越接近1说明该方案离理想解越近同时离负理想解越远综合表现越好。计算 手机A: \( C_A 0.2715 / (0.3442 0.2715) 0.2715 / 0.6157 ≈ 0.441 \) 手机B: \( C_B 0.4014 / (0.3283 0.4014) 0.4014 / 0.7297 ≈ 0.550 \) 手机C: \( C_C 0.3 / (0.5 0.3) 0.3 / 0.8 0.375 \) 手机D: \( C_D 0.4496 / (0.2299 0.4496) 0.4496 / 0.6795 ≈ 0.662 \)根据 \( C_i \) 值排序手机D (0.662) 手机B (0.550) 手机A (0.441) 手机C (0.375)。因此在给定的权重下手机D是综合最优的选择。3. 权重赋值决定天平倾斜方向的关键在Topsis法中权重赋值是影响最终结果最敏感的因素之一。不同的权重分配完全可能得出不同的排序结论。在上面的例子中我们假设了权重为[0.3, 0.4, 0.3]。如果决策者认为价格极其重要将权重改为[0.6, 0.2, 0.2]结果很可能大变样。因此如何科学、合理地确定权重是应用Topsis法前必须认真对待的问题。3.1 主观赋权法层次分析法AHP层次分析法是一种将定性问题定量化的经典方法特别适合指标不多、且可以通过两两比较来判断相对重要性的场景。其步骤如下建立层次结构将决策目标、评价准则指标和备选方案分层。构造判断矩阵针对同一层的指标决策者根据经验或判断对每两个指标之间的相对重要性进行比较通常使用1-9标度法1表示同等重要9表示极端重要。例如认为价格比电池容量“稍微重要”则可以赋值3。一致性检验由于人的判断可能存在矛盾比如A比B重要B比C重要但C又比A重要需要计算一致性比率CR。如果CR0.1则认为判断矩阵的一致性可以接受。计算权重通过计算判断矩阵的最大特征值对应的特征向量并将其归一化得到各指标的权重。AHP的优势是能结合决策者的经验和偏好缺点则是主观性较强且当指标数量很多时两两比较的工作量会指数级增长容易导致判断不一致。3.2 客观赋权法熵权法熵权法的思想源于信息论在一个系统中指标的信息熵越小说明该指标值的变异程度越大提供的信息量越多在综合评价中所起的作用就越大权重也应越高。这是一种完全基于数据本身客观计算权重的方法。计算步骤如下数据标准化对原始决策矩阵进行标准化处理如极差变换得到矩阵 \( P \)。计算熵值对于第j个指标其熵值 \( e_j -k \sum_{i1}^{m} p_{ij} \ln(p_{ij}) \)其中 \( k 1/\ln(m) \)\( p_{ij} \) 是标准化后的值需确保 \( p_{ij} 0 \)可做微小平移。计算差异系数\( d_j 1 - e_j \)。熵值越小差异系数越大指标越重要。确定权重\( w_j d_j / \sum_{j1}^{n} d_j \)。熵权法的优点是完全客观排除了人为干扰。但其缺点也很明显权重完全取决于当前数据样本的分布。如果某指标在所有方案上数值都很接近熵值大其权重会很低但这可能并不意味着该指标本身不重要只是本次评价的方案在该指标上差异不大。因此熵权法更适合作为对主观权重的一种补充或修正。3.3 组合赋权法主客观结合在实际应用中为了兼顾决策者的主观意图和数据的客观规律常常采用组合赋权。最简单的是线性加权组合\( w \alpha w_{subjective} (1-\alpha) w_{objective} \)其中 \( \alpha \) 是主观偏好系数。也可以使用更复杂的数学规划方法在满足一定约束条件下求最优组合权重。实操心得在数学建模比赛中如果题目没有明确给出权重建议同时使用主观如AHP和客观熵权法两种方法计算权重并对结果进行对比分析。如果结果差异不大说明排序稳健如果差异大则需要深入分析原因并在论文中讨论这种敏感性这往往是论文的加分点。切勿随意拍一个权重了事。4. 指标正向化与归一化的陷阱与细节处理回到Topsis流程的第一步和第二步这里有几个容易踩坑的细节处理不当会导致结果失真。4.1 指标类型不止“效益型”和“成本型”除了越大越好的效益型和越小越好的成本型还有两种常见类型区间型指标希望数值落在某个特定区间 \( [a, b] \) 内最好偏离越远越差。例如人体血压有一个正常范围太高或太低都不好。中间型指标希望数值越接近某个固定值 \( c \) 越好。例如PH值为7时最好。对于区间型指标正向化公式为 \( x \begin{cases} 1 - \frac{a-x}{M}, x a \\ 1, a \le x \le b \\ 1 - \frac{x-b}{M}, x b \end{cases} \) 其中 \( M \max\{a-\min(x), \max(x)-b\} \)用于将偏离程度归一化到[0,1]。对于中间型指标正向化公式为 \( x 1 - \frac{|x-c|}{\max|x-c|} \)注意这些正向化公式的目的是将原始指标值转化为一个“得分”得分越高表示在该指标上表现越好即转化为效益型。这是进行后续标准化和比较的基础。4.2 归一化方法的选择与影响我们之前提到了“极差变换法”和“向量归一化法”。除此之外还有“标准差标准化法”Z-score等。不同的归一化方法会对距离计算产生影响。极差变换法将数据压缩到[0,1]区间保留了原始数据间的相对比例关系。但对异常值极大或极小值非常敏感一个异常值会拉大整个区间的范围导致其他数据都挤在一起。向量归一化法经典Topsis使用的方法。它使得每个指标下所有数据的平方和为1。这种方法不会改变数据的相对大小顺序但会改变数据间的相对距离比例。Z-score标准化将数据转化为均值为0、标准差为1的分布。适用于数据大致符合正态分布的情况能更好地消除量纲和数量级的影响。在数学建模中如果没有特殊要求使用向量归一化法即可因为这是Topsis原始论文采用的方法评委也最熟悉。如果数据存在明显的异常值可以考虑使用更稳健的归一化方法或者在预处理阶段处理异常值。4.3 数据平移问题在计算熵权法或进行对数运算时要求数据必须为正数。但标准化后的数据可能出现0。例如在极差变换中最小值会被转化为0。此时直接计算 \( \ln(0) \) 会出错。常见的处理方法是给所有标准化后的数据加上一个非常小的正数如 \( 10^{-6} \)再进行后续计算。这个操作被称为“数据平移”。虽然平移量很小但理论上会对结果产生微小影响需要在论文中说明。5. Topsis法的Python代码实现与解读理论讲透了最终还是要落地到代码。手动计算只适合教学和小数据量实际应用必须依赖编程。下面我用Python结合numpy和pandas库实现一个完整的、带有详细注释的Topsis算法函数。这个函数将涵盖指标正向化、标准化、赋权、距离计算和排序全过程。import numpy as np import pandas as pd def topsis(data, weights, impacts): 实现TOPSIS优劣解距离法 Parameters: ----------- data : ndarray or DataFrame 原始决策矩阵行为方案列为指标。 weights : list or ndarray 各指标的权重向量长度需等于指标数。 impacts : list of str 各指标的类型 表示效益型- 表示成本型。 对于区间型或中间型需要先外部处理为正效益指标再传入。 Returns: -------- result_df : DataFrame 包含各方案到正负理想解的距离、相对贴近度及排名的结果DataFrame。 # 转换为numpy数组便于计算 X np.array(data, dtypefloat) m, n X.shape # m个方案n个指标 # 1. 指标正向化 X_normalized np.zeros_like(X) for j in range(n): col X[:, j] if impacts[j] : # 效益型无需反转但为了统一进行极差变换 max_val, min_val col.max(), col.min() if max_val min_val: # 防止分母为0 X_normalized[:, j] 1 else: X_normalized[:, j] (col - min_val) / (max_val - min_val) elif impacts[j] -: # 成本型通过极差变换转化为效益型 max_val, min_val col.max(), col.min() if max_val min_val: X_normalized[:, j] 1 else: X_normalized[:, j] (max_val - col) / (max_val - min_val) else: raise ValueError(f第{j1}个指标的类型 {impacts[j]} 无效应为 或 -。) # 2. 标准化向量归一化 norm np.sqrt(np.sum(X_normalized ** 2, axis0)) # 防止除零 norm[norm 0] 1e-10 Z X_normalized / norm # 3. 构造加权标准化矩阵 weights np.array(weights, dtypefloat) # 确保权重和为1可选也可不归一化但公式含义会变 if abs(weights.sum() - 1.0) 1e-10: print(f警告权重和({weights.sum()})不为1将自动归一化。) weights weights / weights.sum() V Z * weights # 利用numpy广播机制 # 4. 确定理想解和负理想解 # 因为所有指标都已正向化为效益型所以理想解取每列最大值负理想解取每列最小值 V_positive np.max(V, axis0) V_negative np.min(V, axis0) # 5. 计算各方案到理想解和负理想解的距离 # 使用欧氏距离 S_positive np.sqrt(np.sum((V - V_positive) ** 2, axis1)) S_negative np.sqrt(np.sum((V - V_negative) ** 2, axis1)) # 6. 计算相对贴近度 C S_negative / (S_positive S_negative 1e-10) # 加一个极小值防止除零 # 7. 排序 rank np.argsort(-C) 1 # 按贴近度降序排列排名从1开始 # 8. 整理结果 result_df pd.DataFrame({ 方案: [f方案{i1} for i in range(m)], 距离正理想解(S): S_positive, 距离负理想解(S-): S_negative, 相对贴近度(C): C, 排名: rank }) # 按排名升序排列结果 result_df result_df.sort_values(排名).reset_index(dropTrue) return result_df # 使用示例 if __name__ __main__: # 示例数据4个方案3个指标 data_matrix np.array([ [2999, 4500, 120], # 方案1 [3999, 5000, 200], # 方案2 [2599, 4000, 80], # 方案3 [3499, 5500, 150] # 方案4 ]) # 指标类型价格成本型-电池容量效益型像素效益型 impacts [-, , ] # 权重 weights [0.3, 0.4, 0.3] # 调用函数 result topsis(data_matrix, weights, impacts) print(TOPSIS综合评价结果) print(result)代码解读与关键点函数设计将核心算法封装成函数输入为原始数据矩阵、权重向量和指标影响方向列表输出为包含距离、贴近度和排名的DataFrame清晰且易于复用。正向化处理在函数内部根据impacts参数对成本型指标进行转化。这里采用了极差变换法将成本型指标“反转”为效益型。注意处理了最大值等于最小值的边界情况。标准化采用了经典的向量归一化法。计算每一列所有数据的平方和再开方作为分母。添加了一个极小值防止除零错误这是一个重要的鲁棒性处理。加权利用NumPy的广播机制非常简洁地实现了整个矩阵的列加权。距离计算使用np.sqrt和np.sum计算欧氏距离代码简洁高效。贴近度计算公式 \( C_i S_i^- / (S_i^ S_i^-) \)。分母加上了一个极小值1e-10这是为了防止某个方案恰好与理想解和负理想解重合理论上罕见但需防范导致除零错误。排序使用np.argsort(-C)获取降序排列的索引然后1得到从1开始的排名。运行这段代码你会得到与我们之前手动计算高度一致的结果由于计算精度和正向化方法选择的细微差异小数点后几位可能不同但排序一致。6. 实战中的常见问题与进阶思考掌握了基础流程和代码实现在实际应用Topsis法时还有一些更深层次的问题需要考虑。6.1 排序的“逆序”问题与方案增减的敏感性这是一个理论上的重要问题假设我们对方案集A进行Topsis评价得到排序。现在新增一个方案Z或者删除一个原有方案重新对剩下的方案进行评价排序结果可能会发生变化。也就是说方案的优劣顺序可能因为竞争对手其他方案的加入或退出而改变。这在某些绝对评价的场景下可能不符合直觉。例如在只有A和B两个方案时A可能因为更均衡而胜出。但当加入一个在某个指标上极端优秀的方案C后理想解和负理想解的位置被改变了导致A和B到这两个参考点的距离重新计算最终排序可能反转。Topsis法是一种相对评价方法评价结果依赖于当前方案集的整体分布。在建模论文中如果方案集是固定的如从几家固定的供应商中选择这个问题影响不大。但如果方案集是动态的需要在报告中指出这一局限性。6.2 距离公式的选择欧氏距离还是曼哈顿距离我们一直使用的是欧氏距离直线距离这是最常用的。但在某些情况下可以考虑使用曼哈顿距离城市街区距离。欧氏距离对各个维度的差异进行了平方和再开方对较大差异的惩罚更重因为平方项放大差异。曼哈顿距离则是各维度差异的绝对值之和对差异的处理更线性。选择哪种距离取决于实际问题。如果认为指标间的差异可以线性叠加用曼哈顿距离。如果认为大的单项缺陷对方案整体评价的负面影响更大“木桶效应”则欧氏距离更合适。在大多数建模场景中使用欧氏距离是默认且可接受的选择。你可以在敏感性分析中尝试更换距离公式看排序结果是否稳定。6.3 与灰色关联分析、模糊综合评价的对比Topsis法不是唯一的多属性决策方法。它常与灰色关联分析、模糊综合评价等方法进行比较。灰色关联分析核心是计算各方案序列与理想方案序列的关联度。关联度越大方案越好。它更侧重于分析数据序列之间的几何形状相似度对数据量要求不高适合“小样本、贫信息”的不确定系统。计算量通常比Topsis小。模糊综合评价适用于指标评价带有模糊性的问题如“服务态度好”、“质量高”。它通过隶属度函数将定性评价定量化并利用模糊合成算子进行综合。更适合处理主观、模糊的评价语言。选择哪种方法取决于问题的特点和数据性质。Topsis因其概念直观、计算简单、结果易于解释在数学建模竞赛中应用极为广泛。有时为了增强说服力可以同时使用两种方法进行评价如果结论一致则结果更稳健如果结论不一致则需深入分析原因这本身可能就是论文的一个亮点。6.4 在数学建模论文中如何书写Topsis部分如果你在数学建模论文中使用了Topsis法建议按以下结构组织内容问题阐述与方法选择理由简要说明这是一个多属性决策问题并解释为什么选择Topsis法如原理直观、能同时考虑与最优最劣方案的距离、能处理不同量纲指标等。数据预处理详细说明原始数据来源并对缺失值、异常值进行处理。明确列出每个指标的类型效益型/成本型/区间型/中间型并给出正向化的具体公式和过程。权重的确定这是重点。详细说明你采用什么方法确定权重如AHP、熵权法或组合赋权。如果是AHP需要给出判断矩阵、一致性检验结果和权重计算结果表。如果是熵权法需要给出计算过程。这部分需要足够的细节让评委能复现。Topsis计算过程给出标准化公式、加权公式、理想解与负理想解的定义、距离公式和贴近度公式。可以配一个简单的计算示例如文中前几步但不必列出全部计算。结果展示与分析以清晰的表格形式展示最终的距离、贴近度和排名。对排名结果进行分析解释为什么排名第一的方案胜出例如“方案D在电池容量这一高权重指标上表现最佳同时在价格和像素上表现均衡因此综合排名第一”。敏感性分析加分项分析权重变化对排序结果的影响。例如将某个重要指标的权重在合理范围内波动±10%观察排名是否发生变化。如果排名稳定说明模型鲁棒性好如果排名易变则指出该决策对某个指标的权重敏感需要谨慎确定。模型评价与推广简要总结Topsis法在本问题中的应用效果指出其优点如计算简便、结果清晰并承认其局限性如对权重敏感、是相对评价等。7. 超越基础用Topsis解决一个真实建模问题片段让我们设想一个2023年“高教社杯”全国大学生数学建模竞赛可能出现的题目片段“基于可持续发展目标的智慧城市评价”。假设我们需要对10个候选城市的智慧城市建设水平进行排名评价指标包括人均GDP效益型、单位GDP能耗成本型、PM2.5年均浓度成本型、每万人专利授权数效益型、公众满意度评分效益型0-100分。步骤一数据收集与预处理我们从统计年鉴和调查报告中收集了10个城市的数据。首先检查数据完整性对极个别缺失值采用同一指标其他城市的均值进行填补。然后明确指标类型。步骤二指标正向化人均GDP、专利数、满意度为效益型无需反转。单位GDP能耗和PM2.5浓度为成本型我们采用倒数法将其转化为效益型注意倒数法会放大小数值的影响需确保数据无零值或采用前文提到的极差变换法。假设我们使用极差变换法得到所有指标值均在[0,1]区间的效益型矩阵。步骤三确定权重考虑到“可持续发展”和“智慧城市”的内涵我们认为经济、环境、创新、民生都很重要。采用组合赋权法主观层面通过专家问卷运用AHP法得到主观权重向量 \( w_s \)。客观层面基于10个城市的数据利用熵权法计算客观权重向量 \( w_o \)。组合权重取 \( \alpha 0.5 \)计算 \( w 0.5w_s 0.5w_o \)。假设最终得到权重为[0.2, 0.25, 0.25, 0.15, 0.15]。步骤四Topsis计算将正向化后的数据矩阵、组合权重输入我们编写的Python函数设定所有指标影响方向为‘’即可一次性计算出所有城市的贴近度与排名。步骤五结果分析与可视化输出排名表。我们发现排名第一的城市并非人均GDP最高也非PM2.5最低而是在五个指标上表现最为均衡且在环境能耗、PM2.5这两个高权重指标上表现突出。这符合可持续发展“协调、绿色”的理念。我们可以用雷达图可视化排名前三位城市在各个指标上的加权得分直观展示其优势与短板。步骤六敏感性分析我们分别将环境类指标能耗、PM2.5的权重上调10%下调10%重新计算排名。发现前三名的城市顺序始终保持不变说明在这个权重设定下排名结果具有较好的稳定性模型可靠。通过这样一个完整的流程Topsis法就从课本上的公式变成了解决实际复杂决策问题的有力工具。它不仅给出了一个排名更重要的是通过计算过程和各环节的分析揭示了数据背后的故事和决策的关键驱动因素。这才是数学建模的精髓所在。