std::vector< typename Pop::const_iterator > selection( Pop const& pop , Fitness const& fitness ) { GPCXX_ASSERT( pop.size() > 2 ); std::vector< typename Pop::const_iterator > s(2); s[1] = s[0] = m_selector( pop , fitness ); while( s[0] == s[1] ) s[1] = m_selector( pop , fitness ); return s; }
std::vector< typename Pop::const_iterator > selection( Pop const& pop , Fitness const& fitness ) { std::vector< typename Pop::const_iterator > s( 1 ); s[0] = m_selector( pop , fitness ); return s; }
std::vector< typename Pop::value_type > operator()( Pop const& pop , Fitness const& fitness ) { std::vector< typename Pop::value_type > nodes( 1 ); nodes[0] = *( m_selector( pop , fitness ) ); if( ! nodes[0].empty() ) m_strategy( nodes[0] ); return nodes; }
void find_next_valid_item() { while (m_bucket_itr != m_bucket_end_itr && !m_selector(**m_bucket_itr)) { ++m_bucket_itr; } }