Class CMAESOptimizer


  • public class CMAESOptimizer
    extends MultivariateOptimizer
    An implementation of the active Covariance Matrix Adaptation Evolution Strategy (CMA-ES) for non-linear, non-convex, non-smooth, global function minimization.

    The CMA-Evolution Strategy (CMA-ES) is a reliable stochastic optimization method which should be applied if derivative-based methods, e.g. quasi-Newton BFGS or conjugate gradient, fail due to a rugged search landscape (e.g. noise, local optima, outlier, etc.) of the objective function. Like a quasi-Newton method, the CMA-ES learns and applies a variable metric on the underlying search space. Unlike a quasi-Newton method, the CMA-ES neither estimates nor uses gradients, making it considerably more reliable in terms of finding a good, or even close to optimal, solution.

    In general, on smooth objective functions the CMA-ES is roughly ten times slower than BFGS (counting objective function evaluations, no gradients provided). For up to N=10 variables also the derivative-free simplex direct search method (Nelder and Mead) can be faster, but it is far less reliable than CMA-ES.

    The CMA-ES is particularly well suited for non-separable and/or badly conditioned problems. To observe the advantage of CMA compared to a conventional evolution strategy, it will usually take about 30 N function evaluations. On difficult problems the complete optimization (a single run) is expected to take roughly between 30 N and 300 N2 function evaluations.

    This implementation is translated and adapted from the Matlab version of the CMA-ES algorithm as implemented in module cmaes.m version 3.51.

    For more information, please refer to the following links:

    • Constructor Detail

      • CMAESOptimizer

        public CMAESOptimizer​(int maxIterations,
                              double stopFitness,
                              boolean isActiveCMA,
                              int diagonalOnly,
                              int checkFeasableCount,
                              RandomGenerator random,
                              boolean generateStatistics,
                              ConvergenceChecker<PointValuePair> checker)
        Parameters:
        maxIterations - Maximal number of iterations.
        stopFitness - Whether to stop if objective function value is smaller than stopFitness.
        isActiveCMA - Chooses the covariance matrix update method.
        diagonalOnly - Number of initial iterations, where the covariance matrix remains diagonal.
        checkFeasableCount - Determines how often new random objective variables are generated in case they are out of bounds.
        random - Random generator.
        generateStatistics - Whether statistic data is collected.
        checker - Convergence checker.