00001
00020 #ifndef _SELECT_H
00021
00022 #define _SELECT_H 1
00023
00024 #include <realea/common/populationreal.h>
00025 #include <realea/common/random.h>
00026 #include <realea/common/signal.h>
00027
00028 namespace realea {
00037 class ISelect : public IReset {
00038 public:
00049 virtual void select(PopulationRealPtr pop, unsigned *mom, unsigned *dad)=0;
00055 void setRandom(Random *random) {
00056 m_random = random;
00057 }
00058 void setDomain(DomainRealPtr domain) {
00059 m_domain = domain;
00060 }
00061 protected:
00062 Random *m_random;
00063 DomainRealPtr m_domain;
00064 };
00065
00074 class SelectNAM : public ISelect {
00075 public:
00083 SelectNAM(unsigned nam);
00084 virtual void select(PopulationRealPtr pop, unsigned *mom, unsigned *dad);
00085 private:
00086 unsigned m_num;
00087 };
00088
00096 class SelectTournament : public ISelect {
00097 public:
00105 SelectTournament(unsigned nam);
00106 virtual void select(PopulationRealPtr pop, unsigned *mom, unsigned *dad);
00107 private:
00108 unsigned m_num;
00109 };
00110
00111 }
00112 #endif