This repository provides code for Higher-Order Bayesian Optimization (HOBO) — a framework for optimizing functions for which derivative information (gradients and Hessians) is available, e.g., through adjoint or automatic differentiation.
The code constructs a Gaussian Process (GP) surrogate model from available training data:
- 0th order: inputs and function value observations
- 1st order: inputs with function values and gradients
- 2nd order: inputs with function values, gradients, and Hessians
The surrogate model guides sampling in the design space via an acquisition function, which determines where to sample next. The objective is to efficiently identify extrema of the underlying function by leveraging higher-order information.
HOBO enables global optimization of functions for which derivative observations (currently up to second order) can be obtained.
The structure is designed to be general-purpose and adaptable to different optimization problems.
hobo/– Core implementationhobo_config/config_defaults.py: main configuration options
tutorials/– Example scripts and demostutorials/hobo_demo.py: recommended starting point
hobo/hobo_test_functions/– Analytical test functions for benchmarking
HOBO builds upon:
- BoTorch – Bayesian optimization framework
- GPyTorch – Gaussian Process modeling
- PyTorch – automatic differentiation backend
To install HOBO as a Python package:
git clone https://github.com/mreumi/HOBO.git
cd HOBO
pip install -e .After installation, you can import HOBO as:
import hoboAll settings are controlled through the configuration system in
hobo/hobo_config/config_defaults.py.
For a quick start, run the demo:
python tutorials/hobo_demo.pyIf you use this code in your research, please cite:
Reumschüssel, J. M., et al. (2025).
Shape Optimization for Control of Coherent Structures using Linear Analysis and Higher-Order Bayesian Optimization.
Journal of Computational Physics.
DOI: to be determined
Developed and maintained by Moritz Reumschüssel
For questions or discussions, please contact: reumschuessel@tu-berlin.de