SMSEMOA {MaOEA}R Documentation

S-Metric Selection EMOA

Description

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

Usage

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

Value

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.

References

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

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)


[Package MaOEA version 0.6.2 Index]