私の質問は、クロスオーバーを実行し重複を避ける方法です。
あなたは重複が見たよう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;
}
Hmm - no。ユニークな値の2つの配列では、交換された要素が同一である場合にのみ要素を交換し、結果に重複はなく、交換を無意味にします。これが運動であれば問題の定式化を見ることができますか? –
@ 500-InternalServerErrorこれは宿題ではなく、ちょっと傾いているだけです...問題は遺伝的アルゴリズムを使用して配列をソートすることです、それだけでなく、遺伝的アルゴリズムではクロスオーバーを使用する必要があります... –
ソートはGAのための良いアプリケーションだと思いますか? –