Assign elements of fitnesses to nondominated fronts.

The first nondominated front is the set of individuals that is not dominated by any other individual with respect to any fitness dimension, i.e. where no other individual exists that has all fitness values greater or equal, with at least one fitness value strictly greater.

The n'th nondominated front is the set of individuals that is not dominated by any other individual that is not in any nondominated front with smaller n.

Fitnesses are maximized, so the individuals in lower numbered nondominated fronts tend to have higher fitness values.

rank_nondominated(fitnesses, epsilon = 0)

Arguments

fitnesses

(numeric matrix)
fitness matrix, with one row per individual and one column per objective

epsilon

(numeric)
Epsilon-vaue for non-dominance. A value is epsilon-dominated by another if it is at least epsilon smaller than the other in all dimensions, and more than epsilon smaller than the other in one dimension. epsilon may be a scalar, in which case it is used for all dimensions or a vector, in which case its length must match the number of dimensions. Default 0.

Value

list: $front: Vector assigning each individual in fitnesses its nondominated front. $domcount: Length N vector counting the number of individuals that dominate the given individual.