37 #ifndef SHARK_ALGORITHMS_DIRECTSEARCH_OPERATORS_SELECTION_LINEARRANKING_H 38 #define SHARK_ALGORITHMS_DIRECTSEARCH_OPERATORS_SELECTION_LINEARRANKING_H 56 template<
typename Extractor >
74 template<
typename InIterator,
typename OutIterator>
76 InIterator individuals,
77 InIterator individualsE,
84 std::vector<KeyValuePair<double, InIterator> > individualsPerformance(size);
86 for( std::size_t i = 0; i !=
size; ++i, ++individuals ) {
88 individualsPerformance[i].value = individuals;
89 individualsPerformance[i].key = e(*individuals);
91 std::sort( individualsPerformance.begin(), individualsPerformance.end());
93 RealVector selectionProbability(size);
94 double a = 2. * (
etaMax - 1.)/(size - 1.);
95 for( std::size_t i = 0; i !=
size; ++i ) {
96 selectionProbability[i] = (
etaMax - a*i);
98 selectionProbability /=
sum(selectionProbability);
101 for( ; out != outE; ++out ){
102 InIterator individuals = rws( individualsPerformance.begin(), individualsPerformance.end(), selectionProbability)->value;