2

まず、これは宿題の一部です。

遺伝的アルゴリズムを実装しようとしています。クロスオーバーする親の選択について混乱しています。

私のメモでは(明らかに何かが間違っています)、これは例として行われていることです。

  1. Pc (交叉の可能性) * 集団サイズ = 交叉する推定染色体数 (偶数でない場合は、最も近い偶数に丸める)
  2. すべての染色体に対して [0,1] の範囲の乱数を選択し、この数が Pc より小さい場合は、クロスオーバー ペアとしてこの染色体を選択します。

しかし、2 番目のステップが適用されると、選択された染色体数は最初のステップで見つかった結果と等しくなります。ランダム性のため、これは常に保証されるわけではありません。

したがって、これは意味がありません。クロスオーバーの親を選択する方法を検索しましたが、見つけたのはクロスオーバーのテクニック (ワンポイント、カット、スライスなど) と、選択した親の間でクロスオーバーする方法 (これらに問題はありません) だけでした。クロスオーバーのためにどの染色体を選択すればよいかわかりません。提案や簡単な例はありますか?

4

2 に答える 2

8

次のように実装できます。

すべての新しい子について、ランダムな確率によるクロスオーバーの結果であるかどうかを決定します。はいの場合、2つの親を選択します。ルーレットホイールの選択またはトーナメントの選択を通じて。二人の親が子供を作り、それからあなたはそれを突然変異確率で突然変異させ、それを次世代に加えます。いいえの場合は、「親」クローンを1つだけ選択し、確率で変異させて、次の母集団に追加します。

私が指摘し、コメントしたい他のいくつかの所見。「染色体」という言葉は、個人的なものであるはずなのによく読みます。染色体を選択することはほとんどありませんが、完全な個体を選択します。染色体はソリューションの一部にすぎません。それはつまらないかもしれませんが、解決策は染色体ではありません。解決策は、対立遺伝子の形でそれらの発現を示す遺伝子からなるいくつかの染色体からなる個体です。多くの場合、個人の染色体は1つだけですが、それでも用語を混在させることはできません。

また、基本的には特別なタイプの遺伝的アルゴリズムにすぎない遺伝的プログラミングにタグを付けたことにも気づきました。GPでは、木を数式やコンピュータープログラムを表すことができる染色体と見なします。あなたの質問はGPについてではないようです。

于 2012-12-24T10:52:22.073 に答える