# Py-BOBYQA: Derivative-Free Optimizer for Bound-Constrained Minimization¶

Release: 1.1a0

Date: 03 August 2018

Author: Lindon Roberts

Py-BOBYQA is a flexible package for finding local solutions to nonlinear, nonconvex minimization problems (with optional bound 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

$\begin{split}\min_{x\in\mathbb{R}^n} &\quad f(x)\\ \text{s.t.} &\quad a \leq x \leq b\end{split}$

Full details of the Py-BOBYQA algorithm are given in our paper: C. Cartis, J. Fiala, B. Marteau and L. Roberts, Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, technical report, University of Oxford, (2018).

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.

New feature: global optimization heuristic (July 2018)! Py-BOBYQA now 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.

## Acknowledgements¶

This software was 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.