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(); }
public static int CompareFitness(KartBrain a, KartBrain b) => (a.Fitness > b.Fitness) ? -1 : ((a.Fitness < b.Fitness) ? 1 : 0);