Pre-Configured Generators in Xopt¶
A number of algorithms are implemented in Xopt using the Generator
class for
off-the-shelf usage.
Below is a
description of the different generators that are available in Xopt and their target
use cases.
RandomGenerator¶
Generates random points in the input space according to VOCS
.
Bayesian Generators¶
All of the generators here use Bayesian optimization (BO) type methods to solve single
objective, multi objective and characterization problems. Bayesian generators
incorperate unknown constrianing functions into optimization based on what is
specified in VOCS
ExpectedImprovementGenerator
: implements Expected Improvement single objective BO. Automatically balances trade-offs between exploration and exploitation and is thus useful for general purpose optimization.UpperConfidenceBoundGenerator
: implements Upper Confidence Bound single objective BO. Requires a hyperparameterbeta
that explicitly sets the tradeoff between exploration and exploitation. Default value ofbeta=2
is a good starting point. Increase \(\beta\) to prioritize exploration and decreasebeta
to prioritize exploitation.BayesianExplorationGenerator
: implements the Bayesian Exploration algorithm for function characterization. This algorithm selects observation points that maximize model uncertainty, thus picking points that maximize the information gain about the target function at each iteration. If the target function is found to be more sensative to one parameter this generator will adjust sampling frequency to adapt. Note: specifyingvocs.objective[1]
toMAXIMIZE
orMINIMIZE
does not change the behavior of this generator.MOBOGenerator
: implements Multi-Objective BO using the Expected Hypervolume Improvement (EHVI) acquisition function. This is an ideal general purpose multi-objective optimizer when objective evaluations cannot be massively parallelized (< 10 parallel evaluations).MGGPOGenerator
: implements Multi-Generation Gaussian Process Optimization using the Expected Hypervolume Improvement (EHVI) acquisition function. This is an ideal general purpose multi-objective optimizer when objective evaluations can be massively parallelized (> 10 parallel evaluations) .MultiFidelityGenerator
: implements Multi-Fidelity BO which can take advantage of lower fidelity evaluations of objectives and constraints to reduce the computational cost of solving single or multi-objective optimization problems in sequential or small scale parallel (< 10 parallel evaluations) contexts.
Evolutionary Generators¶
CNSGAGenerator
: implements Continuous Non-dominated Sorted Genetic Algorithm which as a good general purpose evolutionary algorithm used for solving multi-objective optimization problems where evaluating the objective is relatively cheap and massively parallelizable (above 5-10 parallel evaluations).
Extremum Seeking Generators¶
ExtremumSeekingGenerator
: implements the Extremum Seeking algorithm which is ideal for solving optimization problems that are suceptable to drifts.
Scipy Generators¶
These generators serve as wrappers for algorithms implemented in scipy.
- NelderMeadGenerator
: implements Nelder-Mead (simplex) optimization.
RCDS Generators¶
RCDSGenerator
: implements the RCDS algorithm. RCDS could be applied in noisy online optimization scenarios
Custom Generators¶
Any general algorithm can be implemented by subclassing the abstract Generator
class and used in the Xopt framework. If you implement a generator for your use case
please consider opening a pull request so that we can add it to Xopt!