This repository contains the codes for all the model training and experiments performed in the project Path Signature-Based Life Prognostics of Li-ion Battery Using Pulse Test Data.
Common models predicting the End of Life (EOL) and Remaining Useful Life (RUL) of Li-ion cells make use of long cycling data samples. This is a bottleneck when predictions are needed for decision-making but no historical data is available. A machine learning model to predict the EOL and RUL of Li-ion cells using only data contained in a single Hybrid Pulse Power Characterization (HPPC) test is proposed. The model ignores the cell’s prior cycling usage and is validated across nine different datasets each with its cathode chemistry. A model able to classify cells on whether they have passed EOL given an HPPC test is also developed.
The graphical abstract illustrating the modelling techniques is given below:
-
Clone the repository by running
git clone https://github.com/Rasheed19/pulse-project.git
-
Navigate to the root folder, create a python virtual environment by running
python -m venv .venv
Note that Python 3.10 was used in this research but Python >= 3.10 should work.
-
Activate the virtual environment by running
source .venv/bin/activate
-
Prepare all modules and required directories by running the following:
make setup make create-required-dir
-
Download the refined data from https://acdc.alcf.anl.gov/mdf/detail/camp_2023_v3.5/ and put them in
noah_raw_data
.
After setting up the project environment as instructed above, the following pipelines can be run from the terminal:
training
pipeline provides a medium to train the three proposed models, namely,eol
,rul
, andclassification
. This pipeline is facilited by therun_train.py
entrypoint. To train theeol
model given that the downloaded data has not been loaded into a Pyhthon dictionary:python run_train.py --not-loaded --model-type eol
experiment
pipeline gives access to run the experiment that deals with the effect of varying pulse cycles on model performance. It requires two arguments--threshold-type
and--model-type
. The latter states the type of pulse threshold to use (eitherpoint
orinterval
) and the former gives the model type (eol
,rul
, orclassification
). For instance:python run_experiment.py --threshold-type point --model-type eol
leave-one-group-out
cross-validation pipeline is facilated by therun_val.py
entrypoint. This can be run for each proposed model. For the case ofeol
model:python run_val.py --model-type eol
plotting
pipeline provides a medium to generate key figures in this research. This pipeline requires that you have run all the above pipelines to generate the data needed to produce the figures. This pipeline is facilited by the entrypointrun_plot.py
:python run_plot.py
To see all the arguments or options available to any entrypoint, e.g., for training pipeline entrypoint run:
python run_train.py --help