1

GA で新しい世代を取得する方法を完全に理解するのに苦労しています。私の知る限り、これらは手順です(アプローチを考えてみましょうelitist):

  • 選択 (母集団で最高の 20% を保持し、それらを次の世代に入れる)
  • 交差 (残りの 70% を交差 - 各親は他の親と 1 回だけ交差します。ここで交差確率をどうしますか?)
  • mutate (世代内のすべての標本を確率 MP で突然変異させる)

これで問題ないかどうかはわかりませんが、前述のように、クロスオーバー確率 CP をどうしますか? つまり、世代間で個体群サイズを同じにする必要があるため、個体群の悪い 70% からすべての個体を交配する必要があるため、CP は役に立たなくなります。

4

2 に答える 2

2

クロスオーバーの確率は次のように機能します。

if rand() < crossProb:
  child1, child2 = crossover(parent1, parent2)
else:
  child1, child2 = parent1, parent2

rand() が [0, 1) の間の float を与え、クロスオーバー関数が 2 つの値を返すように設計されていると仮定します。突然変異は本質的に同じように機能しますが、単一の親子関係があります。

選択プロセスの最初の 20% には、変異や交差がないことが単純に保証されています。

于 2013-03-17T08:41:02.193 に答える
1

各個体には 2 つのゲノムのコピーが含まれている可能性があり、配偶子には 1 つのコピーが含まれています。配偶子は、これらの 2 つのコピーのそれぞれから必要な遺伝子をランダムに取得することによって、このようなデュアル ゲノムから生成されます。配偶子が結合すると、2 つのコピーを持つ新しい個体が生成されます。少なくとも、これは、クロスオーバーが常に発生する自然界でどのように機能するかです (CP などはありません)。

ただし、これには、選択に関与する単一の表現型に 2 つのゲノムがどのように反映されるかを解決する必要があります。遺伝的アルゴリズムで解決しようとするタスクに応じて、これは些細なものから非常に問題のあるものまでさまざまです。

また、自然と人間が発明した多くのアルゴリズムを提供するJGapパッケージを使用することをお勧めします。

于 2013-03-17T08:41:06.307 に答える