00001
00021 #ifndef _SELECT_LS_IMP_H
00022
00023 #define _SELECT_LS_IMP_H 1
00024
00025 #include <realea/common/selectls.h>
00026 #include <deque>
00027
00028 using std::deque;
00029
00030 namespace realea {
00031
00032 class SelectBestToImprove : public SelectImprovementLS {
00033 public:
00041 void getIndsToImprove(PopulationReal *pop, deque<tIndividualReal*> &subpop);
00042
00051 unsigned selectIndToImprove(deque<tIndividualReal*> &individuals);
00052 ~SelectBestToImprove(void) {}
00053 };
00054
00055 class SelectWithDiversityToImprove: public SelectImprovementLS {
00056 public:
00057 SelectWithDiversityToImprove(void) : m_previous() {}
00058
00067 void getIndsToImprove(PopulationReal *pop, deque<tIndividualReal*> &subpop);
00068
00069 protected:
00070 deque<tIndividualReal*> m_previous;
00071 };
00072
00073
00074 class SelectDiverseToImprove: public SelectWithDiversityToImprove {
00075 public:
00076 SelectDiverseToImprove(void): SelectWithDiversityToImprove() {}
00077
00087 unsigned selectIndToImprove(deque<tIndividualReal*> &individuals);
00088
00089 };
00090
00091 class SelectDistantBestToImprove: public SelectWithDiversityToImprove {
00092 public:
00093 SelectDistantBestToImprove(unsigned maxbest) : SelectWithDiversityToImprove(), m_maxbests(maxbest) {}
00103 unsigned selectIndToImprove(deque<tIndividualReal*> &individuals);
00104 private:
00105 unsigned m_maxbests;
00106 };
00107
00108 class SelectBestDistantToImprove: public SelectWithDiversityToImprove {
00109 public:
00110 SelectBestDistantToImprove(unsigned maxdist) : SelectWithDiversityToImprove(), m_maxdists(maxdist) {}
00119 unsigned selectIndToImprove(deque<tIndividualReal*> &individuals);
00120 private:
00121 unsigned m_maxdists;
00122 };
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137 }
00138
00139 #endif