top | 2005年05月09日 »

2005年04月28日

シミュレーターの作りかた

シミュレーターを作る基本的な方法として、
連結階層シミュレーションと呼ばれる手法が、非常に有効に思える。

連結階層シミュレーションとは、異なる大きさ・内容の物理現象を、
異なるシミュレーションプログラムを使って処理し、
相互に連結させることで、シミュレーターの精度を上げる方法だ。
多くの場合上下関係になるので、「階層」という言葉が付く。

たとえば、銀河の動きと、惑星上の流体と、生物個体内の動きを
ひとつのプログラムで実現しようとするのではなく、
それぞれ専用の3つのプログラムを作成し、
3つのシミュレーターがデータを交換しあうことで、
より統合された世界を構築しようとする。

地球シミュレーターの例では、精度が問題になっていたが、
私は、精度よりも、シミュレーターの作りかたにおよぼす影響に興味がある。

連結階層法を使うと、いままでとちがうシミュレーターの作りかたができる。
連結階層を使わない場合、ひとつのシミュレーターを作るには、
さまざまな知識をもつごく少数の人(多くは一人)が、
職人芸を駆使して設計と実装をする必要がある。
しかし、シミュレーター間のプロトコルを決めて水平分業(モジュール化)することで、
いろいろな分野を深く掘りさげている人が、協調して仕事できるようになる。
これは、全体の生産性を向上させるだけでなく、
いろいろな人が参加できるようになることで、
あたらしいアイデアが生まれる源泉になるだろう。
たとえば、
宇宙ー銀河ー惑星ー生物個体
というような4階層の連結階層を作っていたとして、
新しく、生物個体の階層の下に、「神経組織」という層を追加したいとすると、
そこを深くほりさげている人が、後からプロジェクトに加わればよい。
一人の職人がすべてを知る必要はない。

世界を記述するための基本データ構造さえあれば、
多くの人が、ひとつの世界をシミュレートするためのさまざまな断片を作り、
世界シミュレーションに参加できるようになる。

何百という、世界の各部分を担当する計算ルーチンが、
ネットワークをなして必要な計算をしている状態は、ものすごく素敵だ。

次の課題は、世界を記述するための基本データ構造と、プロトコルの設計だ。

Posted by ringo : 17:40 | Comment (0) | TrackBack

Movable Type化

やっとやっと、Movable Type化できた。
これでRSSツールから見れるようになる。
原則としては トラックバックあり/コメントなし でいこうと思う。

過去の記事は、 こちら

Posted by ringo : 16:49 | TrackBack