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