33 #ifndef SHARK_ALGORITHMS_DIRECT_SEARCH_OPERATORS_SELECTION_TOURNAMENT_SELECTION_H
34 #define SHARK_ALGORITHMS_DIRECT_SEARCH_OPERATORS_SELECTION_TOURNAMENT_SELECTION_H
57 template<
typename Iterator,
typename Extractor >
58 Iterator
operator()( Iterator it, Iterator itE, Extractor & e, std::size_t k )
const {
61 throw(
SHARKEXCEPTION(
"TournamentSelection: Tournament size k needs to be larger than 0" ) );
66 throw(
SHARKEXCEPTION(
"TournamentSelecion: Size of population needs to be larger than size of tournament" ) );
68 Iterator result = it + Rng::discrete( 0, n-1 );
70 for( std::size_t i = 1; i < k; i++ ) {
71 itt = it +
static_cast<unsigned int>( Rng::uni() * n );
73 if( e( *itt ) < e( *result ) ) {