29 #include "evorobotexperiment.h"
31 #include <configurationparameters.h>
32 #include <parametersettable.h>
37 #include <QWaitCondition>
55 void startingReplication(
int replication );
59 void recoveredInterruptedEvolution( QString statfile );
66 void endGeneration(
int generation,
int fmax,
int faverage,
int fmin );
71 static const int MAXINDIVIDUALS = 1000;
78 void evolveSteadyState();
80 void evolveGenerational();
84 double getNoise(
double minn,
double maxn);
87 void putGenome(
int fromgenome,
int tobestgenome);
88 void getGenome(
int frombestgenome,
int togenome,
int mut);
90 int mutate(
int w,
double mut);
92 void setInitialPopulation(
int*);
93 void setMutations(
float*);
96 void saveagenotype(FILE *fp,
int ind);
97 void loadgenotype(FILE *fp,
int ind);
99 int loadallg(
int gen,
const char *filew);
108 void getLastFStat(
double &
min,
double &
max,
double &average );
109 int loadStatistics(
char *filename);
110 int* getGenes(
int ind);
111 int* getBestGenes(
int ind);
113 void resetGenerationCounter();
114 void copyGenes(
int from,
int to,
int mut);
116 void computeFStat2();
123 void getPheParametersAndMutationsFromEvonet();
156 static void describe( QString type );
162 virtual void postConfigureInitialization();
167 virtual void evolveAllReplicas();
229 bool isEnabledStepByStep();
251 virtual QVector<EvoRobotExperiment*> getEvoRobotExperimentPool();
258 virtual unsigned int currentGeneration();
265 virtual unsigned int getStartingSeed();
272 virtual unsigned int getCurrentSeed();
279 virtual unsigned int getNumReplications();
286 virtual unsigned int getNumOfGenerations();
293 virtual double getCurrentMutationRate();
299 virtual void setCurrentMutationRate(
double mutation_rate );
308 virtual unsigned int loadGenotypes(QString filename);
315 virtual unsigned int numLoadedGenotypes()
const;
323 virtual int* getGenesForIndividual(
unsigned int id);
333 virtual QString statisticsFilename(
unsigned int seed);
343 virtual QString bestsFilename(
unsigned int seed);
348 virtual QString bestsFilename();
359 virtual QString generationFilename(
unsigned int generation,
unsigned int seed);
364 virtual QString generationFilename();
370 virtual void doNotUseMultipleThreads();
379 void enableStepByStep(
bool enable );
415 void setGenomeLength(
int genomelength)
417 if (genomelength < 1) {
420 m_genomelength = genomelength;
425 int getGenomeLength()
const
427 return m_genomelength;
430 void resize(
int newSize)
437 if (newSize < m_pop.size()) {
438 for (
int i = (m_pop.size() - 1); i >= newSize; i--) {
441 m_pop.resize(newSize);
442 }
else if (newSize > m_pop.size()) {
443 const int oldSize = m_pop.size();
444 m_pop.resize(newSize);
445 for (
int i = oldSize; i < newSize; i++) {
446 m_pop[i] =
new int[m_genomelength];
453 m_pop.append(
new int[m_genomelength]);
456 return (m_pop.size() - 1);
469 int* operator[](
int i)
472 if (i > m_pop.size()) {
479 const int* operator[](
int i)
const
482 if (i > m_pop.size()) {
490 QVector<int *> m_pop;
496 Population bestgenome;
498 int loadedIndividuals;
509 QString evolutionType;
521 double mutationdecay;
529 double fmin, fmax,faverage;
537 QMutex mutexStepByStep;
539 QWaitCondition waitForNextStep;
546 unsigned int numThreads;
548 int savePopulationEachNGenerations;
564 bool averageIndividualFitnessOverGenerations;
572 ConfigurationParameters savedConfigurationParameters;
579 QString savedExperimentPrefix;