4

元の紙を使用して、自分できれいに実装しようとしましたが、行き詰まりました。

最後の世代に次の種があったとしましょう。

Specie 1:     members: 100    avg_score: 100
Specie 2:     members: 150    avg_score: 120
Specie 3:     members: 300    avg_score: 50
Specie 4:     members: 10     avg_score: 110

次世代に向けて今、私の試み。は次のとおりです。

  1. 種から、1 つのランダムなゲノムを除く各ゲノムを削除します。
  2. 各ゲノムを種に配置する / おそらく新しいものを作成する
  3. 種のスコアを、種の各ゲノムのスコアの平均に設定します。

    4.1 各種の中で最悪の 90% を殺して繁殖します。

    4.2 スコアに基づいて種を選択します。

    4.3 その種から、2 つのゲノムを選択し、新しいゲノムを繁殖させます。

特にゲノムの 90% を「殺す」場合、これが正しい試みであるかどうかはわかりません。このパーセンテージ値は、現在私がランダムに選択しています (これは概念に関するものです)。

種の場合、殺害後にメンバーが 0 になります。その後絶滅したのでしょうか?

私の例では、Specie 4 は 90% を殺すと絶滅する可能性があります。

私の試みは正しいですか、または種は通常どのように絶滅しますか?

4

1 に答える 1

5

まず、ゼロから NEAT を実装しようとしないことを強くお勧めします。これは、最初に思われるよりもはるかに複雑なことです (多くの利用可能な実装の公開リポジトリを自由に見てください)。

さて、あなたの質問にもっと具体的に答えるために:

NEATのフレーバーはたくさんあります。あなたの場合、あなたの疑いはエリート主義の概念を扱っているようです。はい、通常は自分で設定する必要があるパラメーターです。通常、アルゴリズムは次のように機能します。

  1. ゲノムのスペシエイト。つまり、それらを特定の数の種に配置して、それらを互いに近づけます (たとえば、k-means スペシエーション)。
  2. エリートを選択します。各種から特定の数またはパーセンテージの個体を確保し、それらを新しい世代に渡します。これをどのように適用するかに応じて、各種から少なくとも1人のメンバーが常に生き残ります!
  3. 適応度 (およびおそらく種の適応度) に基づいて、生殖用のゲノムを選択します。これにより、さまざまな特定の実装フレーバーも可能になります。
  4. 再生。無性生殖(選択されたゲノムのバリエーション)と有性生殖があります。有性生殖は、2 つの親 (ここでも異なる実装) から遺伝子を取得し、いくつかを変異させることによって機能します。種間および種内の有性生殖 (もう一方の親は同じ種または別の種) がありますが、どちらも自由に無効にすることができます。
  5. 子孫の再評価 (新しいフィットネス値の設定)。
  6. スペシエーション。

種分化は定期的に (通常は世代ごとに) 再適用されることに注意してください。そのため、種は実際には強力な定義を持っていません (次世代に変更されずにコピーされたエリート ゲノムが新しい種に割り当てられることを実際に妨げるものは何もありません)。

個体群のサイズを固定して k-means 種分化を行っている場合、何があっても常に k 種が存在します。ある意味では、それらは反復ごとにすべて新しい種です。

于 2018-08-14T09:06:41.700 に答える