Optimization backends

EVEREST offers various optimization backends that allow the user a wide selection of low-level optimization algorithms to perform ensemble optimization. Most of the options that can be set in the optimization section will be implemented by all algorithms. These options are documented in the section Keyword reference. In addition to these standard option it is possible to pass generic options via the options keyword. To find the generic options that are supported by a backend, consult their documentation.

Out of the box, EVEREST supports Dakota and SciPy backends.

The Dakota backend

The Dakota backend is based on the Dakota optimization package. Information on two commonly used algorithms (optpp_q_newton and conmin_mfd) can be found in Optimization algorithms.

Important

For more information regarding specific optimizer settings please refer to the official Dakota manual. To find the algorithms and options that are supported in EVEREST, consult the manual of the corresponding ropt plugin: ropt-dakota.

Example

optimization:
    algorithm: optpp_q_newton
    convergence_tolerance: 0.001
    constraint_tolerance: 0.001
    perturbation_num: 7
    speculative: True
    options:
        - max_repetitions = 300
        - retry_if_fail
        - classical_search 1

Note

The constraint_tolerance option used in this example is specific for Dakota, which uses it to determine if output constraints are violated.

The SciPy backend

The SciPy backend is based on the optimization algorithms implemented in the SciPy package.

Important

For more information regarding specific optimizer settings please refer to the scipy.optimize manual. To find the algorithms and options that are supported in EVEREST, consult the ropt manual: https://scipy.org/.

Example

optimization:
    backend: scipy
    algorithm: SLSQP
    convergence_tolerance: 0.001
    perturbation_num: 7
    speculative: True
    backend_options:
        ftol: 1e-5
        disp: True