Getting started#
The best way to get started with PyBADS is via the tutorials and worked examples. In particular, start with PyBADS Example 1: Basic usage and continue from there.
If you are already familiar with optimization problems and optimizers, you can find a summary usage below.
Summary usage#
The typical usage pipeline of PyBADS follows four steps:
Define the target (or objective) function;
Setup the problem configuration (optimization bounds, starting point, possible constraint violation function);
Initialize and run the optimization;
Examine and visualize the results.
Running the optimizer in step 3 only involves a couple of lines of code:
from pybads import BADS
# ...
bads = BADS(target, x0, lb, ub, plb, pub)
optimize_result = bads.optimize()
with input arguments:
target
: the target function, it takes as input a vector and returns its function evaluation;x0
: the starting point of the optimization problem. If it is not given, the starting point is randomly drawn from the problems bounds;lb
andub
: hard lower and upper bounds for the optimization region (can be-inf
andinf
, or bounded);plb
andpub
: plausible lower and upper bounds, that represent our best guess at bounding the region where the solution might lie;non_box_cons
(optional): a callable non-bound constraints function.
The outputs are:
optimize_result
: anOptimizeResult
which presents the most important information about the solution and the optimization problem. In particular:"x"
: the minimum point found by the optimizer;"fval"
: the value of the function at the given solution.
The optimize_result
object contains more information about the optimization solution, see the OptimizeResult class documentation.
Additional data/parameters in the target function?
In case the target
function requires additional data/parameters, they can be easily handled using an anonymous function. For example:
data = None # define your data
extra_params = None # define your function-specific parameters
def fun_for_pybads(x):
return fun(x, data, extra_params)
# Pass fun_for_pybads to PyBADS
where fun
is the function to optimize, note that fun_for_pybads
only depends on x
now, data
and extra_params
are given in the outer scope.
Examples & FAQ#
See the Examples for more detailed information. The Basic options may also be useful.
In addition, checkout the BADS FAQ page for practical recommendations, such as how to set lower_bounds and upper_bounds, and other practical insights. Even though the FAQ refers to the MATLAB version of BADS, most of the concepts still apply to PyBADS.