00001 #ifndef HALLOFFAME_H_
00002 #define HALLOFFAME_H_
00003
00004 #include "SelBestOp.h"
00005 #include "Operator.h"
00006
00012 class HallOfFame : public Operator
00013 {
00014 protected:
00015 bool bEmpty_;
00016 StateP state_;
00017 uint lastChangeGen_;
00018 uint hofSize_;
00019 std::vector<IndividualP> bestIndividuals_;
00020 std::vector<uint> bestGenerations_;
00021 SelBestOpP selectBest_;
00022
00023 public:
00024 bool initialize(StateP);
00025 bool operate(StateP);
00026 bool operate(const std::vector<IndividualP>&);
00027 void write(XMLNode&);
00028 void read(XMLNode&);
00029 HallOfFame();
00030
00034 std::vector<IndividualP> getBest()
00035 { return bestIndividuals_; }
00036
00040 uint getLastChange()
00041 { return lastChangeGen_; }
00042 };
00043 typedef boost::shared_ptr<HallOfFame> HallOfFameP;
00044 #endif