Feature description
I have created a methodology utilizing decomposed GPs to estimate parameters. The creation of a GP parameter in PyBop is shown as follows:
GP_options = {'Number of terms':5,'Constant mean':8,'div_arg':[[1,2],[0,2]], 'exp':False}
GP_param_neg = pybop.FoKLGP(
"Positive electrode exchange-current density [A.m-2]",
parameter_values=parameter_values, options=GP_options,
twoway=True)
new_parameters = GP_param_neg.get_parameter_values()
The rest of the workflow stays the same from here.
Motivation
Parameters are non-linear functions of the state of the cell. Utilizing decomposed GPs for model fitting is a way to capture the changes in the parameters with these state changes in ways predicting them as a constant might not be able to.
Decomposed GPs are easily implemented within PyBOPs workflow. The decomposition of the kernel function is precomputed, and only the weights of each basis function need to be sampled to evaluate a GP. These weights are created to be PyBOP.Gaussian() parameters.
Possible implementation
I have created an initial working implementation and an example scripts. The GPs showed the same accuracy as PyBOP models in experimental and simulated data sets. It was accurately able to recreate the general behavior of the Positive electrode exchange-current density [A.m-2] parameter in the Chen2020 parameter set.
Additional context
I just wanted to showcase the functionality added, see if there was any interest on PyBOP's end to further develop this implementation
https://github.com/derek-slack/PyBOP-GP-Parameter-Estimation
Feature description
I have created a methodology utilizing decomposed GPs to estimate parameters. The creation of a GP parameter in PyBop is shown as follows:
The rest of the workflow stays the same from here.
Motivation
Parameters are non-linear functions of the state of the cell. Utilizing decomposed GPs for model fitting is a way to capture the changes in the parameters with these state changes in ways predicting them as a constant might not be able to.
Decomposed GPs are easily implemented within PyBOPs workflow. The decomposition of the kernel function is precomputed, and only the weights of each basis function need to be sampled to evaluate a GP. These weights are created to be
PyBOP.Gaussian()parameters.Possible implementation
I have created an initial working implementation and an example scripts. The GPs showed the same accuracy as PyBOP models in experimental and simulated data sets. It was accurately able to recreate the general behavior of the
Positive electrode exchange-current density [A.m-2]parameter in theChen2020parameter set.Additional context
I just wanted to showcase the functionality added, see if there was any interest on PyBOP's end to further develop this implementation
https://github.com/derek-slack/PyBOP-GP-Parameter-Estimation