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
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).
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:
The RMSE Terminal Voltage for 6 strongest parameters are below which shows good reduced RMSE to Chen2020 Identified Parameters with PETLION:
Which presented the following rank of Sensitivity Index (SI):
This confirms that Cathode Thickness (Lp) is the most Sensitive to Terminal Voltage Response.
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:
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:
Now the challenge is to do it with a data-driven approach!
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:
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:
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