巡回セールスマン問題に取り組む遺伝的アルゴリズムを構築しています。残念ながら、突然変異してより良い結果を得る前に、1,000 世代以上持続できるピークに達しました。この場合、どの交叉演算子と突然変異演算子が一般的にうまく機能しますか?
3 に答える
順序付き突然変異と順序付き交差 (この記事を参照)。標準的なミューテーションやクロスオーバー操作では、通常、無効なソリューションが生成されます (ルート内の都市の重複や欠落など)。
最近似たような質問がありました。
実装のパフォーマンスを比較することに興味がある場合は、順序付けられたクロスオーバーと突然変異を使用して TSP を実装する Java アプレットがあります。
ピークが 1,000 世代を超えて残ることが問題である場合、問題は交差演算子と突然変異演算子にあるのではない可能性があります。母集団に十分なバリエーションを導入または維持していない可能性があります。私は、ある世代から次の世代へのクロスオーバー、突然変異、および生存者の割合を調べ、おそらく突然変異の割合を上げます.
明確にしていただけますか
「残念ながら、突然変異してより良い結果を得る前に、1,000 世代以上持続できるピークに達しました」 ?
交叉演算子をチェックして、子染色体に繰り返しノードがないことを確認できます。これらのクロスオーバー オペレーターのいくつかは、オーダー クロスオーバー (OX) とエッジ クロスオーバー オペレーターです。
突然変異は、1 つの染色体の 2 つの位置を交換するだけの簡単なものです。
ところで、「python」にタグを付けたので、Pyevolveを見てください。TSPの例もあります。