# PyBADS: Fast and robust black-box optimization in Python

arXiv: https://arxiv.org/abs/2306.15576 · HTML: https://mlsanity.com/paper/2306.15576/

## Key facts

- Cited by 3 papers in the map (data through 14 Oct 2026).
- Builds on 8 of its 34 references that are in the map.
- First posted on arXiv 27 Jun 2023.

## Builds on (most cited first, 8 of 8)

- [Input Warping for Bayesian Optimization of Non-stationary Functions](https://mlsanity.com/paper/1402.0929/) (2014)
- [Variational Bayesian Monte Carlo with Noisy Likelihoods](https://mlsanity.com/paper/2006.08655/) (2020)
- [Variational Bayesian Monte Carlo](https://mlsanity.com/paper/1810.05558/) (2018)
- [GPflowOpt: A Bayesian Optimization Library using TensorFlow](https://mlsanity.com/paper/1711.03845/) (2017)
- [Practical Bayesian Optimization for Model Fitting with Bayesian Adaptive Direct Search](https://mlsanity.com/paper/1705.04405/) (2017)
- [PyVBMC: Efficient Bayesian inference in Python](https://mlsanity.com/paper/2303.09519/) (2023)
- [NOMAD version 4: Nonlinear optimization with the MADS algorithm](https://mlsanity.com/paper/2104.11627/) (2021)
- [Benchmark of Bayesian Optimization and Metaheuristics for Control Engineering Tuning Problems with Crash Constraints](https://mlsanity.com/paper/2211.02571/) (2022)

## Built on by (most cited first, 3 of 3)

- [Normalizing Flow Regression for Bayesian Inference with Offline Likelihood Evaluations](https://mlsanity.com/paper/2504.11554/) (2025)
- [PMBO: Enhancing Black-Box Optimization through Multivariate Polynomial Surrogates](https://mlsanity.com/paper/2403.07485/) (2024)
- [LAGO: A Local-Global Optimization Framework Combining Trust Region Methods and Bayesian Optimization](https://mlsanity.com/paper/2603.02970/) (2026)

## Abstract (arXiv)

PyBADS is a Python implementation of the Bayesian Adaptive Direct Search (BADS) algorithm for fast and robust black-box optimization (Acerbi and Ma 2017). BADS is an optimization algorithm designed to efficiently solve difficult optimization problems where the objective function is rough (non-convex, non-smooth), mildly expensive (e.g., the function evaluation requires more than 0.1 seconds), possibly noisy, and gradient information is unavailable. With BADS, these issues are well addressed, making it an excellent choice for fitting computational models using methods such as maximum-likelihood estimation. The algorithm scales efficiently to black-box functions with up to D ≈ 20 continuous input parameters and supports bounds or no constraints. PyBADS comes along with an easy-to-use Pythonic interface for running the algorithm and inspecting its results. PyBADS only requires the user to provide a Python function for evaluating the target function, and optionally other constraints. Extensive benchmarks on both artificial test problems and large real model-fitting problems models drawn from cognitive, behavioral and computational neuroscience, show that BADS performs on par with or better than many other common and state-of-the-art optimizers (Acerbi and Ma 2017), making it a general model-fitting tool which provides fast and robust solutions.
