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::*;