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,
double fmax,
double faverage,
double fmin );
71 static const int MAXINDIVIDUALS = 1000;
91 void evolveSteadyState();
99 void evolveGenerational();
112 double getNoise(
double minn,
double maxn);
128 void putGenome(
int fromgenome,
int tobestgenome);
136 void getGenome(
int frombestgenome,
int togenome,
int mut);
149 int mutate(
int w,
double mut);
161 void setInitialPopulation(
int*);
166 void setMutations(
float*);
178 void saveagenotype(FILE *fp,
int ind);
184 void loadgenotype(FILE *fp,
int ind);
194 int loadallg(
int gen,
const char *filew);
202 void computeFStat2();
212 void getLastFStat(
double &
min,
double &
max,
double &average );
218 int loadStatistics(
char *filename);
223 int* getGenes(
int ind);
228 int* getBestGenes(
int ind);
231 void resetGenerationCounter();
242 void copyGenes(
int from,
int to,
int mut);
251 void getPheParametersAndMutationsFromEvonet();
256 void updateGenomeFromEvonet(
int ind );
289 static void describe( QString type );
295 virtual void postConfigureInitialization();
300 virtual void evolveAllReplicas();
362 bool isEnabledStepByStep();
384 virtual QVector<EvoRobotExperiment*> getEvoRobotExperimentPool();
391 virtual unsigned int currentGeneration();
398 virtual unsigned int getStartingSeed();
405 virtual unsigned int getCurrentSeed();
412 virtual unsigned int getNumReplications();
419 virtual unsigned int getNumOfGenerations();
426 virtual double getCurrentMutationRate();
432 virtual void setCurrentMutationRate(
double mutation_rate );
441 virtual unsigned int loadGenotypes(QString filename);
448 virtual unsigned int numLoadedGenotypes()
const;
456 virtual int* getGenesForIndividual(
unsigned int id);
466 virtual QString statisticsFilename(
unsigned int seed);
476 virtual QString bestsFilename(
unsigned int seed);
481 virtual QString bestsFilename();
492 virtual QString generationFilename(
unsigned int generation,
unsigned int seed);
497 virtual QString generationFilename();
503 virtual void doNotUseMultipleThreads();
512 void enableStepByStep(
bool enable );
548 void setGenomeLength(
int genomelength)
550 if (genomelength < 1) {
553 m_genomelength = genomelength;
558 int getGenomeLength()
const
560 return m_genomelength;
563 void resize(
int newSize)
570 if (newSize < m_pop.size()) {
571 for (
int i = (m_pop.size() - 1); i >= newSize; i--) {
574 m_pop.resize(newSize);
575 }
else if (newSize > m_pop.size()) {
576 const int oldSize = m_pop.size();
577 m_pop.resize(newSize);
578 for (
int i = oldSize; i < newSize; i++) {
579 m_pop[i] =
new int[m_genomelength];
586 m_pop.append(
new int[m_genomelength]);
589 return (m_pop.size() - 1);
602 int* operator[](
int i)
605 if (i > m_pop.size()) {
612 const int* operator[](
int i)
const
615 if (i > m_pop.size()) {
623 QVector<int *> m_pop;
629 Population bestgenome;
631 int loadedIndividuals;
642 QString evolutionType;
656 double mutationdecay;
658 double initial_mutation;
666 double fmin, fmax,faverage;
674 QMutex mutexStepByStep;
676 QWaitCondition waitForNextStep;
678 unsigned int numThreads;
680 int savePopulationEachNGenerations;
695 bool averageIndividualFitnessOverGenerations;
703 ConfigurationParameters savedConfigurationParameters;
710 QString savedExperimentPrefix;