My question is how to perform a cross over and avoid duplication?
Consider p1 = {1, 2, 5, 6, 3, 4}
and p2 = {2, 6, 5, 4, 1, 3}
One of crossovers is res = {1, 2, 5 , 6, 1 ,3}
As you see there is a duplication...
Can we avoid it?
Here is My Code
private static Chromosome crossover(Chromosome chromosome1, Chromosome chromosome2) {
Chromosome newChromosome = new Chromosome();
for (int i = 0; i < chromosome1.size(); i++) {
if (Math.random() < uniformRate) {
newChromosome.addGene(chromosome1.getGene(i));
} else {
newChromosome.addGene(chromosome2.getGene(i));
}
}
return newChromosome;
}