Global optimization procedure using a covariance matrix adapting evolutionary strategy.
cma_es(par, fn, ..., lower, upper, control=list())
cmaES(...)Initial values for the parameters to be optimized over.
A function to be minimized (or maximized), with first argument the vector of parameters over which minimization is to take place. It should return a scalar result.
Further arguments to be passed to fn.
Lower bounds on the variables.
Upper bounds on the variables.
A list of control parameters. See ‘Details’.
cma_es: A list with components:
The best set of parameters found.
The value of fn corresponding to par.
A two-element integer vector giving the number of calls
to fn. The second element is always zero for call
compatibility with optim.
An integer code. 0 indicates successful
convergence. Possible error codes are
1indicates that the iteration limit maxit
had been reached.
Always set to NULL, provided for call
compatibility with optim.
List containing diagnostic information. Possible elements are:
Vector containing the step size \(\sigma\) for each iteration.
\(d \times niter\) matrix containing the principle components of the covariance matrix \(C\).
An \(d\times\mu\times niter\) array containing all populations. The last dimension is the iteration and the second dimension the individual.
A \(niter \times \mu\) matrix containing the function values of each population. The first dimension is the iteration, the second one the individual.
TRUE.cma_es: Note that arguments after … must be matched exactly.
By default this function performs minimization, but it will
maximize if control$fnscale is negative. It can usually be
used as a drop in replacement for optim, but do note, that
no sophisticated convergence detection is included. Therefore you
need to choose maxit appropriately.
If you set vectorize==TRUE, fn will be passed matrix
arguments during optimization. The columns correspond to the
lambda new individuals created in each iteration of the
ES. In this case fn must return a numeric vector of
lambda corresponding function values. This enables you to
do up to lambda function evaluations in parallel.
The control argument is a list that can supply any of the
following components:
fnscaleAn overall scaling to be applied to the value
of fn during optimization. If negative,
turns the problem into a maximization problem. Optimization is
performed on fn(par)/fnscale.
maxitThe maximum number of iterations. Defaults to \(100*D^2\), where \(D\) is the dimension of the parameter space.
stopfitnessStop if function value is smaller than or
equal to stopfitness. This is the only way for the CMA-ES
to “converge”.
return the best overall solution and not the best solution in the last population. Defaults to true.
sigmaInitial variance estimates. Can be a single number or a vector of length \(D\), where \(D\) is the dimension of the parameter space.
muPopulation size.
lambdaNumber of offspring. Must be greater than or
equal to mu.
weightsRecombination weights
dampsDamping for step-size
csCumulation constant for step-size
ccumCumulation constant for covariance matrix
vectorizedIs the function fn vectorized?
ccov.1Learning rate for rank-one update
ccov.muLearning rate for rank-mu update
diag.sigmaSave current step size \(\sigma\) in each iteration.
diag.eigenSave current principle components of the covariance matrix \(C\) in each iteration.
diag.popSave current population in each iteration.
diag.valueSave function values of the current population in each iteration.
Hansen, N. (2006). The CMA Evolution Strategy: A Comparing Review. In J.A. Lozano, P. Larranga, I. Inza and E. Bengoetxea (eds.). Towards a new evolutionary computation. Advances in estimation of distribution algorithms. pp. 75-102, Springer