NSGA-II Generator¶
This section contains documentation for NSGA2Generator
, an implementation of the multiobjective optimization algorithm NSGA-II [1].
Consistent with Xopt's architecture, candidate solutions may be requested even after one-generation's-worth has been produced.
A single generation is considered finished once population_size
evaluated individuals have been returned to the generator.
At that point, selection will occur, output will be generated (if output_dir
has been set), and further generated children will use the latest population.
To strictly follow the NSGA-II algorithm, users should take care to only generate and evaluate exactly population_size
individuals in a single batch to avoid the problem of
Usage¶
For information on using NSGA2Generator
, please choose from one of the following examples.
- YAML Interface - Using the generator from YAML config files (if new, start here).
- Python Interface - Using the generator from its python API.
- Output Conversion - Using this generator's output with analysis scripts written for
CNSGAGenerator
.
Genetic Operators¶
Genetic operators are implemented as pydantic objects allowing for their specification in YAML files and their serialization to save optimizer state. The following are currently implemented.
PolynomialMutation
- Mutation with polynomial probability distribution. Discussed in [2].SimulatedBinaryCrossover
- Crossover operator for real-coded genetic algorithms, described in [3].
A demonstration of each operator and further documentation on their use can be found in the following notebook.
Benchmarking¶
Statistical benchmark tests were performed on NSGA2Generator
, CNSGAGenerator
, and a reference implementation of NSGA-II to compare performance.
These tests were performed using the test problems and analysis tools in the library ParetoBench.
A writeup of the results may be found below.
References¶
- [1] Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. A. M. T. (2002). A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE transactions on evolutionary computation, 6(2), 182-197.
- [2] Deb, K. (2001). Multi-objective optimization using evolutionary algorithms. John Wiley & Sons.
- [3] Deb, K. (1995). Simulated Binary Crossover for Continuous Search Space. Complex Systems, 34.