Files
MCM/A题/ZJ_v2/README.md
2026-02-16 21:52:26 +08:00

238 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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张
1. **Fig01** - 宏观逻辑流程图3阶段
2. **Fig02** - 系统边界与变量交互
3. **Fig05** - 网络尾流效应示意
4. **Fig06** - CPL反馈环路机制
### 第二部分物理建模2张
5. **Fig03** - OCV曲线拟合R²≥0.99
6. **Fig04** - 内阻R₀(T,z)三维曲面
### 第三部分基准结果2张
7. **Fig07** - 基准放电4联图SOC/V/I/T
8. **Fig08** - 功率成分堆叠面积图
### 第四部分场景分析3张
9. **Fig09** - 多场景对比标注GPS影响
10. **Fig10** - 龙卷风灵敏度排名
11. **Fig11** - 双参数热力图(温度×信号)
### 第五部分不确定性2张
12. **Fig12** - 蒙特卡洛意大利面图N=100
13. **Fig13** - 生存/可靠性曲线
### 第六部分长期影响2张
14. **Fig14** - 全生命周期老化SOH&TTE
15. **Fig15** - 用户建议雷达图
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
**注意**: Graphviz需要单独安装系统级可执行文件
- Windows: https://graphviz.org/download/
- 安装后将 `bin/` 目录添加到系统PATH
### 2. 生成所有图像
```bash
python run_all_figures.py
```
### 3. 查看输出
- **图像**: `figures/` 目录每张图有PDF和PNG两种格式
- **验证报告**: `artifacts/figure_build_report.json`
## 配置说明
所有参数在 `config.yaml` 中定义:
```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. 第1-2节引用 Fig01-02架构
2. 第3节引用 Fig03-06建模
3. 第7节引用 Fig07-08基准
4. 第8-9节引用 Fig09-11场景
5. 第10节引用 Fig12-13UQ
6. 第11节引用 Fig14老化
7. 第12节引用 Fig15建议
### 演示汇报
- 使用PDF格式矢量放大无损
- 关键图Fig03验证, Fig09GPS, Fig12UQ
### 调试验证
- 检查 `figure_build_report.json`
- 所有指标一目了然
## 常见问题
**Q: Graphviz图像不生成**
A: 确保Graphviz可执行文件在PATH中运行 `dot -V` 测试。
**Q: 如何修改参数?**
A: 编辑 `config.yaml`,重新运行 `run_all_figures.py`
**Q: 如何单独生成某一张图?**
```python
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`
- 文件存在性检查
- 尺寸非零检查
- 图表特定指标检查
### 模块化设计
每个图脚本独立,结构一致:
```python
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