Evolution of Greeners: 〜思考回路搭載船、進化型スクリーンセーバー〜


他の画像も見る

avi形式の動画デモ(3.84MB)を見る

概要

 このプログラムは、Subspace/Continuumに登場する機体のデザインを基に作った、簡単なAI機能を備えた宇宙船らが、エネルギー源である緑の箱(通称 greens)を集める所を描いた、インタラクティブなスクリーンセーバーです。各機は特有の「遺伝子」(genome)を所有していて、それは時間経過、機体の世代とともに変化するので、彼らは自然淘汰によって次第に進化していきます。何の計算も出来ない状態から始まって、訓練された機体が、次第に箱の捕獲が上手くなってゆく様子を観察するのもよし、いろいろ試して捕獲性能を上げるのもよし、息抜きに眺めるもよし…

 ダウンロードしてお試し下さい。そして、お楽しみ下さい。


仕組みの詳細

 環境設定:  宇宙船と、そのエネルギー源である緑の箱ありし。誕生後、船はある程度の健康値/エネルギー値(いわばHP)と、0歳の値を与えられる。時間経過とともに、各機のエネルギーは減ってゆく。外壁付近に位置する船は特に早くエネルギーを消費してしまう。緑箱を捕獲すれば、エネルギー値は回復する。エネルギー切れし船は、消滅する運命にある。

 各機は、その方向と加速度を任意の値に設定できる。許される値は、方向は360度全て、加速度は前後方向に際限なく、である。ただし速度には上限あり。また、慣性によって、たとえ加速度がゼロでも船は移動を続ける。壁に当たりし船は、そのまま跳ね返えされる。回転運動の慣性は考えない物とする。


 思考回路:  各機は、自分の絶対速度、自機の向きに対する移動方向、一番近い緑箱までの距離、自機の向きに対する緑箱の位置への角度を入力値として与えられる。各機が使用可能な情報はこれだけである。然るに、壁、他機、他の緑箱などの位置は、分かっていないのである。これらの情報を駆使して、彼らは自機の方向と加速度を決め、うまく緑箱を捕獲してゆく必要がある。さもなくば、自機の消滅、およびに集団の絶滅が待っている。

 入力値から出力値である角度と加速度を割り出すには、簡単な思考回路を使用する。入力値四つは、それぞれ六つの中間処理装置に送られる。これらの装置は、各々入力値を任意の割合で足し合わせ、ずらし、ある関数に当てはめ、その結果を出力する。この六つの出力値はそれぞれ、さらに二つの出力装置に送られる。この装置も同じような仕組みで、この二つの出力値が、それぞれ角度と加速度の値を決定する。この割合やずらしの量を示す数のセットが、各々の船が所有する「遺伝子」である。

 詳細はとりあえず省かせてもらう。


 繁殖と進化:  接触した二機の船は、以下の条件を満たしていれば、繁殖する:
  • 両機の年齢が、ある程度以上である。(大体二秒ほど以上)
  • 両機のエネルギー値が、50%以上である。
  • どちらの船も、前回の繁殖から一定時間おいている。(大体一秒ほど以上)
 この繁殖により三つの子機が追加される。子機の初期エネルギー値は、親機の持つエネルギー合計を、全五機の間に等分した物(+α 少し)によって決定される。そして、子機の遺伝子は、親機の遺伝子を、無作為の割合で混ぜた加重平均に、さらに少量のランダムな変化を足す事によって決められる。これにより、進化速度を著しく速められる。

 もう一つの繁殖方法は、一機が分裂する場合である。エネルギーは等分され、子機の遺伝子は親機の物を少量変化した物になる。

 これらの繁殖方法と、自然淘汰によって、種の進化は起こってゆく。少なくとも理論的には、より捕獲能力の高い船が、より長生きし、より多くの子孫を残し、その遺伝子は受け継がれてゆく筈である。

 また、設定によっては、各機は学習能力を得、それぞれの船が少量進化する、と言う進化法も併せられる。(詳細略)


操作法

 プログラム/スクリーンセーバー起動中、F1を押せば操作法が出るが、英語なので、ここで説明しておく。
GENERAL CONTROLS

Ctrl+R - randomize genome
R - reload genome (from last saved)
1-4 keys - load genome
Ctrl+1-4 keys - save genome
P - pause/resume
H - program info

ENVIRONMENT OPTIONS

+/-keys - increase/decrease maximum number of greens
M - allow mutations yes/no
D - dynamic learning on/off
F - fixed population on/off

DISPLAY OPTIONS

Ctrl+Alt+H - show/hide health bars
Ctrl+Alt+G - show/hide average genome
Ctrl+Alt+D - show/hide dynamic learning info
Ctrl+Alt+Q - show/hide 100th frame on/off (to speed up evolution)
Ctrl+Alt+F - limit framerate on/off
Ctrl+Alt+[/] - adjust desired framerate
一般操作

Ctrl+R - 遺伝子情報を初期化(ランダム化)
R - 最後のセーブ状態の遺伝子情報をリロード
1-4 のボタン - 1〜4番の遺伝子データをロード
Ctrl+1-4 のボタン - 1〜4番に遺伝子データをセーブ
P - ポーズ/再開
H - プログラム情報

環境設定

+/-ボタン - 画面上の緑箱の最大量を増やす/減らす
M - 繁殖時の遺伝子変化の有無
D - 学習能力の有無
F - 個体群の固定(=消滅、繁殖無し)の有無

表示設定

Ctrl+Alt+H - エネルギーバーの表示切替
Ctrl+Alt+G - 平均遺伝子情報グラフの表示切替
Ctrl+Alt+D - 学習能力値の表示切替
Ctrl+Alt+Q - 100フレームずつ飛ばし(進化促進用)の有無
Ctrl+Alt+F - フレーム表示頻度の一定化の有無
Ctrl+Alt+[/] - フレーム表示頻度を下げる/上げる


ダウンロード

 初めに:フリーウェアなので、このプログラムによる直接的、間接的なダメージなどに付きましては、当局には一切責任は無い物とさせていただきます。その他フリ−ウェアに付く条件(サポートの義務無し、などなど)もある物とされます。(詳細が出来次第、翻訳して上げます。)

 あと、事前でも事後でもよろしいですから、ダウンロード報告、感想などをBBSメールでお伝え下さると嬉しいです。

 下のzipファイルをダウンロード後、解凍して下さい。中にあるGreeners.scrファイルをダブルクリックすれば、小窓内で、通常のプログラムとして起動できます。ライトクリックで「テスト」を選択すれば、フルスクリーンのスクリーンセーバーとして起動できます。DOSプロンプト等から /s のパラメータ付きで起動しても同じです。そして、ライトクリックで「インストール」を選択すれば、このプログラムがスクリーンセーバーのリストに追加され、さらに現在使用の物に設定されます。

Greeners-1_01.zip (433 kB)

 このセットには、必要なファイルとともに、二種類の遺伝子情報のセーブデータが計四つ同梱されてます。データ1と3には、5機以上の集団で威力を発揮する、ある程度進化した物、データ2と4には、緑箱に近づき、距離を保ちながら平行移動(Subspace上で言う、Warbirdの決闘で見られる動き)をする、珍しい遺伝子が入っています。

 zipファイルが重くなるなどの理由で、背景は同梱されていません。背景ファイルが無ければ、このプログラムは現在の画面表示を背景として使います。つまり、その時の画面上に船と箱が現れるわけで、スクリーンセーバーとしてはいい感じになります。

 背景ファイルを使用する場合、任意の.bmpファイルを、back.bmpと言う名前にして、Greeners.scrと同じフォルダに置けばOK。参考に、このページのスクリーンショットで使っている背景はこれです。

NGC-4414銀河(back-NGC4414.zip) (318kB zipファイル)

 また、
Romanのダウンロードページにも、数個背景ファイルがあります。

 この背景などの、配布自由のパブリック・ドメインにある絵は、このハッブルの写真置き場にあります。いい絵がそろってます。背景によさそうな絵を発見したら、よろしければお送り下さい。(管理人に宛てるか、あるいは"Here is a picture that might make a good background for the Greeners Screensaver:"とでも書いて に直接送るかして下さい。)

 あと、優良な遺伝子が一つ出来たので、よかったらお試し下さい。

genome1.zip (352 bytes)

 zip解凍後、genome1.greenerファイルをGreeners.scrと同じフォルダに置けばよし。ただし、これだとデータ1を上書きするので、ご注意。1にいいデータが入ってるなどで、セーブスロットを変えたい場合は、数を1〜4の何かにすればよし。(例:データ3としてセーブするにはファイルの名前をgenome3.greenerにする。)(半角入力です、念のため。)

 ご苦情、ご感想、質問、提案等は、当サイト管理人までどうぞ。