public static double MAX_LONE_PATROL = 6000; // Observed in GECCO 2016 work double IFitnessFunction.calculate(SimulatorExperiment engine, Environment environment, instance_pack ip, out double[] objectives) { if (currentEnvironment == TASK_TEAM_PATROL) { // Team patrol // Must normalize score return(teamPatrol.calculate(engine, environment, ip, out objectives) / MAX_TEAM_PATROL); } else if (currentEnvironment == TASK_LONE_PATROL) { // Lone patrol // Must normalize score return(lonePatrol.calculate(engine, environment, ip, out objectives) / MAX_LONE_PATROL); } else if (currentEnvironment == TASK_DUAL_TASK_HALLWAY || currentEnvironment == TASK_DUAL_TASK_FORAGE) { // Dual task // Both individual dual task fitnss scores are already normalized return(dualTask.calculate(engine, environment, ip, out objectives)); } else if (currentEnvironment == TASK_TWO_ROOMS) { // Two rooms // Score is already normalized to [0,1] return(twoRooms.calculate(engine, environment, ip, out objectives)); } else { Console.WriteLine("Error! Unknown environment! " + environment.name + ":" + currentEnvironment); objectives = new double[0]; System.Environment.Exit(1); return(-1000); } }