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>
77 InIterator individuals,
78 InIterator individualsE,
85 std::vector<KeyValuePair<double, InIterator> > individualsPerformance(size);
87 for( std::size_t i = 0; i !=
size; ++i, ++individuals ) {
89 individualsPerformance[i].value = individuals;
90 individualsPerformance[i].key = e(*individuals);
92 std::sort( individualsPerformance.begin(), individualsPerformance.end());
94 RealVector selectionProbability(size);
95 double a = 2. * (
etaMax - 1.)/(size - 1.);
96 for( std::size_t i = 0; i !=
size; ++i ) {
97 selectionProbability[i] = (
etaMax - a*i);
99 selectionProbability /=
sum(selectionProbability);
102 for( ; out != outE; ++out ){
103 InIterator individuals = rws(rng, individualsPerformance.begin(), individualsPerformance.end(), selectionProbability)->value;