私は現在、元の論文を参考にして、KennethStanleyによって開発されたNEATアルゴリズムを実装しています。
クロスオーバー方式について説明しているセクションで、少し混乱します。
したがって、上の図はNEATのクロスオーバー方法を示しています。遺伝子がどの親から受け継いだかを決定するために、この論文は次のように述べています。
一致する遺伝子はランダムに継承されますが、互いに素な遺伝子(途中で一致しないもの)と過剰な遺伝子(最後に一致しないもの)は、より適切な親から継承されます。
一致する遺伝子(1〜5)については、理解しやすいです。Parent1またはParent2のいずれかからランダムに継承します(両方の確率が50%です)。しかし、互いに素な(6-8)遺伝子と過剰な(9-10)遺伝子については、Parent1またはParent2のいずれかにしか遺伝子がないため、より適切な親から継承することはできません。
例えば:
Parent1の適合度はParent2の適合度よりも高くなっています。互いに素な遺伝子6はParent2にのみ存在します(もちろん、互いに素で過剰な遺伝子は1つの親でのみ発生するため)。したがって、より適切な親からこの遺伝子を継承することを決定することはできません。同じことが他のすべてのばらばらで過剰な遺伝子にも当てはまります。それらが存在する親からのみ継承できます。
だから私の質問は:あなたはおそらくより適切な親からすべての一致する遺伝子を継承し、ばらばらで過剰な遺伝子を引き継ぐだけですか?それとも私はここで何かを誤解していますか?
前もって感謝します。
実際の実装を見て、それがどのように処理されるかを確認すると役立つ場合があります。ここにある元のC ++コード(2085行目以降を参照)では、不適合な親からの互いに素で過剰な遺伝子はスキップされているようです。
あなたの実装では、不適合な親から互いに素で過剰な遺伝子を継承することができますが、確率1でそれらを無効にして、後でそれらに点ごとの突然変異を行うことができます(無効から有効に切り替えます)。ただし、これによりゲノムが大幅に肥大化する可能性があるため、何が機能するかをテストして確認してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加