ゲーム「Life」と自然selectionのモデリング

私は先週病院に横たわっていました。 そして、ロビーで祖父とキャベツに浸したリンゴのレシピ、そして洪水の牧草地でポクロフを歩くのがどれほど良いかについて話し合ったので、特別な欲求はありませんでしたので、私は自分で娯楽を考えなければなりませんでした。



ゲーム"Life"について考えました。これは、少し前にHabréで記憶されていました。 初期状態だけで生きて死ぬ不幸な細胞であり、自分の生存のために何もできないことを残念に思いました。 その結果、ゲームのルールの拡張機能を思い付きました。これにより、人口規模の変化だけでなく、その中の自然選択もシミュレートできます。



最もせっかちな人は、何が起こったのかをすぐに見ることができます。





念のため、古典的な「人生」のルールを思い出します。



正方形のフィールドに分割された正方形の形で表示される「宇宙」があります。 フィールドが空であるか、セルがその上にある可能性があります。 ゲームの「日」ごとに、次のルールに従って新しい世代のセルが計算されます。



宇宙は「トロイダル」です。右端を超えると、左と上、下が同じになります。



細胞に生命のために戦う機会を与えるために、追加のルールを導入しました。



新しい世代が計算される前に、各セルは周囲の自由なフィールドの中から自分の意見でより魅力的な位置を見つけようとし、そこに移動します。 フィールドの魅力は隣人の数に依存し、セルのゲノムによって決定されます。そこには、快適と見なされる隣人の数が記録されます。



ゲノムは9個の遺伝子番号の配列で表され、各配列の値は0(遺伝子がサイレント)または1(遺伝子がアクティブ)の値を取ることができます。 最初の要素(ゼロ要素)は、0個の隣接点、2番目の要素-1個の隣接要素など、最大8個の点の魅力を決定します。遺伝子がアクティブな場合、対応する数の隣接要素を持つフィールドは、セルによって移動に魅力的であると見なされます。 静かな場合、セルはそのようなポイントに移動しません。

たとえば、細胞がゲノム[0,1,1,0,0,0,0,0,0,0]を持っている場合、1つまたは2つの近傍を持つ点に移動しようとします。 そして、何もない場合は、そのまま残ります。 同じ魅力を持つポイントから、ランダムなものが選択されます。



ゲノムは細胞の色に反映されます。 セルが赤くなるほど、彼女は孤独を愛します。 青が多ければ多いほど、彼は会社を愛しています。 緑が多ければ多いほど、「黄金の平均」に近くなります。つまり、2つまたは3つの隣人の好みです。



新しい細胞が生まれると、その隣の3つの細胞と同じゲノムを受け取ります。これは最後に来ました(「 最後に彼とお父さんの組み合わせを完了した人」)。



セルの順序はランダムです。



同時に、古典的なConwayのGame of Lifeは、すべての細胞がゲノム[0,0,0,0,0,0,0,0,0,0]を持っている究極のケースです。



その後、このアイデア全体の実装をJavaScriptで記述しました。 比較のため、計算は2つの「ユニバース」に対して直ちに実行されます。 左側-私のルールによると、右側-コンウェイの古典的なルールによる。 起動時に、宇宙はランダムに満たされます。 サイズ、開始時のセル数、および各セルでアクティブになる遺伝子の数を調整できます。

セルをクリックすると、下にそのゲノムが表示されます。



病院のベッドに横たわっている小さなネットブック画面でGoogle Chromeでしかテストしていないので、すぐに警告します。したがって、バグは単なる可能性ではありませんが、確実に可能です。



これは、2つの活性遺伝子を持つ細胞の集団が通常どのように発達するかの例です。

まず、さまざまなゲノムがあります。 「青」細胞が容易になり(8つの遺伝子のうち4つがこの原因である)、したがって、青色が優勢になります。



最初のものは「misanthropes」です-赤いもの、次に「友好的な」青いもの、それぞれ有用な遺伝子を持っている3つのグループが残っています。

[0,0,1,1,0,0,0,0,0]

[0,0,0,1,0,0,0,1,0]

[1,0,0,1,0,0,0,0,0]



しかし、レタスには2つの有用な遺伝子があり、残りにはそれぞれ1つの遺伝子があるため、最終的には勝ち、すべてのスペースを埋めます。

コンウェイの宇宙では、この頃までに人口が大幅に減り、安定した島が形成されました。





期待していたこと、実際に何が起こったのか。



「生命のルールを理解し」、2つまたは3つの隣人との位置を占領しようとする細胞は、明らかに、遺伝子に恵まれていない対応する細胞よりも有利であり、速く増殖するはずです。 しかし、最終的には、人口過剰のために、数の一定の均衡が生じることになっていました。 古典的な生命のように、安定した幾何学的または遺伝的組み合わせが際立っており、おそらく異なる遺伝子を持つ細胞の共生を観察することが可能になることを望んでいました。



現実はより単純であることが判明しました。



人口は限界まで成長し、ある程度安定した人口で停止するか、死亡します。 これは、最初に、開始時の細胞の数(孤独で死ぬのが少なすぎる、過密で死ぬのが多すぎる)、および以下で説明する活性遺伝子の数に依存します。



人口が死亡すると、古典的な生活のように、小さな安定した数字が残る場合があります。 しかし、最も単純で、原則として、同じゲノムで、4つの隣接するセルの正方形、「フラッシャー」のみです。 かつて私は異なるゲノムの細胞からの図を見ましたが、静的で小さくもありました。 これは、細胞の移動の方向と順序を選択する際のランダム性の要素によるものだと思います。



より多くの遺伝子が活性化されると、細胞は運動の方向について誤った決定を余儀なくされます。

4つのアクティブな遺伝子に名前を付け、2つの共存する集団をかなりの期間にわたって取得できます。

[0,0,1,1,0,0,0,1,1]

[1,0,1,1,0,0,0,1,0]



8つの活性遺伝子-人口は変性の危機にbalancingしている。



9つの活性遺伝子-残念ながら多すぎる。 人口は死にかけています。



これがそのようなモデルです。 プレイすることもできます。おそらく、さらに興味深い結論が得られるでしょう。



他に何ができるか。

最初は、すべての遺伝子を含めて、その値を0〜9の数値にして、フィールドの魅力の「大きさ」を決定することを考えました。 しかし同時に、選択結果はそれほど明白ではなく、特定のゲノムが勝った理由を判断することは困難です。

また、ゲノムを変更するか、核形成時に交差させることにより、細胞を変異させることができます。 しかし、私には、現在のルールでは、「グリーン」がまだ勝つようです。 実際の生活のように、時間の経過とともにルールを変更することは可能ですか...;)



All Articles