Multi-objective EA
Evolutionary.NSGA2
— TypeNon-dominated Sorting Genetic Algorithm (NSGA-II) for Multi-objective Optimization
The constructor takes following keyword arguments:
populationSize
: The size of the populationcrossoverRate
: The fraction of the population at the next generation, that is created by the crossover functionmutationRate
: Probability of chromosome to be mutatedselection
: Selection function (default:tournament
)crossover
: Crossover function (default:SBX
)mutation
: Mutation function (default:PLM
)metrics
is a collection of convergence metrics.
Description
Multi-objective optimization is an area of multiple criteria decision making that is concerned with mathematical optimization problems involving more than one objective function to be optimized simultaneously. Evolutionary algorithms are popular approaches to generating Pareto optimal solutions to a multi-objective optimization problem by appling Pareto-based ranking schemes, such as the Non-dominated Sorting Genetic Algorithm-II (NSGA-II)[1].
Auxiliary Functions
Evolutionary.nondominatedsort!
— Functionnondominatedsort!(R, F)
Calculate fronts for fitness values F
, and store ranks of the individuals into R
.
Evolutionary.dominate
— Functiondominate(p, q)
Returns 1
if p
is dominated by q
, -1
if otherwise, and 0
if dominance cannot be determined.
Evolutionary.dominations
— Functiondominations(P::AbstractVector)
Returns a domination matrix of all elements in the input collection P
.
Evolutionary.crowding_distance!
— Functioncrowding_distance!((C, F, fronts)
Calculate crowding distance for individuals and save the results into C
given the fitness values F
and collection of fronts
.
References
- 1Deb, K. et al., "A fast and elitist multiobjective genetic algorithm: NSGA-II". IEEE Transactions on Evolutionary Computation, 2002.