インフラ系ソフトウェアエンジニアのざっくばらんなメモ。 一応、技術メモが中心だけど、まあなんでもありということで。 技術ネタであればあるほど、英語版のほうに書くことが多くなるけれど、 それもまあ、そういうことで。
Showing posts with label Science. Show all posts
Showing posts with label Science. Show all posts
Sunday, March 31, 2013
えぼりゅーしょん3
この話の続き。
まだ python のプログラムはいじっていなくて、データ処理の話。
家系図は書いてみたので、次は genes のクラスタ分析をしたらどうなるか?…ということで、Rを使ってひとしきりやってみた結果。
1000updateかけた後、生存animal数 152、死亡animal数 466、残plant数 53、生存animalの平均年齢(update) 197.4、生存animalの平均保持 energy 88.5…という状態がお題。
生存animalを対象にすると、genes は8要素のベクターなので、これが152個あることになる。練習としては、まあたいしたことはないデータ量だ。
まず、階層型クラスタリングの R の hclust を使って書いてみたのがこれ。
ふーん、と思いつつ、このへんを参考にk-meansでクラスタ数2~15で変化させながら、あたりをみてみたのがこれ。
クラスタ数5くらいでいいのかしら?と思いながら分類させてみたのがこれ。
実は、Rをそれっぽく使ってみたのは初めてだったのだが、データ入出力はいまいち使い勝手が悪い(or 整理されていない)な…というのが感想だったりする。
まあ、そもそも論として、この環境で種の分化ってどう定義するの?なんて話もあるわけだし、先は長い...
Thursday, March 28, 2013
えぼりゅーしょん2
またこの話の続き。
今度は、これ↓
https://github.com/thatsdone/junkbox/blob/master/python/evolution.py
をもう少しいじって、animal に id をつけ、parent のidと誕生/死亡のタイミングをトラッキングできるようにしてみた。
で、やりたいのは、クラスタリングとか、そういう処理をできるようにした上で、いずれは genes まわりの仕組みを入れ替え可能にしてGAっぽくして評価してみたい…という話になるのだが、まずは id と parent を記録できるようにしたので、exact な家系図をかいてみましょうという話。
graphviz をつかって素直にプロットしただけなので、いまいちみにくいのだが、1000 update かけた時点で、生きている animal を黄色、すでに死んでしまった animal を青でいろづけして書いてみた結果がこれ。
現状は、genes が効いてくるのは turn のところで、ほぼランダムな効果でしかないようになっているので、もうすこし均一になるかも…と、思ったのだが、それでも淘汰が働いているせいか、クラスタっぽく分かれてきているようだ。噂の種の分化(?)を見るためには genes の距離関数はどうしようか…とか、TODOはあれこれ広がるのだが、まだしばらく遊べそうだということで...w
今度は、これ↓
https://github.com/thatsdone/junkbox/blob/master/python/evolution.py
をもう少しいじって、animal に id をつけ、parent のidと誕生/死亡のタイミングをトラッキングできるようにしてみた。
で、やりたいのは、クラスタリングとか、そういう処理をできるようにした上で、いずれは genes まわりの仕組みを入れ替え可能にしてGAっぽくして評価してみたい…という話になるのだが、まずは id と parent を記録できるようにしたので、exact な家系図をかいてみましょうという話。
graphviz をつかって素直にプロットしただけなので、いまいちみにくいのだが、1000 update かけた時点で、生きている animal を黄色、すでに死んでしまった animal を青でいろづけして書いてみた結果がこれ。
現状は、genes が効いてくるのは turn のところで、ほぼランダムな効果でしかないようになっているので、もうすこし均一になるかも…と、思ったのだが、それでも淘汰が働いているせいか、クラスタっぽく分かれてきているようだ。噂の種の分化(?)を見るためには genes の距離関数はどうしようか…とか、TODOはあれこれ広がるのだが、まだしばらく遊べそうだということで...w
Saturday, March 23, 2013
えぼりゅーしょん
前回のこの話の続き。
ようするに、このスクリプトの話。
https://github.com/thatsdone/junkbox/blob/master/python/evolution.py
あのあと断続的にいろいろいじっていて、致命的なバグをとったり、pep8 でいろいろ出るじゃねーかとワカモノからケチをつけられてみたり、animalのトラッキングをできるようにしてみたりとか、バッチモードを追加したりとかして遊んでいたのだが、進化のメカニズムそのもののところはオリジナルから手をつけずにいた。
まあ、まだまだ python らしくするために手を入れるところはたくさんあるのだが、いったんこんなグラフが書けたのではりつけておく。
全 animal について turn/move/eat/reproduce をかける作業を 1update として、
世界を 4000 回updateかけている。
この条件だと、animal数は150くらい、食べ物のplant数は50くらい、animal の平均寿命は 180-200 update くらいで落ち付いてくるようだ。
少なくともオリジナルの Lisp 版では種の分化が起きたりするらしく、これでも同じことが起きるはずなのだが、まだそこまでは手をつけていない。
もうちょっといじったら、進化のメカニズムの面でも、いろいろ遊んでみよう。
ようするに、このスクリプトの話。
https://github.com/thatsdone/junkbox/blob/master/python/evolution.py
あのあと断続的にいろいろいじっていて、致命的なバグをとったり、pep8 でいろいろ出るじゃねーかとワカモノからケチをつけられてみたり、animalのトラッキングをできるようにしてみたりとか、バッチモードを追加したりとかして遊んでいたのだが、進化のメカニズムそのもののところはオリジナルから手をつけずにいた。
まあ、まだまだ python らしくするために手を入れるところはたくさんあるのだが、いったんこんなグラフが書けたのではりつけておく。
全 animal について turn/move/eat/reproduce をかける作業を 1update として、
世界を 4000 回updateかけている。
この条件だと、animal数は150くらい、食べ物のplant数は50くらい、animal の平均寿命は 180-200 update くらいで落ち付いてくるようだ。
少なくともオリジナルの Lisp 版では種の分化が起きたりするらしく、これでも同じことが起きるはずなのだが、まだそこまでは手をつけていない。
もうちょっといじったら、進化のメカニズムの面でも、いろいろ遊んでみよう。
Subscribe to:
Posts (Atom)