正在加载中...

展开本页目录
算法教程FuzzyTOPSIS-模糊 TOPSIS

FuzzyTOPSIS-模糊 TOPSIS

No.106 · 在线教程

FuzzyTOPSIS-模糊 TOPSIS 的真实核心主要位于:

FuzzyTOPSIS-模糊 TOPSIS

1. 方法概述

FuzzyTOPSIS-模糊 TOPSIS 的真实核心主要位于:

  • core/fuzzy_topsis_calculator.py

从当前项目实现看,这个模块是“先标准化、再加权、再模糊化”的路线,而不是一开始就直接让用户输入语言型三角模糊数。整体步骤为:

  1. 读取对象列与指标列;
  2. 做指标方向统一与标准化;
  3. 使用自定义权重或熵权;
  4. 将加权后的标准化值扩展为三角模糊数;
  5. 构造模糊正理想解与负理想解;
  6. 用顶点距离计算到两类理想解的距离;
  7. 得到贴近度 \(CC\) 并排序。

2. 权重与模糊化

2.1 权重来源

源码里真正生效的逻辑是:

  1. self.weights 已存在,则使用自定义权重;
  2. 否则自动走熵权。

因此这里并不是一个非常复杂的多分支权重系统,而是“有自定义就用自定义,没有就熵权”的二选一结构。

2.2 三角模糊数构造

对已经标准化并加权后的数值 \(x_{ij}\),代码实际构造:

$$ l_{ij}=\max(0,\ x_{ij}(1-d))w_j \tag{1} $$

$$ m_{ij}=x_{ij}w_j \tag{2} $$

$$ u_{ij}=\min(1,\ x_{ij}(1+d))w_j \tag{3} $$

其中 \(d\) 是模糊扩展系数。

也就是说,项目的模糊化发生在“标准化后、乘权后”这一层,而不是直接对原始观测值做三角模糊包装。

3. 模糊理想解与贴近度

3.1 理想解

对每个指标,代码按三角模糊数三个分量分别取极值,得到:

$$ \tilde A^+=\big(\max_i l_{ij},\ \max_i m_{ij},\ \max_i u_{ij}\big) \tag{4} $$

$$ \tilde A^-=\big(\min_i l_{ij},\ \min_i m_{ij},\ \min_i u_{ij}\big) \tag{5} $$

3.2 顶点距离

项目采用三角模糊数的顶点距离:

$$ d(\tilde a,\tilde b)=\sqrt{\frac{(l_a-l_b)^2+(m_a-m_b)^2+(u_a-u_b)^2}{3}} \tag{6} $$

3.3 与两类理想解的距离

于是第 \(i\) 个方案到模糊正理想解、负理想解的距离分别为

$$ D_i^+=\sum_{j=1}^{n} d(\tilde x_{ij},\tilde A_j^+) \tag{7} $$

$$ D_i^-=\sum_{j=1}^{n} d(\tilde x_{ij},\tilde A_j^-) \tag{8} $$

3.4 贴近度

最终贴近度写成

$$ CC_i=\frac{D_i^-}{D_i^++D_i^-+10^{-12}} \tag{9} $$

所以:

  • \(CC_i\) 越大,说明越接近正理想解;
  • 项目最终排名按 CC 从大到小。

4. 输出结果与结果表

当前导出工作表主要包括:

  • RawData
  • Normalized
  • Weights
  • Ranking
  • Parameters
  • Charts

也就是说,这个模块保留了从原始数据到贴近度排序的主要关键步骤,但不会像一些更重型的实现那样把所有中间三角模糊矩阵都完整落表。

5. 实现说明与注意事项

5.1 模糊化发生在“加权后”

这是该项目与很多教材版 Fuzzy TOPSIS 不同的一个点。它不是先给每个原始数值定义三角模糊数,再去标准化,而是先做确定性标准化和加权,再扩展为模糊区间。

5.2 理想解是按分量分别取 max/min

因此正理想解与负理想解都是代码自动从当前样本集里提取出来的,而不是外部人为指定。

5.3 结果解释仍然沿用 TOPSIS 逻辑

虽然中间对象换成了三角模糊数,但最终解释口径仍然非常清晰:

  1. 离正理想解越近越好;
  2. 离负理想解越远越好;
  3. CC 越大排名越靠前。

6. 论文写作建议

论文中建议同时给出权重表、理想解距离表和贴近度 CC 排序表。若需要强调模糊性,可在方法部分单独说明三角模糊数构造规则;若更强调结果结论,则正文可重点展示 CC 与排名,并在附录补充模糊理想解和距离计算细节。

7. 单篇终审补充

7.1 图题与表题对齐建议

  • RawData 表可写为:表X Fuzzy TOPSIS 原始评价数据。
  • Normalized 表可写为:表X Fuzzy TOPSIS 标准化矩阵。
  • Weights 表可写为:表X Fuzzy TOPSIS 指标权重。
  • Ranking 表可写为:表X Fuzzy TOPSIS 贴近度与排序结果。
  • Parameters 表可写为:表X Fuzzy TOPSIS 参数设置与权重方式。
  • Charts 表可写为:表X Fuzzy TOPSIS 图表索引与路径。

7.2 终审说明

  • 当前实现不会把全部中间三角模糊矩阵完整落表,真实导出主表集中在 RawData / Normalized / Weights / Ranking / Parameters / Charts。论文若声称完整导出了所有模糊中间矩阵,会与当前实现不符。
  • 当前模糊化发生在“标准化与加权之后”,因此正文不要写成“先模糊原始数据再标准化”的经典教材流程,除非明确说明和项目实现不同。
  • Ranking 才是最终用于排序的主表,其中 CC 为核心指标;Weights 负责解释权重来源,二者不应混写。
  • 如果结果页里没有额外导出理想解距离表,正文应把距离计算写在方法部分,结果部分则以 CC 与排序为主。

7.3 抽检复核补充

本次抽检绑定的真实结果目录为 具体的算法3/灰色系统与模糊理论/FuzzyTOPSIS-模糊 TOPSIS/results/FuzzyTOPSIS-模糊 TOPSIS分析结果_20260329_171533。代表性结果文件为 fuzzy_topsis_result_20260329_171533.xlsx,实际工作表为 RawDataNormalizedWeightsRankingParametersCharts,与第 7.1 节列出的表格标题口径一致。

该目录下实体图包括 fuzzy_topsis_result_20260329_171533_weights.pngfuzzy_topsis_result_20260329_171533_final_scores.png,论文中可分别写为“Fuzzy TOPSIS 指标权重图”和“Fuzzy TOPSIS 贴近度得分排序图”。同目录还存在 fuzzy_topsis_repro_20260329_171534.xlsx 及对应 weights/final_scores 图,属于复现脚本再次运行后的产物,引用时应与主结果文件分开说明。

复现脚本为 repro_20260329_171533.py,输入候选路径为 repro_inputs/FuzzyTOPSIS-模糊 TOPSIS_repro_data.csvrepro_inputs/fuzzy_topsis_ui_input.csv。脚本会优先按自身所在目录解析 repro_inputs,并调用 core/fuzzy_topsis_calculator.py 重新计算。因此论文附录中可写成“基于结果目录内 repro_inputs 数据快照复现”,不要写成依赖算法根目录 uploads

7.4 全量强化补充

  • 当前 Fuzzy TOPSIS 文档应继续绑定真实算法目录 具体的算法3/灰色系统与模糊理论/FuzzyTOPSIS-模糊 TOPSIS,代表结果目录为 具体的算法3/灰色系统与模糊理论/FuzzyTOPSIS-模糊 TOPSIS/results/FuzzyTOPSIS-模糊 TOPSIS分析结果_20260329_171533
  • 首层主工作簿为 fuzzy_topsis_result_20260329_171533.xlsx,真实工作表为 RawDataNormalizedWeightsRankingParametersCharts,没有额外的完整三角模糊矩阵表或理想解距离分解表。
  • 首层主图为 fuzzy_topsis_result_20260329_171533_weights.pngfuzzy_topsis_result_20260329_171533_final_scores.png,分别适合写作“Fuzzy TOPSIS 指标权重图”和“Fuzzy TOPSIS 贴近度得分排序图”。
  • 同目录还存在 fuzzy_topsis_repro_20260329_171534.xlsxfuzzy_topsis_repro_20260329_171534_weights.pngfuzzy_topsis_repro_20260329_171534_final_scores.png,这些是复现脚本再运行后的产物,不应与 fuzzy_topsis_result_20260329_171533.* 主运行产物混成同一组图表。
  • 该目录中的复现脚本为 repro_20260329_171533.py,输入副本位于 repro_inputs/,当前真实存在 FuzzyTOPSIS-模糊 TOPSIS_repro_data.csvfuzzy_topsis_ui_input.csv 两个输入候选文件。论文附录应写成“基于结果目录内 repro_inputs 快照复现”,而不是写成依赖算法根目录 uploads
  • 当前输出是首层平铺结构:主结果、主图、repro 脚本、repro 输入和 repro 再生产物都在同一结果目录内,没有 charts/ 子目录,也没有 repro_outputs/ 子目录。图表路径说明必须按这种平铺结构写。
  • 由于工作簿只保留 Ranking 而不单独导出 D_i^+D_i^- 的完整距离表,论文结果部分应以 CC 贴近度和排序解释为主,距离公式放在方法部分即可。

8. 软件实现核查补充(2026-07)

  • 当前主结果目录应写作 具体的算法3/灰色系统与模糊理论/FuzzyTOPSIS-模糊 TOPSIS/results/FuzzyTOPSIS-模糊 TOPSIS分析结果_20260329_171533
  • 正文应围绕 RawDataNormalizedWeightsRankingParametersCharts 来写。
  • 图证应对应 fuzzy_topsis_result_20260329_171533_weights.pngfuzzy_topsis_result_20260329_171533_final_scores.png,并把贴近度 CC 的排序解释清楚。
  • 复现脚本应按 repro_20260329_171533.py + repro_inputs/FuzzyTOPSIS-模糊 TOPSIS_repro_data.csv 的口径说明。