SMSEMOA function

S-Metric Selection EMOA

S-Metric Selection EMOA

Do an iteration of S-Metric Selection (SMS)-EMOA. The variation used is simulated binary crossover (SBX) and polynomial mutation.

SMSEMOA(population, fun, nObjective, control = list(), ...)

Arguments

  • population: The parent generation. One individual per column.
  • fun: Objective function being solved. Currently available in the package DTLZ1-DTLZ4, WFG4-WFG9.
  • nObjective: Number of objective. Ignored as of version 0.6.1; number of row from fun is used instead.
  • control: (list) Options to control the SMS-EMOA: mutationProbability The probability of doing mutation. Should be between 0-1. Negative value will behave like a zero, and values larger than 1 will behave like 1. Default to 1 mutationDistribution The distribution index for polynomial mutation. Larger index makes the distribution sharper around the parent. crossoverDistribution The distribution index for SBX. Larger index makes the distribution sharper around each parent. referencePoint The reference point for HV computation on normalized objective space, i.e. (1,...,1) is the nadir point. If not supplied, the ref_multiplier is used instead. ref_multiplier In case that a reference point is not supplied, the reference is set as a multiply of the current nadir. Default to 1.1. lbound A vector containing the lower bound for each gene ubound A vector containing the upper bound for each gene scaleinput Whether the input should be scaled to 0-1.
  • ...: Further arguments to be passed to fun

Returns

Returns a list for the next generation population The new generation. Column major, each row contain 1 set of objectives. successfulOffspring Binary, 1 if the offspring is kept in the new generation. Used in some adaptive schemes. populationObjective The new generation's objective values.

Examples

nVar <- 14 nObjective <- 5 nIndividual <- 100 crossoverProbability <- 1 mutationProbability <- 1/nVar population <- matrix(runif(nIndividual*nVar), nrow = nVar) # run a generation of SMS-EMOA with standard WFG6 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 SMSEMOA(population,WFG6,nObjective,list(crossoverProbability = crossoverProbability, mutationProbability = mutationProbability),nObjective)

References

Beume, N., Naujoks, B., Emmerich, M.: SMS-EMOA: Multiobjective selection based on dominated hypervolume. Eur. J. Oper. Res. 181 (3), 1653 – 1669 (2007)

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