This repository is an effort to standardize the interface of the generators in optimization libraries such as Xopt
, optimas
, libEnsemble
, rsopt
.
The objective of this effort is for these different libraries to be able to use each other's generators with little effort.
Example: using Xopt
generators in optimas
-
Generator:
A generator is an object that recommends points to be evaluated in an optimization. It can also receive data (evaluations from past or on-going optimization), which helps it make more informed recommendations.
Note: The generator does not orchestrate the overall optimization (e.g. dispatch evaluations, etc.). As such, it is distinct from
libEnsemble
'sgen_f
function.*Examples:
Xopt
: here is the generator for the Nelder-Mead method. All Xopt generators implement the methodsgenerate
(i.e. make recommendations) andadd_data
(i.e. receive data).optimas
: here is the base class for all generators. It implements the methodsask
(i.e. make recommendations) andtell
(i.e. receive data).
Each type of generator (e.g., Nelder-Nead, different flavors of GA, BO, etc.) will be a Python class that defines the following methods:
-
Constructor:
The constructor will include variable positional and keyword arguments to accommodate the different options that each type of generator has.
-
ask()
:Returns set of points in the input space, to be evaluated next. TBD: how many points? Which (array) format for the returned data?
-
tell( X )
:Feeds data (past evaluations) to the generator TBD: which (array) format for X?