public void TrainAllControllers() { // Arena map Boolean endoftraining = false; if (Initialize_Navigation()) { while (!endoftraining) { endoftraining = TrainNavigationController(); } Console.WriteLine("\n Training Navigation Controller ended. (arena)\n"); //Console.ReadKey(); } // Maze map endoftraining = false; if (Initialize_Navigation2()) { while (!endoftraining) { endoftraining = TrainNavigationController2(); } Console.WriteLine("\n Training Navigation Controller ended. (maze)\n"); //Console.ReadKey(); } // Combat map endoftraining = false; if (Initialize_Combat()) { while (!endoftraining) { endoftraining = TrainCombatController(); } Console.WriteLine("\n Training Combat Controller ended.\n"); //Console.ReadKey(); } // Initialize with Ultimate Map agentsinit_ultimate = new List <Position>(); items_ultimate = new List <Tuple <Position, Int32> >(); stat_ultimate = new Statistics(config.botnum); ReadRawData(config.map_ultimate); CreateMap(TrainingSet.ultimate); if (map == null || map.Count <= 0) { Console.WriteLine("Failed to initialize map."); return; } agents.ResetOrigin((int)(map.Count / 2) - 1); if (!(agents.Initialize_Ultimate(agentsinit_ultimate, config))) { Console.WriteLine("Failed to initialize agents."); return; } loopcount = 0; // Train for Ultimate map endoftraining = false; while (!endoftraining) { List <Position> items_pickedup; if (loopcount == 0) { // Initial step view.ShowInit(map, agents.Bots); Console.WriteLine("-- Ultimate map -- "); Console.WriteLine("Start training... "); if (loopcount % 1000 == 0) { Console.WriteLine("> Iteration " + loopcount); } agents.Execute_Ultimate(map, config, stat_ultimate, loopcount, out items_pickedup); // Modify map if items were picked up for (int i = 0; i < items_pickedup.Count; i++) { ItemManagement(map, items_ultimate, items_pickedup[i]); } loopcount++; } else if (loopcount == config.iterationlimit) { // End of iterations stat_ultimate.WriteStat_Ultimate(outputfolder, "stat_ultimate.csv", "visual_ultimate.csv", "localenv_ultimate.csv", config.botnum); stat_ultimate.Visuals(map, config.mapsize, config.botnum, outputfolder, "heatmaps.csv"); loopcount++; } else { // Step in training if (loopcount % 1000 == 0) { Console.WriteLine("> Iteration " + loopcount); } agents.Execute_Ultimate(map, config, stat_ultimate, loopcount, out items_pickedup); // Modify map if items were picked up for (int i = 0; i < items_pickedup.Count; i++) { ItemManagement(map, items_ultimate, items_pickedup[i]); } // Check items' respawn cycle ItemRespawnCheck(map, items_ultimate); agents.CheckAgentRespawn(config); loopcount++; } endoftraining = loopcount > config.iterationlimit; } Console.WriteLine("\n Training for Ultimate map ended.\n"); Console.ReadKey(); }