00001 #ifndef SIGEL_GP_SIG_GPFITNESSTRAINER_H 00002 #define SIGEL_GP_SIG_GPFITNESSTRAINER_H 00003 00004 #include "SIGEL_GP/SIG_GPExperiment.h" 00005 #include "SIGEL_GP/SIG_GPIndividual.h" 00006 #include "SIGEL_GP/SIG_GPPVMData.h" 00007 #include "SIGEL_GP/SIG_GPActivePVMHost.h" 00008 #include "SIGEL_GP/SIG_GPPVMTask.h" 00009 00010 #include <qarray.h> 00011 #include <qlist.h> 00012 00013 00014 namespace SIGEL_GP 00015 { 00016 00022 class SIG_GPFitnessTrainer 00023 { 00027 private: 00028 SIG_GPExperiment& exp; 00029 00033 private: 00034 QVector< SIG_GPPVMTask > pvmTasks; 00035 00036 private: 00037 QVector< SIG_GPActivePVMHost > pvmHosts; 00038 00039 private: 00040 int nextHostNumber; 00041 00045 private: 00046 QList< QArray<int> > toSpawnList; 00047 00048 00053 private: 00054 SIG_GPPVMData PVMData; 00055 00056 private: 00057 SIGEL_Robot::SIG_Robot modifiedRobot; 00058 00062 private: 00063 int nextFreeNumber ; 00064 00077 public: 00078 SIG_GPFitnessTrainer(SIG_GPExperiment& exp); 00079 00087 public: 00088 ~SIG_GPFitnessTrainer(); 00089 00105 public: 00106 int spawnTask(SIG_GPIndividual const& ind); 00107 00123 public: 00124 double checkTask(int task); 00125 00134 public: 00135 void stopTrainersSlaves(); 00136 00144 public: 00145 void sweepToSpawn(); 00146 00147 public: 00148 int getNextHost(); 00149 00150 }; 00151 00152 } 00153 #endif // SIGEL_GP_SIG_GPFITNESSTRAINER_H