基于实验数据标定的 COMSOL 电化学-热耦合模型,结合机器学习代理模型(GPR)与 NSGA-II 遗传算法,对磷酸铁锂(LFP)电池的**比能量(SE)—比功率(SP)**进行多目标优化,求解 Pareto 前沿。
储能/动力电池的设计本质是在比能量(续航)与比功率(倍率性能)之间权衡,二者构成的 Ragone 图是评价电池性能的核心工具。全物理模型(COMSOL)精度高但单次仿真耗时长,难以直接用于大规模寻优。
本项目的工作链路:
实验放电曲线(283/293/303K) ──标定──▶ COMSOL 电化学-热耦合模型
│
▼
参数化扫描(C_rate / 电极厚度 / 孔隙率 → SE, SP)
│
▼
机器学习代理模型(Lasso / GPR 等对比,最终选用 GPR)
│
▼
NSGA-II 多目标优化 ──▶ SE–SP Pareto 前沿
│
▼
代理模型预测 vs COMSOL 仿真 验证
- 设计变量(4 个):
C_rate(放电倍率)、L_pos(正极厚度)、epss_neg/epss_pos(负/正极孔隙率) - 优化目标(2 个):
SE比能量 (Wh/kg)、SP比功率 (W/kg)
battery_optimization/
├── codes/ # 全部 Python 脚本
│ ├── 01_实验模型对比.py # 实验 vs COMSOL 放电曲线对比 + 设计数据相关性分析
│ ├── 02_机器学习模型.py # lazypredict 多模型批量对比 + 性能热力图
│ ├── 03_gpr_model.py # 高斯过程回归(GPR)代理模型训练,输出 model_param/*.pkl
│ ├── lasso_model.py # Lasso/ElasticNet 对照模型(可选)
│ ├── 04_nsga优化.py # 基于 GPR 的 NSGA-II 多目标优化,输出 Pareto 解
│ ├── 05_pareto解验证vsCOMSOL.py # 代理模型 Pareto 解 vs COMSOL 仿真验证(拉贡图)
│ ├── NSGAII.py # NSGA-II 算法实现(非支配排序/拥挤距离/交叉变异)
│ └── image_annotated_heatmap.py # 自定义热力图绘制工具(供 02 调用)
├── experiment_data/ # 实验数据(COMSOL 标定用,源自王乾坤博士论文图3-12)
│ ├── data.xlsx # 处理后的实测与 COMSOL 标定后放电曲线(exp / sim 两个 sheet)
│ ├── 283K.png / 293K.png / 303K.png # 三个温度下的实验放电曲线图
├── results/ # 结果图表与 COMSOL 扫描数据
│ ├── 设计实验结果_comsol.xlsx # COMSOL 参数化扫描结果(4 设计变量 → SE, SP),训练集来源
│ ├── comsol_pareto.xlsx # COMSOL 计算的 Pareto 候选点(A/B/C),验证用
│ ├── model_param/ # GPR 模型与归一化器(.pkl,由 03 生成,未入库)
│ ├── df_10C.csv / df_13C.csv # NSGA-II 求得的 Pareto 解集
│ ├── fig1.png … fig6c.png # 论文用结果图
│ ├── gpr.png / fig5.png / 10C.png / 13C.png / 10C_variables.png / comsol vs ML.png …
│ └── A.txt / B.txt / C.txt # 三个代表性设计点坐标
├── requirements.txt
├── LICENSE
└── README.md
说明:
results/model_param/*.pkl为训练中间产物,已加入.gitignore,需由03_gpr_model.py重新生成(见下方复现步骤)。
- Python ≥ 3.9(脚本头注明 Spyder 环境,开发于 Python 3.11)
- 安装依赖:
pip install -r requirements.txt主要依赖:numpy pandas matplotlib seaborn scikit-learn lazypredict joblib openpyxl。
⚠️ 版本坑:02_机器学习模型.py调用了matplotlib.cm.get_cmap,该 API 自 matplotlib 3.7 弃用、3.9 起被移除。requirements.txt已锁定matplotlib<3.9,请勿升级到 3.9+,否则该脚本会报AttributeError。此外,COMSOL 电化学-热耦合模型本身需在外部 COMSOL Multiphysics 软件中搭建与运行,本仓库不包含 COMSOL 工程文件,仅收录其参数化扫描的导出结果(
results/设计实验结果_comsol.xlsx)。
各脚本中数据/输出路径当前为开发机的绝对路径,形如:
path = r'E:\inc\case\拉贡图优化\实验数据\data.xlsx'
path2 = r'E:\inc\case\拉贡图优化\results\设计实验结果_comsol.xlsx'迁移到本仓库后,请将所有脚本里的 E:\inc\case\拉贡图优化\ 前缀替换为本仓库根目录,并按下表对应关系调整子路径:
| 脚本 | 读取 | 写出 |
|---|---|---|
01 |
experiment_data/data.xlsx、results/设计实验结果_comsol.xlsx |
(弹窗显示图像) |
02 |
results/设计实验结果_comsol.xlsx |
results/fig5.png、out.png |
03 |
results/设计实验结果_comsol.xlsx |
results/model_param/best_model.pkl、scaler_x.pkl、scaler_y.pkl、results/gpr.png |
lasso_model |
results/设计实验结果_comsol.xlsx |
(仅显示图像) |
04 |
results/model_param/*.pkl |
results/df_10C.csv、df_13C.csv |
05 |
results/model_param/*.pkl、results/comsol_pareto.xlsx |
(显示拉贡图) |
后续可改为相对路径 / 配置文件以避免此步骤,但当前遵循"不改动业务代码"原则,仅在文档说明。
仓库目录experiment_data\comsol_design.xlsx为comsol运行的训练数据集,即设计实验结果_comsol.xlsx文件。
cd codes
python 01_实验模型对比.py # 实验 vs 仿真对比、设计数据相关性
python 02_机器学习模型.py # 多模型批量对比(产出 fig5 性能热力图)
python 03_gpr_model.py # ★ 训练 GPR,生成 model_param/*.pkl(后续步骤依赖)
python lasso_model.py # 可选:Lasso/ElasticNet 对照
python 04_nsga优化.py # NSGA-II 多目标优化,产出 Pareto 解集 csv
python 05_pareto解验证vsCOMSOL.py # 代理模型 vs COMSOL 拉贡图验证必须先运行 03 生成 .pkl,否则 04、05 会因找不到模型文件而失败。
实验放电曲线来自上海交通大学 王乾坤 博士学位论文《锂离子电池电-热耦合模型构建与优化设计研究》图 3-12,用于标定 COMSOL 电化学-热耦合模型。三个温度条件:
fig1 — 实验(散点)与 COMSOL 仿真(曲线)放电电压对比
横轴为放电时间 (min),纵轴为电池电压 (V),验证标定后模型的准确性。
注意:由于面向学习使用,电化学模型为等温模型且未系统性地标定,下图与实测对比存在较大偏差,但不影响本仓库的核心业务逻辑。

fig5 — 多模型在 SE / SP 上的性能热力图
四个子图依次为 Adjusted R²、R²、RMSE、训练耗时,行对应各候选回归模型。

gpr — 高斯过程回归预测值 vs 真实值
左:比能量 (Specific energy);右:比功率 (Specific power)。圆点为训练集、三角为测试集,内嵌图为绝对误差分布,标注 R²。

13C — 比能量–比功率 Pareto 前沿
NSGA-II 在 4 个设计变量空间内求得的非支配解集。

10C_variables — Pareto 解随各设计变量的分布
四个子图分别对应 C_rate、L_pos、epss_neg、epss_pos,双纵轴展示 SE(橙)与 SP(红)。

comsol vs ML — 拉贡图:ML 代理模型预测与 COMSOL 仿真对比
对 Better-SE / Better-SP / Moderate 三个代表性设计点,比对代理模型预测曲线与 COMSOL 散点。

更完整的结果图(含论文用大图 fig2 / fig3 / fig4 / fig6a–c 等)见
results/目录。
- 硬编码绝对路径:见 §4.1,迁移后需统一替换
E:\inc\case\拉贡图优化\前缀。 - matplotlib 版本:锁定
<3.9,原因见 §3。 - 模型中间产物:
results/model_param/*.pkl不入库,复现前先跑03。 - COMSOL 工程:本仓库不含
.mph工程文件,仅含其扫描导出的 xlsx。
若本仓库对您的研究有帮助,请引用:
- 王乾坤. 锂离子电池电-热耦合模型构建与优化设计研究[D]. 上海交通大学(博士论文,图 3-12 提供实验标定数据).
- 本仓库代码:Liu Yang, battery_optimization, 2024–2026 (MIT License).
- 代码部分:MIT License,Copyright © 2024–2026 Liu Yang。
- 实验数据 / 素材(
experiment_data/下的data.xlsx与283K/293K/303K.png):版权归王乾坤博士论文所有,本仓库仅出于学术复现目的收录,二次使用(发表论文、再分发等)请征得原作同意并按其要求引用。详见 LICENSE 末尾的"数据 / 实验素材版权声明"。


