2

NSGA II 遺伝的アルゴリズムを実装して、大学の時間割を作成しています。ソリューションのバリエーションに問題があります。

私のアルゴリズムは、初期化、突然変異、およびクロスオーバーのようにうまく機能しますが、最終世代の後、ソリューションを確認すると、それらはすべて同じです。たとえば、1 つの世代に 200 あり、そのうちの 64 は互いに同じであり、54 はそれぞれと同じです。その他など

私の質問は、これを引き起こしている可能性があるのは何ですか? そして、交叉と突然変異の最良の形態は何ですか?

また、世代サイズ、世代数、突然変異率、交差率の基準はありますか?

現時点では、次のように実行されます。

  1. ランダムに 300 個のソリューションを生成する
  2. フィットネスとランキングを計算する
  3. 200 の最良のソリューションを選ぶ
  4. これらの 5% を突然変異させ、80 人の子供を産む
  5. 再計算してランク付け
  6. ベスト300を選んで次の世代へ
  7. 繰り返す
4

3 に答える 3

1

あなたのアルゴリズムに間違いはないと思います。これは GA のよく知られた問題です。さまざまなソリューションが必要な場合は、Niching メソッドを実装する必要があります。その考えは、あなたの人口の同様の個人を罰することです。個人の類似性に関するいくつかのヒューリスティックを見つけ出し、類似した個人を母集団から除外するか、個人の適合度を排除することができます。これにより、個体群の多様性が維持され、バリエーション オペレーターが同じ個体を選択して進化させることができなくなります。Samir W. Mahfoud の "Niching Methods for Genetic Algorithms" に目を通しておくと便利です。

于 2013-03-15T11:43:47.423 に答える
0

この結果は必ずしも悪いものではありません。「近くに」他の実行可能なソリューションがないいくつかのソリューションに収束している可能性があります。あなたが収束している解決策は悪いですか?

私が気づいたことの1つは、クロスオーバーについて言及しているにもかかわらず、それを7つのステップの1つとしてリストしていないことです. 実際に突然変異だけを行っている場合、GA が局所的な最適値から抜け出すのがより困難になります。

于 2013-02-19T23:06:26.843 に答える
0

GA は、最小セットの対立遺伝子 (ソリューション) を最適なものとして選択する点に収束するように機能します。まれに、数千世代のような長い時間をかけて、1 つの最適な解が得られる場合があります。

しかし、場合によっては、100 回などの最小実行回数で解が収束することがあります。

どの世代まで試したのかわかりません。1000 世代に渡って結果を比較することをお勧めします。また、まったく新しい一連のソリューションを見ることができるように、何世代か後にプロットが変わる可能性があります

異なる表現には、異なる交差と突然変異があります。使用している表現がわかり、結果が世代数に正比例している可能性があります

于 2013-02-20T12:22:57.593 に答える