|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
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
@Deprecated public class CMAESOptimizer
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 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 function evaluations. On difficult problems the complete optimization (a single run) is expected to take roughly between and 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.
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 |
---|
public static final int DEFAULT_CHECKFEASABLECOUNT
checkFeasableCount
: 0.
public static final double DEFAULT_STOPFITNESS
stopFitness
: 0.0.
public static final boolean DEFAULT_ISACTIVECMA
isActiveCMA
: true.
public static final int DEFAULT_MAXITERATIONS
maxIterations
: 30000.
public static final int DEFAULT_DIAGONALONLY
diagonalOnly
: 0.
public static final RandomGenerator DEFAULT_RANDOMGENERATOR
random
.
Constructor Detail |
---|
public CMAESOptimizer()
lambda
must be
passed with the call to optimize
(whereas in the current code it is set to an undocumented value).
public CMAESOptimizer(int lambda)
lambda
must be
passed with the call to optimize
(whereas in the current code it is set to an undocumented value)..
lambda
- Population size.@Deprecated public CMAESOptimizer(int lambda, double[] inputSigma)
lambda
and inputSigma
must be
passed with the call to optimize
.
lambda
- Population size.inputSigma
- Initial standard deviations to sample new points
around the initial guess.@Deprecated public CMAESOptimizer(int lambda, double[] inputSigma, int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics)
SimpleValueChecker.SimpleValueChecker()
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.@Deprecated public CMAESOptimizer(int lambda, double[] inputSigma, int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)
lambda
and inputSigma
must be
passed with the call to optimize
.
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.public CMAESOptimizer(int maxIterations, double stopFitness, boolean isActiveCMA, int diagonalOnly, int checkFeasableCount, RandomGenerator random, boolean generateStatistics, ConvergenceChecker<PointValuePair> checker)
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.Method Detail |
---|
public List<Double> getStatisticsSigmaHistory()
public List<RealMatrix> getStatisticsMeanHistory()
public List<Double> getStatisticsFitnessHistory()
public List<RealMatrix> getStatisticsDHistory()
protected PointValuePair optimizeInternal(int maxEval, MultivariateFunction f, GoalType goalType, OptimizationData... optData)
optimizeInternal
in class BaseAbstractMultivariateOptimizer<MultivariateFunction>
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:
protected PointValuePair doOptimize()
doOptimize
in class BaseAbstractMultivariateOptimizer<MultivariateFunction>
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |