FuzzyVIKOR-模糊 VIKOR
FuzzyVIKOR-模糊 VIKOR 的真实核心主要位于:
FuzzyVIKOR-模糊 VIKOR
1. 方法概述
FuzzyVIKOR-模糊 VIKOR 的真实核心主要位于:
core/calculator.py
从源码实现看,这个模块的结构可以概括为:
- 指标同向化;
- 标准化;
- 权重准备;
- 对标准化值加上三角模糊扰动;
- 去模糊后计算 \(S,R,Q\);
- 按经典 VIKOR 规则输出折衷解与敏感性分析。
也就是说,它不是直接对语言型模糊偏好矩阵做 VIKOR,而是对数值型标准化矩阵先模糊化、再做 VIKOR。
2. 指标处理、权重与模糊化
2.1 指标方向
负向指标先做镜像同向化:
$$ u_{ij}=x_j^{\max}+x_j^{\min}-x_{ij} \tag{1} $$
适度指标则映射为目标接近度:
$$ u_{ij}=1-\frac{|x_{ij}-t_j|}{\max\left(|x_j^{\max}-t_j|,\ |x_j^{\min}-t_j|\right)} \tag{2} $$
之后统一进行 min-max 或 z-score + min-max 标准化。
2.2 权重来源
当前模块名义上支持:
stdcustom
但代码里还有一个实际细节:若没有传入自定义权重而又走到了非 std 分支,最终会回退到等权。因此写论文说明时最好把“缺少自定义权重时可能退回等权”这一点单独写清楚。
2.3 三角模糊化
对标准化后的数值 \(n_{ij}\),代码构造
$$ l_{ij}=\max(0,n_{ij}-\delta) \tag{3} $$
$$ m_{ij}=n_{ij} \tag{4} $$
$$ u_{ij}=\min(1,n_{ij}+\delta) \tag{5} $$
其中 \(\delta\) 对应参数 fuzzy_delta。
3. 去模糊与 VIKOR 主公式
3.1 去模糊
若选择 centroid:
$$ d(\tilde x)=\frac{l+m+u}{3} \tag{6} $$
若选择 weighted:
$$ d(\tilde x)=\frac{l+2m+u}{4} \tag{7} $$
得到去模糊后的确定性矩阵后,再进入标准 VIKOR。
3.2 模糊最优解与最劣解
代码先对每个指标在三角模糊数三个分量上分别取最大值和最小值,再去模糊得到:
$$ f_j^*=d(\tilde A_j^+),\qquad f_j^-=d(\tilde A_j^-) \tag{8} $$
3.3 \(S,R,Q\)
随后计算每个方案在每个指标上的相对差距:
$$ g_{ij}=w_j\frac{f_j^*-d(\tilde x_{ij})}{f_j^*-f_j^-+\varepsilon} \tag{9} $$
再得到
$$ S_i=\sum_{j=1}^{n}g_{ij} \tag{10} $$
$$ R_i=\max_{1\le j\le n}g_{ij} \tag{11} $$
以及
$$ Q_i=v\frac{S_i-S^*}{S^--S^*+\varepsilon}+(1-v)\frac{R_i-R^*}{R^--R^*+\varepsilon} \tag{12} $$
因此最终排序逻辑依然是:Q 越小越优。
4. 折衷解、敏感性与输出结果
4.1 折衷解
代码完整实现了 VIKOR 的折衷解判据,会输出:
best_by_qbest_by_sbest_by_rcompromise_setrule
因此它不是只给一个单一排名,而是同时说明“是否满足可接受优势”和“是否满足可接受稳定性”。
4.2 敏感性分析
若启用 sensitivity=True,代码会对权重做扰动再重复计算,生成独立的敏感性结果表。
4.3 Excel 工作表
主要导出内容包括:
- 原始数据
- 处理后数据
- 标准化矩阵
- 权重
- 模糊最优 / 最劣解
- 去模糊矩阵
S/R/Q- 敏感性结果
- 折衷解结果
- 图表
- 复现脚本
5. 实现说明与注意事项
5.1 这是“数值矩阵模糊化版” VIKOR
当前项目不是从模糊语言评价矩阵直接起步,而是对已经标准化好的数值矩阵加上三角模糊扰动后再做 VIKOR。
5.2 weighted 去模糊更偏中值
由于
$$ \frac{l+2m+u}{4} \tag{13} $$
会给中值更高权重,所以它比普通重心法更保守一些。
5.3 排名主键始终是 Q
即使结果页保留了 S 和 R,最终的 排名 仍然来自 Q 升序,这一点与普通 VIKOR 保持一致。
6. 论文写作建议
论文结果部分建议同时报告 S、R、Q 和最终折衷解集合,而不要只给单一排名。若使用了模糊化和去模糊过程,最好在方法部分单独说明 fuzzy_delta 和去模糊方式,因为它们会直接影响后续的 S/R/Q 数值与折衷结论。
7. 单篇终审补充
7.1 图题与表题对齐建议
原始数据表可写为:表X Fuzzy VIKOR 原始评价数据。处理后数据表可写为:表X Fuzzy VIKOR 处理后评价矩阵。标准化矩阵表可写为:表X Fuzzy VIKOR 标准化结果。权重表可写为:表X Fuzzy VIKOR 指标权重。模糊最优 / 最劣解表可写为:表X Fuzzy VIKOR 模糊最优解与最劣解。去模糊矩阵表可写为:表X Fuzzy VIKOR 去模糊矩阵。S/R/Q表可写为:表X Fuzzy VIKOR 群体效用、个体遗憾与折衷指标。敏感性结果表可写为:表X Fuzzy VIKOR 敏感性分析结果。折衷解结果表可写为:表X Fuzzy VIKOR 折衷解集合与排序。图表表可写为:表X Fuzzy VIKOR 图表索引与路径。
7.2 终审说明
- 当前实现的排名主键始终是
Q,即使程序同时展示S和R,正文里的最终排序表也应以Q升序为准。 - 当前模块是“数值矩阵模糊化版” VIKOR,不是直接由模糊语言评价矩阵起步的传统模糊群决策版本,方法表述应与此一致。
weighted去模糊方式会给中值更高权重,因此若论文比较不同去模糊方案,应明确当前项目默认口径,而不要泛写成任意去模糊。折衷解结果与敏感性结果是当前实现里最适合正文引用的结果表;模糊最优/最劣解和去模糊矩阵更适合放在附录支撑过程说明。
7.3 全量强化补充
本次全量强化绑定的真实结果目录为 具体的算法3/灰色系统与模糊理论/FuzzyVIKOR-模糊 VIKOR/results/FuzzyVIKOR-模糊 VIKOR分析结果_20260329_171536。主结果文件为 FuzzyVIKOR结果_20260329_171536.xlsx,实际工作表为 Parameters、RawData、Processed、Normalized、FuzzyMatrix、FuzzyBestWorst、Weights、Defuzzified、Scores、Compromise、Charts。
当前真实图文件位于 charts/ 子目录,包括 weights.png 与 q_scores.png。这说明正文中最适合与图配套引用的主结果表是 Weights 与 Scores/Compromise,而不是泛写“图表”。
复现脚本为 repro_20260329_171536.py,输入候选路径包括 repro_inputs/FuzzyVIKOR_repro_data.csv、repro_inputs/fuzzy_vikor_ui_input_20260329_171536.csv 以及历史 pytest 临时路径。参数中显式包含 defuzzify = 'weighted' 与 fuzzy_delta = 0.1。因此这篇文档在论文附录中应写成“基于结果目录内 repro_inputs 快照复现,且当前默认去模糊方式为 weighted”,不要把这些实现细节省略掉。
8. 软件实现核查补充(2026-07)
- 当前主结果目录应写作
具体的算法3/灰色系统与模糊理论/FuzzyVIKOR-模糊 VIKOR/results/FuzzyVIKOR-模糊 VIKOR分析结果_20260329_171536。 - 正文应围绕
Parameters、RawData、Processed、Normalized、FuzzyMatrix、FuzzyBestWorst、Weights、Defuzzified、Scores、Compromise、Charts来写。 - 图证应对应
weights.png与q_scores.png,并把Q、S、R与折衷解结果的关系写清。 - 复现脚本应按
repro_20260329_171536.py + repro_inputs/FuzzyVIKOR_repro_data.csv的口径说明,且要明确默认去模糊方式是weighted。