Multi-objective EA


Non-dominated Sorting Genetic Algorithm (NSGA-II) for Multi-objective Optimization

The constructor takes following keyword arguments:

  • populationSize: The size of the population
  • crossoverRate: The fraction of the population at the next generation, that is created by the crossover function
  • mutationRate: Probability of chromosome to be mutated
  • selection: Selection function (default: tournament)
  • crossover: Crossover function (default: SBX)
  • mutation: Mutation function (default: PLM)
  • metrics is a collection of convergence metrics.


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

dominate(p, q)

Returns 1 if p is dominated by q, -1 if otherwise, and 0 if dominance cannot be determined.



Returns a domination matrix of all elements in the input collection P.

crowding_distance!((C, F, fronts)

Calculate crowding distance for individuals and save the results into C given the fitness values F and collection of fronts.


  • 1Deb, K. et al., "A fast and elitist multiobjective genetic algorithm: NSGA-II". IEEE Transactions on Evolutionary Computation, 2002.