統計コレクター

概要と主要な概念

統計コレクターは、モデル内のイベントを監視し、そのイベントに関するデータを収集するために使用されます。その収集されたデータがテーブルに書き込まれます。テーブルに書き込まれると、そのデータを表示したり、チャートで使用したり、エクスポートしたりできます。

統計コレクターはツールボックスからアクセスできます。

統計コレクターID

統計コレクターは、ツリー内の任意のノードに一意のIDを生成できます。つまり、3Dオブジェクト、処理フローアクティビティ、フローアイテム、トークン、追跡変数の一意のIDを生成できます。これは、静的メソッドStatisticsCollector.getID()を使用して(多くの場合、ピックオプションにより)実行されます。この関数はツリーノードをとり、倍精度浮動小数点値に格納される正の整数を返します。IDは内部に格納されているため、同じツリーノードでgetID()を複数呼び出すと、常に同じID番号が生成されます。

2つのIDセットがあります。1つは、トークン、フローアイテム、リセット時に破棄されるようにフラグが立てられている他のすべてのノード用のセットです。このIDセットは1から始まり、1ずつ増加します。新しいノードでgetID()を呼び出すたびにIDが増加します。ただし、モデルがリセットされると、開始IDは1にリセットされます。

もう1つは、他のすべてのノード用のIDセットです。これは、より永続的であると見なされます。これらのノードのIDは、ノードのパスのハッシュを作成することによって生成されます。これらのIDは、実験ツールとオプティマイザーで実行されるシナリオと複製の間でも一貫性があります。

data変数

統計コレクターのパラメータの多くでは、コードが必要です。これらのコードフィールドのほとんどでは、dataという変数を表示します。この変数は独自のプロパティとラベルを持つ特殊オブジェクトです。統計コレクターで生成されたテーブルの各行、各列と関連付けられたデータの表示に使用します。評価対象のコールバックを引き起こすイベントの関連データの表示にも使用します。

data変数使用時の詳細については、「コールバック」セクションを参照してください。data変数のタイプとプロパティの詳細については、「StatisticsCollector.CollectedDataリファレンス」を参照してください。

リッスン

統計コレクターではイベントをリッスンできます。通常はこの方法で統計コレクターがテーブルを更新します。イベントをリッスンするには、オブジェクトをそのオブジェクトのリッスンする特定のイベントと一緒に指定する必要があります。

リッスンする対象がグループの場合、統計コレクターはグループ内のすべてのオブジェクトをリッスンします。インスタンス化されたフローで処理フローブロックをリッスンする場合、統計コレクターはフロー内のすべてのインスタンス、未添付のイベントインスタンスをリッスンします。

モデル内で一定の基準と一致するオブジェクトをすべてリッスンする必要が生じることもあります。たとえば、特定のラベル値や特定のクラスタイプを付与されたオブジェクトすべてのイベントをリッスンする必要があるケースが考えられます。このようなケースでは、要件別にリッスンする方法を選択できます。リッスンする対象として直接的なオブジェクト参照を指定する代わりに、モデル内のすべてのオブジェクトで実行されるテストを指定する方法もあります。

場合によっては、リセット時に参照できないオブジェクトのイベントをリッスンする必要が生じることもあります。たとえば、フローアイテムまたはトークンでTrackedVariableラベルのOnChangeをリッスンする必要が生じる場合があります。フローアイテムまたはトークンでOnEnteringやOnExitingをリッスンする必要が生じる場合もあります。このようなイベントリスニングには、2つのイベントの指定が必要です。このうち1つ目のイベントは、リセット時に存在する要素で発生するイベントです。たとえば、キューのOnEntryをリッスンします。このイベントを使用するときは、一時オブジェクトをリッスン対象として指定する必要があります。具体的にはキューに入ったアイテムやそのアイテムのラベルなどが該当する可能性があります。最後に、一時オブジェクトでリッスンするイベントを指定する必要があります。このように、リセット時には存在しないオブジェクトのイベントをリッスンできるほか、時間をかけてモデルを実行することさえできます。

要件別のリッスン、一時オブジェクトのリッスンは、同時に成立する場合もあります。たとえば、あらゆるソースオブジェクトのOnExitをリッスンする場合などがこれに該当し、すべてのフローアイテムのOnEnteringをリッスンできます。

一般動作

統計コレクターは、次の特定の事象に対する反応でのみロジックを実行します。

  • モデルがリセットされた
  • コレクターがリッスンしているイベントが発生した
  • 統計コレクターのテーブル内の値がアクセスされた
  • モデルがウォームアップ時間に達した(モデルでウォームアップ時間が使用されている場合)

モデルがリセットされると、統計コレクターではテーブルをクリアしてすべての行と列を削除します。するとコレクターが列のリスト([データ記録]タブで指定されている)を調べます。コレクターは列ごとに1つの列をテーブルに追加します。列セットごとにコレクターが、列設定値コールバックを評価し、戻り値ごとにテーブルに列を1つ作成します。最後にコレクターは、コレクターのリッスン対象となっているイベントすべてに対応するリスナーを作成します([イベントリッスン]タブで指定)。これらのイベントのいずれかが要件を使用している場合、モデル内のオブジェクト1つひとつについてオブジェクト要件コールバックが評価されます。コレクターは、リッスン対象のオブジェクトを特定すると、そのオブジェクトにリスナーを作成します。その後コレクターは、リスナーが起動した場合、どの列を更新する必要があるかを判定し、これが列のリンク要件コールバックを評価します。

イベントが発生すると、コレクターは、有効になったイベントパラメータをすべてdata変数に割り当ててから、そのイベントのイベント条件コールバックを評価します。この条件が失敗したときは、何も起こりません。成功したときは、コレクターが処理を続行します。このイベントが一時イベントの最初の一部分をなしている場合は、コレクターが一時オブジェクトコールバックを評価します。コレクターは一時オブジェクト一つひとつにリスナーを配置します。このイベントが一時イベントの最初の一部分には相当しない場合は、コレクターがすべてのラベルについてラベル値コールバックを評価します。その後、列のモードに沿ってコレクターが行を追加し、列を更新します。行が追加されるとき、行の並べ替えコールバック(存在する場合)が評価されます。その後、[行が追加されたとき]列のすべてで列値コールバックが評価されます。発生したイベントが列にリンクされている場合は、リンクされた列一つひとつについて列値コールバックが評価されます。

統計コレクターのテーブル内の値にアクセスできます。これが発生するタイミングは、このコレクターを参照するチャートがペイントするとき、またはこのコレクターのテーブルビューがペイントするとき、Table() APIまたはクエリを介してテーブルが評価されるときです。以上のいずれかが発生すると、コレクターが行ごとに列値コールバックを使用して「常に」列を評価します。このように、列は「常に」最新状態となります。

モデルがウォームアップ時間に達すると、統計コレクターが[ウォームアップ時]プロパティを使用してどうするかを決定します。このプロパティは次の4つのオプションのいずれかに設定できます。

  • すべての行を削除 - テーブルからすべての行が削除されます。
  • 初期値にリセット - 初期値を指定する列がその値にリセットされます。行は削除されません。
  • 追跡されていない行を削除 - 現在追跡されていない行が削除されますが、残りの行は残されます。残りの行の値は変更されません。
  • 追跡されていない行を削除し、初期値にリセット - 現在追跡されていない行が削除されますが、残りの行は残されます。残りの行の値は初期値(指定されている場合)に設定されます。
  • 何もしない - どの行または列でも何も起こりません。

コールバック

統計コレクターが内部ロジックを実行すると、多数のコールバックが評価されます。これらはコード値を持つ可能性のあるプロパティです。以下のテーブルでは、統計コレクターのロジック中に、使用されたコールバックすべてのリストが説明やこれらのコールバックの戻り値と一緒に表示されます。

コールバック 説明 戻り値
列セット値 OnReset中に呼び出し現在の列セットで作成する行の数を決定します。 列名の配列を返します。統計コレクターが名前ごとに列を1つ作成します。この名前を任意で2要素配列に置換できます。この場合、1つ目の値が名前、2つ目の値が列と関連付ける値(あとでdata.colValとして利用可能になる)です。
オブジェクト要件 OnReset中に呼び出し要件別イベントをリッスンしている場合、モデル内のオブジェクトごとに1度このフィールドが呼び出されます。 リッスン対象とはしないオブジェクトの場合は、0を返すことができます。リッスン対象とするオブジェクトの場合は、1を返すことができます。オブジェクトの追跡対象変数ラベルなど、関連ノードをリッスンする必要がある場合は、該当するノードまたはノード配列を返すことができます。
リンク要件 リセット中にリスナーが作成されるとき、または一時オブジェクトを検出するイベントに対応して、呼び出されます。列ごとに、コードでイベントにリンクされている場合は、現在の列に関してこの要件が評価されます。 現在のイベントでこの列が更新される場合、戻り値は1となります。それ以外の場合の戻り値は0となります。
イベント条件 コレクターがリッスンしているイベントが発生するとき呼び出されます。この条件がパスすると、統計コレクターがロジックの先に進み、テーブルを更新するか、一時オブジェクトにリスナーを追加するかします。失敗した場合、統計コレクターはこのイベントに対応する形で追加のロジックを実行しません。 1が1つ戻された場合、条件はパスしています。失敗した場合は0が1つ戻されます。
一時オブジェクト コレクターのリッスンしているイベントが発生すると呼び出され、そのイベントが一時オブジェクトの検索に使用されます。イベントパラメータを受け、一時オブジェクトが何かを判定するとき、このコールバックが使用されます。 一時イベントのあるオブジェクト、またはオブジェクト配列を返します。
イベントラベル イベントが発生すると呼び出され、条件を渡します。data変数のラベルに返される値を何か、コレクターが割り当てます。あとでイベントラベルコールバックが以前のラベル値を参照できるように、イベントラベルが順番に評価されます。 現在のラベルでdata変数に持たせるよう指定した値が返されます。
行の並べ替え テーブルに新しい列が追加され、行の並べ替えが使用されていると、呼び出されます。並べ替え基準の値がそれぞれ行のスコアとして使用され、新しく行が加わったときは、このスコアが行の並べ替えに使用されます。 数または文字列を返します。このフィールドで数を返す行が1行でもある場合は、すべての行で数を返す必要があります。文字列の場合も同様の制限がかかります。
列値 テーブル内のあるセルで更新が必要になったとき、呼び出されます。このコールバックで返される値は何でも、テーブル内の現在の行と列に返されます。 列タイプと一致する値を返し、列のフォーマットに合わせてフォーマットできます。
初期列値 イベントによって更新される列では、このコールバックによって、行が追加されてから、イベントの更新が行われるまでの間に使用すべき値が指定されます。必要に応じて、ウォームアップ中にこのコールバックを使用して、列のリセット値を定義することができます。 列タイプと一致する値を返し、列のフォーマットに合わせてフォーマットできます。

ほとんどのコールバックではdata変数を使用できます。次のテーブルは、一つひとつのコールバック中に使用できるdata変数のプロパティを示しています。

一般に、各コールバック中は、プロパティを上限数まで使用できます。たとえば、行の並べ替え中にdata.rowValuedata.rowValueIndexは使用できますが、並べ替えが終了していないため、data.rowNumberは使用できません。

使用可能な動的プロパティは、コールバックが実行されるタイミングによって変化します。動的プロパティには、有効なイベントパラメータが必ずすべて含まれます。追加のラベルはラベルのコールバックが評価されるまで使用可能になりません。一時イベントの最初の部分が発生すると(イベント検出)、該当するイベントパラメータが保存され、一時イベント中、動的プロパティとして使用可能になります。

行の追跡

統計コレクターでは「一意の値」行モードを使用しているとき、行の値のリストを保持します。イベントが発生するとき、イベントによって行の値が表示されます。コレクターに該当する値の行がない場合は、その値の行を追加します。同じ値を扱う別のイベントが発生した場合は、コレクターがその値の行を更新します。このようにコレクターは各行の値を追跡します。

状況によっては、コレクターが行の値の追跡を停止する方が有益な場合があります。あらゆるリッスン対象のイベントで、イベントによってテーブルが更新されたあと、行の値の追跡を停止するオプションが用意されます。この時点から行の値は追跡されなくなります。関連付けられた行は非アクティブになるため、イベント発生で更新されることも、反映される形で更新されること(「常に」列の場合)もなくなります。後のイベントでこの行の値を検出した場合は、その値が初出の場合と同じように、その値に対応して新しい行が追加されます。

行が非アクティブになると、新しい行の値でその行を再利用するかどうかを選択できます。新しい行が必要になったとき、新しい行を追加する代わりに、この非アクティブな行を上書きできます。2つの統計コレクターを併用し、2つ目の統計コレクターが1つ目の統計コレクターのイベントをリッスンしている場合は、1つ目のテーブルのサイズを比較的小さく抑えられるようにこのオプションの使用を検討する価値があります。

統計コレクターのウォームアップオプションのいずれかによって、追跡されていない行が削除されます。このオプションを使用して、ウォームアップ中に削除する行を制御できます。

イベント

イベントの詳細については、「イベントリスニング」ページを参照してください。

統計コレクターには、次のイベントがあります。

行追加時

このイベントは統計コレクターに新しい行が追加されたとき起動します。[行モード]が[列挙]に設定されている場合、このイベントは起動しません。列の更新モードが[行が追加されたとき]に設定されている場合は、このイベントが起動する前にこれらの値が設定されます。

次のパラメータがあります。

イベントパラメータ タイプ 説明
行番号 整数 新しい行の行番号
行の値 バリアント 新しい行と関連付けられた値

行更新時

このイベントは、統計コレクターがリッスンするイベントの1つが所定の行で1つ以上の列を更新すると起動します。

次のパラメータがあります。

イベントパラメータ タイプ 説明
行番号 整数 新しい行の行番号
行の値 バリアント 新しい行と関連付けられた値
列の更新 配列 列に1つの値を含む配列n番目の列が更新された場合、配列のn番目の値が1となります。列が更新されていない場合、値は0となります。
以前の値 配列 列に1つの値を含む配列n番目の列が更新された場合、更新前にテーブルに含まれていた値が配列のn番目の値に組み込まれます。列が更新されていない場合、値は未定義となっており、使用できません。

プロパティ

統計コレクターには、さまざまなプロパティを含む3つのタブがあります。これらのタブのプロパティについては、次のセクションで詳しく説明します。

[イベントリスニング]タブ

このタブでは、統計コレクターのテーブル内のデータを追加または更新するイベントのリストを指定できます。このタブでは、イベントごとに追加データを収集できるため、より多くのデータを記録できます。

[イベントリスニング]タブには、次のプロパティがあります。

イベントリスト

統計コレクターがデータを収集するオブジェクトまたはタイマーイベントを一覧表示します。統計コレクターは以下をリッスンできます。

  • 3Dオブジェクト
  • 処理フローアクティビティと共有アセット
  • 追跡変数
  • グループ
  • タイマーイベント

次の表は、イベントリストのボタンについて説明しています。

アイコン 説明
新しいイベントをリストに追加するためのメニューが開きます。統計コレクターは、シミュレーションの実行中にこのイベントからデータを収集します。
3Dモデル内のオブジェクト、処理フロー、ツールボックスをサンプリングしてイベントリストに追加します。
イベントリストから選択したイベントを複製します。
イベントリストから選択したイベントを削除します。
イベントリストから選択したイベントの順序を変更します。

オブジェクトイベントの詳細

これらのプロパティを使用して、現在イベントリストで選択されているイベントの詳細を編集できます。次のプロパティは、イベントリストでオブジェクトイベントが選択されている場合にのみ表示されます。

  • 名前 - このボックスを使用して、イベントの名前を編集します。
  • オブジェクト - リッスンされるオブジェクトの名前とパスを表示します。
  • 要件 - オブジェクトを要件で選択する必要がある場合、オブジェクトプロパティが要件プロパティで置換され、オブジェクト要件コールバックが指定されます。
  • イベント - 現在リッスンしているオブジェクトのイベントを一覧表示します。このメニューをクリックすると、別のイベントを選択できます。
  • パラメータ - このテーブルには、このイベントが起動したときに使用可能なパラメータが表示されます。パラメータが有効になっている場合、パラメータはデータオブジェクトの指定されたラベルに割り当てられます。
  • 条件 - 発生したイベントでテーブルを更新すべきかどうかを決定するイベント条件コールバックを定義します。

タイマーイベントの詳細

これらのプロパティを使用して、現在イベントリストで選択されているイベントの詳細を編集できます。次のプロパティは、イベントリストでタイマーイベントが選択されている場合にのみ表示されます。

  • 名前 - このボックスを使用して、イベントの名前を編集します。
  • 初回 - このボックスを使用して、タイマーイベントのオフセット時間を指定します。この時点でイベントサイクルが開始されます。
  • リピート - このチェックボックスを使用して、イベントサイクルを繰り返すかどうかを指定します。
  • リピート時間 - このボックスを使用して、リピートサイクルの継続時間を指定します。この値は、[イベント時間]リストの最大時間以上にします。
  • イベント時間 - このテーブルを使用して、リピートサイクルごとに発生するイベントのシーケンスを指定します。デフォルトのケースでは、時刻ゼロで1つのイベントが発生します。これは、イベントサイクルの開始からモデル単位がゼロであることを意味します。
  • アイコン 説明
    新しいイベント時間を追加します
    選択したイベント時間を削除します
    選択したイベント時間の順序を変更します

追跡変数イベントの詳細

これらのプロパティを使用して、現在イベントリストで選択されているイベントの詳細を編集できます。次のプロパティは、イベントリストで追跡変数イベントが選択されている場合、またはオブジェクトの追跡変数値をリッスンしている場合に表示されます。

  • 名前 - このボックスを使用して、イベントの名前を編集します。
  • オブジェクト - 追跡変数またはリッスンされるオブジェクトの名前とパスを表示します。
  • イベント - 現在リッスンしている追跡変数またはオブジェクトのイベントを一覧表示します。このメニューをクリックすると、別のイベントを選択できます。
  • 変更ルール - イベントが起動したときに適用するルールの条件を選択します。
  • 変更値 - このボックスを使用して、選択したルールを満たしているかどうかを確認する際に使用する値を定義します。ルールを満たしている場合、統計コレクター処理は通常どおり続行されます。ルールを満たしていない場合は実行が停止し、イベントはテーブルを更新しません。
  • パラメータ - このテーブルには、このイベントが起動したときに使用可能なパラメータが表示されます。パラメータが有効になっている場合、パラメータはデータオブジェクトの指定されたラベルに割り当てられます。

一時イベントの詳細

一時オブジェクトの検索に使用するイベントを定義するとき、これらのプロパティを使用できます。次のプロパティは、イベントリストで一時イベントが選択されている場合に表示されます。

  • 名前 - このボックスを使用して、イベントの名前を編集します。
  • オブジェクト - 追跡変数またはリッスンされるオブジェクトの名前とパスを表示します。
  • 要件 - オブジェクトを要件で選択する必要がある場合、オブジェクトプロパティが要件プロパティで置換され、オブジェクト要件コールバックが指定されます。
  • イベント - リッスンする予定のオブジェクトのイベントを一覧表示します。このメニューをクリックすると、別のイベントを選択できます。
  • パラメータ - このテーブルには、このイベントが起動したときに使用可能なパラメータが表示されます。パラメータが有効になっている場合、パラメータはデータオブジェクトの指定されたラベルに割り当てられます。
  • 条件 - 発生したイベントで一時オブジェクトにリスナーを添付すべきかどうかを決定するイベント条件コールバックを定義します。
  • 一時オブジェクト - 一時オブジェクトを...する一時オブジェクトコールバックを定義します。
  • 一時オブジェクトを編集 - 一時イベントのプロパティを設定できるポップアップ画面を開きます。

一時イベントのポップアップ画面

一時イベントのポップアップ画面には、次のプロパティがあります。

  • イベント - 一時オブジェクトのイベントを選択します。一時オブジェクトなどのオブジェクトのサンプリングができるサンプラーを使用する必要があります。たとえば、トークンをリッスンする必要がある場合はトークンのサンプリングが必要になります。ただし、同じタイプのオブジェクトであれば何でもサンプリングできます。イベントと各イベントのパラメータのリストに対する入力専用です。
  • パラメータ - 選択したイベントのパラメータ、そのパラメータをdata変数に割り当てるかどうか、該当するdata変数での動的プロパティの名前を指定します。
  • 条件 - 発生したイベントでテーブルを更新するかどうかを決定するイベント条件コールバックを定義します。

イベントデータラベル

イベントデータラベルを使用して、選択したイベントに関連する追加データを収集できます。たとえば、イベントにフローアイテムが含まれている場合は、フローアイテムのラベル値をイベントオブジェクトのラベルに割り当てることができます。

コレクターのすべてのイベントで同じラベル値が生成される場合は、1つのイベントデータラベルを各イベントにではなく、すべてのイベントに追加できます。

イベントデータラベルグループには、次のプロパティがあります。

  • ラベルリスト - このイベント用に作成されたラベルを一覧表示します。
  • アイコン 説明
    新しいイベントラベルを現在のイベントまたはすべてのイベントに追加します。
    選択したイベントラベルを削除します。共有ラベルを削除すると、すべてのイベントの共有ラベルが削除されます。
    リスト内のラベルの順序を変更します。
  • 名前 - このボックスを使用して、ラベルの名前を変更します。
  • - このボックスを使用して、ラベルの値を設定します。これでラベル値コールバックを定義します。この値は、有効なイベントパラメータまたは以前のラベルのいずれかに基づいています。

[データ記録]タブ

[データ記録]タブでは、(データオブジェクトのラベルで)収集されたデータをデータテーブルで使用する方法を指定できます。行を作成する方法と、その行の値を追加または更新する方法も指定できます。

[データ記録]タブには、次のプロパティがあります。

行グループには、次のプロパティがあります。

  • 行作成モード
  • 行モード 説明 用途
    イベントごとに追加 統計コレクターがリッスンするイベントのいずれかが発生するたびに、データテーブルに行を追加します。データテーブルは、イベントが発生するたびに長くなります。 この行モードはタイマーイベントに最適です。イベントタイマーが起動するたびに行が作成され、シミュレーション実行中のその時点で関連オブジェクトからデータを取得します。

    統計コレクターによって現在記録されているすべてのイベントのログを単純に表示する場合にも、この行モードを使用できます。
    一意の行の値 一意の値の行を追加します。値が一意の場合は、新しい行が作成されます。値が一意でない場合、データテーブルによって該当する行の特定の列の値が更新または入力されます。この行モードを選択すると、データイベントラベルなど、一意性を確認する値を選択します。 この行モードは、フローアイテムまたはトークンがモデルや処理フローを移動するのを追跡するのに理想的です。フローアイテムまたはトークンがイベントを起動させると、必要に応じて行の列を新しい情報で更新できます。

    この行モードはラベルの一意の値を追跡するのにも理想的です。たとえば、アイテムのラベルにある各SKU番号や各製品タイプなどに行を作成できます。
    行を列挙 [列挙された行]リストで指定された各オブジェクトの行を追加します。この行モードを選択すると、テーブルの行を構成するオブジェクトを[列挙された行]リストに入力できます。グループを追加すると、グループメンバーごとに1つの行が作成されます。 この行モードは情報を収集するオブジェクトの数が固定されている場合に理想的です。たとえば、オブジェクトの合計スループットなどのオブジェクト統計を追跡する場合に理想的です。
  • 行の値 - このドロップダウンを使用して、テーブルの各行に関連付けられた値を選択します。この値が配列の場合は、複数の行を更新または作成できます(配列内の各要素に対して)。
  • 行の並べ替え - このプロパティでは、行を作成したとき、行を並べ替える方法を指定します。このプロパティの使用は、[行モード]が[一意の行の値]に設定されている場合に限られています。

    行が作成されたとき、このプロパティ内で式が評価され、結果がキャッシュされます。キャッシュされた値は、並べ替えの順番(昇順または降順)を使用して、各行でキャッシュされた他の値と比較されます。その後この行は正しい位置に配置されます。
  • 行の追跡オプションを編集...- アイテムの追跡を止めるイベントを指定できるポップアップ画面を開きます。行を並べ替えていない場合、追跡していない行を再利用するかどうかをこのポップアップ画面で選択できます。
  • 列挙された行 - このプロパティを使用して、オブジェクトのリストを指定します。リストされた各オブジェクトは、データテーブルで1つの行を取得します。オブジェクトがグループの場合、グループ内の各オブジェクトは、データテーブルで独自の行を取得します。このプロパティの使用は、[行モード]が[列挙された行]に設定されている場合に限られています。
  • アイコン 説明
    列挙リストにオブジェクトを追加します
    列挙リストに追加するオブジェクト(またはグループ)をサンプリングします
    選択したオブジェクトをリストから削除します
    リスト内のオブジェクトの順序を変更します。リスト内の順序はテーブル内の順序を定義します。
  • 行リスト - [列挙された行]リストにオブジェクトの現在のリストを表示します。

このグループのプロパティを使用すると、統計コレクターのデータテーブルに列を追加できます。各列のプロパティは、値、更新タイミング、保管タイプ、表示形式を指定します。

列グループには、次のプロパティがあります。

  • 列リスト - 列リストは、データテーブルに含まれる列の完全なリストを表示します。
  • アイコン 説明
    新しい列を追加します。
    リストから選択した列を複製します。
    リストから選択した列を削除します。
    リスト内の列の順序を変更します。このリスト内の列の順序は、データテーブル内の列の順序です。
  • 名前 - このボックスを使用して、列の名前を設定します。この名前は、テーブルビュー、チャート、エクスポートされたファイルに表示されます。名前は、統計コレクターの他の列名の中で一意である必要があります。名前にスペースを含めることはできますが、SQLを使用してテーブルをクエリする場合([計算済みテーブル]を使用する場合など)はお勧めしません。
  • 更新 - このボックスを使用して、列の値を更新するタイミングを設定します。[イベントごとに追加]行作成モードの場合は、行が作成され、その値が1ステップで計算されるため、このオプションは適用されません。[一意の行の値]と[行を列挙]作成モードの場合は、特定の行が作成後に何度も更新される可能性があります。このプロパティには、次の3つのオプションがあります。
    1. イベントに依存 - 列は、特定のイベントが発生した場合にのみ評価されます。これらのイベントは、[イベント/列に依存]テーブルで指定されます。
    2. 行が追加されたとき - 行が追加されると、列は行ごとに1回だけ評価されます。
    3. 常に - この列は必要なときに更新されます。これは、テーブルに表示されている場合や、チャートがこのテーブルを表示している場合に更新されます。また、クエリが実行されたときや、テーブルがFlexScriptでアクセスされたときにも表示されます。
  • - このボックスを使用して、データテーブルに配置する値を指定します。この値は数値または文字列(テキスト)のいずれかである必要があります。
  • 初期値 - このプロパティを使用して、イベントの更新が行われる前に、最初からデータテーブルに配置すべき値を指定します。
  • セット値 - 列のセットに対し列の設定値コールバックを定義します。このフィールドから返される値は、複数の名前でできた配列か、名前1つと値1つを含む2要素配列でできた配列となります。コレクターはテーブルで付与された名前で列を1つ作成します。
  • 保管タイプ - このボックスを使用して、値のストレージタイプを指定します。値がテキストの場合、このオプションは[文字列]に設定します。数値の場合は、[倍精度浮動小数点数]オプションが最適です。他の2つのオプション(浮動小数点数と整数)は、必要なメモリが少なくて済みますが、いくつかの制限があります。
    • 整数 - データが-2147483646~2147483647の整数で表される場合にのみ使用できます。たとえば、列に[アイテムタイプ]または[部品タイプ]と表示されているとします。さらに、モデルが20億個以上のトークンまたはフローアイテムを作成しない場合は、このオプションをトークンまたはフローアイテムのIDに使用できます。このオプションは、永続オブジェクトのID(3Dオブジェクトなど)には使用しないでください。
    • 浮動小数点数 - 7桁未満の精度が必要な浮動小数点数を表す場合にのみ使用します。たとえば、フローアイテムの重量ラベルや滞在時間の値があります。FlexSim時間にはこのオプションを使用しないでください。
  • インデックスタイプ - このボックスを使用して、値のインデックスタイプを指定します。[なし]以外のオプションを指定した場合は、インデックスが列または列セットのすべての列に追加されます。インデックスはクエリのパフォーマンスを大幅に向上させることができます。詳細については、「SQLクエリ」のトピックを参照してください。
  • 表示形式 - このプロパティを使用して、この列にデータを表示する方法を指定します。次の4つのオプションがあります。
    • 未加工 - このオプションは、未加工データを表示するように、テーブルビューとチャートに指示します。これは文字列値に対応する唯一のオプションです。
    • オブジェクト - このオプションは、列に永続的なID(3Dオブジェクトなど)を含めるように、テーブルビューとチャートに指示します。この列には、ID番号ではなくオブジェクトのパスが表示されます。
    • 日付/時刻 - このオプションは、列にFlexSim時間を含めるように、テーブルビューとチャートに指示します。この列には、Windowsのユーザー設定に応じた日時が表示されます。
    • パーセント - このオプションは、この値をパーセントで表示するように、テーブルビューとチャートに指示します。値に100を掛け、パーセント記号が追加されます。

イベント/列の依存関係を編集...

このボタンをクリックすると、イベント/列の依存関係のポップアップ画面が開きます。このポップアップ画面には、統計コレクターのイベントリストが表示されます。イベントを選択し、イベントが更新する列を選択できます。[イベントをリンク]モードが[直接リンクを使用]に設定されている場合、該当する列のチェックボックスをオンにする形で、現在のイベントに対応して更新される列を指定できます。[イベントをリンク]モードが[列要件を使用]に設定されている場合は、リンク要件コールバックのコードを指定できます。

[一般]タブ

[一般]タブには、次のプロパティがあります。

処理フローインスタンス

このプロパティは、この統計コレクターの1つ以上のイベントが、タスク実行者処理フローまたは固定リソース処理フローの処理フローアクティビティに関連する場合にのみ適用されます。デフォルトでは、このオプションは、統計コレクターがそのアクティビティのすべてのインスタンスをリッスンするように指定します。リッスンするインスタンスを減らすために、サンプラーを使用してこの値を1つのオブジェクトまたはオブジェクトのグループに設定できます。統計コレクターは、このプロパティで指定されたインスタンスオブジェクトのみをリッスンします。[削除]ボタンを押すと、このプロパティはデフォルトの[すべてのインスタンス]にリセットされます。

オブジェクトフォーマットの深さ

このプロパティはオブジェクトフォーマットを使用する列に適用されます。オブジェクトフォーマットでは各オブジェクトへのパスを表示します。またこのプロパティでそのパスに出現する名前の最大数をコントロールします。このプロパティが0の場合はフルパスが表示されます。1の場合は、オブジェクトの名前のみが表示されます。このプロパティが2の場合は、オブジェクトの名前と親の名前が部分パスの形で表示されます。値が増えるにつれ、ツリーで上位に位置するノードがパスに含まれるようになります。

ウォームアップ時

このプロパティは、モデルにウォームアップ時間が設定されている場合に、統計コレクターがモデルのウォームアップ時間にどう反応するかを指定します。詳細については、「ウォームアップ時」の項を参照してください。

ハードドライブにデータを保存する

このチェックボックスをオンにすると、この統計コレクターはテーブルデータをハードドライブの内部ファイルに保存します。データテーブルのメモリ(RAM)使用量は5 MBに制限されます。

テーブルを表示

このボタンをクリックすると、この統計コレクターのデータテーブルのビューが開きます。

テーブルをエクスポート

このボタンを使用すると、この統計コレクターのデータテーブルのCSVファイルを保存できます。

接続されたダッシュボードチャート

このリストには、この統計コレクターからのデータを描画しているダッシュボードチャートがすべて表示されます。このコレクターがどのチャートでも必要ない場合、リストは空になります。

プロパティ

このボタンをクリックすると、[接続されたダッシュボードチャート]リストで選択したチャートのプロパティウィンドウが開きます。