Generator Standard (GeST)
This repository is an effort to standardize the interface of the generators in optimization libraries such as:
The objective of this effort is for these different libraries to be able to use each other’s generators with little effort.
Examples:
Using
libEnsemblegenerators inOptimas: APOSMM NLopt - IBCDFOUsing
Xoptgenerators inOptimas: Multiple ExamplesUsing
Xoptgenerators inlibEnsemble: ExpectedImprovement - (with Xopt-style sim)Using
Optimasgenerators inlibEnsemble: Multi-Fidelity Ax GeneratorUsing
libEnsemblegenerators inXopt: APOSMM Generator
Definitions
Generator:
A generator is an object that recommends points to be evaluated in an optimization. It can also receive data (evaluations from past or ongoing 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_ffunction, and is not itself “workflow” software.Variables, Objectives, Constraints (VOCS):
A
VOCSis an object that specifies the names and types of components of the optimization problem that will be used by the generator. Each generator will validate that it can handle the specified set of variables, objectives, constraints, etc.
Specification of the standard
In order to conform to the standard, a given optimization library (e.g. Xopt, optimas, libEnsemble) must define the classes documented below, and their corresponding methods:
This is best done by subclassing the abstract classes defined in the Python package gest-api, which can be installed with:
pip install gest-api