public void Crossover(Genome genome2, out Genome child1, out Genome child2) { var pos = (int)(_random.NextDouble() * Length); child1 = new Genome(Length, false); child2 = new Genome(Length, false); for(var i = 0 ; i < Length ; i++) { if (i < pos) { child1.Genes[i] = Genes[i]; child2.Genes[i] = genome2.Genes[i]; } else { child1.Genes[i] = genome2.Genes[i]; child2.Genes[i] = Genes[i]; } } }
/// <summary> /// Create the *initial* genomes by repeated calling the supplied fitness function /// </summary> private void CreateGenomes() { for (var i = 0; i < PopulationSize; i++) { var genome = new Genome(GenomeSize); _thisGeneration.Add(genome); } }