この章では、OACISの全体像の理解のために、システム構成とデータ構造について説明します
OACISは、Ruby on Railsフレームワークを用いて構築されており、ユーザーはウェブブラウザを用いて実行したシミュレーション結果などにアクセスすることができます。 内部のデータベースとしてMongoDBを使用しており、シミュレーション実行時の情報、パラメータについての情報、ホストについての情報などが格納されます。 またシミュレータが出力したファイルやディレクトリについては、ファイルシステム上(publicディレクトリ以下)に保存されます。 システム構成の概要は下図のようになります。
ユーザーがシミュレーション実行をリクエストしてから、シミュレーション結果をOACISに保存するまでの処理の流れの概要は以下のとおりです。
格納された結果はブラウザからもファイルシステムからもアクセスすることができます。
OACISではシミュレーション結果は図の様なSimulator, ParameterSet, Runの3層構造に分けて保存されます。
Simulatorは複数のParameterSetを持ち、ParameterSetは複数のRunを持ちます。 ParameterSetとはあるシミュレータを実行するのに必要なパラメータの値の組をさす概念で、Runとは独立なモンテカルロランの一つをさす概念です。
例として、単純な交通流シミュレータを考えましょう。 この交通流シミュレータは、道路の長さL、信号周期T、車の台数Nを入力パラメータに持つシミュレータだとします。 ParameterSetとは、{L=100, T=10, N=10} などのパラメータの組み合わせのことをさします。 このパラメータセットで乱数の種を変えて5回シミュレーションを行うとすると、5つのRunが作成されることになります。
またそれぞれの結果に対してAnalyzerと呼ばれるポスト処理を定義する事もできます。 各Simulatorに対してAnalyzerを登録することができ、Simulatorと同様にリモートホストで実行されます。 Analyzerの実行結果はAnalysisと呼ばれ、解析対象(ParameterSetまたはRun)の配下に格納されます。