private void ResetGeneration() { // Restarts the training generation from scratch immediately: // Should be able to remove this eventually: teamsConfig.environmentPopulation.fitnessManager.ProcessAndRankRawFitness(teamsConfig.environmentPopulation.popSize); // Record and Remove Baseline Genomes: teamsConfig.environmentPopulation.TrimBaselineGenomes(); for (int i = 0; i < teamsConfig.playersList.Count; i++) { //Debug.Log("Player " + i.ToString()); teamsConfig.playersList[i].fitnessManager.ProcessAndRankRawFitness(teamsConfig.playersList[i].popSize); // Record and Remove Baseline Genomes: teamsConfig.playersList[i].TrimBaselineGenomes(); } // Cleanup for next Gen: // Reset fitness data: // RE-Sample and Add Baseline Genomes: teamsConfig.environmentPopulation.AppendBaselineGenomes(); teamsConfig.environmentPopulation.fitnessManager.InitializeForNewGeneration(teamsConfig.environmentPopulation.environmentGenomeList.Count); teamsConfig.environmentPopulation.ResetRepresentativesList(); for (int i = 0; i < teamsConfig.playersList.Count; i++) { // RE-Sample and Add Baseline Genomes: teamsConfig.playersList[i].AppendBaselineGenomes(); teamsConfig.playersList[i].fitnessManager.InitializeForNewGeneration(teamsConfig.playersList[i].agentGenomeList.Count); teamsConfig.playersList[i].ResetRepresentativesList(); } // Reset default evals + exhibition evaluationManager.ResetForNewGeneration(teamsConfig); gameManager.uiManager.panelTraining.moduleViewUI.SetPendingGenomesFromData(this); }
private void NextGeneration() { Debug.Log("Generation " + playingCurGen.ToString() + " Complete!"); if (playingCurGen == 100) { } // Crossover: teamsConfig.environmentPopulation.fitnessManager.ProcessAndRankRawFitness(teamsConfig.environmentPopulation.popSize); for (int i = 0; i < teamsConfig.playersList.Count; i++) { //Debug.Log("Player " + i.ToString()); teamsConfig.playersList[i].fitnessManager.ProcessAndRankRawFitness(teamsConfig.playersList[i].popSize); } Crossover(); // Cleanup for next Gen: // Reset fitness data: teamsConfig.environmentPopulation.fitnessManager.InitializeForNewGeneration(teamsConfig.environmentPopulation.environmentGenomeList.Count); teamsConfig.environmentPopulation.historicGenomePool.Add(teamsConfig.environmentPopulation.environmentGenomeList[0]); teamsConfig.environmentPopulation.ResetRepresentativesList(); for (int i = 0; i < teamsConfig.playersList.Count; i++) { teamsConfig.playersList[i].fitnessManager.InitializeForNewGeneration(teamsConfig.playersList[i].agentGenomeList.Count); //teamsConfig.playersList[i].historicGenomePool.Add(teamsConfig.playersList[i].agentGenomeList[0]); teamsConfig.playersList[i].AddNewHistoricalRepresentative(teamsConfig.playersList[i].agentGenomeList[0]); teamsConfig.playersList[i].ResetRepresentativesList(); teamsConfig.playersList[i].trainingSettingsManager.mutationStepSize *= 0.9925f; teamsConfig.playersList[i].trainingSettingsManager.mutationChance *= 0.9925f; teamsConfig.playersList[i].trainingSettingsManager.newHiddenNodeChance *= 0.99f; teamsConfig.playersList[i].trainingSettingsManager.newLinkChance *= 0.9925f; } evaluationManager.maxTimeStepsDefault += 4; Mathf.Clamp(evaluationManager.maxTimeStepsDefault, 128, 4096); // Best Performer Brain: //teamsConfig.playersList[0].agentGenomeList[0].PrintBrainGenome(); // Reset default evals + exhibition evaluationManager.ResetForNewGeneration(teamsConfig); playingCurGen++; }