35 #if !defined(EVOCOSM_SELECTOR_H)
36 #define EVOCOSM_SELECTOR_H
60 template <
class OrganismType>
84 virtual vector<OrganismType>
select_survivors(vector<OrganismType> & a_population) = 0;
93 template <
class OrganismType>
104 return vector<OrganismType>();
114 template <
class OrganismType>
125 : m_how_many(a_how_many)
136 : m_how_many(a_source.how_many)
148 m_how_many = a_source.m_how_many;
158 virtual vector<OrganismType>
select_survivors(vector<OrganismType> & a_population);
165 template <
class OrganismType>
169 vector<OrganismType> chosen_ones;
173 for (
typename vector<OrganismType>::iterator i = a_population.begin(); i != a_population.end(); ++i)
175 typename vector<OrganismType>::iterator c = chosen_ones.begin();
178 while ((c != chosen_ones.end()) && (n < m_how_many))
180 if (i->fitness() > c->fitness())
188 chosen_ones.insert(c,*i);
190 if (chosen_ones.size() > m_how_many)
191 chosen_ones.pop_back();
Selects organisms that survive.
Definition: selector.h:61
Implements a elitism selector.
Definition: selector.h:115
virtual vector< OrganismType > select_survivors(vector< OrganismType > &a_population)
Select individuals that survive.
Definition: selector.h:166
virtual ~selector()
Virtual destructor.
Definition: selector.h:72
virtual vector< OrganismType > select_survivors(vector< OrganismType > &a_population)
Definition: selector.h:102
virtual vector< OrganismType > select_survivors(vector< OrganismType > &a_population)=0
Select individuals that survive.
elitism_selector & operator=(const elitism_selector< OrganismType > &a_source)
Assignment operator.
Definition: selector.h:146
A do-nothing selector.
Definition: selector.h:94
A toolkit and framework for implementing evolutionary algorithms.
Definition: evocommon.h:60
elitism_selector(const elitism_selector< OrganismType > &a_source)
Copy constructor.
Definition: selector.h:135
Elements shared by all classes in Evocosm.
Definition: evocommon.h:115
elitism_selector(size_t a_how_many=1)
Constructor.
Definition: selector.h:124