public void CopyTo(Chromosome destination) { for (int i = 0; i < Genomes.Length; i++) { destination.Genomes[i] = this.Genomes[i]; } destination.CalculateFitnessValue(); }
public static void DoCrossover(Chromosome parent1, Chromosome parent2, Chromosome offspring1, Chromosome offspring2) { Random rnd = new Random(); for (int i = 0; i < parent1.Genomes.Length; i++) { double d = rnd.NextDouble(); offspring1.Genomes[i] = Math.Round(d * parent1.Genomes[i] + (1 - d) * parent2.Genomes[i], GeneticAlgorithm.SpaceQuantizationDecimalPlaces); offspring2.Genomes[i] = Math.Round((1 - d) * parent1.Genomes[i] + d * parent2.Genomes[i], GeneticAlgorithm.SpaceQuantizationDecimalPlaces); } // Calculate FitnessValue of offsprings offspring1.CalculateFitnessValue(); offspring2.CalculateFitnessValue(); }