Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.math3.optimization.direct
Class CMAESOptimizer

    java.lang.Object
      org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer<FUNC>
          org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateSimpleBoundsOptimizer<MultivariateFunction>
              org.apache.commons.math3.optimization.direct.CMAESOptimizer

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

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

    @Deprecated
    public class CMAESOptimizer

extends BaseAbstractMultivariateSimpleBoundsOptimizer<MultivariateFunction>
implements 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:

- Matlab code
- Introduction to CMA-ES
- Wikipedia

Since:
  3.0
Version:
  $Id: CMAESOptimizer.java 1422313 2012-12-15 18:53:41Z psteitz $

Nested Class Summary
`static class` | `CMAESOptimizer.PopulationSize` Deprecated. Population size.
`static class` | `CMAESOptimizer.Sigma` Deprecated. Input sigma values.

Field Summary
`static int` | `DEFAULT_CHECKFEASABLECOUNT` Deprecated. Default value for `checkFeasableCount`: 0.
`static int` | `DEFAULT_DIAGONALONLY` Deprecated. Default value for `diagonalOnly`: 0.
`static boolean` | `DEFAULT_ISACTIVECMA` Deprecated. Default value for `isActiveCMA`: true.
`static int` | `DEFAULT_MAXITERATIONS` Deprecated. Default value for `maxIterations`: 30000.
`static RandomGenerator` | `DEFAULT_RANDOMGENERATOR` Deprecated. Default value for `random`.
`static double` | `DEFAULT_STOPFITNESS` Deprecated. Default value for `stopFitness`: 0.0.

Fields inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer
`evaluations`

Constructor Summary
`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).
`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)..
`CMAESOptimizer(int lambda, double[] inputSigma)` Deprecated. As of version 3.1: Parameters `lambda` and `inputSigma` must be passed with the call to `optimize`.
`CMAESOptimizer(int lambda, double[] inputSigma, int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics)` Deprecated. See `SimpleValueChecker.SimpleValueChecker()`
`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`.
`CMAESOptimizer(int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)` Deprecated.

Method Summary
`protected PointValuePair` | `doOptimize()` Deprecated. Perform the bulk of the optimization algorithm.
`List<RealMatrix>` | `getStatisticsDHistory()` Deprecated.
`List<Double>` | `getStatisticsFitnessHistory()` Deprecated.
`List<RealMatrix>` | `getStatisticsMeanHistory()` Deprecated.
`List<Double>` | `getStatisticsSigmaHistory()` Deprecated.
`protected PointValuePair` | `optimizeInternal(int maxEval, MultivariateFunction f, GoalType goalType, OptimizationData... optData)` Deprecated. Optimize an objective function.

Methods inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateSimpleBoundsOptimizer
`getLowerBound, getUpperBound, optimize, optimize`

Methods inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer
`computeObjectiveValue, getConvergenceChecker, getEvaluations, getGoalType, getMaxEvaluations, getStartPoint, optimize, optimizeInternal`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.commons.math3.optimization.BaseMultivariateOptimizer
`optimize`

Methods inherited from interface org.apache.commons.math3.optimization.BaseOptimizer
`getConvergenceChecker, getEvaluations, getMaxEvaluations`

Field Detail

### DEFAULT_CHECKFEASABLECOUNT

    public static final int DEFAULT_CHECKFEASABLECOUNT

  Deprecated.
  Default value for `checkFeasableCount`: 0.

  See Also:
    Constant Field Values

### DEFAULT_STOPFITNESS

    public static final double DEFAULT_STOPFITNESS

  Deprecated.
  Default value for `stopFitness`: 0.0.

  See Also:
    Constant Field Values

### DEFAULT_ISACTIVECMA

    public static final boolean DEFAULT_ISACTIVECMA

  Deprecated.
  Default value for `isActiveCMA`: true.

  See Also:
    Constant Field Values

### DEFAULT_MAXITERATIONS

    public static final int DEFAULT_MAXITERATIONS

  Deprecated.
  Default value for `maxIterations`: 30000.

  See Also:
    Constant Field Values

### DEFAULT_DIAGONALONLY

    public static final int DEFAULT_DIAGONALONLY

  Deprecated.
  Default value for `diagonalOnly`: 0.

  See Also:
    Constant Field Values

### DEFAULT_RANDOMGENERATOR

    public static final RandomGenerator DEFAULT_RANDOMGENERATOR

  Deprecated.
  Default value for `random`.

Constructor Detail

### CMAESOptimizer

    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

    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. See `SimpleValueChecker.SimpleValueChecker()`

  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 Detail

### getStatisticsSigmaHistory

    public List<Double> getStatisticsSigmaHistory()

  Deprecated.
  Returns:
    History of sigma values.

### getStatisticsMeanHistory

    public List<RealMatrix> getStatisticsMeanHistory()

  Deprecated.
  Returns:
    History of mean matrix.

### getStatisticsFitnessHistory

    public List<Double> getStatisticsFitnessHistory()

  Deprecated.
  Returns:
    History of fitness values.

### getStatisticsDHistory

    public List<RealMatrix> getStatisticsDHistory()

  Deprecated.
  Returns:
    History of D matrix.

### optimizeInternal

    protected PointValuePair optimizeInternal(int maxEval,
                                              MultivariateFunction f,
                                              GoalType goalType,
                                              OptimizationData... optData)

  Deprecated.
  Optimize an objective function.

  Overrides:
    `optimizeInternal` in class `BaseAbstractMultivariateOptimizer<MultivariateFunction>`
  Parameters:
    `maxEval` - Allowed number of evaluations of the objective function.
    `f` - Objective function.
    `goalType` - Optimization type.
    `optData` - Optimization data. The following data will be looked for:
    - `InitialGuess`
    - `CMAESOptimizer.Sigma`
    - `CMAESOptimizer.PopulationSize`
  Returns:
    the point/value pair giving the optimal value for objective function.

### doOptimize

    protected PointValuePair doOptimize()

  Deprecated.
  Perform the bulk of the optimization algorithm.

  Specified by:
    `doOptimize` in class `BaseAbstractMultivariateOptimizer<MultivariateFunction>`
  Returns:
    the point/value pair giving the optimal value of the objective function.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2013 The Apache Software Foundation. All Rights Reserved.