NSGA3 {MaOEA}R Documentation

Elitist Non-dominated Sorting Genetic Algorithm version III

Description

Do an iteration of Elitist Non-dominated Sorting Genetic Algorithm version III (NSGA-III). THe variation is using SBX and polynomial mutation.

Usage

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

Arguments

population

The parent generation. One individual per column. nrow = number of variable, ncol = number of individuals in the population.

fun

Objective function being solved. Currently available in the package DTLZ1-DTLZ4, WFG4-WFG9.

nObjective

The number of objective functions. A scalar value. Needed to generate weight vectors.

control

A list, containing the following: weightVector NSGA-III require a set of reference points defined a priori. The reference can be any point. If not supplied, 5*nObjective points are generated from a sobol sequence. Column major: nrow = nObjective, ncol = number of reference points 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. 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.

...

Further arguments to be passed to fun

Value

#' @return Returns a list for the next generation population The new generation design points. Column major. populationObjective The new generation's objective values. Column major.

References

Deb, K., Jain, H.: An evolutionary many-objective optimization algorithm using reference-point-based nondominated sorting approach, part I: Solving problems with box constraints. Trans. Evol. Comp. 18 (4), 577–601 (2014)

Examples

nVar <- 14
nObjective <- 5
nIndividual <- 100
#control for NSGA3
ctrl <- list(crossoverProbability = 1,
             mutationProbability = 1/nVar)
#Initial population
population <- matrix(runif(nIndividual*nVar), nrow = nVar)

# run a generation of NSGA-III with standard WFG8 test function.
NSGA3(population, WFG8,nObjective,ctrl,nObjective)

[Package MaOEA version 0.6.2 Index]