Non-Dominated Sorted Genetic Algorithm II (NSGA-II) is an elitist multi-objective Pareto-based genetic algorithm. It emerged as an answer to the problem of poor coverage of the Pareto front that the first Nondominated Sorting Genetic Algorithm suffered. In order to increase the coverage of the Pareto-optimal front, NSGA-II relies on a computationally efficient mechanism to find non-dominated solutions, called fast Non-Dominated Sorting, and on a measure of the spread of the solutions over the Pareto front called crowding distance.

This chapter introduces the reader to the NSGA-II algorithm. It describes important concepts for the understanding of the algorithm, such as Pareto ranking, crowding distance and fast non-dominated sorting. The chapter thus provides the background necessary for the user to successfully apply NSGA-II to practical optimization problems. The presentation is complemented with pseudocode and Python code.