Beispiel #1
0
        public void CopyTo(Chromosome destination)
        {
            for (int i = 0; i < Genomes.Length; i++)
            {
                destination.Genomes[i] = this.Genomes[i];
            }

            destination.CalculateFitnessValue();
        }
Beispiel #2
0
        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();
        }