#topicpath
#contents

* BioVM [#zd53b0d5]

[[Tierra>http://www.his.atr.jp/~ray/tierra/]]([[日本語の解説>http://www.nis.atr.jp/emc/tierra-doc/tierra.html]])を知って、衝動的に作ってみたものです。 ⇒ [[関連日記>http://gir-lab.spaces.live.com/blog/cns!63A4C32EDA5CF2F7!780.entry]]

- Tierraの劣化コピーです。
- 命令セットなどが違いますが、有用な結果は得られません。
- 変異が発生するとすぐに絶滅してしまいます。
- コンピュータ的なVMで生物進化を扱うという発想がとても面白いと思いました。

#ref(BioVM-20080412.png,nolink)

** 概要 [#g0630461]

外の環境は0(halt)で埋まっています。個体の外に出たり、不正な処理を行うと即座にhaltがかかります。無限ループ対策として、一定時間内にコピーを完了(join)しないとhaltします。これらの仕組みは有用な変異以外を排除する目的で導入しましたが、命令セットや雛形が変異に弱く、少しの変異ですぐに絶滅してしまいます。

既にデータがある場所にコピーした場合、境界がゼロでないためコピー結果が予期できないものになります。これによって細胞融合の表現を狙ったのですが、有用には作用しませんでした。

当初はどのようなモデルでも生存競争を通せば有用な変異が現れるのではないかと思っていました。そのため単純なモデルで実験しようと思い立ってこれを作成してみたのですが、散々な結果に終わりました。Tierraのモデルが非常にうまく出来ていることを痛感しました。

自己進化はそう簡単ではないということが分かったので今回は打ち切ります。もし続きをやるとすれば、Tierraの仕様を忠実に真似てみようと思います。

** 設計 [#f10adea9]

Tierraを参考にしましたが、互換ではありません。現時点では有用な結果が得られない「劣化コピー」です。命令セットや雛形ともに短さを重視したモデルですが、冗長性がないため変異に弱いようです。

*** 命令セット [#te208d79]

[[WikiPedia.ja:Brainfuck]]を参考にレジスタを増やしたものです。レジスタ: r0(8bit), r1(32bit), r2(32bit)

 0x0: halt
 0x1: inc r0
 0x2: inc r1
 0x3: inc r2
 0x4: dec r0
 0x5: dec r1
 0x6: dec r2
 0x7: mov r0, [r1]
 0x8: mov r0, [r2]
 0x9: mov [r1], r0
 0xa: mov [r2], r0
 0xb: while [r1]
 0xc: while true
 0xd: wend
 0xe: rand r2
 0xf: join r2

*** 雛形 [#rfa6b25b]

人工生命の雛形です。自分のコピーを繰り返します。増殖しながら変異させることで進化を狙ったものですが、うまくいきません。

 0xc, // while true
 0xb, //   while [r1]
 0x7, //     mov r0, [r1]
 0x2, //     inc r1
 0xa, //     mov [r2], r0
 0x3, //     inc r2
 0xd, //   wend
 0x5, //   dec r1
 0xb, //   while [r1]
 0x5, //     dec r1
 0x6, //     dec r2
 0xd, //   wend
 0x2, //   inc r1
 0xf, //   join r2
 0xe, //   rand r2
 0xd, // wend

** ダウンロード [#wc24246c]

- ソース: &ref(BioVM-20080412.zip); - 最初のリリース。すぐに絶滅して進化しない。
- ライセンス: パブリックドメイン

#include(:VCS2008Exp,notitle)

//*** 過去のリリース

** コメント [#h99dfd4b]

#comment(below)
//#comment(below)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS