Class CMAESOptimizer

All Implemented Interfaces:
BaseMultivariateOptimizer<MultivariateFunction>, BaseMultivariateSimpleBoundsOptimizer<MultivariateFunction>, BaseOptimizer<PointValuePair>, MultivariateOptimizer

Deprecated.
As of 3.1 (to be removed in 4.0).

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:
Since:
3.0
  • Field Details

    • DEFAULT_CHECKFEASABLECOUNT

      public static final int DEFAULT_CHECKFEASABLECOUNT
      Deprecated.
      Default value for checkFeasableCount: 0.
      See Also:
    • DEFAULT_STOPFITNESS

      public static final double DEFAULT_STOPFITNESS
      Deprecated.
      Default value for stopFitness: 0.0.
      See Also:
    • DEFAULT_ISACTIVECMA

      public static final boolean DEFAULT_ISACTIVECMA
      Deprecated.
      Default value for isActiveCMA: true.
      See Also:
    • DEFAULT_MAXITERATIONS

      public static final int DEFAULT_MAXITERATIONS
      Deprecated.
      Default value for maxIterations: 30000.
      See Also:
    • DEFAULT_DIAGONALONLY

      public static final int DEFAULT_DIAGONALONLY
      Deprecated.
      Default value for diagonalOnly: 0.
      See Also:
    • DEFAULT_RANDOMGENERATOR

      public static final RandomGenerator DEFAULT_RANDOMGENERATOR
      Deprecated.
      Default value for random.
  • Constructor Details

    • CMAESOptimizer

      @Deprecated public CMAESOptimizer()
      Deprecated.
      As of version 3.1: Parameter lambda must be passed with the call to optimize (whereas in the current code it is set to an undocumented value).
      Default constructor, uses default parameters
    • CMAESOptimizer

      @Deprecated public CMAESOptimizer(int lambda)
      Deprecated.
      As of version 3.1: Parameter lambda must be passed with the call to optimize (whereas in the current code it is set to an undocumented value)..
      Parameters:
      lambda - Population size.
    • CMAESOptimizer

      @Deprecated public CMAESOptimizer(int lambda, double[] inputSigma)
      Deprecated.
      As of version 3.1: Parameters lambda and inputSigma must be passed with the call to optimize.
      Parameters:
      lambda - Population size.
      inputSigma - Initial standard deviations to sample new points around the initial guess.
    • CMAESOptimizer

      @Deprecated public CMAESOptimizer(int lambda, double[] inputSigma, int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics)
      Deprecated.
      Parameters:
      lambda - Population size.
      inputSigma - Initial standard deviations to sample new points around the initial guess.
      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.
    • CMAESOptimizer

      @Deprecated public CMAESOptimizer(int lambda, double[] inputSigma, int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)
      Deprecated.
      As of version 3.1: Parameters lambda and inputSigma must be passed with the call to optimize.
      Parameters:
      lambda - Population size.
      inputSigma - Initial standard deviations to sample new points around the initial guess.
      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.
    • CMAESOptimizer

      public CMAESOptimizer(int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)
      Deprecated.
      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.
      Since:
      3.1
  • Method Details