2016-05-10 11 views
1

遺伝的アルゴリズムにおけるクロスオーバ確率のポイントは何ですか?遺伝的アルゴリズムにおけるクロスオーバー確率

遺伝的アルゴリズムの一般的な手順は以下のとおりです(source

まず初期集団が生成されます。次に、選択方法(この場合トーナメント選択)を使用して、一対の子供を作成する個人のペアを選択する。

子は、サイズが希望の値に達するまで、子集団に追加されます。

次のステップでは、サイズNの親母集団とサイズMの子母集団を結合し、どちらか一方を置き換えて、両方の母集団から最良のN個の個体を維持する。

N = population size 
P = create parent population by randomly creating N individuals 
while not done 
    C = create empty child population 
    while not enough individuals in C 
     parent1 = select parent ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION ***** 
     parent2 = select parent ***** HERE IS WHERE YOU DO TOURNAMENT SELECTION ***** 
     child1, child2 = crossover(parent1, parent2) 
     mutate child1, child2 
     evaluate child1, child2 for fitness 
     insert child1, child2 into C 
    end while 
    P = combine P and C somehow to get N new individuals 
end while 

もちろん、100人の子供のうちの1人が突然変異するなど、ある確率で突然変異を行いたいかもしれません。

しかし、私はクロスオーバー率の点は見ません。トーナメント選択でペアになった両親が選択され、クロスオーバーが発生しなかった場合はどうなりますか?親は子供の人口に加えられるべきですか?この場合、私たちは親と子どもの人口に重複するメンバーに終わるでしょう。

ここでの目標は、各世代で必要な数の子供を作成することです。これはクロスオーバで行う必要があります。クロスオーバーレートが意味をなさないようにこのアルゴリズムを変更するには?

クロスオーバー確率が100%の場合、すべての子孫は クロスオーバーによって作成されます。それが0%の場合、古い世代の染色体の正確なコピー から完全な新しい世代が作成されます(ただし、これは新しい世代の が同じであることを意味しません)。 Source

交叉確率は0%であれば、全体の世代は古い集団からの染色体の正確なコピーで作られています。それでは、どのように新世代と同じではありませんか?

+0

「新世代はどうしてこういうの?」突然変異。 –

+0

@JohnColemanそれは、新しい染色体は、古い集団からの染色体の正確なコピーであると言います。 – user5539357

+0

彼らはたぶん間違っていますが、突然変異率と確率率の両方を0にしても、すべてのメンバーが再現されるわけではないので、全体としての人口はまだ変化しています。 –

答えて

1

アプリケーションによっては、遺伝的アルゴリズムを厳密に実装する必要はありません。擬似コードには多くの曖昧な文があることがわかります。

この例では、クロスオーバが起こらない場合、親と子は同じであり、いつものように変異ステップが適用されます。メインループが何度も評価され、十分なクロスオーバーが得られるため、これは問題ではありません。主な目標は、学習を改善することです。多くの子供を作成することは、必ずしもすべてのアプリケーションでこの目標を達成するとは限りません。

例では、積極的なクロスオーバが実際には良い親を壊してしまい、学習の質が低下する可能性があるということです。クロスオーバレートはそれをある程度保護するかもしれないが、私が言ったように、それはアプリケーションに依存する。

ベスト。

+0

希望の母集団サイズをNとしましょう。私たちは1からNまでのループを単純に実行することができ、(トーナメント選択を使用して)ペアのペアレントを見つけ、与えられた確率でクロスオーバを実行し、もし起これば、与えられた確率で突然変異を実行し、次世代。クロスオーバーが起こらなかった場合は、両親を次世代の人口に加えることができました。私はそれが最も理にかなっていると思いますか? – user5539357

0

新世代のすべての子は、古い世代の親の「クローン」です。しかし、あなたが "A、B、C、D"の染色体を持つ4つの親を持っていても、 "A、A、C、C、D"の染色体を持つ6つの子を持つことができます。

PS:もちろん、突然変異が適用された場合、その差はさらに大きくなります。

+0

私はクロスオーバーのために2つの親を選択し、クロスオーバーを行うかどうかを決定すると仮定します。決定が「いいえ」の場合、新しい母集団に両親のクローンを追加すべきですか?しかし、正しく取得すれば、これらのクローンで変異を実行することができます。 – user5539357

関連する問題