2009-07-20 8 views
1

皆さん、私は、トーナメント選択の複数の反復がどのように機能するのか少し混乱しています。遺伝的アルゴリズムにおけるトーナメントセレクションの複数反復

ランダムペア(またはk個のメンバー)を選択し、勝者を相手プールに入れることがわかっています。交配プールがいっぱいになるまでこれを続けます。

しかし、後で何が起こるかわかりません。

仲間のプールでランダムに交配し始めますか?新しい世代のランダムペアを選択して選択プロセスを再開しますか?

ありがとうございました。

答えて

1

伝統的に、トーナメントの勝者が見つかった後、彼らは次世代を形成します。この後、突然変異、選択などのプロセスはすべてサイクルを続けます。

4

私はかなりの数のこれらのジェネリックアルゴリズムを書いていますが、同じコードを何度も書くことを避けるためのフレームワークを作成しました。

仲間プールの場合、探している個人の種類、探しているソリューションによって異なります。また、個人を結合する方法がある場合は、より良いチャンスが生まれますより良い個人。

ランダムな交配を使用することはできますが、より良い個人を生み出すかどうかわからないため、悪化することがあります。それはまだ良い解決策であり、私がこれらのアルゴリズムを書いてみると、私は常にランダムな交配を使いましたが、2つの古いものから新しい個人を取得した直後に、私は3の性能を比較して悪化させ、 2人の親が時々(そして1秒後の子供を捨てる)、あるいは1人の親と1人の子供で終わる。

しかし、より効率的にするためには、個人を結合してより良い解決策を生み出す方法を知っていれば(これは非常に扱いにくいかもしれません)、親和性関数を使うことができます。それらの間の。トリッキーな部分は、親和性を決定することです。問題によっては、それは非常に異なる場合があります。たとえば、旅行セールスマンの問題を取り上げると、類似度の低い個体を交配するときに最良の解決策が得られます。だから私の親和性関数は1 - 類似性を返しました。

このようにして、反復回数を80%削減し、非常に良い解決策を得ることができました。

プールが大きいほど、親和性関数は長く実行されます。親和性関数はO(n²)、さらにはO(n³)でもかまいません。この場合、ボトルネックになる可能性がありますあなたのアルゴリズムの。この場合、ランダムな交配を使用する方がよい場合があります。

結論として、無作為な交配は良いことです。結局のところ、実際のところこのように動作すると言えますが、2人の間の親和性を計算する方法を知っていれば、あなたは良い解決策を得るために必要な繰り返しです。コンピューティングアフィニティは非常に複雑になることがあります(また、特定のプールの最適なアフィニティーを計算することはNP完全であると推測しています)。

+0

+1フレームワークを作成します。私はGAに恋していて、たくさんのアルゴリズムを書いたとき、私は大学で自分自身を作りました。残念ながら、私は大学の後にそれを続ける時間がなかった。 :( –

2

これはしかし、私はその後何が起こるかわからないんだけど、良いアドバイスけど...

ではありません。

何でもしてください。あなたはそれらをすべて変えることができます...または、あなたがトーナメントで選んだ各ペアを仲間にすることができます。どちらが最善のものであれ使用してください。クリエイティブに。

このフォーラムの誰かが指摘しているように、GAについての汚い小さな秘密は、科学よりも芸術だということです。

また、本当に良いアドバイスを得るには、解決したい問題についてより詳しく説明する必要があります。