00001
00002 #include <population.h>
00003
00005
00006
00007
00008
00009
00010
00011
00013
00014 class SimplePopulation : public Population {
00015
00016 Array<Individual>* population;
00017
00018
00019 FitnessStats mFitnessStats;
00020
00021
00022
00023 int mElites;
00024 bool mUseGlobalElites;
00025
00026 SelectionPrms mSelectionParams;
00027
00028
00029
00030 bool mUseGlobalMicro;
00031
00032
00033 bool mUseGlobalQ;
00034
00035
00036 bool mUseGlobalEtaPlus;
00037
00038
00039
00040 MutationRate mGlobalMutationRate;
00041
00042
00043 bool autoadj_gmr;
00044
00045 public:
00046
00047
00048 double minsimilarity;
00049
00050
00051 SimplePopulation (EAEnvironment& envr,
00052 const StringMap& params);
00053
00054 ~SimplePopulation ();
00055
00056 double evolve (int generations, const char* savefile=NULL,
00057 double trg_fitn=-1);
00058
00059
00060 const Individual& operator[] (int i) const {return (*population)[i];}
00061
00062
00063 Individual& operator[] (int i) {return (*population)[i];}
00064
00065
00066 int size () const {return population->size;}
00067
00068
00069 void print (DataOStream& out) const;
00070
00071
00072 void report (OStream& log) const;
00073
00074
00075 const EAStrategy& getstrategy () const {return *strategy;}
00076
00077
00078
00079 int getAge () const {return mAge;}
00080
00081
00082 MutationRate& mutRate () {return mGlobalMutationRate;}
00083
00084 SelectionPrms& selParams () {return mSelectionParams;}
00085 const SelectionPrms& selParams () const {return mSelectionParams;}
00086
00087
00088
00089
00090 void resetFitnesses ();
00091
00092 void check () const;
00093
00094 private:
00095
00096
00097 void evaluate (EAEnvironment& envr, OStream& out);
00098
00099
00100
00101 void addFeaturesTo (Genome& genome) const;
00102
00103 friend EAStrategy;
00104
00105
00106
00107
00108
00109 friend SelectionMatrix;
00110 };
00111