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;lbandub: hard lower and upper bounds for the optimization region (can be-infandinf, or bounded);plbandpub: 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: anOptimizeResultwhich 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.