私の質問は、クロスオーバーを実行して重複を避ける方法ですか?
考えp1 = {1, 2, 5, 6, 3, 4}
てみるとp2 = {2, 6, 5, 4, 1, 3}
、クロスオーバーの 1 つはres = {1, 2, 5 , 6, 1 ,3}
、ご覧のように重複があります
。
これが私のコードです
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;
}