Top / BioVM

BioVM

Tierra日本語の解説)を知って、衝動的に作ってみたものです。 ⇒ 関連日記

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

概要

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

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

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

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

設計

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

命令セット

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

雛形

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

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

ダウンロード

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

コメント


添付ファイル: fileBioVM-20080412.zip 448件 [詳細] fileBioVM-20080412.png 316件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-04-13 (日) 21:45:32 (5850d)