Skip to content

JayWillow0/BatteryOptimization-NSGA-II

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

磷酸铁锂电池 Ragone 图多目标优化

基于实验数据标定的 COMSOL 电化学-热耦合模型,结合机器学习代理模型(GPR)与 NSGA-II 遗传算法,对磷酸铁锂(LFP)电池的**比能量(SE)—比功率(SP)**进行多目标优化,求解 Pareto 前沿。


1. 项目背景

储能/动力电池的设计本质是在比能量(续航)与比功率(倍率性能)之间权衡,二者构成的 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)

2. 目录结构

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 重新生成(见下方复现步骤)。


3. 环境与依赖

  • 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)。


4. 复现步骤

4.1 修正硬编码路径(重要)

各脚本中数据/输出路径当前为开发机的绝对路径,形如:

path = r'E:\inc\case\拉贡图优化\实验数据\data.xlsx'
path2 = r'E:\inc\case\拉贡图优化\results\设计实验结果_comsol.xlsx'

迁移到本仓库后,请将所有脚本里的 E:\inc\case\拉贡图优化\ 前缀替换为本仓库根目录,并按下表对应关系调整子路径:

脚本 读取 写出
01 experiment_data/data.xlsxresults/设计实验结果_comsol.xlsx (弹窗显示图像)
02 results/设计实验结果_comsol.xlsx results/fig5.pngout.png
03 results/设计实验结果_comsol.xlsx results/model_param/best_model.pklscaler_x.pklscaler_y.pklresults/gpr.png
lasso_model results/设计实验结果_comsol.xlsx (仅显示图像)
04 results/model_param/*.pkl results/df_10C.csvdf_13C.csv
05 results/model_param/*.pklresults/comsol_pareto.xlsx (显示拉贡图)

后续可改为相对路径 / 配置文件以避免此步骤,但当前遵循"不改动业务代码"原则,仅在文档说明。

仓库目录experiment_data\comsol_design.xlsx为comsol运行的训练数据集,即设计实验结果_comsol.xlsx文件。

4.2 运行顺序

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,否则 0405 会因找不到模型文件而失败。


5. 结果展示

5.1 实验数据与 COMSOL 模型标定

实验放电曲线来自上海交通大学 王乾坤 博士学位论文《锂离子电池电-热耦合模型构建与优化设计研究》图 3-12,用于标定 COMSOL 电化学-热耦合模型。三个温度条件:

283 K(10 °C)实验放电曲线 283K

293 K(20 °C)实验放电曲线 293K

303 K(30 °C)实验放电曲线 303K

fig1 — 实验(散点)与 COMSOL 仿真(曲线)放电电压对比 横轴为放电时间 (min),纵轴为电池电压 (V),验证标定后模型的准确性。 注意:由于面向学习使用,电化学模型为等温模型且未系统性地标定,下图与实测对比存在较大偏差,但不影响本仓库的核心业务逻辑。 fig1

5.2 机器学习模型性能对比

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

5.3 GPR 代理模型

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

5.4 NSGA-II 多目标优化

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

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

5.5 代理模型 vs COMSOL 验证

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

更完整的结果图(含论文用大图 fig2 / fig3 / fig4 / fig6a–c 等)见 results/ 目录。


6. 注意事项

  1. 硬编码绝对路径:见 §4.1,迁移后需统一替换 E:\inc\case\拉贡图优化\ 前缀。
  2. matplotlib 版本:锁定 <3.9,原因见 §3。
  3. 模型中间产物results/model_param/*.pkl 不入库,复现前先跑 03
  4. COMSOL 工程:本仓库不含 .mph 工程文件,仅含其扫描导出的 xlsx。

7. 引用

若本仓库对您的研究有帮助,请引用:

  • 王乾坤. 锂离子电池电-热耦合模型构建与优化设计研究[D]. 上海交通大学(博士论文,图 3-12 提供实验标定数据).
  • 本仓库代码:Liu Yang, battery_optimization, 2024–2026 (MIT License).

8. License

  • 代码部分MIT License,Copyright © 2024–2026 Liu Yang。
  • 实验数据 / 素材experiment_data/ 下的 data.xlsx283K/293K/303K.png):版权归王乾坤博士论文所有,本仓库仅出于学术复现目的收录,二次使用(发表论文、再分发等)请征得原作同意并按其要求引用。详见 LICENSE 末尾的"数据 / 实验素材版权声明"。

About

基于实验数据标定的 COMSOL 电化学-热耦合模型,结合机器学习代理模型(GPR)与 NSGA-II 遗传算法,对磷酸铁锂(LFP)电池的比能量(SE)—比功率(SP)进行多目标优化,求解 Pareto 前沿。

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages