#include <eoNDSorting.h>
Inheritance diagram for eoNDSorting< EOT >:

Public Member Functions | |
| eoNDSorting (bool nasty_flag_=false) | |
| eoNDSorting () | |
| virtual std::vector< double > | niche_penalty (const std::vector< unsigned > ¤t_front, const eoPop< EOT > &_pop)=0 |
| Pure virtual function that calculates the 'distance' for each element in the current front Implement to create your own nondominated sorting algorithm. | |
| void | calculate_worths (const eoPop< EOT > &_pop) |
| The actual virtual function the derived classes should implement. | |
Public Attributes | |
| bool | nasty_declone_flag_that_only_is_implemented_for_two_objectives |
Private Member Functions | |
| void | one_objective (const eoPop< EOT > &_pop) |
| void | two_objectives (const eoPop< EOT > &_pop) |
| Optimization for two objectives. | |
| void | m_objectives (const eoPop< EOT > &_pop) |
| void | rank_to_worth () |
Classes | |
| class | DummyEO |
| used in fast nondominated sorting DummyEO is just a storage place for fitnesses and to store the original index More... | |
| class | Sorter |
Definition at line 42 of file eoNDSorting.h.
| virtual std::vector<double> eoNDSorting< EOT >::niche_penalty | ( | const std::vector< unsigned > & | current_front, | |
| const eoPop< EOT > & | _pop | |||
| ) | [pure virtual] |
Pure virtual function that calculates the 'distance' for each element in the current front Implement to create your own nondominated sorting algorithm.
The size of the returned std::vector should be equal to the size of the current_front.
Implemented in eoNDSorting_I< EOT >, and eoNDSorting_II< EOT >.
Referenced by eoNDSorting< Dummy >::m_objectives(), and eoNDSorting< Dummy >::two_objectives().
| void eoNDSorting< EOT >::two_objectives | ( | const eoPop< EOT > & | _pop | ) | [inline, private] |
Optimization for two objectives.
Makes the algorithm run in complexity O(n log n) where n is the population size
This is the same complexity as for a single objective or truncation selection or sorting.
It will perform a sort on the two objectives seperately, and from the information on the ranks of the individuals on these two objectives, the non-dominated sorting rank is determined. There are then three nlogn operations in place: one sort per objective, plus a binary search procedure to combine the information about the ranks.
After that it is a simple exercise to calculate the distance penalty
Definition at line 140 of file eoNDSorting.h.
Referenced by eoNDSorting< Dummy >::calculate_worths().
1.4.7