<< cma_ask CMA-ES Optimization Toolbox cma_optim >>

CMA-ES Optimization Toolbox >> CMA-ES Optimization Toolbox > cma_new

cma_new

Constructor for CMA-ES, a (stochastic) non-convex function minimizer

Calling Sequence

param = cma_new() // return default parameters
param = cma_new([]) // return default parameters quietly
es = cma_new(param) // return initialized CMA-ES object
[es param] = cma_new(param) // return also actual parameter setting

Parameters

param

struct (or list) of parameters. param=cma_new() returns a struct with valid field names and their default values and a short description in param.readme, param=cma_new([]) does the same quietly.

Mandatory parameters that need to be set by the user are (i) param.x0, the initial solution point (column vector) and (ii) scalar param.sigma0, the initial search standard deviation acting on param.x0, typically 1/3 of the typical variable ranges. param.opt_scaling_of_variables must be used if the variables ranges are essentially different.

param.verb controls verbosity. After the objective function is debugged and when the returned solution(s) are satisfactory, logmodulo=0 (no data saving) and displaymodulo=0 (no screen output) make the code completely quiet (and faster).

es

tlist of type 'cma', an optimizer according to OMD specifications: defined functions are X=cma_ask(es), es=cma_tell(es,X,y), and [y x]=cma_best(es) (all also starting with '%'), and the boolean field es.stop. CAVE: for the time being X is a list with lambda column vectors, see example.

es.param

struct of the actually used parameters

es.out

useful output collected in a struct (useful only after some iterations on es).

Description

Examples

// see demos/runcma.sce

// get aquired
p = cma_new();  // return (default) parameters
disp(p);        // investigate default parameters
p.readme        // display doc for parameters
p.stop          // investigate the possible and default termination criteria
clear p         // we do not need the defaults for initialization

// initialization
p.x0 = rand(10,1);  // mandatory: initial solution vector
p.sigma0 = 0.3;     // mandatory: initial standard deviation on x0
                    //    (somewhat a search range)

es = cma_new(p);  // get an cma "object", constructor call
fitfun = ...  // objective function needs to be defined

// iteration loop
while ~ cma_stop(es)
  X = cma_ask(es);  // list of solution points (column vectors)
  y = [];            // just in case
  for i = 1:length(X)
    y(i) = fitfun(X(i));    // evaluate each point
  end
  es = cma_tell(es, X, y');  // update for the next iteration
end

// output
[ybest, xbest] = cma_best(es);
printf(" \n x(1) = %f   y = %f\n", xbest(1), ybest);

for str = es.out.stopflags
  disp(' ' + str);  // display termination reasons
end

disp(es.out); // further investigate some useful output

See Also

Authors

Nikolaus Hansen

Bibliography

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.

Hansen, N. and S. Kern (2004). Evaluating the CMA Evolution Strategy on Multimodal Test Functions. Eighth International Conference on Parallel Problem Solving from Nature PPSN VIII, Proceedings, pp. 282-291, Berlin: Springer. (http://www.bionik.tu-berlin.de/user/niko/ppsn2004hansenkern.pdf)

Hansen, N., S.D. Mueller and P. Koumoutsakos (2003). Reducing the Time Complexity of the Derandomized Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). Evolutionary Computation, 11(1). (http://mitpress.mit.edu/journals/pdf/evco_11_1_1_0.pdf).

Hansen, N. and A. Ostermeier (2001). Completely Derandomized Self-Adaptation in Evolution Strategies. Evolutionary Computation, 9(2), pp. 159-195. (http://www.bionik.tu-berlin.de/user/niko/cmaartic.pdf).

Used Functions


Report an issue
<< cma_ask CMA-ES Optimization Toolbox cma_optim >>