00001 #ifndef SIGEL_GP_SIG_GPMANAGER_H
00002 #define SIGEL_GP_SIG_GPMANAGER_H
00003
00004 #include "SIGEL_GP/SIG_GPFitnessTrainer.h"
00005 #include "SIGEL_GP/SIG_GPTournament.h"
00006 #include "SIGEL_Tools/SIG_Randomizer.h"
00007 #include "SIGEL_MasterGUI/SIG_IndividualListItem.h"
00008
00009 #include <qvector.h>
00010 #include <qvaluelist.h>
00011 #include <qdatetime.h>
00012 #include <qlistview.h>
00013
00014 #include <qthread.h>
00015
00016 namespace SIGEL_GP
00017 {
00018
00031 class SIG_GPManager
00032 {
00033
00041 public:
00042 bool userTerminated;
00043
00044 void start()
00045 {
00046 run();
00047 };
00048
00049 void wait()
00050 { };
00051
00052 void msleep( int )
00053 { };
00054
00055 bool running()
00056 { return false; };
00057
00058 private:
00064 QValueList<int> taskCanDoList;
00065
00070 protected:
00071 SIG_GPExperiment &actExperiment;
00072
00073 protected:
00074 bool schlussJetzt;
00075
00076 private:
00077 QDateTime startTime;
00078
00083 private:
00084 SIG_GPFitnessTrainer trainer;
00085
00090 private:
00091 QVector<SIG_GPTournament> tours;
00092
00096 private:
00097 SIGEL_Tools::SIG_Randomizer randomizer;
00098
00099 private:
00100 bool fitnessCalculated;
00101
00102 private:
00103 int currentGenerationNo;
00104
00113 public:
00114 SIG_GPManager(SIG_GPExperiment &experiment);
00115
00123 public:
00124 ~SIG_GPManager();
00125
00136 private:
00137 void evolutionLoop();
00138
00149 private:
00150 void createTours(int quantity);
00151
00162 private:
00163 void evalNewIndis();
00164
00176 private:
00177 void calcInitTourSet();
00178
00179 private:
00180 virtual void haveABreak();
00181
00182 private:
00183 virtual void messageEvolutionStop();
00184
00185 private:
00186 virtual void updateIndividualView( int );
00187
00197 private:
00198 void stopIfNecessary(bool generationBreak);
00199
00205 private:
00206 bool checkTerminationConditions(bool generationBreak);
00207
00214 public:
00215 void run();
00216
00222 private:
00223 SIG_GPExperiment& getActExperiment();
00224
00230 private:
00231 SIG_GPFitnessTrainer& getActTrainer();
00232
00233 };
00234
00235 }
00236 #endif // SIGEL_GP_SIG_GPMANAGER_H
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246