Optimizing Cycle Life Prediction of Lithium-ion Batteries via a Physics-Informed Model
Paper β’ 2404.17174 β’ Published
A machine learning system for predicting the Remaining Useful Life (RUL) of Li-ion batteries using Battery Management System (BMS) signals.
βββββββββββββββββββββββββββββββββββββββββββ
β BMS Signals (11 features) β
β V, I, T, R, Q_charge, Q_discharge, β
β charge_time, Ξ·_energy, Ξ·_coulombic, β
β dQ/dV, dV/dQ β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β STAGE 1: Physics-Informed Degradation β
β Estimator (Deep Neural Network) β
β ββ Arrhenius temperature gating β
β ββ Cycle positional embedding β
β ββ Monotonicity constraint loss β
β ββ Outputs: 7 degradation features β
β β’ SEI layer thickness β
β β’ Lithium inventory loss β
β β’ Active material loss (an/ca) β
β β’ Resistance growth β
β β’ Electrolyte decomposition β
β β’ Lithium plating β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β STAGE 2: RUL Predictor Ensemble β
β ββ Gradient Boosted Trees (GBT) β
β ββ Neural Network β
β ββ Weighted ensemble β
β Input: BMS + Predicted Degradation β
β Output: Remaining Useful Life (cycles) β
βββββββββββββββββββββββββββββββββββββββββββ
| Metric | Value |
|---|---|
| MAE | 111.72 cycles |
| RMSE | 140.22 cycles |
| RΒ² | 0.9215 |
| MAPE | 50.41% |
Based on electrochemical battery degradation models from the literature:
Key physics constraints in the loss function:
Combines BMS signals with predicted degradation features using an ensemble:
| Feature | Description | Unit |
|---|---|---|
| voltage | Terminal voltage | V |
| current | Charge/discharge current | A |
| temperature_measured | Cell temperature | Β°C |
| internal_resistance | Measured via pulse test | mΞ© |
| charge_capacity | Charge capacity | Ah |
| discharge_capacity | Discharge capacity | Ah |
| charge_time | Time to full charge | s |
| energy_efficiency | Round-trip energy efficiency | - |
| coulombic_efficiency | Charge/discharge ratio | - |
| dqdv_peak_height | Differential capacity peak | Ah/V |
| dvdq_peak_height | Incremental capacity peak | V/Ah |
| Feature | Description | Unit |
|---|---|---|
| cycle | Cycle number | - |
| c_rate | Charging C-rate | C |
| depth_of_discharge | Depth of discharge | - |
import torch
import numpy as np
import joblib
import json
# Load model components
config = json.load(open('config.json'))
# ... (see repository for full loading code)