Пример #1
0
    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);
    }
Пример #2
0
    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++;
    }