00001 #ifndef DifferentialEvolution_h
00002 #define DifferentialEvolution_h
00003 using namespace std;
00004 #include "Algorithm.h"
00005
00012 class DifferentialEvolution : public Algorithm
00013 {
00014 public:
00015 DifferentialEvolution();
00016 bool advanceGeneration(StateP state, DemeP deme);
00017 bool initialize(StateP state);
00018 void createDonorVectors(DemeP deme, StateP state);
00019 void crossover(DemeP deme, uint index, StateP state);
00020 void registerParameters(StateP state);
00021
00022 protected:
00023 double Fconst_;
00024 double CR_;
00025 bool bounded_;
00026 SelectionOperatorP selRandomOp;
00027 std::vector<IndividualP> donor_vector;
00028 };
00029 typedef boost::shared_ptr<DifferentialEvolution> DifferentialEvolutionP;
00030
00031 #endif // Differential Evolution
00032