ソフトの問題 (2001/02/10)

 自主シンポの折、指定討論者の広瀬先生(名古屋大)から提起された問題の1つが「シミュレーションを行なうノウハウはどうなっているのか?」という点でした。「System Dynamics 系のシミュレーションは Stella といったソフトがあるけれども」というお話でした。
 同じような質問は(皮肉にも?)、シミュレーション&ゲーミング学会の工学系の方からも頂いたことがあります。工学系だとシミュレーション、数値計算は普通のことだと思いますが、「文系」のわれわれが(人を引き込んで申し訳ないですが)どうやっているのか?という疑問だろうと思います。
 この「どのように?」に対する意見は、実際にシミュレーションを行なっている人によって変るかも知れません。私の以下の意見はわくまで私見ですので、その点はご了承ください。

 まずこのページで問題にするのはソフトの問題です。シミュレーションのためのソフトには次の3種類があります。(1)計算用ソフト、(2)シミュレーション専用ソフト、(3)汎用言語、です。私が見聞する限りで、大学の「文系」の授業でシミュレーションを扱うときは(1)や(2)で行なうことが結構多いと思います。


(1)計算用ソフト:エクセルや1−2−3などの表計算ソフトや、Mathematica などの数学ソフトのことです。乱数を発生できて計算ができるならシミュレーションができるのは当り前です。例えば次の本はこの計算ソフトを使ってシミュレーションをする例をよく紹介しています。
   河野光雄・佐野健一 (1996). 『社会現象の計算機実験 − Mathematica と Excel を使って』 中央大学出版部
 ただし、表計算ソフトの場合、ステップが複雑になると実質的にはかえって面倒になるので、ごく単純な計算モデルの試算でない限り実用的ではないでしょう。Mathematica は広くシミュレーションにも使われているはずですが、私自身は試していないので何ともいえません。

(2)シミュレーション専用ソフト
 シミュレーション用のソフトというと、以前はメインフレーム用のものが有名でした。現在はPC用でも次のようなソフトが販売されています。

@)VisSim:Visual Solutions という会社が出している代表的なシミュレーションソフトです。次のURLで、以前は体験版をダウンロードできました(たぶん今もできると思います)。日本では「日立情報ネットワーク」が販売元になっています。
   http://www.vissim.com/index_go.htm
 原則としてどんな現象にも対応するはずですが、主に物理現象のシミュレーションに使われていると思います。

A)Ex・TD(イクスティーディー):このソフトも名前はよく知られたソフトです。日本では「スリースカンパニー」という会社が販売しています。URLは以下です。
   http://www.threes.co.jp/
 次の参考書が販売されています。 
   荒井勝啓 (1996). 『EX・TDによるシミュレーション入門』 白桃書房
 このソフトは VisSim に比べると、経営手法などの分析をうたっています。作ったモデルをC言語のコードで出力する機能が便利そうです。

B)Stella, ithink:両方とも High Performance Systems, Inc. が出している有名なソフトです。URLは以下。
   http://www.hps-inc.com/
日本での販売は、ithink をヒューリンクスが、Stella と ithink の両方を大学生協が扱っています。(以前はヒューリンクスが Stella も扱っていたけれど、版権か何かの問題があったんでしょうか?)
 Stella のサンプルプログラムでは生態系のシミュレーションなども入っていて、広い範囲で適用できることをうたっています。

 こうしたシミュレーション専用ソフトのメリットはモデルの構成が容易であることです。また、物理現象のシミュレーションのように、連続的な時間で過程が展開する現象の場合に必要な数値の補正処理などは自動的に実行されるものと思います。
 実は私は勉強不足で、実際に利用していません。利用している方から伺いたい点も多いです。私がマニュアルを見ながら感じたのは、これらのソフトの適用例として載っているのは、システムを数式体系として表されるような場合であり、例えば多数のエージェントが独立に行為して全体がどうなるかを見るようなシミュレーション ― そういうシミュレーションを私は想定しているんですが ― の処理の仕方が分かりません。昔の生態系の数理モデルなどを計算実験するのは簡単かも知れませんが、私自身の課題に適しているかどうか、よく分かりません。
 やや気になるのは、これらのソフトがいつまで続くか、という点です。Cや Pascal などの汎用言語でモデルを記述した場合、汎用言語は何か残ると思います。
 以上の理由から、私は汎用言語を使うという立場です。

(3)汎用言語ソフト

 汎用言語として現在選択対象になるのは、Windows 用なら C、Visual Basic、Java などがあるでしょう。私の場合は Pascal (Borland Delphi)を使っています。C や Pascal なら別のOSの下でも利用可能です。
 汎用言語を用いることの利点は以下です。第1に、自由な設定でシミュレーションができることです。専用ソフトでは結果のグラフ表示は容易に出来ますが、出力したい形で出力するという点でも制約があると思います。第2に、特定のソフトに依存する必要がなく、作成した試算を将来的に継承する可能性が高いことです。
 欠点もあります。第1はプログラミングの修得に時間がかかるので、気軽に授業で導入することはできません。第2に、アルゴリズムに不適切さがあるかどうか、自分で判断しなければならないことです。

 どのようなソフトを使うべきかに関する暫定的な、というか私の勝手な結論は以下です。もしシミュレーションの利用する目的に適した専用ソフトがあるなら、そのソフトを使った方がよいかも知れません。しかしプログラミングに時間をかける余裕があり、かつ自由なモデル構成が必要な場合は、汎用言語を使うべきでしょう。

「シミュレーションをどのように行なうか?」はまた別のページとして、そのうち続きを書きます。