void Update() { Time.timeScale = TimeScale; TotalTime += Time.deltaTime; if (TotalTime >= TimeLimit) { EvaluateFitness(); //Check fitness SelectAndCrossover(); //Select and crossover Mutate(); // Mutate population LogGenerationData(); LogFittestData(); DestroyPopulation(); InstantiatePopulation(); TotalTime = 0F; Generation++; //Increment Generation counter } else { if (FittestMonster != null) { FittestMonster.DeHighlight(); } FittestMonster = GetFittestMonster(); if (FittestMonster != null) { FittestMonster.Highlight(); } } }
/// <summary> /// Get the current fittest gene in the gene pool. /// </summary> /// <returns></returns> public BlockMonster GetFittestMonster() { var fitness = 0F; var monsters = GetComponentsInChildren <BlockMonster>(); foreach (var monster in monsters) { if (monster.GetFitness() > fitness) { fitness = monster.GetFitness(); FittestMonster = monster; } } return(FittestMonster); }