示例#1
0
    void FixedUpdate()
    {
        Population.Advance();

        if (Input.GetKeyDown(KeyCode.Space))
        {
            PopulationHistory.SaveBest(ConfigManager.config.neuralNet.weightsFolder);
        }
    }
    public void Epoch()
    {
        Debug.Log("Finished generation " + nGeneration + " with a total fitness of " + GetFitness());
        PopulationHistory.AddIndividuals(Individuals);
        nGeneration++;
        DestroyGameObjects();

        Individuals = Individuals.OrderByDescending(o => o.Fitness).ToList();

        List <Individual> newIndividuals = new List <Individual>();

        newIndividuals.AddRange(CloneElite(ConfigManager.config.geneticAlgorithm.nElite));
        newIndividuals.AddRange(ReproductionHelper.Reproduce(Individuals, ConfigManager.config.geneticAlgorithm.nIndividuals - ConfigManager.config.geneticAlgorithm.nElite, GetFitness()));
        MutationHelper.Mutate(newIndividuals.GetRange(ConfigManager.config.geneticAlgorithm.nElite, newIndividuals.Count - ConfigManager.config.geneticAlgorithm.nElite));

        for (int i = 0; i < newIndividuals.Count; i++)
        {
            newIndividuals[i].Index = i;
        }

        Individuals = new List <Individual>(newIndividuals);
        CreateGameObjects();
    }