00001 00020 #ifndef _MUTATION_H 00021 00022 #define _MUTATION_H 1 00023 00024 #include "imutation.h" 00025 00026 namespace realea { 00037 class Mutation { 00038 public: 00046 Mutation(IMutation *mut, double ratio=0.125); 00047 00056 void setRandom(Random *random); 00057 void setDomain(DomainRealPtr domain); 00058 00059 virtual ~Mutation(void); 00065 bool apply(tChromosomeReal &sol); 00066 private: 00067 double m_ratio; 00068 IMutation *m_mutation; 00069 DomainRealPtr m_domain; 00070 00071 protected: 00072 Random *m_random; 00073 }; 00074 00075 typedef Mutation* MutationPtr; 00076 00077 class MutationBGA : public IMutation { 00078 public: 00079 virtual tGen mutate(tChromosomeReal &sol, unsigned pos); 00080 }; 00081 00082 } 00083 #endif