/// <summary>
        /// Performs the actual initialization logic.
        /// </summary>
        protected void setupVariables()
        {
            substrateDescription = new SubstrateDescription(substrateDescriptionFilename);
            agentBrain           = new AgentBrain(homogeneousTeam, numberRobots, substrateDescription, genome != null ? genome.Decode(null) : null, normalizeWeights, adaptableANN, modulatoryANN, multibrain, evolveSubstrate, neatBrain, useCTRNNS);

            loadEnvironments(this);

            initializeRobots(agentBrain, environment, headingNoise, sensorNoise, effectorNoise, null);

            setFitnessFunction(fitnessFunctionName);
            setBehavioralCharacterization(behaviorCharacterizationName);

            collisionManager = new StandardCollision();

            collisionManager.initialize(environment, this, this.robots);
            timeSteps   = 0;
            elapsedTime = 0;
        }
        /// <summary>
        /// Performs the actual initialization logic. 
        /// </summary>
        protected void setupVariables()
        {
            substrateDescription = new SubstrateDescription(substrateDescriptionFilename);
            agentBrain = new AgentBrain(homogeneousTeam, numberRobots, substrateDescription, genome != null ? genome.Decode(null) : null, normalizeWeights, adaptableANN, modulatoryANN, multibrain, evolveSubstrate, neatBrain, useCTRNNS);

            loadEnvironments(this);

            initializeRobots(agentBrain, environment, headingNoise, sensorNoise, effectorNoise, null);

            setFitnessFunction(fitnessFunctionName);
            setBehavioralCharacterization(behaviorCharacterizationName);

            collisionManager = new StandardCollision();

            collisionManager.initialize(environment, this, this.robots);
            timeSteps = 0;
            elapsedTime = 0;
        }