前々回の復習
前々回、自作の DataOutputter クラスをシミュレーション設計図から指定する方法を見ました。
簡単に復習しておくと、DataOutputter インターフェースの自作の実装クラス ConsoleOutputter があったとき、シミュレーション設計図では以下のように指定するんでした:
<?xml version="1.0" encoding="UTF-8"?> <simulation-schema xmlns="http://xmlns.org.waman/simulation/0.1"> ... <iteration> ... <output class="ConsoleOutputter" output-timing="final"/> </iteration> ... </simulation-schema>
output-timing 要素は結果を出力するタイミングを指定します。
シミュレーション設計図で指定する
シミュレーションで使用する出力方法といえば、コンソール*1に出力したりファイルに出力したりと、だいたい決まっています。 したがって、反復条件をシミュレーション設計図で指定できるようにしたように、出力方法もシミュレーション設計図から指定できるようにしましょう。
出力方法の指定は、反復条件の場合と同じように <output> 要素の type 属性で行います。
例えば、"console" というキーワードでコンソールに出力すると指定できるとしましょう。 このとき、シミュレーション設計図は次のようになります:
<?xml version="1.0" encoding="UTF-8"?> <simulation-schema xmlns="http://xmlns.org.waman/simulation/0.1"> ... <iteration> ... <output type="console" output-timing="final"/> </iteration> ... </simulation-schema>
type 属性に指定できるキーワードは、次回以降考えていきましょう。
出力するエントリを指定する
デフォルトでは、シミュレーション設計図で指定されている物理量(<observable-set> 要素)全てを出力するとします。 で、出力したい物理量を指定したい場合は、<output> 要素の子要素として <entry> 要素を書くことで指定します:
<?xml version="1.0" encoding="UTF-8"?> <simulation-schema xmlns="http://xmlns.org.waman/simulation/0.1"> ... <iteration> ... <output type="console" output-timing="final"> <entry>Position</entry> </output> </iteration> <observable-set class="PositionObservable"/> </simulation-schema>
<entry> 要素の子テキストに指定しているのは、自作の ObservableSet クラス(ここでは PositionObservable クラス)で宣言されている必要があります(@DataEntry が付加されている public static final な String フィールド)。