00001 #ifndef EVOLUTIONARYMONTECARLO_H 00002 #define EVOLUTIONARYMONTECARLO_H 00003 00004 #include "montecarlo.h" 00005 #include "../evolver/evolver.h" 00006 #include "../walker/evolutionarywalker.h" 00007 00008 class Config; 00009 00013 class EvolutionaryMonteCarlo : public MonteCarlo, public Evolver 00014 { 00015 public: 00016 EvolutionaryMonteCarlo(Config *config, int nGenes, int nIndividuals, int nPopulations); 00017 void sample(int nCycles); 00018 double fitness(vec &genes, int population, int individual); 00019 00020 private: 00021 int nWalkers; 00022 EvolutionaryWalker **walkers; 00023 vec2 *positions; 00024 int correlationStep; 00025 double trialEnergy; 00026 double energySum; 00027 int nEnergyUpdates; 00028 vec *meanEnergies; 00029 vec *meanEnergyCycles; 00030 }; 00031 00032 #endif // EVOLUTIONARYMONTECARLO_H