Initial commit

This commit is contained in:
ChuXun
2026-02-16 21:52:26 +08:00
commit 18ce59bec7
334 changed files with 35333 additions and 0 deletions

237
A题/ZJ_v2/README.md Normal file
View File

@@ -0,0 +1,237 @@
# 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