SMOCMAES | R Documentation |
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(), ...)
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:
|
... |
Further arguments to be passed to |
Returns a list for the next generation. It contains list$new_generation (class: cmaes_gen), list$population (basically a copy of list$new_generation[[]]$x), and list$populationObjective
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)
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.