OPS
とりあえず、OPS フレームワーク*1の実装は一段落。 成果物をこちらに。使い方を簡単にご説明。 事前に Maven2.0 をインストールしておいてください。成果物のインストール こちらから zip ファイルをダウンロードして、適当なフォルダ上に解凍する 解凍後に…
前回はジョインポイント SIMULATE に事前処理・事後処理を織り込みました。 今回は、同様にしてジョインポイント ITERATE, EVOLVE に事前処理・事後処理を織り込みましょう。ポイントカットの定義 以前にデータ出力処理を織り込んだ際、ITERATE, EVOLVE に対…
反復条件 (IterationCondition) のとき(→)に「@Prepare」「@Dispose」アノテーションが出てきました。 これらは事前処理・事後処理を指定するアノテーションでした。 今回以降数回にわたって、それらのアノテーションが付加されているメソッドの呼び出しを…
前回に定義した SimulaitionComponent#getChildComponents() メソッドを用いて、IterativeSimulator に DataManager オブジェクトをセットするだけで、それが所持する SimulationComponent オブジェクトにも DataManager オブジェクトがセットされるような実…
前回、観測量を扱うクラスが実装すべきインターフェース DataAccessor を実装するインターフェースを見ました。 それらは観測量を管理する DataManager をセットするメソッド DataAccessor#setDataManager() を実装しなければなりませんでした。しかし、通常…
観測量の値は DataManager オブジェクトによって管理します。 基本的に、1つの IterativeSimulator オブジェクトが1つの DataManager オブジェクトを持っているようなイメージです。 DataManager オブジェクトは ObservableSet オブジェクトも管理していて、…
前回作成した DataOutputterContainer クラスを用いて「データ出力処理の織り込み」を行いましょう。処理の織り込み場所は 「始状態」「終状態」→ Iteration#iterate() メソッドの実行前後 「更新後の状態」→ Iteration#evolve() メソッドの呼び出し後 とな…
書き忘れてましたが、前回までは「状態を観測せず、出力もしないシミュレーション」を考えていました。 今回からは「データを観測して出力する」処理を“織り込み”ましょう。今回は、まず Iteration に DataOutputter に関する属性を考えます。 Iteration に…
反復条件を表すインターフェース IterationCondition には、ただ1つのメソッド evaluate() のみが定義されています。 これは boolean 値を返し、「true」の場合は反復を続け、「false」の場合は反復を終了するというメソッドです。処理の流れは while 文をイ…
今回は反復を実行する Iteration インターフェースです。Iteration インターフェースにはネスト構造に出来るサブクラス CompositeIteration があります。 通常の、物理系の状態を発展させる Iteration の実装クラスを LeafIteration、CompositeIteration の…
前回までで OPS フレームワークの API 仕様の概要ができたので、今回から実際の実装を考えてみましょう。 基本的にフレームワークは「処理の流れ」を知っていれば実装を余り気にする必要はありませんが。今回は IterativeSimulator の実装、DefaultIterative…
OPS フレームワークは物理系と観測量を実装したクラスを要求しますが、それに加えて、それらを構築するための「シミュレーション設計図」も必要とします。前回、OPS フレームワークに定義されているインターフェース群の論理的な包含関係を見ましたが、これ…
OPS フレームワークの API (インターフェース群)をパッケージングした Jar ファイルを作ってみました。 ダウンロードはこちらから。 まだ、実装は作成中なので動きませんが・・・例外 SimulatorConfigurationException, SimulationException と PropertyAc…
OPS フレームワークでは、物理シミュレーションの中でも「反復シミュレーション」に限定しているので、事前処理・事後処理を行うタイミング*1もある程度限定することが出来ます。 そこでメソッドに「@Prepare(...)」「@Dispose(...)」というアノテーションを…
前回、Simulator を構成するインターフェース群をリファクタリングしましたが、そこでは概ね「事前処理」「事後処理」に関連するメソッドを殆ど削除しました。 代わりに「SimulationComponent」インターフェースを定義し、その内部に定義したアノテーション…
API を簡潔にするためのリファクタリングと、(ちょっとブランクが空いたので)インターフェースの復習しましょう。Simulator インターフェース とりあえずシミュレーションを実行するインターフェース。 public interface Simulator{ void simulate(); } 反…
前回までは、シミュレーションに必要な部品をあれこれ見てきました。 今回はそれらのなかで、反復条件 (IterationCondition) とデータ出力 (DataOutputter) を使ってシミュレーションの実行を制御する Iteration クラスと、そのシミュレーション設計図内での…
当初必要かと思って作成したがあまり必要なかった、ってインターフェースをチョイとリファクタリング。DataTable, DataRegistry → DataManager 観測量の値を管理するインターフェースとして、DataTable, DataRegistry を作成しました。 これは、通常は値を設…
前回はシミュレーション設計図で出力方法を指定する方法を見ました。 今回は典型的な出力方法を考えてみましょう。まず、シミュレーション設計図のすべての <output> 要素で、プロパティの output-timing は必ず指定しなければなりません。 プロパティ名 設定内容 取</output>…
前々回の復習 前々回、自作の DataOutputter クラスをシミュレーション設計図から指定する方法を見ました。簡単に復習しておくと、DataOutputter インターフェースの自作の実装クラス ConsoleOutputter があったとき、シミュレーション設計図では以下のよう…
今回は物理量をシミュレーション設計図で設定する方法を見ていきましょう。 これは <simulation-schema> 要素の子要素である <observable-set> 要素で設定します。先に言っておくと、物理系の設定に使用した <system> 要素と基本的に同じです。ObservableSet インターフェースをちょっと変更 インターフ</system></observable-set></simulation-schema>…
前回までは、「何も観測せず、何も出力しないシミュレーション」を考えていました。 次に考慮することは物理量とその値の出力方法です。シミュレーション設計図 まず、シミュレーション設計図のサンプルを示しておきましょう。 前回のサンプルに加えて、物理…
前回までで、シミュレーション設計図内で反復条件を設定する仕方を見てきました。 今回は反復条件に替わり、物理系と初期化パラメータの設定の仕方を見ていきます。 前回までと同様、何も観測せず、何も出力しないシミュレーションを考えましょう。サンプル …
前回に引き続き、今回も具体的な反復条件を考えていきます。 特に今回は、複合的な反復条件(以下、複合反復条件)を考えます。複合反復条件とは? 複合反復条件(composite iteration condition)とは、他の反復条件の結果を加工して反復条件の評価に使う様な…
前回は反復条件の型を指定して、いろいろな反復条件を手軽に使えるようにしようとしたんでした。 今回は反復条件の型を具体的に考えてみます。▲1つ注意(訂正)として、前回反復条件に指定できる値のことをパラメータといいましたが、以降ではプロパティと呼…
今回は反復条件をシミュレーション設計図から指定することを考えましょう。 前回と同じく、何も観測せず、何も出力しないシミュレーションを考えます。ちなみに、前回は IterationCondition インターフェースを実装したクラスを作成して、シミュレーション設…
今までは、物理シミュレーションに必要な部品、もう少し堅く言うと、物理シミュレーションを実現する Simulator オブジェクトを構築するための部品を個別に考えてきました。今回はそれらの部品を構築するための設定ファイルを考えます。 以降では、このファ…
前回考えた DataOutputter インターフェースに、OutputTiming という型が出てきましたが、今回はこれを考えましょう。 そもそもこれは、観測量値(観測量の測定値)を出力するタイミングを指定するために定義したものでした。一連の記事では反復シミュレーシ…
今回はデータを出力するためのインターフェースを考えます。 インターフェース名は DataOutputter とします。DataOutputter が行うべきことは以前簡単に書きました(id:waman:20070615): 物理量値を取得する。 取得した物理量値を出力する。 これらに加えて…
前回、物理量の観測値(以下、物理量値)を管理するインターフェースを定義しました。 今回はそれを使用するクラスを考えます。前回ちらっと書きましたが、物理量値を使うのは次の2つの場合です: 物理量値を出力するとき 反復条件*1の評価に物理量値を用い…