00001
00011 #ifndef _MutationMethod_h
00012 #define _MutationMethod_h
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "methods/EvolutionaryMethodIteration.h"
00023 #include "Population.h"
00024
00025
00026
00027
00028 class MutationMethod
00029 {
00030 public:
00031
00032
00033
00036 virtual ~MutationMethod(void);
00037
00038
00039
00040
00047 virtual std::auto_ptr<MutationMethod> Clone() const = 0;
00048
00060 virtual void Mutate
00061 (Population& population,
00062 double radioactivity,
00063 double mutationRate,
00064 EvolutionaryMethodIteration& iteration) const = 0;
00065
00066
00067
00072 static const std::vector<MutationMethod*>& MutationMethods();
00073
00080 virtual wxString ToString() const = 0;
00081
00088 virtual wxString Name() const = 0;
00089
00097 static wxString BaseClassName();
00098
00099
00100
00101 protected:
00102
00105 MutationMethod(void);
00106
00111 MutationMethod(const MutationMethod& from);
00112
00113 private:
00114
00119 static std::vector<MutationMethod*>& rMutationMethods();
00120
00121 };
00122
00123
00124
00125
00126
00127
00128
00129 #endif // _MutationMethod_h