void IFitnessFunction.update(SimulatorExperiment simExp, Environment environment, instance_pack ip)
        {
            // For brain switching by multitask.
            // Schrum: If not using preference neurons, and the current brain does not match the environment
            if (simExp.multibrain && !simExp.preferenceNeurons && ip.agentBrain.getBrainCounter() != currentEnvironment)
            {
                // Schrum: get the appropriate brain for this environment
                ip.agentBrain.switchBrains(currentEnvironment);
            }


            if (currentEnvironment == TASK_TEAM_PATROL)
            { // Team patrol
                teamPatrol.update(simExp, environment, ip);
            }
            else if (currentEnvironment == TASK_LONE_PATROL)
            { // Lone patrol
                lonePatrol.update(simExp, environment, ip);
            }
            else if (currentEnvironment == TASK_DUAL_TASK_HALLWAY || currentEnvironment == TASK_DUAL_TASK_FORAGE)
            { // Dual task
                dualTask.update(simExp, environment, ip);
            }
            else if (currentEnvironment == TASK_TWO_ROOMS)
            { // Two rooms
                twoRooms.update(simExp, environment, ip);
            }
            else
            {
                Console.WriteLine("Error! Unknown environment! " + environment.name + ":" + currentEnvironment);
                System.Environment.Exit(1);
            }
        }