ert
ert copied to clipboard
Improve the configuration format
Issue Over time the configuration format of Everest has become inconsistent and more complicated than necessary. Specific examples:
- Objectives use normalizations:
normalizationis used to specify a multiplication value, while constraints usescale, a divider. This is not consistent. Controls also usescale. Scaling would also be more natural for objectives, since one generally wants to divide by a know range. - In the optimization section it is currently possible to specify
optionsandbackend_options, one is a list of strings, originally used by Dakota optimizers, the other a dict, used by SciPy optimizers. With the pydantic-based parser these could easily be collapses in a single keyword (i.e.options),roptdoes this internally already. - To use alternative optimization (or sampler) backends, the
backendkeyword is used to select the plugin that provides the desired algorithms. Recent versions ofroptdo not requires this anymore, it sufficient to provide the algorithm name androptwill search for the correct plugin. Thebackendkeyword could be removed, the user does not need to know how/where the algorithm is implemented - The controls section as a
typefield. It is a required field, but is it used anywhere?
It would be desirable to update the configuration code to resolve these issues. These would be breaking changes. In the examples above the first (normalization) would be encountered by all users. The next two issues are much less likely to have been used extensively except by a few experienced users. We should consider deprecating all three, possibly maintaining support for normalization indefinitely.