スポンサーサイト

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

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

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

2009年09月21日 00:30

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




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

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


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



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

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

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


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

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

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

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

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

スポンサーサイト


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://actiasartemisaliena.blog6.fc2.com/tb.php/149-5e17373c
    この記事へのトラックバック


    最新記事


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