web-dev-qa-db-ja.com

遺伝的アルゴリズムの新世代は指数関数的に増加

私はC++で遺伝的アルゴリズムをプログラミングしていて、GA'a演算子を実行するためのあらゆる種類の方法(選択、クロスオーバー、突然変異)を検索した後、疑問を思いつきました。

私の初期人口が500であるとしましょう。私の選択は、500の上位20%を取得することです(最高のフィットネスに基づく)。だから私は100人の個体を交尾させます。クロスオーバーを行うと、2人の子供が生まれ、両方が一緒になって生存率が50%になります。ここまでは順調ですね。突然変異を開始し、すべてが大丈夫です。今、私が次世代を選択し始めたとき、私には多数の子供(この場合、あなたが知りたいのであれば4950)がいます。さて、GAを実行するたびに、すべての子を次の世代に送ると、世代ごとの個人の数が指数関数的に増加します。

したがって、初期人口のこの範囲から逸脱することなく、新しい世代を実現するために子供を選択する方法がなければなりません。

私がここで求めているのは、新しい世代を満たすために子供を選ぶ方法があるかどうかです[〜#〜]または[〜#〜]どういうわけか(そしておそらく減らす)親を選ぶべきですか交尾するので、結局子供はあまり出ません。

3
RubenC

その後、最初の母集団を生成し(プールはかなり大きいはずです)、それに適応度関数を適用して、次の世代の親を選択します。

両親ができたら、他の個人を捨てて、新しい世代に置き換えることができます。結局のところ、この置き換えにより、個々のIが次世代に貢献するための適合基準に適合しなかった場合、人口サイズを制御できます。なぜそれを維持する必要があるのでしょうか。

ただし、調査では、アルゴリズムが極大/極小に非常に速く収束する可能性が高いことに注意してください。これはあなたがのみあなたの人口の上位20%を交配のために保つからです。これは通常、GAが極大値/最小値にとどまるため、悪い考えです。これを修正するには、たとえば、トップなど、より悪いソリューションもいくつか含める必要があります。 20%と悪い5-10%。

編集:あるいは、@ Jeff Langemeierが提案するものに似たものを探すこともでき、人口の悪い10%を選択する代わりに、最良ではない(この場合は残りの80%)個人から特定の量をランダムに選択します。

3
npinti

次世代の交配に適した子供を選ぶことは、両親を適合させたのと同じフィットネス計算です。また、現在の世代の終わりには、最初の人口より多くの子供を持たないようにする必要があります。覚えておいてください、これは万人のための無料ではなく、適者生存です。

あなたは配偶者にふさわしい非常に選ばれたグループを選んでいます。基本的に、最初の母集団(検索スペース)の75〜80%以上を破棄するか、最も適切な相手だけを確保するために必要な量を破棄します。

遺伝的アルゴリズムは、サーチスペースを使い尽くすまで、つまり交配ペアがなくなるまで実行します。うまくいけば、最後の子孫または子孫の非常に小さなグループが希望の答えを出します。

これには、フィットネス、クロスオーバー、および突然変異の要因を調整する必要があります。 GAを記述して、算術演算子(*、/、+。-)と数値(0-9)を組み合わせて、次のようなランダムに生成された値を形成する方法を解決したことを思い出します。 45.私は自分の染色体を、すべての演算子と0〜9の数値を含むxビットのバイナリ値として表現しました。

私は問題を解決するためだけに選択、交差、突然変異を微調整しなければなりませんでしたが、それは解決できました。母集団が制御不能になっているのを見る場合、アルゴリズムに何かが正しくありません。私は、最初の人口10万人から、交尾に適さなかった50〜75kを失ったことを思い出します。

もう少し遊んでください。あなたはそれがどのように機能するかを理解していて、あなたはそれを手に入れると確信しています。

3
Mushy

私があなたの質問に答える前に、私はあなたに尋ねなければなりません。 GAを実行したときに、実際にソリューションにメリットが見られましたか?言い換えれば、各反復の後、あなたが持っている新しい世代は実際には前の世代よりも優れていますか?

もしそうなら、私は衝撃的に驚いています。

  1. Mushyが非常に正確に指摘したように、あなたのGAはシミュレートされたアニーリング(またはモンテカルロ)の単なる糖衣です)
  2. 組み合わせただけでエントロピーが増加すると、探索される検索スペースは増加し続けます。そして、私たちがよく知っているように、数世代後、あなたのソリューションは縮退します。

    (a)自分が持っている操作または操作に関する一連のルールがあります。十分な創造力があれば、クロスオーバー、選択、ミューテーション、またはその他のルールがあります。

    (b)神の介入、あなたは人間の手を突き刺し、反復の一部またはすべてに介入します(適応度関数に追加されたヒューリスティックを介して実行するか、反復1でこれを実行し、2で実行することができます...)

免責事項:私はこの分野の専門家ではありませんが、私のような人々でさえ、どこかにヒューリスティックを導入する必要があることを知っています。

0
InformedA