Skip to content

pybop-team/PyBOP

Repository files navigation

The PyBOP logo.

Python Battery Optimisation and Parameterisation

Scheduled Contributors Python Versions from PEP 621 TOML Codecov License Open in Colab nbviewer Static Badge Releases

Main Branch Examples Develop Branch Examples

PyBOP provides tools for the parameterisation and optimisation of battery models, using both Bayesian and frequentist approaches, with example workflows to assist the user. PyBOP can be used to parameterise various battery models, including the electrochemical and equivalent circuit models available in PyBaMM.

📌 PyBOP v25.10 presents a major restructure of PyBOP's base classes. We move from setting up a model, problem, cost, then optimiser to defining a simulator, cost, problem, and then optimiser. A pybop.pybamm.Simulator is designed to simulate a pybamm.BaseModel. Optimisation parameters can be passed through a pybamm.ParameterValues class. To understand how to update your use of PyBOP, please take a look at the example notebooks and scripts.

A diagram showing the PyBOP logo surrounded by connections to experimental data as an input, forward simulations provided by PyBaMM, results for parameteriation and design optimisation, as well as funding bodies (the Faraday Institution, EU IntelLiGent and DigiBatt projects).

A diagram showing the main PyBOP classes: the Simulator and Cost, which together define the optimisation Problem, and the Optimiser or Sampler which generates the Result.

💻 Installation

Within your virtual environment, install PyBOP:

pip install pybop

To install the most recent state of PyBOP, install from the develop branch,

pip install git+https://github.com/pybop-team/PyBOP.git@develop

To install a previous version of PyBOP, use the following template and replace the version number:

pip install pybop==v24.3

To check that PyBOP is installed correctly, run one of the examples in the following section. For a development installation, see the Contribution Guide. More installation information is available in our documentation and the extended installation instructions for PyBaMM.

💡 Use Cases

PyBOP has two intended uses:

  1. Parameter inference from battery test data.

  2. Design optimisation under battery manufacturing/use constraints.

These include a wide variety of optimisation problems that require careful consideration due to the choice of battery model, data availability and/or the choice of design parameters.

Publications

Please take inspiration from the following journal articles which show how PyBOP is being used for research:

Jupyter Notebooks

Explore our example notebooks for hands-on demonstrations:

Python Scripts

Find additional script-based examples in the examples directory:

Grouped Models

In addition to the models available in PyBaMM, PyBOP currently hosts some grouped-parameter versions of common battery models which are purpose-built for parameter esimation and can be found under models.

👉 Code of Conduct

PyBOP aims to foster a broad consortium of developers and users, building on and learning from the success of the PyBaMM community. Our values are:

  • Inclusivity and fairness (those who wish to contribute may do so, and their input is appropriately recognised)

  • Interoperability (modularity for maximum impact and inclusivity)

  • User-friendliness (putting user requirements first via user-assistance & workflows)

📃 License

PyBOP is released under the BSD 3-Clause License.

🌟 Contributing

We would like to thank all contributors to PyBOP. Contributions are welcome! See CONTRIBUTING.md for ways to get started.

The original PyBOP developers were supported by research funding from the Faraday Institution, UK Research and Innovation, and Horizon Europe IntelLiGent Consortium.

About

A parameterisation and optimisation package for battery models.

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 14