スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

人工生命が生まれました 9日目

2009年08月28日 23:49

生殖活動を実装したわけですが。
同族と出会ったときに子どもを作るってだけで遺伝子の組み換えはまだです。
というのも相手方の個体番号が分からんので・・・。


明日は楽しんできます。
スポンサーサイト

人工生命が生まれました 8日目

2009年08月27日 13:35

自分「こんなもの作ったんだよ!」
母「ふーんすごいね~。何の役に立つの?」

( ̄ー ̄ )・・・


科学技術は何かに役立てるために進歩するんじゃないんです。
文系にはそれが分からんのです。



さて・・・進捗状況です。
固有時制御 2倍速、3倍速を組み込みました。
移動速度が速いほど闘争/逃走に有利ですが、残りステップ数を 2^n 分消費するので、常に高速で暴れ回る個体は生き残れません。
逆に停止していれば、ステップ数を節約できます。

それから、食事と繁殖に一定の時間(wait)を設けました。



創世から終末までの間の進歩はかなりのものになっています。
いいかげんに生殖を実装しなければ。

週末は長野です

2009年08月27日 00:03

今日はあまり進みませんでした、人工生命。


さて、今週末はNNCTで「ロボカップ世界大会3位おめでとうパーティー」があります。
静岡県周辺からは茂吉とQ長も参加します。勢揃いですね。
各々の車に適用される保険とかの関係から、Q長車に乗っていくことに。
保険の適用条件とか・・・パズルかよっ。

下手したら半年ぶりの面子です。楽しみ。
世界のプレゼンも見たいですねー。

人工生命が生まれました ひとやすみ

2009年08月26日 17:55

ちょっと理解できない記述にぶちあたったので休憩休憩。
こういうときって、しばらく違うことに頭使ってるといつのまにか分かるようになっていますよね。
ない知恵を絞ってる中の人に感謝。



さて・・・、肉食動物と草食動物の各種パラメータを決定するために、予習でもしますか。
繁殖に必要な餌の量だとか、個体数の比なんかです。
300:29:1とかかな?


餌の消化は、構成が似通ったもの、つまり肉、の方がたやすい。ふむ。アメリカ人の方が腸が短いってのはよく言われます。
よって、草食動物の方がたくさん餌が必要だけれども、餌が逃げたりしないというメリットがある。ふむふむ。 


生態ピラミッドモデルで上にいる生物、捕食者が絶滅しても下にいる被食者は絶滅しない。
ただし、下のものがいなくなった場合、その生物より上位の生物は死に絶える。

これはプログラムを何度も走らせて分かっていましたが、続きがあるらしい。

上位の生物は死に絶えるが、別の地域から欠損した部分に相当する生物種が流入して、ピラミッド型が復元する。

ここですね。
つまり、上位の生物は満腹になったら食べちゃいけないんです。
餌を食い尽くすものは絶滅して、自然界ならそこで、どっかから適度に餌をとる種族が来襲してピラミッドの頂点を乗っ取るのだろうけど、処理能力的にそんなに広い範囲を描画できないのです。
つまり、遺伝的アルゴリズムを組み込んだときに「なんかおもしろくない」と感じていたのは、肉食動物が適切に淘汰されないためだったのですね。
肉食動物がほどほどに餌をとっている間は繁栄するけれど、がめついやつが生まれると、そいつが餌を食い尽くしてしまう。
それは実は"絶滅"ではなく"淘汰"だったというわけです。
閉鎖系であるために、淘汰された種族の後釜が現れずに終末になってしまう、と。
終末系は好きですけど。ええ。


閉鎖系であるのは仕方ないので、対策として
1)ある種族が絶滅したら、2,3匹復活させてやる
2)地域ごとの移動が困難になるようなフィールドにする

を考えました。


1)については、どんな遺伝子型を入れればいいかがよくわかりません。
絶滅した個体の遺伝子は何か絶滅する要因があったと考えられます。
以前実行したときの優良種を復活させるか?
フルランダムか?
まぁ、なんというか考えるのめんどいから却下です。


2)ですね。
これは、フィールドを細長くするだけでも効果があります。

左の方で草食動物が絶滅
 ↓
肉食動物も飢え死に
 ↓
左側植物天国
 ↓
右の方から逃げてきた草食動物が繁栄
 ↓
肉食動物もそれを追ってきていい感じ

こんなパターンが見られました。

それかいっそドーナツ型にしてしまうとか。
壁に当たるまで止まらない追いかけっこをなんとかするために、障害物を設置しようとも考えていたので、一緒に設置してしまいます。



予習ではなく復習になった感がありますが、まあそんなこともあるんでしょう。
それと、実際に走らせた結果、300:29:1はけっこう優れた比だと判明しました。

人工生命が生まれました 6日目

2009年08月25日 22:01

動作パターンを決定する遺伝子を組み込みました。

screenshot_01_20090825213157.jpg
そして、無性生殖の限界が垣間見えました。


「捕食者に向かっていく」とかいう明らかにアホな子は真っ先に淘汰されるのですが、そうでない個体にはあまり変化が見られません。
目的なく動いていても餌をとれるのがいかんのかと、生物を減らすと絶滅。
どうしようもない。

とりあえず、有性生殖---性差があるわけではないけど、無性生殖の反対、なんて言うのだろうーーーを実装して、様子を見ることにします。




時に、浮遊しない使徒が空飛ぶときに出すアレ、天使の輪っかはチェレンコフ光だと思うんです。
いや、理由はないけど。

人工生命が生まれました 5日目

2009年08月24日 23:59

日を追うごとにカオスに、もとい、多様性が増し安定する人工生命です。

screenshot_36.jpg
動画で残しておこうとキャプチャして、その間料理をしてたら・・・
45分経っていました。ファイルサイズ4.91GB。どうすればいいんだ。

まあ、それだけの時間が経っても絶滅しないんだからたいしたものです。


今日実装したのは、このふたつです。
1)捕食者よりも餌よりも同族が近くにいたとき、群れる
2)たまに転ぶ


動画を見なければ分かりゃしないのですが。


このふたつのルールで、かなり安定しました。
常に捕食者から逃げ続けられると、肉食動物と草食動物の速度は同じなので、肉食動物は永遠に餌にたどり着けません。
上2つのルールを追加したことで、時々、最適ではない動作をして食われるやつがでてきます。
それと、動作パターンが増えたことで、遺伝子もけっこう多様化しているようです。
まだ単為生殖しか実装していませんが、今までだと、特定の遺伝子型のやつだけしか生き残らず、すべて同じような個体で埋まってしまって楽しくありませんでした。


次は、「動作パターンを決定する遺伝子」の実装ですかね~。
おやすみなさい。

人工生命が生まれました 4日目 - 2

2009年08月23日 13:52

逃走本能を実装しました。


screenshot_31.jpg
横幅があってごめんなさい。><


対象に向かう動きを緑の線で、対象から離れる動きを赤の線で表します。
逃走によって草食動物が逃げ切る割合が増え、絶滅せず、非常に安定しました。
また、肉食動物が草食動物の両脇から挟み込んで、狩りをしている(ように見える)のも面白いです。
見ていて飽きません。


さて、いまはまだ捕食者と餌を認識しているだけですが、中の人は捕食者,同族,餌との相対距離を算出しています。
これを使うと、例えば捕食者と同族の両方が近くにいるとき、「捕食者から逃げる」とか、あるいは「同族に近づく」とかの細かい選択が可能になります。
で、その選択のパターンを個体ごとの遺伝情報として格納して、個体ごとの動作を変えてみたらどうかな~などと考えています。

人工生命が生まれました 4日目

2009年08月23日 02:04

人工生命には「残りステップ数」が設定されており、捕食で増え、活動すると減り、0になると死にます。
今日は、近くにエサがあったときにそれを追跡する、捕食活動を実装しました。
作者さんが人工生命を創ってみた Part.6でやっていたことです。



[人工生命が生まれました 4日目]の続きを読む

人工生命が生まれました 3日目

2009年08月22日 14:05

改良とバグ取りを繰り返しております。
室内で虫取りができるなんて素敵です。


ちょうど、大きな虫がとれたところです。
今日は、エサの探索ルーチンを作っていました。

自分は、プログラムを書くときも、ロボットを作るつもりでやっています。
動作すれば、プログラムにバグが潜んでいようが完成です。
バグが表層にでてきたらどうにかする、という対処療法なのですが・・・。
なので、本当の意味でのデバッグ(マイコンでいうとシミュレータとかRAM書き込みとか、PCはよく知らない)もやってません。

そうすると、こういうことになります。
screenshot_12.jpg

線は、生物と、それが見つけたエサを繋いでいます。
本来、「近くにあって」「捕食できる生物(エサ)」を示すはずなのですが、大半は左上の画面外を指し続け、どう考えてもおかしい。
画面の中に映っている生物にはそれぞれ0~1023の個体番号が振られています。
その範囲から外れたものを緑色の表示にして分離したら、ああなりました。
幽霊をエサと勘違いしているようです。報われない。かわいそうですね。

原因はほぼ分かっていて、配列の初期化の際に入れる -1という値が残っているらしいのですが、なぜかは不明です。
対処法として、発見したエサのうち、個体番号が -1 のものをif文ではじいてしまいます。
動けばいいのです(多分・・・。

人工生命が生まれました

2009年08月20日 13:17

まずはこれを見てください。





こういうの好きです。
瀬名秀明「ブレイン・ヴァレー」みたいですね。


余談ですが、瀬名のArtificial Lifeの、

1)"餌"は各個体に割り当てられたCPU時間
2)個体が占有する"場所"はメモリ空間


というふたつのルールには本当に感動しました。

通常、人工生命は人間が創った世界で生きるので、その世界で何かを発見/発明しようと思ったら、人間が埋込んだチートやバグを利用するしかありません。
私たちが日常的にプレイする、ゲームと同じです。
しかし瀬名のA.L.は、このルールによって人間を超えることさえ可能になるのです!
なぜなら、A.L.はCPUとメモリという物理空間に直接アクセスできるからです。




閑話休題。


これ欲しい!
ということで、作者さんのページから、公開ソースをいただいて動かしてみました。

実際にソースをコンパイルするのにたいへんな努力があったので、誰かのお役に立てればと思いつつ、メモメモ。


[人工生命が生まれました]の続きを読む


最新記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。