private Generation CreateGenerationOfMutants(List <string> baseGenomes) { //Debug.Log("Generating generation from [" + string.Join(",", baseGenomes.ToArray()) + "]"); var genration = new Generation(); int i = 0; //Debug.Log("IndinvidualsCount = " + genration.CountIndividuals()); while (genration.CountIndividuals() < GenerationSize) { var baseGenome = baseGenomes[i]; var mutant = _mutator.Mutate(baseGenome); if (IsValidGenome(mutant)) { Debug.Log(mutant + " spawn of " + baseGenome + " is born"); genration.AddGenome(mutant); //Debug.Log("IndinvidualsCount = " + genration.CountIndividuals()); } else { Debug.Log(mutant + " spawn of " + baseGenome + " is too rubbish to be born"); } i++; i = i % baseGenomes.Count; } //Debug.Log("mutant Generation: " + genration); return(genration); }
private void ReadCurrentGeneration() { if (File.Exists(CurrentGenerationFilePath)) { var GenerationNumberText = File.ReadAllText(CurrentGenerationFilePath); if (!int.TryParse(GenerationNumberText, out GenerationNumber)) { GenerationNumber = 0; } string path = PathForThisGeneration(); //Debug.Log("looking for genreation at " + path); var lines = File.ReadAllLines(path); _currentGeneration = new Generation(lines); } else { Debug.Log("Current generation File not found mutating default for new generation"); } if (_currentGeneration == null || _currentGeneration.CountIndividuals() < 2) { //Debug.Log("Generating generation from default genomes"); _currentGeneration = CreateGenerationOfMutants(new List <string> { DefaultGenome }); } //Debug.Log("_currentGeneration: " + _currentGeneration); }