Do an iteration of population based 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.
MOCMAES(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),listpopulation (basically a copy of listnewgeneration[[]]x), and list$populationObjective
Examples
nVar <-14nObjective <-5nIndividual <-100crossoverProbability <-1ps_target <-1/(5+(1/2)^0.5)pop <- matrix(stats::runif(nIndividual*nVar), nrow = nVar)# create the populationa_list <- cmaes_gen(pop)control <- list(successProbTarget=ps_target,crossoverProbability=crossoverProbability)# run a generation of MO-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 examplenewGeneration <- MOCMAES(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)