Ejemplo n.º 1
0
    public void NewGeneration()
    {
        // sort by fitness
        brainsList.Sort(KartBrain.CompareFitness);

        for (int i = elitKeepCount; i < brainsList.Count; i++)
        {
            KartBrain parent1 = ChooseParent();
            KartBrain parent2 = ChooseParent();

            brainsList[i].aiModel = AIModel.Crossover(parent1.aiModel, parent2.aiModel);

            brainsList[i].MutateModel(mutationRate, mutationStrength);
        }

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

        ++generation;
        bestFitness        = 0;
        genertionStartTime = Time.time;
        SpawnKart();
    }
Ejemplo n.º 2
0
 public static int CompareFitness(KartBrain a, KartBrain b) => (a.Fitness > b.Fitness) ? -1 : ((a.Fitness < b.Fitness) ? 1 : 0);