#include <NSGA_II.h>
Public Member Functions | |
NSGA_II (unsigned n_f__=3) | |
virtual | ~NSGA_II () |
void | setNadirIdeal (vector< double > &nadir_, vector< double > &ideal_) |
Input fixed boundary point and fixed ideal point, to be used instead of nadir and ideal point of currFront respectively. | |
void | select (vector< Individual * > &P, vector< Individual * > &O, unsigned mu, unsigned kappa, unsigned lambda, vector< int > &direction, vector< double > &bestF) |
Select mu Individuals from O and optionally P to form new population P, using multiobjective selection scheme as proposed for NSGA-II by Deb, 2000. | |
Protected Member Functions | |
void | fastNondominatedSort (vector< Individual * > &Q, vector< vector< int > > &front, vector< int > &direction, vector< double > &bestF) |
Divide Individuals from O and optionally P in fronts based on domination. | |
MOComparison | compare (Individual *A, Individual *B, vector< int > &direction, vector< double > &bestWorstF, bool determineValues, bool worst) |
Determine domination relationship between A and B, or determine best or worst values. | |
virtual void | frontSort (vector< int > &currFront, vector< Individual * > &Q, vector< int > &direction) |
Sort Individuals within same front: nD crowding distance sorting (see NSGA-II by Deb, 2000) | |
void | determineNadirIdeal (vector< int > &currFront, int frontSize, vector< Individual * > &Q, vector< int > &direction) |
Determine Nadir and Ideal point for Individuals in currFront. | |
void | quickSort (vector< int > &currFront, int top, int bottom, vector< Individual * > *Q, int objective, map< int, double > *distance) |
Sort Individuals in front based on objective or number of dominating Individuals or crowding distance, in descending order. | |
int | partition (vector< int > &currFront, int top, int bottom, vector< Individual * > *Q, int objective, map< int, double > *distance) |
Protected Attributes | |
unsigned | n_f_ |
Number of fitness functions used for selection. | |
unsigned | selectDimension |
vector< unsigned > | selectFunction |
Ids of the fitness functions used for selection. | |
vector< double > | nadir |
vector< double > | ideal |
bool | fixedNadirIdeal |
Use dominating points selection, see Beume, 2007 - SMS-EMOA. | |
bool | dpSelection |
Definition at line 10 of file NSGA_II.h.
NSGA_II::NSGA_II | ( | unsigned | n_f__ = 3 ) |
Definition at line 8 of file NSGA_II.cpp.
MOComparison NSGA_II::compare | ( | Individual * | A, |
Individual * | B, | ||
vector< int > & | direction, | ||
vector< double > & | bestWorstF, | ||
bool | determineValues, | ||
bool | worst | ||
) | [protected] |
Determine domination relationship between A and B, or determine best or worst values.
Definition at line 235 of file NSGA_II.cpp.
void NSGA_II::determineNadirIdeal | ( | vector< int > & | currFront, |
int | frontSize, | ||
vector< Individual * > & | Q, | ||
vector< int > & | direction | ||
) | [protected] |
Determine Nadir and Ideal point for Individuals in currFront.
Definition at line 419 of file NSGA_II.cpp.
void NSGA_II::fastNondominatedSort | ( | vector< Individual * > & | Q, |
vector< vector< int > > & | front, | ||
vector< int > & | direction, | ||
vector< double > & | bestF | ||
) | [protected] |
Divide Individuals from O and optionally P in fronts based on domination.
Definition at line 164 of file NSGA_II.cpp.
void NSGA_II::frontSort | ( | vector< int > & | currFront, |
vector< Individual * > & | Q, | ||
vector< int > & | direction | ||
) | [protected, virtual] |
Sort Individuals within same front: nD crowding distance sorting (see NSGA-II by Deb, 2000)
Reimplemented in SMSEMOA_2D_MIES, and SMSEMOA_3D.
Definition at line 309 of file NSGA_II.cpp.
int NSGA_II::partition | ( | vector< int > & | currFront, |
int | top, | ||
int | bottom, | ||
vector< Individual * > * | Q, | ||
int | objective, | ||
map< int, double > * | distance | ||
) | [protected] |
Definition at line 377 of file NSGA_II.cpp.
void NSGA_II::quickSort | ( | vector< int > & | currFront, |
int | top, | ||
int | bottom, | ||
vector< Individual * > * | Q, | ||
int | objective, | ||
map< int, double > * | distance | ||
) | [protected] |
Sort Individuals in front based on objective or number of dominating Individuals or crowding distance, in descending order.
Definition at line 357 of file NSGA_II.cpp.
void NSGA_II::select | ( | vector< Individual * > & | P, |
vector< Individual * > & | O, | ||
unsigned | mu, | ||
unsigned | kappa, | ||
unsigned | lambda, | ||
vector< int > & | direction, | ||
vector< double > & | bestF | ||
) |
Select mu Individuals from O and optionally P to form new population P, using multiobjective selection scheme as proposed for NSGA-II by Deb, 2000.
Definition at line 31 of file NSGA_II.cpp.
void NSGA_II::setNadirIdeal | ( | vector< double > & | nadir_, |
vector< double > & | ideal_ | ||
) | [inline] |
bool NSGA_II::dpSelection [protected] |
bool NSGA_II::fixedNadirIdeal [protected] |
vector<double> NSGA_II::ideal [protected] |
unsigned NSGA_II::n_f_ [protected] |
vector<double> NSGA_II::nadir [protected] |
unsigned NSGA_II::selectDimension [protected] |
vector<unsigned> NSGA_II::selectFunction [protected] |