bofire  by experimental-design

Framework for Bayesian optimization and experimental design

Created 3 years ago
381 stars

Top 74.7% on SourcePulse

GitHubView on GitHub
Project Summary

BoFire provides a comprehensive Python framework for experimental design and black-box optimization, targeting researchers, data scientists, and engineers. It aims to solve complex real-world challenges in areas like reaction optimization and digital twins by offering advanced Bayesian optimization and Design of Experiments (DoE) capabilities. The framework empowers users to efficiently explore complex search spaces and optimize multi-objective problems.

How It Works

BoFire handles mixed continuous, discrete, and categorical parameter spaces, separating objectives from outputs and supporting various specific and generic constraints, including black-box output constraints. It offers single and multi-objective Bayesian optimization, leveraging built-in chemical encodings and kernels for molecular problems. A novel LLMStrategy allows candidate proposal via prompting large language models, beneficial for cold starts. The framework also supports flexible DoEs, sampling methods for constrained spaces, and seamless RESTful API integration through serialization.

Quick Start & Requirements

  • Primary install: pip install bofire[optimization] for basic Bayesian optimization features.
  • Prerequisites: Depends on BoTorch, which in turn depends on PyTorch.
  • Links: Official documentation and examples are available at https://experimental-design.github.io/bofire/.

Highlighted Details

  • Supports mixed continuous, discrete, and categorical parameter spaces.
  • Features an agentic LLMStrategy for proposing candidates by prompting large language models.
  • Actively used by hundreds of users across leading organizations like Agilent, BASF, Bayer, Boehringer Ingelheim, and Evonik.
  • Includes built-in chemical encodings and kernels to enhance surrogate model performance for optimization problems involving molecules.

Maintenance & Community

The project outlines contributing guidelines and encourages users to report issues. Contributions are accepted under the same license as the project. Specific community channels (e.g., Discord, Slack) or a public roadmap are not detailed in the provided README.

Licensing & Compatibility

  • License: BSD 3-Clause License.
  • Compatibility: The BSD 3-Clause license is generally permissive for commercial use and integration into closed-source projects.

Limitations & Caveats

The project follows a versioning scheme (BIGRELEASE.MAJOR.MINOR) where BIGRELEASE and MAJOR releases may introduce breaking API changes. The doe subpackage specifically supports only continuous design variables, while optimization algorithms may support non-continuous ones.

Health Check
Last Commit

12 hours ago

Responsiveness

Inactive

Pull Requests (30d)
14
Issues (30d)
4
Star History
4 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.