我的问题是如何进行交叉并避免重复?
考虑一下p1 = {1, 2, 5, 6, 3, 4}
,p2 = {2, 6, 5, 4, 1, 3}
其中一个交叉是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;
}