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

java.lang.Object
  extended by org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer<FUNC>
      extended by org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateSimpleBoundsOptimizer<MultivariateFunction>
          extended by 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:

Since:
3.0
Version:
$Id: CMAESOptimizer.java 7721 2013-02-14 14:07:13Z CardosoP $

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


Copyright © 2017 CNES. All Rights Reserved.