cma_es function

Covariance matrix adapting evolutionary strategy

Covariance matrix adapting evolutionary strategy

Global optimization procedure using a covariance matrix adapting evolutionary strategy.

cma_es(par, fn, ..., lower, upper, control=list()) cmaES(...)

Details

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:

  • fnscale: An 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.

  • maxit: The maximum number of iterations. Defaults to 100D2100*D^2, where DD is the dimension of the parameter space.

  • stopfitness: Stop if function value is smaller than or equal to stopfitness. This is the only way for the CMA-ES to converge .

  • keep.best: return the best overall solution and not the best solution in the last population. Defaults to true.

  • sigma: Initial variance estimates. Can be a single number or a vector of length DD, where DD is the dimension of the parameter space.

  • mu: Population size.

  • lambda: Number of offspring. Must be greater than or equal to mu.

  • weights: Recombination weights

  • damps: Damping for step-size

  • cs: Cumulation constant for step-size

  • ccum: Cumulation constant for covariance matrix

  • vectorized: Is the function fn vectorized?

  • ccov.1: Learning rate for rank-one update

  • ccov.mu: Learning rate for rank-mu update

  • diag.sigma: Save current step size sigmasigma

     in each iteration.
    
  • diag.eigen: Save current principle components of the covariance matrix CC in each iteration.

  • diag.pop: Save current population in each iteration.

  • diag.value: Save function values of the current population in each iteration.

Returns

cma_es: A list with components:

  • par: The best set of parameters found.

  • value: The value of fn corresponding to par.

  • counts: A two-element integer vector giving the number of calls to fn. The second element is always zero for call compatibility with optim.

  • convergence: An integer code. 0 indicates successful convergence. Possible error codes are

     - **`1`**: indicates that the iteration limit `maxit`
            
            had been reached.
    
  • message: Always set to NULL, provided for call compatibility with optim.

  • diagnostic: List containing diagnostic information. Possible elements are:

     - **sigma**: Vector containing the step size $sigma$
            
            for each iteration.
     - **eigen**: $d * niter$ matrix containing the principle components of the covariance matrix $C$.
     - **pop**: An $d * mu * niter$ array containing all populations. The last dimension is the iteration and the second dimension the individual.
     - **value**: A $niter x mu$ matrix containing the function values of each population. The first dimension is the iteration, the second one the individual.
     
     These are only present if the respective diagnostic control variable is set to `TRUE`.
    

See Also

extract_population

References

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

Author(s)

Olaf Mersmann olafm@statistik.tu-dortmund.de and David Arnu david.arnu@tu-dortmun.de

Arguments

  • par: Initial values for the parameters to be optimized over.
  • fn: 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: Lower bounds on the variables.
  • upper: Upper bounds on the variables.
  • control: A list of control parameters. See Details .
  • Maintainer: Olaf Mersmann
  • License: GPL-2
  • Last published: 2022-03-18

Useful links