スポンサーサイト

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

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

人工生命が生まれました 28日目 獲物の好み

2009年09月28日 22:24

個体ごとに異なる好みをもつようにしました。


今まで:一極集中
スクリーンショット(2009-09-27 23.45.49)



スクリーンショット(2009-09-27 23.26.58)

スクリーンショット(2009-09-27 23.26.14)1

あえて遠い獲物を狙う = 合理的でない判断 = 好み、です。
狙いがばらけるので、群れの全員が餌にありつける・・・こともあります。

ただそれだけなんですが。



スクリーンショット(2009-09-28 0.19.42)

今、Obj-C と CoreAnimation で人工生命を再構築しようとしているところです。
あわよくば、ボトムアップ方式に変更を・・・まだ無理かな。
スポンサーサイト

千畳敷カールとロープウェイ

2009年09月28日 22:13

先週末に駒ヶ岳の千畳敷カールを見に行ってきました。

CIMG3136.jpg

いい天気です。
CIMG3141.jpg

アシタバに似た植物を発見。
CIMG3152.jpg

花も似ています。
CIMG3153.jpg

植物の実。
高山だと、色鮮やかでなくてもコントラストが高くて綺麗。
CIMG3160.jpg

高山蝶の幼虫らしい。
CIMG3158.jpg

もう一匹。
黒い身体に橙の斑点がかわいい。
CIMG3198.jpg

トリカブト。
CIMG3173.jpg

千畳敷カールの正方形の巨岩。
CIMG3188.jpg

霧も出てきた。
CIMG3183.jpg

帰りのロープウェイで見つけた滝。
水がエメラルドグリーンをしていてきれい。
CIMG3245.jpg


半日しかなかったので頂上まで行けませんでした。
でも、きれいな写真がたくさん撮れて満足です。

そして、草花や昆虫に焦点を合わせて撮るには、やっぱりいいカメラが要るようです。
来る人はみんな一眼レフ持ってたし・・・

カメラ欲しいなあカメラ。液晶が割れてないやつ。

まつもと広域工業ものづくりフェア

2009年09月28日 01:23

2009まつもと広域工業ものづくりフェアに行ってきました。


というのも、

『ロボカップジュニア世界大会
団体戦3位入賞のロボットが来場!』


などと書いてあったので・・・


会場に着くと早速、TK-Rお得意のプレゼンをやっていました。(画像はイメージです)
CIMG3124.jpg

聞き手と対話している感じなんですね。
ジョブズあたりを参考にしているのだろうか。


後ろに見えるのは、世界大会のパネルです。
CIMG3127.jpg


プレゼンの後には、Ver.Bのフィールドを広げて、試合のデモをしていました。

気になる人は → アサギの本



ロボカップは長野高専として展示していました。
あれ? ロボコンをおさえてロボカップですか、今まではそんなことなかったような・・・ロボコンは大会前だからかな。

他にも、信大の学生フォーミュラマシンや、パワーアシストスーツHAL(これは見てない)が展示してありました。

工業の活性化につながるといいですね。

人工生命が生まれました 27日目 Part2うp

2009年09月25日 13:14

Part2をアップロードしました。




内容は、前回の群れの話です。


今までのプログラムでも、同族に接触しない個体は子孫を残せないので、同族を追いかける気質のあるものが生き残りました。
しかし、それでは一カ所に集まって動かなくなる危険があるので、確立で散らしてやっていました。
でもそれだと、繁殖したい個体が相手を見つけられなかったり、いろいろ問題があったのです。
群れのルールを導入したことで、そのへんが解決しました。
群れることで、天敵や餌の発見が早くなります。

ただ、肉食動物の場合は、餌を分け与えることができないので、集団で狩りをするメリットはなさそうです。
他に標的があるのに一匹に集中するのは、その個体が目立つ(個体番号が若い)からです。
好みがない(個体番号によらない)ようにすることもできるのですが、やってみると、標的を特定しないので目移りしてうろうろしてしまいます。
---瞬間ごとに好みを再決定するのではなく、生まれた瞬間に決めておけば、狩りのときにも標的がばらけて、なおかつ目移りしないのではないか・・今思いつきました。やってみます---




それから・・・

徹夜明けのハイテンションで、最大個体数8000に設定、実行(普段は3000)。

スクリーンショット(2009-09-25 3.16.23)


なんか、全体が写っていないような・・・
(注:サムネの元画像は、でっかいです。


ALifeScreenSnapz002.jpg


でん。
全体を写そうとするとこうなるの図。
Spaces を起動して、ウィンドウ4つ並べてようやく全体像が見えてきます。
フィールドの広さは2000 * 2000 。でっかいなー。


スクリーンショット(2009-09-25 3.25.02)


創世直後です。
テーマは森と大洋。
森・・・というか初期配置の計算方法の関係でロの字になっています。
それにしても、本当に"大洋"と呼ぶにふさわしい広さです。


スクリーンショット(2009-09-25 3.25.44)


普段は15くらい出ているfpsも、2fpsまで下がっています。
それでも動いているのは凄い。さすがプロ仕様です。


スクリーンショット(2009-09-25 3.28.41)


左右の森はつながってきましたが、上下の大きい間隙はまだ埋まりません。
しかし開拓者の死によって、ぽつぽつと植物が生え始めています。

『いっせいに発芽した むくろからむくろへと 黒い森は拡がり砂漠は やがて広大な腐海と 化していったのじゃ』風の谷のナウシカ 2 (アニメージュコミックスワイド判)


スクリーンショット(2009-09-25 3.52.59)


上下の森がつながりました。
しかし左の空間は、まだ攻略に時間がかかるようです。

これだけ広くなるとようやく分かりますが、""と大洋"の間に生物の密度の低い層ができて、それが、生物が"大洋"へ漕ぎ出すのを阻んでいるようです。



スクリーンショット(2009-09-25 10.11.59)


時は流れて、75000フレーム付近です。(前の絵は5000付近)
生物はフィールドの全てを攻略しました。
ただし、草食動物の密度が肉食動物を維持できるレベルを割ったので、肉食動物は絶滅しました。

寝落ちしていたのでいつ絶滅したのか分かりませんでした。
リプレイの機能も欲しいですね。
Cocoa、オブジェクトの生成で詰まってますが、勉強中です・・・。

人工生命が生まれました 26日目 群れ

2009年09月24日 01:50

今まで、"群れ"という概念はありましたが、それはただひとつのルール「同族に近づけ」に従っているのみでした。
このルールを持った個体が複数集まると、ある一点に固まって群れを形成し、動かなくなってしまいます。

こんなの群れじゃない!ということで、魚や鳥の群れについて調べてみました。
頑張れ森川くんの遺伝子くんが分かりやすかった。

以下引用。

◆ルール1:近くの鳥たちと
      飛ぶスピードや方向を合わせようとすること
◆ルール2:鳥たちが多くいる方へ向かって飛ぶこと
◆ルール3:近くの鳥や物体に近づきすぎたら、
      ぶつからないように離れること


鳥の群れの三原則と呼ぶことにしましょう。

これを私の人工生命に当てはめると、ルール2のみに従っているので、寄り集まって身動きが取れなくなってしまったのだと考えられます。
全てのルールを書き直すと、こうなります。

人工生命の群れ形成の三原則
第一原則:最も近い同族と移動速度,方向を合わせる
第二原則:同族が近くにいない場合、探して近づく
第三原則:最も近い同族とある程度距離をおく
 
ルール2はどうやら、群れの重心を算出して移動方向を決定すると言っているようですが、現状では無理なので近づくだけにしました。


三原則を実装したところです。
集中して群れを作ってもらいたいので、天敵と餌は排除、そして不死化してもらいました。

スクリーンショット(2009-09-24 1.23.05)

創世、ランダムに配置されていたものが・・・

スクリーンショット(2009-09-24 1.22.44)

群れをつくり始めました。
静止画だと分かりませんが、動いています。
群れが合体したり、分裂したりしながらうろうろしているのは、今までは見られなかった光景です。
また何かの要因で、群れ全体が向きを変えたりします。すごい。

Part2はこれで決まりですね。

人工生命が生まれました 25日目 森と大洋

2009年09月23日 16:17

初期配置に"地形"を作りました。


こんな感じ。
スクリーンショット(2009-09-23 10.24.38)


植物が密集した""と、生物が配置されない"大洋"があります。


スクリーンショット(2009-09-23 10.24.55)


"大洋"には、もちろん何もないので、迷い込むと死にます。


スクリーンショット(2009-09-23 2.29.42)
無茶しやがって・・・


""をつくると生物は密集するので、選択圧が弱くなるとともに肉食動物が大繁殖して滅亡します。
3枚目の絵のことです。
なので、生物の密集度に応じた初期個体数を算出させないといけません。

人工生命が生まれました 24日目 Cocoaに移植中・・・

2009年09月21日 23:40

GUIを充実させたいので、プログラムをCocoaに移しています。

スクリーンショット(2009-09-21 22.29.38)


といってもCocoaが何か知らんのですが・・・。
.nibがあればInterface Builder で楽々GUIが作れそう!という、ただそれだけの理由です。

とりあえず、動きはしました。
しかし、OpenCVでウィンドウを作って描画しているのは変わりません。
Cocoaでウィンドウを作って、その上で人工生命を走らせたいなーと思っています。

Save/Load、それから、万単位の個体を動かすには、GUIが要るんです。
CUIでぽちぽちコマンド打つなんていやです・・・。



せっかく秋葉に来たので、昼間はOpenCVとCocoaの本を探してみました。
合わせて一万円也。
た、高いよう。しばらくGoogle先生の元で修行します・・・。

秋葉なう

2009年09月21日 17:06

お店をざっとまわって、欲しいものリスト。

OpenCVの本 4k強
Cocoaの本 4k強
Fallout3のDLCパッケージ版 * 2で6.6k
秋月で一番安いサーボ * 4 で 3.2k
太陽電池とキャパシタで約2k
注射器フラスコその他で1.5k
ジャンクが1k

帰るお金がなくなりそうだったので、コーラだけ買いました。
れむ一家と夕飯のようです。
取りおいてもらっていた、ガンローラーもあります。

カオスです・・・。


明日は、上野の科博か、科学未来館か、筑波の実験植物園に行こうと思います。

人工生命が・・・増えてます

2009年09月21日 00:30

新しいのがでてきました。




といっても元祖人工生命の作者さん(なんて呼べばいい?)のではなく・・・

C++のソースが理解できなかったので、XNAで創ったそうです。


私も、最近になってようやく、ソースの全貌が見えてきたところです。
これを新規作成するのはすごいなあ。
していないのは私だけですか、そうですね。



動物はランダムウォークです。
植物に根っこ、動物に大型個体が追加されています。すごく、大きいです・・・。

それから、画面に突如現れる「P」の文字。
肉食動物の死亡時に現れるのですが、これは死んだときの栄養の量が反映されているのかな?
どうやって個体数を一定に保っているのかよく分かりません。

私のところは、元祖作者さんのソースを踏襲して、栄養のリソースが一定に保たれています。
植物は1、草食動物が2、肉食動物が5の栄養を持っていて、他の生物を食べると、その生物が持つ栄養量分増加します。
子どもを産むと、その子どもの分の栄養が差し引かれます。
残りステップ数とは無関係なので、栄養を保持していても飢え死にし、そのときはその栄養分の種を蒔いて、栄養が循環するようになっています。


やっかいなのは、栄養リソースが一定でも、全個体数は変動するということです。
例えば、植物5匹と肉食動物1匹がいたとします。
肉食動物はすぐに飢え死にます。
そのときの栄養の割当の変化が次の式です。

植物(1) * 5匹 + 肉食動物(5) * 1匹 = 栄養リソース(10)

肉食動物が飢え死にすると・・・

植物(1) * 10匹 = 栄養リソース(10)

となります。
個体数の上限は定数なので、上の場合で 個体数上限 = 8 とかに定義してあると、肉食動物が死んだ瞬間、 全個体数が個体数上限を超えて、プログラムがハングアップします。
これで結構詰まりました。
いまでは、初期個体数から栄養リソースを算出して、どんな場合でも個体数の上限以下になるようにしてありますが・・・。

人工生命が生まれました 23日目 これってGAじゃなくね?

2009年09月20日 23:34

ふと思ったのですが・・・

「行動パターンの自由度を広げて、進化の結果が顕著に分かるものにしたいと思っています。」

とか言ったけど、初期値指定してたら意味ないのでは?



そうなのです、動画を観てもらえば分かると思いますが、創世時に配置される個体には全て、初期値として、生存する最低限の行動パターンを入力してあります。

1.餌を探す
2.天敵から逃げる
3.繁殖可能となったら同族を探す

というものです。

これに、普段よりも高確立で突然変異を起こして、初代の遺伝子としています。



今までは、この初期値は自然界の生物で言う「呼吸」や「三大欲求」に当たるもの、不可欠なものだと考えていました。
しかし本当にそうなのか?
実は不可欠ではないのではないか、と思ったのです。




そこで、初代の遺伝子をランダムに決定してみました。

スクリーンショット(2009-09-20 21.47.49)
まあ、こうなるのは分かっていたのです(

スクリーンショット(2009-09-20 21.50.56)
なにせ、遺伝子となる行動パターンは、

はらへ閾値 0~255
同じ方向に進む歩数 0~255
周囲の状況6通り * 自分の状況2通り(はらへ時と通常時)
そのときにとる行動パターン12通り * 速度3段階

はらへ閾値と歩数を除いたとしても432通りあります。
さらに速度を無視しても144通り。

植物:草食動物:肉食動物 の現在での最適な個体数は、1500:300:30 。
餌をとって繁殖できる個体が、子孫を残して繁栄する確立は、かなり低いのです。


あげくに・・・

スクリーンショット(2009-09-20 20.28.40)
左端近くにいる、はらへの肉食動物が分かるでしょうか。
餌もないのに生きている・・・そう、彼は不死者なのです。
久しぶりに見ました。


スクリーンショット(2009-09-20 21.46.31)
比較的うまくいった一枚。
草食動物は繁殖に成功しています。
餌をとる本能を持つ肉食動物も一匹、生き残っています。

このように、せいぜい、繁栄するのは草食動物だけです。
やはり、生存の基礎原則を入力しておかなければいけないのか?

それとも、初期個体数などのパラメータを変更すれば、例えば全個体数を変えずに、種族ごとの個体数の比を変更すれば、生き残りやすいパラメータがあったりするのだろうか???



連休ですがぼちぼちやっていきます。


最新記事


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