24 #ifndef EVOROBOTEXPERIMENT_H
25 #define EVOROBOTEXPERIMENT_H
27 #include "resourcesuser.h"
29 #include "neuroninterfaces.h"
32 #include "physphere.h"
34 #include "phycylinder.h"
35 #include "configurationparameters.h"
36 #include "parametersettable.h"
40 #include <QCoreApplication>
164 void setEvoga(
Evoga* ga );
168 bool inBatchRunning();
180 void selectAgent(
int agentId );
184 Evonet* getNeuralNetwork(
int agentId=0 );
186 void setNetParameters(
int *genes);
188 virtual void initGeneration(
int generation);
190 virtual void initIndividual(
int individual);
192 virtual void initTrial(
int trial);
194 virtual void initStep(
int step );
243 void endIndividualLife();
248 virtual void afterSensorsUpdate();
252 virtual void beforeMotorsUpdate();
256 virtual void beforeWorldAdvance();
258 virtual void endStep(
int step ) = 0;
262 virtual void endTrial(
int trial);
265 virtual void endIndividual(
int individual);
267 virtual void endGeneration(
int generation);
269 void doAllTrialsForIndividual(
int individual);
272 int getGenomeLength();
277 Sensor* getSensor( QString sensorName,
int agentId=0 );
282 Motor* getMotor( QString motorName,
int agentId=0 );
290 virtual void setTestingAgentAndSeed(
int idindividual,
int nreplica );
340 static void describe( QString type );
346 virtual void postConfigureInitialization();
353 int getNTrials()
const
363 ntrials = new_ntrials;
371 int getNSteps()
const
389 int getCurStep()
const
399 int getCurTrial()
const
418 void recreateWorld();
429 void recreateRobot(
int agentId = 0 );
435 void recreateArena();
446 void recreateNeuralNetwork(
int agentId = 0 );
456 const QString* savedPrefix;
465 void setWorldTimestep(
float timestep );
467 float getWorldTimeStep()
const;
470 class EmbodiedAgent {
479 void recreateRobot();
481 void recreateNeuralNetwork();
487 QString resourcePrefix;
495 QVector<Sensor*> sensors;
497 QVector<Motor*> motors;
499 QMap<QString, Sensor*> sensorsMap;
501 QMap<QString, Motor*> motorsMap;
511 QList<EmbodiedAgent*> eagents;
517 bool stopCurrentTrial;
519 bool skipCurrentTrial;
521 bool restartCurrentTrial;
523 bool endCurrentIndividualLife;