## NSGA non-dominated genetic sorting algorithm

The objective of thegenetic algorithm NSGA nondominated sorting is to improve the adaptive fit of a population of candidate solutions to a Pareto front constrained by a set of objective functions. The NSGA nondominated sorting genetic algorithm uses an evolutionary process with surrogates for evolutionary operators including selection, genetic crossover, and genetic mutation.

The population is classified into a hierarchy of subpopulations based on the order of Pareto domination. The similarity between the members of each subgroup is evaluated on the Pareto front, and the resulting groups and measures of similarity are used to promote a diverse front of non-dominated solutions.

The SortByRankAndDistance function ranks the population in a hierarchy of non-dominated Pareto fronts. The CrowdingDistance-Assignment calculates the average distance between the members of each front on the front itself. The Crossover-AndMutation function performs the classic genetic crossover and mutation operators of the genetic algorithm. The SelectParentsBy-RankAndDistance and SortByRankAndDistance functions first discriminate the members of the population by their rank (order of priority dominated by the front to which the solution belongs) then by the distance inside the front (calculated by CrowdingDistanceAssignment).

The NSGA non-dominated genetic sorting algorithm was designed and adapted to instances of continuous-function multiple-objective optimization problems. A binary representation can be used in conjunction with classical genetic operators such as point crossing and point mutation. A real-value representation is recommended for continuous function optimization problems, in turn requiring representation-specific genetic operators such as simulated binary crossover (SBX) and polynomial mutation.