1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
//! This module contains a logic for processing multiple solutions and multi objective optimization
//! based on `Non Dominated Sorting Genetic Algorithm II` algorithm.
//!
//! A Non Dominated Sorting Genetic Algorithm II (NSGA-II) is a popular multi objective optimization
//! algorithm with three special characteristics:
//!
//! - fast non-dominated sorting approach
//! - fast crowded distance estimation procedure
//! - simple crowded comparison operator
//!
//! For more details regarding NSGA-II algorithm details, check original paper "A fast and elitist
//! multiobjective genetic algorithm: NSGA-II", Kalyanmoy Deb et al. DOI: `0.1109/4235.996017`
//!
//! A NSGA-II implementation in this module is based on the source code from the following repositories:
//!
//! - [dominance order trait](https://github.com/mneumann/dominance-ord-rs)
//! - [fast non-dominated sort algorithm](https://github.com/mneumann/non-dominated-sort-rs)
//! - [NSGA-II implementation](https://github.com/mneumann/nsga2-rs)
//!
//! which are released under MIT License (MIT), copyright (c) 2016 Michael Neumann
//!
mod crowding_distance;
use self::crowding_distance::*;
mod non_dominated_sort;
use self::non_dominated_sort::*;
mod nsga2_sort;
pub use self::nsga2_sort::select_and_rank;
mod objective;
pub use self::objective::*;