木と虫
クリックするとモードが変わります。
このアプレットについて
このアプレットは「小さい島で好き嫌いの激しい虫達が森林を食いつぶすさま」をシュミレーションしていたりします。小さな世界で虫と木はうまく共存できるでしょうか?
1 この世界のルール
1.1 虫について
この虫は好き嫌いがとても激しい虫です(何故かは聞かないでください)。基本的には右目、左目、体にそれぞれ色のデータを持っています。この個体の場合、体の色は青色で、右目は紫色が好きで、左目は緑色が好きです。目が好きな色を見つけると、そちらのほうに進むため足に命令を下します。しかし左右の目が勝手に足に命令を伝える上に、個体により命令の伝わり方に差が有る為上手くいかない事も有ります。
それぞれの虫は体力(評価値)を持っています。初めは0ですが好きな色の木に寄り添う事によって増えます。逆に好きな木により添えなかった場合体力は減っていきます。特に嫌いな木の側や島の外に出ようとしたりすると体力が大きく下がります。体力が−1000よりも下がるとその虫は死にます。そして死ぬと同時に生き残っている他の虫の子供として生まれ変わります。好きな色や体の色は親から遺伝しますが、それ以外の命令の伝わり方などのデータは遺伝しません。
虫の好き嫌いの面で一つ頭に入れておかなければいけない事が有ります。それは木の好き嫌いより虫同士の好き嫌いのほうが激しいという事です。たとえると「好きな木に寄り添おうとしてもその近くに嫌いな虫が居ると近寄らない」とか「好きな虫の近くなら嫌いな木の下や島の外側にもついていく」という場面が考えられます。
1.2 木について
この木はとても繁殖力の旺盛な木です。それぞれの木は色を持っています。この色が好きな虫が寄り添ってくると、木は食われてどんどん小さくなります。逆に相性の悪い虫が寄ってくると木は育ちます。木が食い尽くされるとランダムな色の木が新しく生えます。太陽と大地の恵みが豊富なので木が食い尽くされる事は有りません。この島には常に四本の木が生えつづけます。
1.3 データについて
Count 世界の経過時間。マシン速度に左右されません。
Life Avg 虫達の体力の平均。この値が高く安定していれば虫達にとって過ごしやすい島である。
Tree Gene Size 木の色に関する遺伝子(3bit)と木の大きさ。
Tree Dead 木が虫に食い尽くされた回数。
虫データ
No 各個体のナンバー。
GENOME 各個体の遺伝子。(9bit)
Life 各個体の体力(評価値)。
2 実際の動作
このシュミレーションを始めると最初のうちは虫の遺伝子が成長します。実際には、他の虫達に対して相性が悪い遺伝子を持つ種族は絶滅していきます。そして相性の良い種族が数種生き残ります。それぞれの種族は自分達の好きな木を食べ尽くしていきます。時間が経つにつれどんどん種族の数は減ります。その代わり「LifeAvg」(虫達の評価値の平均)は上昇していきます。種族の数が1〜3種程度になるまで虫達の評価は上昇します。
その頃になると世界に異変が起こります。島に生えている全ての木々が虫達の嫌いな木になる時が来るのです。こうなると虫達は食料を求め島の外に出ようとしてどんどん死んでいきます。しかし、種族数が淘汰されているので突然変異を起こさない限りすぐにまたその個体は死んでしまいます。そうしているうちに「LifeAvg」(虫達の評価値の平均)はどんどん下がっていきます。
結局この小さな世界は次のような状態で安定します。
○ ほとんどの虫達は島の外に出ようとしてどんどん死んでいきます。よって「LifeAvg」(虫達の評価値の平均)は低くなります。
○ 突然変異で生まれた個体だけが木の下で悠々と生きています。
◎ 木は大きな木に成長します。何故なら相性の悪い虫達(木にとっては相性が良いのですが。)が木を育ててくれるからです。上記の突然変異の個体が木を食べますが、それ以上に沢山の虫が死んで木に養分をくれます。
3 感想
このアプレットは軽い気持ちで作り始めたのですが思っていたよりも虫達がさまざまな動きをしてくれるので楽しいです。今回は上記のような状態で安定しましたが突然変異率などのパラメータを変えるとさまざまな終焉を迎えます。そもそも実行するたびに結果にばらつきが有ります。パラメータの与え方によっては虫達がワルツを踊ったりもします。
今回のアプレットではJavaの良さを生かせていないので次に組む時にはそのへんをしっかり考慮したいです。
TOP