0

GA でトーナメント セレクションを使用する方法について質問があります。初期集団として 100 個体があり、n 世代にトーナメント選択を適用したいとします。そのため、反復ごとに染色体の 20% しか得られません。私が思いついたアルゴリズムは次のとおりです。

choose 20% of the initial population
while (not end of iterations)
    select randomly n individuals from the left population (20%)
    if (number of chromosomes greater than two)
        select the best and mutate
        add to the population
    if (number of chromosomes greater than three)
        select best two of each pair and crossover them
        add crossover product to the population
    repeat process with new population
end while

このスキーマは正しいですか? ありがとう

4

2 に答える 2

2

人口の 80% を無視することは、GA の意図ではありません。とにかくなぜそれらを持っているのですか?これにより、遺伝的浮動が増加し、時期尚早の収束につながります。

トーナメント選択は、n 個の個体を取得し、次に最良の個体を親 1 として取得するように機能します。次に、n 個の個体を再度取得し、親 2 を取得します。これらは、交差する個体です。

サイズ 100 の人口の場合、バイナリ トーナメントは通常、十分な選択圧力を発揮するはずです。

于 2012-12-18T07:46:21.997 に答える
0

そうかもしれませんが、そのアウトラインで行っていることの詳細のいくつかに依存します。

  • トーナメントに選ばれる個人は、その世代で最も適した個人である必要があります
  • トーナメントから選ばれる個人は、フィットネスにある程度比例して選ばれる必要があります
  • 次の個体群のために新しい個体を生成するときは、個体群を以前のレベルに戻すのに十分な量を生成する必要があります

さらに、それは言った:

  • 20% までのカリングは非常に急勾配に思えます
  • 通常、親の数は固定されており、変数やランダムではありません
  • 通常 (常にではありませんが) 親の数は 2 です。親の数が多いほど、有益なスキーマをより長く保持する可能性が低くなります。
于 2012-12-19T23:59:01.583 に答える