SMOCMAES function

Steady-state Multi-Objective CMA-ES

Steady-state Multi-Objective CMA-ES

Do an iteration of population based steady state Multi-Objective Covariance Matrix Adaptation Evolution Strategy (MO-CMA-ES). The variation is using simulated binary crossover (SBX) and mutation following the CMA. The original MO-CMA-ES does not use crossover, to do this simply set crossoverProbability to zero.

SMOCMAES(parent, nObjective, fun, control = list(), ...)

Arguments

  • parent: The parent generation, an object of class cmaes_gen. The MO-CMA-ES parent is a 5 tuple: x (the design point, length = number of variable),averageSuccessRate (scalar),stepSize (scalar), evoPath (evolution path, vector, length = number of variable ),covarianceMatrix (square matrix with ncol = nrow = number of variable). The parent is then should be a vector of lists (see example).
  • nObjective: The number of objective functions. A scalar value.
  • fun: Objective function being solved.
  • control: List of parameters for CMA-ES. Available control are as follows: successProbTarget Target success probability successProbThreshold The threshold for success probability. If the average success probability is higher than this value, the success rate growth is slowed. crossoverProbability The probability of doing crossover. Should be between 0-1. Negative value will behave like a zero, and values larger than 1 will behave like 1. Default to 1. crossoverDistribution The distribution index for SBX. Larger index makes the distribution sharper around each parent.
  • ...: Further arguments to be passed to fun

Returns

Returns a list for the next generation. It contains listnewgeneration(class:cmaesgen),listnew_generation (class: cmaes_gen), listpopulation (basically a copy of listnewgeneration[[]]new_generation[[]]x), and list$populationObjective

Examples

nVar <- 14 nObjective <- 5 nIndividual <- 100 crossoverProbability <- 1 ps_target <- 1 / (5 + ( 1 / 2 ) ) pop <- matrix(stats::runif(nIndividual*nVar), nrow = nVar) # create the population a_list <- cmaes_gen(pop) control <- list(successProbTarget=ps_target,crossoverProbability=crossoverProbability) # run a generation of SMO-CMA-ES with standard WFG8 test function. numpyready <- reticulate::py_module_available('numpy') pygmoready <- reticulate::py_module_available('pygmo') py_module_ready <- numpyready && pygmoready if(py_module_ready) # prevent error on testing the example newGeneration <- SMOCMAES(a_list,nObjective,WFG8,control,nObjective)

References

Voß, T., Hansen, N., Igel, C.: Improved step size adaptation for the MO-CMA-ES. In: Genetic and Evolutionary Computation (GECCO). pp. 487–494. ACM, New York, NY (2010)

  • Maintainer: Dani Irawan
  • License: GPL (>= 3)
  • Last published: 2020-08-31