私の質問はこの1つにリンクされています: Roulette-wheel selection in Genetic algorithm. Population needs to be sorted first? 私たちは人口をソートしない場合は、それのためのルーレットホイールの選択を整理する方法は何ですか? 確かに、私たちは線形方法で検索しなければなりません。この場合、C++またはJavaでコードスニペットがありますか?遺伝的アルゴリズムでソートされていない集団に対してルーレットホイールの選択をどのように構成すべきですか?
5
A
答えて
12
人口はまったくソートする必要はありません - ルーレット選択の鍵は、特定の個人が再生のために選択される確率がその適応度に比例することです。
は、次のように適応度と、ソートされていない人口を持って言う:
[12, 45, 76, 32, 54, 21]
をルーレット選択を実行するには、あなただけの240までの範囲0で乱数(人口のフィットネスの合計)を選ぶ必要があります。次に、リストの最初の要素から始めて、乱数がゼロ以下になるまで各個人の適応度を減算します。したがって、上記の場合、ランダムに112を選択すると、次のようになります。
Step 1: 112 - 12 = 100. This is > 0, so continue.
Step 2: 100 - 45 = 55. This is > 0, so continue.
Step 3: 55 - 76 = -21. This is <= 0, so stop.
したがって、私たちは#3の再生を選択します。どのように集団を並べ替える必要がないかに注意してください。
ので、擬似コードでは、それはつまるところ:最終ラインで- 1
は、我々がしたにも関わらずあるため、ループの最後の反復(内で行われますincrement i
に対抗するためにあることを
let s = sum of population fitness
let r = random number in range [0, s].
let i = 0.
while r > 0 do:
r = r - fitness of individual #i
increment i
select individual #i - 1 for reproduction.
注意私たちが望む個体を発見した、それにかかわらず増分する)。
関連する問題
- 1. ルーレットホイール選択を使用した遺伝的アルゴリズム
- 2. Cで遺伝的アルゴリズムのための母集団を生成
- 3. 遺伝的アルゴリズムの選択
- 4. 遺伝的アルゴリズムにおけるルーレットホイールの選択。母集団は最初にソートする必要がありますか?
- 5. 遺伝的アルゴリズムのランク選択についての混乱
- 6. 遺伝的アルゴリズムにおける母集団の分布
- 7. 遺伝的アルゴリズムの選択演算子
- 8. 遺伝的アルゴリズムの選択メカニズム
- 9. どのような遺伝的アルゴリズム/プログラミングライブラリを使用していますか?
- 10. 遺伝的アルゴリズムによるソート、クロスオーバーでの重複データ
- 11. 遺伝的アルゴリズムを使用して、2つのニューラルネットワーク構造に基づいて子孫を作成するにはどうすればよいですか?
- 12. 遺伝的アルゴリズム。母集団の最適なサイズを見つける方法
- 13. セルラー遺伝的アルゴリズム - セルラー遺伝的アルゴリズムでは、両親
- 14. 遺伝的アルゴリズムの環境を作成するにはどうすればよいですか?
- 15. 遺伝的アルゴリズムの遺伝子型
- 16. この遺伝的アルゴリズムをどのようにコーディングするのですか?
- 17. 遺伝的アルゴリズムトーナメントの選択
- 18. 構造体/遺伝的アルゴリズムの使用
- 19. Pythonの遺伝的アルゴリズムのデータ型はどれですか?
- 20. ゼロサムゲームの遺伝的アルゴリズムが協力しないようにする
- 21. 遺伝的アルゴリズム:フィットネス
- 22. DEAP遺伝的アルゴリズム
- 23. 遺伝的アルゴリズム個体対染色体
- 24. フィーチャ選択を使用した遺伝的アルゴリズム
- 25. 遺伝的アルゴリズム:Langermannの関数とトーナメントの選択
- 26. MPIでサポートされている最速の遺伝アルゴリズムC++ライブラリ
- 27. 遺伝的アルゴリズム - 定常状態の選択とは何ですか?
- 28. Matlab遺伝的アルゴリズムの制約を設定するにはどうすればよいですか?
- 29. 遺伝的アルゴリズムでガウス変異法を実装するにはどうすればよいですか?
- 30. タイムテーブルの生成Javaの遺伝的アルゴリズムを使用して