## 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 CMAESOptimizerextends 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.

Since:
3.0
Version:
\$Id: CMAESOptimizer.java 1462503 2013-03-29 15:48:27Z luc \$

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
`optimize, optimize`

Methods inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer
`computeObjectiveValue, getConvergenceChecker, getEvaluations, getGoalType, getLowerBound, getMaxEvaluations, getStartPoint, getUpperBound, 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.

Constant Field Values

### DEFAULT_STOPFITNESS

`public static final double DEFAULT_STOPFITNESS`
Deprecated.
Default value for `stopFitness`: 0.0.

Constant Field Values

### DEFAULT_ISACTIVECMA

`public static final boolean DEFAULT_ISACTIVECMA`
Deprecated.
Default value for `isActiveCMA`: true.

Constant Field Values

### DEFAULT_MAXITERATIONS

`public static final int DEFAULT_MAXITERATIONS`
Deprecated.
Default value for `maxIterations`: 30000.

Constant Field Values

### DEFAULT_DIAGONALONLY

`public static final int DEFAULT_DIAGONALONLY`
Deprecated.
Default value for `diagonalOnly`: 0.

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:
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.