我が日常の裏・表

いろはす/芭蕉(Twitter:Irohasu1230)のTwitterに収まらない話

【ポケモン×数学?】ドラパルトで数理モデルを作ってシミュレーションをやってみた

 気が付いたら9月になっていました。数学の記事を出すのも4ヶ月ぶりです。

 本記事ではこのツイートに端を発する一連の小話を書き残しておきます。

 ロトカ・ボルテラ方程式なるお堅い数学用語はさておき、まずはドラメシヤ、ドロンチ、ドラパルトについて。ご存知の方もいるでしょうが、この3つのカタカナ言葉はいずれもポケモンの名前です。それぞれこのようなポケモンです。

 

 ポケモン、それは進化して強くなる不思議な生き物。

 ドラメシヤ、ドロンチ、ドラパルトになるにつれて徐々に身体が大きくなっていることから察せられる通り、この3種の間にはドラメシヤがドロンチに、ドロンチがドラパルトに、それぞれ進化するという関係があります。

 ドロンチの頭の上にドラメシヤがちょこんと乗っていたり、ドラパルトの頭にドラメシヤが2匹格納されていたりするのがなんとも可愛らしい。
(こんな可愛い見た目をして対戦では凶悪な性能をしてるところがまた推せる)

 

 ドロンチもドラパルトも常日頃からドラメシヤを抱えて生活していますが、そのドラメシヤは一体どこから拾ってきたのでしょうか。

 おまけに、1匹のドラメシヤが一人前のドラパルトになるためには余計に2~3匹別のドラメシヤが必要という図式も不思議です。

 ドラメシヤが減った場合には、ドラパルトに成長するのも難しくなるのでしょうか。

 逆にドラパルトが増え過ぎた時にはどうなるのでしょうか。

 

 そこで、ドラメシヤ、ドロンチ、ドラパルトついて、これらの変化が起こった場合に個体数がどうなるか、数理モデルを組んでシミュレーションしてみることにしました。ある時刻  t におけるドラメシヤの個体数を  d_1(t) 、ドロンチの個体数を  d_2(t) 、ドラパルトの個体数を  d_3(t) とおきます。時間の経過に従って  d_1(t)  d_2(t)  d_3(t) は連続的に変化していくことでしょう。

 

 それでは、変化を予測していくために、  d_1(t)  d_2(t)  d_3(t) にまつわるパラメータを考察していきます。すなわち時刻がほんの僅かに進んだときに  d_1(t)  d_2(t)  d_3(t) がどう変化するかを記述することを目指します。

 一瞬の間にドラメシヤ( d_1(t) )、ドロンチ( d_2(t) )、ドラパルト( d_3(t) )たちの身に起こり得る事象には何が考えられるでしょうか。例えば以下が考えられます。

  • ドラメシヤがドロンチに進化する。
  • ドロンチがドラパルトに進化する。
  • ドラメシヤが卵から孵る。(ドラメシヤに限らずポケモンは皆卵生らしいです)
  • 死ぬ。(ドラメシヤたちはゴーストタイプなので既に死んでます。成仏すると捉えましょうか)

 ざっとこんなものでしょうか。それではこれらの事象を、その一瞬の間にそれが起こる確率として数理モデルに反映していきます。

 

 例えば、ドラメシヤがドロンチに進化する確率を  \alpha1 とおきます。
(一瞬のうちに  \alpha_1 d_1(t) 体のドラメシヤがドロンチに進化するイメージ)。

 同様に、ドロンチがドラパルトに進化する確率を  \alpha_2 とおきます。

 ドラメシヤが卵から孵る確率は  \beta とおきましょうか。
  \beta d_1(t) のドラメシヤが新たにこの世に生を享けるわけですね。

 成仏云々についてはややこしくなりそうなので割愛します。ポケモンの死については描写がはっきりしていないことも多いので。

 

 さて、こうして設定したパラメータを基に数理モデルを組んでいきましょう。

 ドラメシヤに関しては、ある一瞬のうちに \beta d_1(t) 体生まれ、  \alpha_1 d_1(t) 体がドロンチに進化するので、以下のような方程式になります。一瞬の間に変化する個体数は、一瞬の間に生まれたり進化したりする数の総和と等しく、一瞬の間に変化する個体数を  d/dt で表すと、

 \displaystyle{\frac{d}{dt}d_1(t) = \beta d_1(t) - \alpha_1 d_1(t)}

という1行の方程式として表現できます。

 さて、ドロンチに関しては、 \alpha_1 d_1(t) 体ドラメシヤから進化してきて、 \alpha_2 d_2(t) 体がドラパルトに進化するので、以下のような方程式になります。

 \displaystyle{\frac{d}{dt}d_2(t) = \alpha_1 d_1(t) - \alpha_2 d_2(t)}

 ドラパルトは、 \alpha_2 d_2(t) 体がドロンチから進化するのでこのようになります。

 \displaystyle{\frac{d}{dt}d_3(t) = \alpha_2 d_2(t)}

 

 というわけで、以下のような数理モデルを組むことができました。

 \displaystyle{\frac{d}{dt}d_1(t) = \beta d_1(t) - \alpha_1 d_1(t)}

 \displaystyle{\frac{d}{dt}d_2(t) = \alpha_1 d_1(t) - \alpha_2 d_2(t)}

 \displaystyle{\frac{d}{dt}d_3(t) = \alpha_2 d_2(t)}

このような図式ですね。



 

 何らかの数の時間経過に伴う変化をこのような数式で表現して調べるというのは、現実世界の生物に対しても行われており、冒頭に挙げた「ロトカ・ボルテラ方程式」もこれと似た数式として表現できます。新型コロナウイルスの感染者数の推移もこのような数式で予測されているそうで、「8割おじさん」を筆頭とする数々の研究者が数学の立場から未曾有の問題に立ち向かってきたのでした。

 

 そういえば重大なことを忘れていました。ドロンチは1匹のドラメシヤを頭に載せて生活していますが、ドラパルトに進化した途端に2匹のドラメシヤを連れて生活するようになります。進化する際にどこからともなくドラメシヤが殖えるわけです。これを数理モデルに反映させ忘れていました。

 ドラメシヤからドロンチへの進化にせよ、ドロンチからドラパルトへの進化にせよ、1回の進化につき1匹のドラメシヤが増えているのは確かです。ということは、ドラメシヤに関する方程式に、ドラメシヤからドロンチへの進化数(  \alpha_1 d_1(t) )とドロンチからドラパルトへの進化数(  \alpha_2 d_2(t) )を加えると良さそうですね。

 \displaystyle{\frac{d}{dt}d_1(t) = \beta d_1(t) - \alpha_1 d_1(t) + \alpha_1 d_1(t) + \alpha_2 d_2(t)}

 = \beta d_1(t) + \alpha_2 d_2(t)

よって、このような数理モデルになりました。これでひとまず完成としましょうか。

 \displaystyle{\frac{d}{dt}d_1(t) = \beta d_1(t) + \alpha_2 d_2(t)}

 \displaystyle{\frac{d}{dt}d_2(t) = \alpha_1 d_1(t) - \alpha_2 d_2(t)}

 \displaystyle{\frac{d}{dt}d_3(t) = \alpha_2 d_2(t)}

 図式も修正しました。

 それでは、この数理モデルを用いて、ドラメシヤたちの個体数の変化を実際に調べてみることにしましょう。そのシミュレータを作成しました。ここにパラメータを適宜入力すると、先ほどの数理モデルに従って直ちに計算が行われ、結果が表示されます。

初期状態はドラメシヤが1体、ドロンチ、ドラパルトは0体であるとしましょう。

試しに  \alpha_1 = 0.1  \alpha_2 = 1   \beta = 0.01 と設定すると、以下のように表示されます。ドラメシヤ(Dreepy: d_1(t) )、ドロンチ(Drakloak: d_2(t) )、ドラパルト(Dragapult: d_3(t) )の個体数はそれぞれ次のようになりました。

図1(※プログラムを修正しました)



 ドラメシヤが微妙に増えてますね。無限に時間が経過していくとドラメシヤが無限に増えていくと思われます。世界がドラメシヤで溢れかえる遠い未来には、ドロンチ、ドラパルトも相応に増えているでしょうね。そういえばドラメシヤの特性は”すり抜け”でした。見えてないだけでゲーム世界には既に無限のドラメシヤが棲息しているのかも……。

 

 一方、 \alpha_1 = 0.1  \alpha_2 = 0.1   \beta = 1 とおくと、以下のようになります。ドラメシヤ、ドラパルトをおいてドロンチが1万4千体にまで増殖しています。ドラメシヤの出生に関係するパラメータ  \beta を大きくしたからこそでしょうね。

図2(プログラムを修正しました)

 シミュレーションに使用したプログラムについては,以下の記事で解説を加えています。よろしければそちらもご覧ください。

kubinaga1230.hatenablog.com

 さて、数値計算を色々試してみましたが、それだけで話が済むなら数学もそこまで発展してこなかったことでしょう。(きっと)

 いずれにせよドラメシヤたちの個体数は無限に増えていくっぽいことが見えてきました。そこで、数値計算以外の手法でこの数理モデルを調べ、無限に増えていくことを証明してみたいと思います。ここからはかなりガッツリ数学の話になります。興味がある方は下記リンク先のPDFをご覧ください。

www.dropbox.com

1ページ目だけ画像にして置いておきますね。

 

 とまぁ、ドラパルトというポケモンから着想を得て数理モデルを作っては、適当に遊んでみました。「新型コロナの感染者数のシミュレーションのような最先端の理論をめっちゃ簡単にして考えるとこういう遊びができるもんなんだなぁ」と、思い付いた当時は感動したものでした。

 大学で勉強する数学の発想をゲームとかの日常の娯楽に見出す面白さに気づかせてくれたという意味で、僕にとっては印象深いモデルです。こういう気軽な遊びの視点を高校教育の探究的な学びの題材に持ち込めないだろうか、という意気込みで先日の教員採用試験の面接に挑んできたものでした。

 

 さて、すっかり長くなってしまいました。ご質問やコメント等お待ちしております。

 お読みくださり、ありがとうございました。