MCM 2026 Problem A - O-Prize Grade Figure Generation
完整的15张图生成系统,用于MCM 2026问题A的高质量论文配图。
文件结构
ZJ_v2/
├── config.yaml # 配置文件(参数、场景定义)
├── plot_style.py # 统一绘图样式
├── validation.py # 质量验证工具
├── requirements.txt # Python依赖
├── run_all_figures.py # 主执行脚本
├── fig01_macro_logic.py # 图1: 总体流程图
├── fig02_system_interaction.py # 图2: 系统交互图
├── fig03_ocv_fitting.py # 图3: OCV拟合验证
├── fig04_internal_resistance.py # 图4: 内阻3D曲面
├── fig05_radio_tail.py # 图5: 网络尾流效应
├── fig06_cpl_avalanche.py # 图6: CPL反馈环路
├── fig07_baseline_validation.py # 图7: 基准动力学验证
├── fig08_power_breakdown.py # 图8: 功率分解图
├── fig09_scenario_comparison.py # 图9: 场景对比(含GPS影响)
├── fig10_tornado_sensitivity.py # 图10: 龙卷风灵敏度图
├── fig11_heatmap_temp_signal.py # 图11: 温度-信号热力图
├── fig12_monte_carlo.py # 图12: 蒙特卡洛路径
├── fig13_survival_curve.py # 图13: 生存曲线
├── fig14_lifecycle_degradation.py # 图14: 老化轨迹
├── fig15_radar_user_guide.py # 图15: 雷达建议图
├── figures/ # 输出目录(自动创建)
│ ├── Fig01_*.pdf/png
│ ├── Fig02_*.pdf/png
│ └── ...
└── artifacts/ # 验证报告
└── figure_build_report.json
图表清单
第一部分:模型架构(4张)
- Fig01 - 宏观逻辑流程图(3阶段)
- Fig02 - 系统边界与变量交互
- Fig05 - 网络尾流效应示意
- Fig06 - CPL反馈环路机制
第二部分:物理建模(2张)
- Fig03 - OCV曲线拟合(R²≥0.99)
- Fig04 - 内阻R₀(T,z)三维曲面
第三部分:基准结果(2张)
- Fig07 - 基准放电4联图(SOC/V/I/T)
- Fig08 - 功率成分堆叠面积图
第四部分:场景分析(3张)
- Fig09 - 多场景对比(标注GPS影响)
- Fig10 - 龙卷风灵敏度排名
- Fig11 - 双参数热力图(温度×信号)
第五部分:不确定性(2张)
- Fig12 - 蒙特卡洛意大利面图(N=100)
- Fig13 - 生存/可靠性曲线
第六部分:长期影响(2张)
- Fig14 - 全生命周期老化(SOH&TTE)
- Fig15 - 用户建议雷达图
快速开始
1. 安装依赖
pip install -r requirements.txt
注意: Graphviz需要单独安装系统级可执行文件:
- Windows: https://graphviz.org/download/
- 安装后将
bin/目录添加到系统PATH
2. 生成所有图像
python run_all_figures.py
3. 查看输出
- 图像:
figures/目录(每张图有PDF和PNG两种格式) - 验证报告:
artifacts/figure_build_report.json
配置说明
所有参数在 config.yaml 中定义:
global:
seed: 42 # 随机种子(确保可重复)
dpi: 300 # PNG分辨率
battery_params:
Q_full: 2.78 # 电池容量 (Ah)
E0: 4.2 # OCV参数
R_ref: 0.1 # 参考内阻 (Ω)
# ...更多参数
scenarios:
baseline: {...} # 基准场景
navigation: {...} # 导航场景(GPS开启)
# ...其他场景
质量保证
自动验证
- Fig03: R² ≥ 0.99
- Fig07: 电压-电流负相关(CPL特征)
- Fig09: ΔTTE标注与计算一致
- Fig13: 生存曲线单调递减
输出标准
- 所有图像300 DPI
- PDF矢量格式 + PNG光栅格式
- Times New Roman字体
- 统一配色方案
特色功能
1. 确定性输出
- 固定随机种子
- 明确的rcParams设置
- 无系统时间依赖
2. GPS影响可视化
- Fig09: 专门标注导航场景的ΔTTE
- Fig15: GPS最佳实践建议
3. 多维度分析
- Fig11: 温度×信号耦合效应
- Fig12: 蒙特卡洛不确定性
- Fig14: 多周期老化预测
4. 数据完整性
- 所有数据从config读取
- 无硬编码路径
- 缺失配置时清晰报错
使用场景
论文写作
- 第1-2节引用 Fig01-02(架构)
- 第3节引用 Fig03-06(建模)
- 第7节引用 Fig07-08(基准)
- 第8-9节引用 Fig09-11(场景)
- 第10节引用 Fig12-13(UQ)
- 第11节引用 Fig14(老化)
- 第12节引用 Fig15(建议)
演示汇报
- 使用PDF格式(矢量,放大无损)
- 关键图:Fig03(验证), Fig09(GPS), Fig12(UQ)
调试验证
- 检查
figure_build_report.json - 所有指标一目了然
常见问题
Q: Graphviz图像不生成?
A: 确保Graphviz可执行文件在PATH中,运行 dot -V 测试。
Q: 如何修改参数?
A: 编辑 config.yaml,重新运行 run_all_figures.py。
Q: 如何单独生成某一张图?
import yaml
from fig03_ocv_fitting import make_figure
config = yaml.safe_load(open('config.yaml'))
result = make_figure(config)
print(result['computed_metrics'])
Q: 图像风格如何统一?
A: 所有脚本都调用 plot_style.set_oprice_style()。
技术细节
数据生成策略
- Fig03-04, 07-08: 基于物理模型的确定性数据
- Fig09: 多场景仿真对比
- Fig12-13: 蒙特卡洛随机采样
- Fig14: 老化模型外推
验证逻辑
见 validation.py:
- 文件存在性检查
- 尺寸非零检查
- 图表特定指标检查
模块化设计
每个图脚本独立,结构一致:
def make_figure(config):
# 1. 设置样式
set_oprice_style()
# 2. 生成数据
# ...
# 3. 绘图
# ...
# 4. 保存
save_figure(fig, output_base)
# 5. 返回结果
return {
"output_files": [...],
"computed_metrics": {...},
"validation_flags": {...},
"pass": True/False
}
版本历史
- v2.0 (2026-02-02): 完整15图系统,O奖级质量
- v1.0: 初始ZJ版本(仅Fig03, Fig07)
许可与引用
本代码为MCM 2026竞赛准备,遵循竞赛规则。
生成日期: 2026年2月2日
目标: O Prize (Outstanding Winner)
团队: MCM 2026 Problem A