protected override void EndGeneration() { Generation currentGeneration = generations.Last.Value; foreach (GameObject critter in critters) { CritterCtrl ctrl = critter.GetComponent <CritterCtrl>(); CritterANNControl ann = critter.GetComponent <CritterANNControl>(); currentGeneration.AddPhenotype(ann.neuralNetwork.ws, ctrl.LifeSpan() - ctrl.naturalLifeSpan()); } base.EndGeneration(); }
protected override void StartGeneration() { crittersAlive = 0; ResetFood(); ResetCritters(); if (generations.Count > 0) { Generation prevGeneration = generations.Last.Value; float[][][] offspring = prevGeneration.GenerateOffspring(crittersAmount); int i = 0; foreach (float[][] genes in offspring) { GameObject critter = critters[i]; CritterANNControl ann = critter.GetComponent <CritterANNControl>(); ann.neuralNetwork.SetWeights(genes); i++; } } base.StartGeneration(); }