Skip to content

NTmuir/NTM_Physical_Based_Battery_Model

Repository files navigation

Physical_Based_Battery_Model

MSc repository for a PSO Optimisation for a DFN model coded in Julia (PETLION.jl x Metaheurtics.jl)

See the running code section about how to run Julia code - Julia 1.6.4 or later required

Thesis is attached here

Background

This project looks into the data-driven techniques used for improving Physical Battery Models (PBM). In order to create a PBM there are 26 parameters which drive the output of terminal voltage for a cell using a DFN model. The cost and time required to obtain these values experimentally is significant and still does come short on truly fitting OCV in high dynamic cases, so being able to optimise these experimentally obtained values can improve the fitness of terminal voltage.

These 26 parameters have different levels of sensitivity for how they impact terminal voltage behaviour, so understanding the strongest parameters to target can help reduce the computational speed to get a high fitting result.

The Particle Swarm Optimisation (PSO) uses artificial lives of a population of particles to hone into the global optimal result for a specified objective function (Voltage RMSE).

Methodology

A One at Time (OAT) Sensitivity Analysis was conducted to ensure the 6 strongest parameters to build into the PSO, in where it would prove RMSE is suitable for an optimiser. The overall method for combining the DFN to PSO is presented below:

image

Results - OAT SI

The RMSE Terminal Voltage for 6 strongest parameters are below which shows good reduced RMSE to Chen2020 Identified Parameters with PETLION:

image

Which presented the following rank of Sensitivity Index (SI):

image

This confirms that Cathode Thickness (Lp) is the most Sensitive to Terminal Voltage Response.

Results - PSO DFN (Virtual Model Validation)

Running a simulation where it is comparing with a PETLION Baseline of a GITT cycle where it is solely optimising Lp, the PSO can minimize RMSE to accurately reproduce the value of Lp without the prior information of the value:

anim- l_p convergence

This was repeated on the 6 parameters and shows clearly the PSO can identify parameters when doing one parameter at a time with just virtual data:

image

Now the challenge is to do it with a data-driven approach!

Results - PSO DFN (Real Data Validation)

This was fed with the WLTP drive cycle with all 6 parameters as unknowns to show how robust it is at fitting OCV and adapting parameters to achieve this, below shows a comparison of the Chen2020 response to the PSO driven response:

image

This yielded a 38% improvement in fitness of RMSE voltage which is clearly evident in capturing the dynamics! Summarized below is the change in parameter values:

image

Running Code (Temporary)

Post submission will make a package for all the functions under a new branch!

To obtain the PETLION library of the LGM50

import Pkg; Pkg.add("https://github.com/NTmuir/PETLION.jl.git")

To add the PSO package see Metaheuristics.jl to add package

Then load the OAT.jl function and Run PSO_tester_PETLION_real_data_WLTP.jl

To see validation data run DriveCycle Comparison.jl

References

PBM tool orgin

PSO tool orgin

About

MSc repository for DFN with a PSO Optimization in Julia

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages