Expand description
CR-FM-NES is a derivative free optimiser developed by Masahiro Nomura and Isao Ono specifically for high dimensional black-box problems. This implementation is a translation of the fast-cma-es library implementation by Dietmar Wolz from cpp/eigen to nalgebra.
Similar to CMA-ES and NES optimisers at its core is sampling of a multivariate normal distribution. To allow use on high dimensional problems the covariance matrix is approximated by a simplified form to reduce the time and space complexity:
C = sigma*sigma*D(I + v*v_T)*D
This is similar to the VD-CMA optimiser where D is a diagonal scaling matrix, v is a principal component vector, and sigma is the size of the sampling distribution.
These along with the mean position vector m are gradually adjusted based on feedback from evaluations of samples by the user supplied objective function.
This optimiser includes features for better behaviour on constrained problems. The user can be indicate that a sample falls outside the feasible region by returning a function evaluation of f64::INFINITY and learning rates will be adapted for that trial accordingly.
An Ask-Tell interface is exposed allowing arbitrary stopping criteria to be implemented, and allowing the optimiser to be wrapped in a struct which provides stopping criteria, evaluation looping, or BIPOP functionality.
Modules§
- test_
functions - These optimisation test functions have been copied from the now defunct argmin-testfunctions crate by Stefan Kroboth.
Structs§
- Crfmnes
Optimizer - High-dimension black box optimiser with an ask-tell interface.
- Trial
- The next set of trial values to be evaluated by the user.
Enums§
- Trial
Error - Error types potentially returned by
Trial::tell.
Functions§
- rec_
lamb - Recommended lambda for a given dim size for typical problems.