Open oyvindeide opened 2 weeks ago
This might be a difficult task in general, simply because there are too many possible options. The optimizers are provided via a plugin mechanism in ropt
, so there may be an arbitrary set of optimizers, and each can have multiple (sometimes many, sometimes changing) options. Same issue exists with documenting those options. This is the reason that ropt
does not implement documentation and validation of optimizer options. It is assumed that the user will consult the documentation of the optimizer and that any validation would occur when the optimizer would be called. Since ropt
is intended to be a generic backbone for implementing optimization applications (i.e. Everest) without limiting the choice of optimizer/options that should probably stay like that.
However, that is indeed less ideal for end-user applications like Everest, for instance there have been requests to document the Dakota options in Everest itself. If we want better validation/documentation in Everest, we will probably have to make a choice for the optimizers and options that are supported. That has the danger of locking the users into those optimizers/options which could inhibit more innovative use, so there should probably be some option to "escape" the validation when needed.
The implementation of this could be in Everest directly without any changes in the optimizer plugins, or we could add some schema mechanism to ropt
and the plugins. The latter is a bit more work, but it would keep Everest more agnostic of the optimizer implementation.
We need to make sure Everest has a way of validating the generic options for the
optimizer
section of the config, including the generic options that are passed to the the underlying optimizer. This probably requires implementation of some plugin functionality where the installed optimizers provide their schema.