Py-BOBYQA: Derivative-Free Optimizer for Bound-Constrained Minimization
Release: 1.5.0
Date: 16 September 2024
Author: Lindon Roberts
Py-BOBYQA is a flexible package for finding local solutions to nonlinear, nonconvex minimization problems (with optional bound and other convex constraints), without requiring any derivatives of the objective. Py-BOBYQA is a Python implementation of the BOBYQA solver by Powell (documentation here). It is particularly useful when evaluations of the objective function are expensive and/or noisy.
That is, Py-BOBYQA solves
If provided, the constraints the variables are non-relaxable (i.e. Py-BOBYQA will never ask to evaluate a point outside the bounds), although the general \(x \in C\) constraint may be slightly violated from rounding errors.
Full details of the Py-BOBYQA algorithm are given in our papers:
Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, ACM Transactions on Mathematical Software, 45:3 (2019), pp. 32:1-32:41 [preprint]
Coralia Cartis, Lindon Roberts and Oliver Sheridan-Methven, Escaping local minima with derivative-free methods: a numerical investigation, Optimization, 71:8 (2022), pp. 2343-2373. [arXiv preprint: 1812.11343]
Lindon Roberts, Model Construction for Convex-Constrained Derivative-Free Optimization, arXiv preprint arXiv:2403.14960 (2024).
Please cite [1] when using Py-BOBYQA for local optimization, [1,2] when using Py-BOBYQA’s global optimization heuristic functionality, and [1,3] if using the general convex constraints \(x \in C\) functionality.
If you are interested in solving least-squares minimization problems, you may wish to try DFO-LS, which has the same features as Py-BOBYQA (plus some more), and exploits the least-squares problem structure, so performs better on such problems.
Since v1.1, Py-BOBYQA has a heuristic for global optimization (see Using Py-BOBYQA for details). As this is a heuristic, there are no guarantees it will find a global minimum, but it is more likely to escape local minima if there are better values nearby.
Py-BOBYQA is released under the GNU General Public License. Please contact NAG for alternative licensing.
Contents:
Acknowledgements
This software was initially developed under the supervision of Coralia Cartis, and was supported by the EPSRC Centre For Doctoral Training in Industrially Focused Mathematical Modelling (EP/L015803/1) in collaboration with the Numerical Algorithms Group. Development of Py-BOBYQA has also been supported by the Australian Research Council (DE240100006).