統計コレクター

概要と主要な概念

統計コレクターは、モデルからのデータを記録するテーブルです。統計コレクターは、モデル内のイベントをリッスンして、イベントが発生すると、データをテーブルセルに書き込みます。統計コレクターがリッスンするイベントだけでなく、それらのイベントと一緒に書き込むデータも構成できます。チャート内でテーブルデータを使用することも、FlexSimからデータをエクスポートすることもできます。

統計コレクターはツールボックスからアクセスできます。モデルには、任意の数の統計コレクターを含めることができます。

一般動作

統計コレクターは、グローバルテーブルと同様のテーブルです。これは、ツールボックスからアクセス可能なテーブルで、カスタム値を書き込むことができます。ただし、グローバルテーブルは、通常、入力データ、つまり、モデルがその動作を決定するために使用するデータの保存に使用されます。一方、統計コレクターは、モデルの実行時の動作に関するデータを記録します。グローバルテーブルは入力テーブルで、統計コレクターは出力テーブルと見なすことができます。

統計コレクターは、モデルの観察者です。統計コレクターを使用する場合は、観察するイベントとイベントの発生時に記録するものを指定します。その後で、モデルが実行されると、統計コレクターが指定されたイベントの発生をリッスンし、発生したらテーブルを更新します。

以降のサブセクションでは、統計コレクターの基本ロジックについて説明します。最後のサブセクション(フローチャートとしての統計コレクターの可視化)では、2つのフローチャートを示します。1つは、観察対象のイベントが発生した場合に実行するロジックを示しています。もう1つは、テーブルがアクセスされた場合に実行するロジックを示しています。これらのサブセクションを読み進めてフローチャートを確認してから、再度これらのサブセクションを読むと効果的です。

テーブルへの行の追加

テーブルに行を追加するには、リッスンするイベントを指定する必要があります。たとえば、次の統計コレクターは2つのイベントをリッスンします。

このリスト内のイベントが発生すると必ず、統計コレクターがdataという名前のエンティティを作成します。このエンティティには、イベントを発生させたオブジェクトやイベントの名前などのイベントに関する情報が含まれています。このエンティティにラベルを割り当てることもできます。前の例では、イベントパラメータのitemportがラベル値としてdataに割り当てられます。

各イベントは、行の値も指定します。統計コレクターは、各行の値を1つの行にマップします。指定された行の値の行がまだ存在しない場合は、統計コレクターがその値の行を追加します。前の例では、イベントでdata.itemが行の値として使用されます。これは、アイテムがキューに入ると必ず、統計コレクターがそのアイテムのテーブル内の行が存在することを確認することを意味します。加えて、イベントによって付与された行の値は、dataエンティティのrowValueプロパティに割り当てられます。

要するに、イベントが発生すると、行の値が生成されます。統計コレクターにその行の値の行が存在しない場合は、統計コレクターがそのテーブルに行を追加します。その後、新しい行が行の値に対応付けられます。この例では、行の値はフローアイテムです。ただし、行の値は、任意のバリアント値にすることができます。詳細については、「行の値」セクションを参照してください。

テーブルへの列の追加

テーブルに列を追加するには、それらを統計コレクターの[列]タブを使用して直接指定します。たとえば、次の統計コレクターには2つの列があります。

列を追加する場合は、名前を指定する必要があります。列が更新されたときに列に書き込まれる値を指定する必要もあります。[行の追加の値]は、新しい行が追加されたときに列に書き込む値を指定します。イベントで行のない行の値が生成された場合は、統計コレクターが新しい行を作成して、[行の追加の値]ですべての行を埋めます。

この例では、[Type]列の[行の追加の値]がdata.rowValue.Typeに設定されます。この例では、data.rowValueがフローアイテムであることを思い出してください。したがって、行が追加されると、[Type]列にその行のフローアイテム上の[Type]ラベルの値が記録されます。

テーブル内の値の更新

3つの方法でテーブル内の値を更新できます。1つ目の方法は、[行の追加の値]を定義する方法です。前のセクションで説明したように、これにより、統計コレクターによって行が追加されたら、値を書き込むことができます。

2つ目の方法は、1つ以上の列にイベントを接続する方法です。イベントが発生すると、統計コレクターがイベントの行の値用の行をアサートします。その後で、統計コレクターは、その行の接続先の列のそれぞれを訪問して、[イベントの値]フィールドで指定された値を書き込みます。下の例では、「Processor1 - On Exit」イベントが[Staytime]列に接続されています。

この例では、「Processor1 - On Exit」イベントが発生すると、統計コレクターが行の値用の行をアサートして、行が追加されたら、各列の[行の追加の値]を書き込みます。その後、同じ行で、統計コレクターが各接続先の列の[イベントの値]を書き込みます。この例では、イベントがdata.Staytimeに設定された[Staytime]列に接続されています。

列を更新するための3つ目の方法は、列の[更新タイミング]を変更する方法です。[更新タイミング]には次の2つのオプションがあります。

  • イベントによって行が追加および/または更新された時点
  • 値がアクセスされた時点
このプロパティを2つ目の値に設定すると、イベントが発生しても列は全く更新されません。代わりに、列へのアクセス、つまり列の表示が行われたときに列は更新されます。たとえば、統計コレクターのテーブルを表示している場合、ビューの更新のたびに列の値は更新されます。または、チャートでこの統計コレクターを使用しており、そのチャートが表示されている場合は、チャートが再描画される前に列の値が更新されます。[更新タイミング]のこのオプションは、オブジェクトの平均コンテンツや特定の状態にある時間などの連続的に変化する値を表示するために使用できます。

行の並べ替え

デフォルトで、統計コレクターが新しい行を追加すると、その行がテーブルの最後に追加されます。ただし、カスタム並べ替え順を指定できます。これを行うために、1つ以上の並べ替えの値を追加できます。

前の例では、並べ替えステップ中に行の値にアクセスできることを示しました。ただし、並べ替えの値に関する重要なルールがあります。

  • 並べ替えの値は、行のライフタイム中に変更しないでください。並べ替えの値は、キャッシュされ、他の行のキャッシュされた値と比較されます。
  • 並べ替えの値は、列の値に依存できません。行が並べ替えられた時点でどの列にも書き込まれていないため、列の値は使用できません。場合によっては、並べ替えの値が[行の追加の値]と同じ値になる可能性があります。

行の終了

発生したイベントによって行の値の行が追加または更新された後、その行を終了するように指定できるオプションがあります。イベントで行が終了されたら、その行に対して次の2つの事象が発生します。

  • アクセスされたときに更新するすべての行が更新される
  • 行の値が行から切り離される
終了した行は、イベントを使用しても、値にアクセスしても、更新されなくなります。この時点で行は終了したと見なされます。後のイベントで同じ行の値が生成される場合は、統計コレクターが行の値用の新しい行を追加します。

フローチャートとしての統計コレクターの可視化

統計コレクターはイベントが発生するとロジックを実行するため、そのロジックをフローチャートで確認すると便利です。次のフローチャートは、処理フローアクティビティで作成されます。アクティビティのタイプごとに特定の意味が付与されています。

  • - 何らかのきっかけで更新ロジックが開始する
  • - 指定されたコードまたは値
  • - 統計コレクターによってチェックされた決定
  • - 統計コレクターによって実施されたアクション
  • - ものごとに数ステップが発生することを示す(破線矢印を使用して)
  • - 更新プロセスの終了
加えて、dataエンティティをフローチャート内で移動するトークンと見なすと非常にわかりやすくなります。

統計コレクターのイベントのいずれかが発生する場合、実行されるロジックは、ほぼ次のフローで表されます。

統計コレクターのテーブルがアクセスされる場合、実行されるロジックは、ほぼ次のフローで表されます。

行の値

このセクションでは、イベントの[行の値]プロパティから返すことが可能なさまざまな種類の行の値と、それらが統計コレクターでどのように使用されるかについて説明します。

数値、テキスト値、およびノード値。

最も一般的な種類の行の値は、数値、テキスト値、またはノード値です。統計コレクターは、一意のテキスト値、数値、またはノード値ごとに1つの行を作成します。

値の配列

イベントの[行の値]フィールドが配列を返した場合、統計コレクターはその配列のすべての要素を個々の行の値として抽出します。この方法では、単一のイベントで複数の行を追加および/または更新できます。たとえば、[1, 2, 3]は、値が1、2、および3の1つの行をアサートします。ただし、単一値の配列は1つの行(行の値の1 == [1])しか更新しません。

配列の行の値

場合によっては、行の値を記述するために複数の値を使用できます。たとえば、SKUと固定リソースあたり1つの行しかないテーブルを作成するとします(固定リソースを流れるアイテム上のラベル)。このケースでは、行の値が固定リソースとSKUの複合値になります。

これは配列を使用して実現できます。ただし、統計コレクターは配列を使用して複数の行の値を表すため、配列を配列の中に入れる必要があります。たとえば、イベントで行の値を返す場合は、次のようになります。

[[current, data.item.SKU]]

こうすれば、統計コレクターは外側の配列の各要素を行の値として取得します。これにより、内側の配列が行の値として残されます。統計コレクターは、一意の配列あたり1つの行を作成します。配列のすべての要素が一致する必要があります。後のフィールド内のその配列の要素には次の配列構文を使用してアクセスできます。data.rowValue[1]

null値

イベントから行の値としてnull値を返すことができます。これにより、必ず新しい行が統計コレクターに追加され、その行が必ずイベント後に終了されます。

列挙値

列挙値を理解するには、まず、統計コレクターでdataエンティティがどのように使用されるかを思い出す必要があります。統計コレクター内のイベントのいずれかが発生すると必ず、dataエンティティが作成されます。加えて、統計コレクターがdataエンティティ上の以下のプロパティを設定します。

  • data.group - 単一のイベントでグループ内のすべてのオブジェクトをリッスンする場合は、このプロパティがそのグループに設定されます。それ以外の場合は、空になります。
  • data.eventNode - この値は、イベントを発生させたノードに設定されます。この値は、currentとしても知られています。
  • data.processFlowInstance - イベントでインスタンス化されたフロー内のアクティビティをリッスンしている場合は、このプロパティがイベントを引き起こしたインスタンスに設定されます。このプロパティは、instanceとしても知られています。

すべてのイベントでこの3つのプロパティが設定されます。任意のイベントから以下を行の値として返すことができます。

data.enumerate()

このメソッドは、特殊な値を返します。統計コレクターがこの特殊な値を行の値として検出した場合は、次の一意の組み合わせあたり1つの行をアサートします。

[data.group, current, instance]

また、data.rowValuecurrentに設定します。

行の値としてcurrentを使用する場合とdata.enumerate()を使用する場合では違いがあります。どちらのケースも終了時にdata.rowValueが同じ値に設定されますが、data.enumerate()を使用して作成された行では、行の作成に使用されたインスタンスとグループも記憶されます。

列がアクセス時に更新を行い、instance値を必要とする場合、この違いは重要になります。たとえば、各インスタンスのインスタンス化されたフローで遅延アクティビティの平均コンテンツを表示するとします。テーブルにアクセスしたときにはイベントが発生しないため、通常の行からcurrentinstance、またはdata.groupにアクセスできません。ただし、列挙された行でこれらの値が記憶されているため、次のようなコードでこれらの値を使用できます。

getstat(data.rowValue, "Content", STAT_CURRENT, instance)

イベント

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

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

行追加時

このイベントは、統計コレクターに新しい行が追加されたとき、行が並べ替えられた後、および[行の追加の値]が設定された後に発生します。

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

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

行更新時

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

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

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

行の終了時

このイベントは、特定のイベントで行が終了したときに発生します。イベントによって更新されたすべての列がこのイベントの発生前に更新されます。

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

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

行の追加時

このイベントは、統計コレクターが新しい行を追加する必要があるが、実際にはまだ行を追加していない場合に発生します。このイベントに関連付けられたトリガーは、多くの場合、dataエンティティ上の行ラベルの初期化に使用されます。

このイベントにはパラメータがありません。

行の更新時

このイベントは、統計コレクターがイベントに接続された列を更新しようとしている場合に発生します。このイベントに関連付けられたトリガーは、多くの場合、dataエンティティ上の行ラベルの更新に使用されます。

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

イベントパラメータ タイプ 説明
イベント追加行 整数 現在更新を引き起こしているイベントが行も追加した場合に、この値が真になります。
イベント終了行 整数 現在更新を引き起こしているイベントが行も終了する場合に、この値が真になります。

プロパティ

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

[イベント]タブ

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

[イベント]タブの左側は、イベントリストです。[追加]ボタンまたは[サンプラー]ボタンを使用して、このリストにイベントを追加できます。[重複]ボタンを使用して、選択されたイベントを複製できます。[削除]ボタンを使用して、選択されたイベントを削除できます。[上へ]ボタンと[下へ]ボタンを使用して、リスト内のイベントの順序を入れ替えることができます。

すべてのイベントで、以下のプロパティを指定することができます。

  • 名前 - 現在のイベントの名前。
  • 追加のラベル - このリストを使用すれば、このイベントの一部として、dataエンティティにラベルを追加することができます。

以降のサブセクションでは、統計コレクターでリッスンまたは作成が可能なさまざまな種類のイベントと各種イベントのプロパティについて説明します。

標準イベント

この種のイベントの例を以下に示します。

統計コレクターは、任意の3Dオブジェクトまたは処理フローアクティビティのイベントをリッスンできます。たとえば、プロセッサのエントリ時またはキューのコンテンツ変更時をリッスンできます。インスタンス化されたフロー内の処理フローアクティビティをリッスンする場合は、統計コレクターがフローに付加されたすべてのインスタンスのアクティビティをリッスンします。

この種のイベントのいずれかをリッスンする場合は、dataエンティティ上のラベルとしてイベントパラメータを割り当てるオプションがあります。

この種のイベントには、[条件]プロパティもあります。パラメータが割り当てられると、統計コレクターが条件を評価します。条件の値が偽の場合は、イベントがプロセス内をこれ以上進まなくなり、テーブルを更新しません。

この種のイベントを使用すれば、dataエンティティに追加のラベルを指定することもできます。条件の評価後に、これらのラベルが割り当てられます。

グループイベント

この種のイベントの例を以下に示します。

同じタイプの複数のオブジェクトをリッスンする必要がある場合は、オブジェクトのグループをリッスンできます。統計コレクターは、グループ内のすべてのオブジェクトをリッスンします。

標準イベントと同様に、このオブジェクトを使用すれば、イベントパラメータを割り当てたり、条件を定義したり、追加のラベルを割り当てたりすることができます。

追跡変数イベント

この種のイベントの例を以下に示します。

追跡変数をリッスンする場合や単語の「Change」を含むオブジェクトイベントをリッスンする場合は、追跡変数イベントをリッスンすることになります。

追跡変数イベントをリッスンする場合は、変更ルールを指定できます。変更ルールは条件に似ています。行われた変更が変更ルールと一致しない場合は、イベントでテーブルが更新されません。

使用する変更ルールによっては、変更値を指定しなければならない場合もあります。これは、変更ルールに関連する値です。変更ルールの名前に単語の「Value」が含まれている場合は、変更値が使用されます。

変更ルールに加えて、追加の条件追加のパラメータを指定できます。

タイマーイベント

この種のイベントの例を以下に示します。

統計コレクターは、タイマーイベントを作成して、モデル内のイベントをリッスンするのではなく、タイマーイベントをリッスンすることができます。タイマーイベントを使用する主な方法が2つあります。1つ目の方法は、繰り返さずに、モデルの開始時に発生するタイマーイベントを作成する方法です。この種のタイマーイベントは、通常、テーブルに含めることが期待されているすべての行を作成します。2つ目の方法は、繰り返しスケジュールでタイマーイベントを使用する方法です。これにより、データを定期的に更新または収集することができます。

タイマーイベントを使用するには、まず、[初回]の値を指定します。これは、モデル単位の期間です。タイマーは、この時間まで発生を開始しません。0未満の値を返すことにより、モデルのリセット時にこのイベントを発生させることもできます。

次に、タイマーイベントがリピートかどうかを指定できます。リピートの場合は、[リピート間隔]を指定する必要もあります。これは、モデル単位の期間です。タイマーは、初回後に、毎リピート間隔を繰り返します。

オプションで、カスタムティックパターンを定義できます。ほとんどのユーザーがこのオプションを必要としません。ティックパターンを使用して、タイマーイベントを複数回発生させることができます。これは、[ティックパターン]プロパティから値の配列を返すことにより実行できます。配列内の値ごとに、統計コレクターは、初回以降または最後に発生したリピート間隔以降に、複数のモデル単位でタイマーイベントを実行します。

このイベントを使用すれば、dataエントリに追加のラベルを割り当てることもできます。

列挙イベント

この種のイベントの例を以下に示します。

タイマーイベントに似た列挙イベントは、統計コレクターがモデル内の他のオブジェクトをリッスンするのではなく、それ自体のために作成するイベントです。この種のイベントは、モデルがリセットされたときに発生します。

このイベントを使用するために、Objectsのリストを指定できます。これらのオブジェクトは、3Dオブジェクト、グループ、処理フローアクティビティ、追跡変数、またはその他のツリーノード値にすることができます。

このイベントを使用すれば、dataエントリに追加のラベルを割り当てることもできます。

このイベントでは、独自の行の値を指定することはできません。代わりに、列挙イベントによって、[オブジェクト]リスト内のすべてのオブジェクトの行の値が作成されます。オブジェクトがグループの場合は、統計コレクターがグループ内のオブジェクトごとに1つの行の値を作成します。オブジェクトがインスタンス化された処理フロー内のアクティビティの場合は、統計コレクターがアクティビティのインスタンスごとに1つの行の値を作成します。すべての行の値は、data.enumerate()メソッドを使用して作成されます。詳細については、「列挙値」セクションを参照してください。

要件別イベント

この種のイベントの例を以下に示します。

この種のイベントは、標準イベントとほとんど同じですが、リッスンする特定のオブジェクトまたはグループを指定する代わりに、要件を指定できます。統計コレクターがそのリスナーを作成中は、モデル全体を検索します。各オブジェクトを要件プロパティに渡し、真の値を返すオブジェクトをリッスンします。この特別な例では、統計コレクターがすべてのプロセッサオブジェクトのOnExitをリッスンしています。

イベント]プロパティの横にあるイベントサンプラーを使用すれば、要件が見つけたいオブジェクトなどをサンプリングできます。

標準イベントと同様に、このオブジェクトを使用すれば、イベントパラメータを割り当てたり、条件を定義したり、追加のラベルを割り当てたりすることができます。

一時イベント

この種のイベントの例を以下に示します。

ほとんどのイベントで、モデルがリセットされたときに発生する現象をリッスンすることができます。一時イベントを使用すれば、モデル実行の一部として後で作成されるオブジェクトをリッスンすることができます。たとえば、トークン上のTrackedVariableラベルの変更をリッスンすることができます。または、フローアイテムが新しいオブジェクトに移動したときに発生するフローアイテムのOnEnteringイベントをリッスンすることができます。モデルがリセットされると、これらのオブジェクトのすべてが消去されます。

一時イベントを他の種類のイベントと対比させると便利です。他の種類のイベントが発生すると、行の値が公開されます。この種のイベントが発生した場合は、一時オブジェクトが公開されます。前の例では、一時オブジェクトがフローアイテムです。

一時イベントを使用するには、一時オブジェクトでリッスンするイベントを構成する必要もあります。[一時的なオブジェクトイベントを編集...]ボタンを使用して、次のようなポップアップを開くことができます。

このポップアップでは、一時オブジェクトのイベントのイベントパラメータ、および条件を編集することできます。イベントサンプラーを使用して、リッスンする一時オブジェクトなどのオブジェクトからイベントをサンプリングする必要があります。

一時イベントは、実際には2つのイベントをリッスンするため、他のイベントタイプより複雑です。この2つのイベントとは、一時オブジェクトが特定されるイベントと一時オブジェクトによって後で発生するイベントです。一時イベントの機能に関するヒントを以下に示します。

  • 一時イベントは、テーブルを直接更新しません。一時オブジェクトに対するイベントにリスナーをアタッチします。そのイベントが発生すると、テーブルが更新されます。
  • 一時イベントの条件プロパティによって、イベントが一時オブジェクトにリスナーをアタッチするかどうかが決まります。一時オブジェクトイベントの条件プロパティによって、一時オブジェクトのイベントがテーブルを更新するかどうかが決まります。
  • 一時イベントにはイベントパラメータがあります。これらのパラメータをdataエンティティ上のラベルに割り当てた場合は、後で一時オブジェクトイベントが発生したときにこれらのラベル値が有効になります。

[列]タブ

[列]タブを使用すれば、統計コレクターに列を追加することができます。[列]タブには、次のプロパティがあります。

列リスト

列リストを使用すれば、、および ボタンを使用して、列の追加、複製、削除、および並べ替えを行うことができます。リスト内の列を選択して、その列のプロパティを編集できます。

名前

名前]プロパティは、テーブルに表示される列の名前を設定します。各名前は一意にする必要があります。

行の追加の値

行の追加の値]プロパティは、テーブルに行が追加されたときに書き込まれる値を指定します。

イベントの値

イベントの値]プロパティは、この列に接続されたイベントが発生したときに書き込まれる値を指定します。この列にどのイベントも接続されていない場合は、この値を指定する必要がありません。

]プロパティは、値がアクセスされたときに更新するように列が設定されている場合にのみ使用できます。

値の設定

単一列ではなく、列セットを追加すると、[値の設定]プロパティを指定できます。このプロパティは、名前/値のペアの配列を返す必要があります。名前/値のペアごとに、統計コレクターがその名前を持つ列を追加します。加えて、値はdata.colValueを通して取得できます。

たとえば、キューオブジェクトのグループがある場合は、次のコードを使用して、キューあたり1つの列を作成できます。

/**Custom Code*/
StatisticsCollector collector = ownerobject(c);

Array queues = Group("Queues").toFlatArray();
Array result;
for (int i = 1; i <= queues.length; i++) {
	result.push([queues[i].name, queues[i]]);
}

return result;

各列の名前はキューの名前に設定され、各列の値はキューになることに注意してください。これは、data.colValueが列に対応するキューになることを意味します。

更新タイミング

[更新タイミング]オプションを使用すれば、列がイベントによって更新されるのか、テーブルへのアクセスによって更新されるのかを設定することができます。このオプションについては、「値の更新」セクションで説明します。

保管タイプ

列の保管タイプによって、その列に記録可能な値のタイプと値に必要なメモリの容量が決定されます。次のリストで、各オプションについて説明します。

  • ダブル - 約15桁の精度で10進数を保存できます。行あたり8バイトが必要です。
  • 整数 - 約-20億~20億の整数値を保存できます。行あたり4バイトが必要です。
  • 文字列 - テキスト値を保存できます。行あたり4バイトが必要なこと加えて、テーブル内のすべての一意のテキスト値を保存するために十分なメモリが必要です。
  • フロート - 約7桁の精度で10進数を保存できます。行あたり4バイトが必要です。
  • バイナリ - 1または0の数値を保存できます。行あたり32フィールド、つまり4バイトが必要です。

表示形式

列に数値(テキスト値ではない)が保存されている場合は、[表示形式]を指定できます。選択する表示形式は、列に保存されている値の種類によって異なります。考えられるオプションは4つあります。

  • 未加工 - テーブルに保存されている数値を表示します。
  • オブジェクト - 数値がStatisticsCollector.getID()メソッドを使用して取得されたオブジェクト(リセット時に存在する)のIDであると仮定します。この形式は、指定されたIDを持つオブジェクトへのパスを表します。
  • 日付/時刻 - 数値がDateTime値であると仮定します。この形式は、Windowsの設定に従って書式設定された数値で表現される日時を表します。
  • パーセント - 数値がパーセンテージであると仮定します。この形式は、値に100を掛けて、%記号を付けます。

インデックスタイプ

このボックスは、値のインデックスタイプを指定するために使用します。[なし]以外のオプションを指定した場合は、インデックスが列または列セットのすべての列に追加されます。インデックスはクエリのパフォーマンスを大幅に向上させることができます。詳細については、「SQLクエリ」のトピックを参照してください。

イベント/列の接続

このエリアは、イベントを列に接続するために使用できます。このエリアには、すべてのイベントのリストが表示されます。このリストで列に接続するイベントを選択できます。

イベントを列に接続する方法は2つあります。1つ目の方法は、[直接リンクを使用]する方法です。このオプションを選択した場合は、このイベントによって更新する各列の横にあるチェックボックスをオンにします。これは、イベントと列を接続する最も一般的な方法です。

イベントと列を接続する2つ目の方法は、[列要件を使用]する方法です。この方法を使用するには、コードコールバックを指定します。このコールバックは、統計コレクター内の各列に対して呼び出されます。以下のプロパティセットを持つdataエンティティが使用できます。

  • data.colNum
  • data.colName
  • data.colValue
このコールバックが1(または「真」の値)を返した場合は、イベントがこの列に接続されます。コールバックが0(または「偽」の値)を返した場合は、イベントが列に接続されません。

[行オプション]タブ

[行オプション]タブには、次のプロパティがあります。

行の並べ替え

[行の並べ替え]エリアを使用すれば、並べ替え値のリストを指定することができます。行が統計コレクターに追加されると、最初の並べ替え値で並べ替えられてから、2つ目の並べ替え値で並べ替えられます。以下同様です。並べ替え値ごとに、値を昇順(AからZ)に並べ替えるのか、降順(ZからA)に並べ替えるのかを指定できます。

終了した行を再利用する

行を並べ替えない場合は、オプションで、終了した行の再利用を選択できます。これは、統計コレクターが行を追加するときに、まず、終了した行がないかどうかをチェックすることを意味します。終了した行がある場合は、行の値が新しい行ではなくその行に割り当てられます。

このオプションは、通常、別の統計コレクターがこの統計コレクターをリッスンする場合にのみ使用されます。行を再利用することにより、この中間コレクターがメモリ使用量を最小化できます。

終了した行の値とラベルを維持する

このプロパティは、行が終了されたときに適用されます。このボックスがオフになっている場合は、統計コレクターが行の値とその行に関連付けられたラベルを記憶せず、破棄します。ただし、このボックスがオンになっている場合は、統計コレクターが行の値とラベルを破棄するのではなく現在の行から切り離します。

ウォームアップ時

ウォームアップ時]プロパティは、統計コレクターがモデルのウォームアップ時に実行するアクションを指定します。使用可能なオプションが5つあります。

  • すべての行を削除 - このオプションは、統計コレクターからすべての行を削除します。
  • 初期値にリセット - このオプションは、終了していないすべての行を調べて、列を行の追加の値にリセットします。
  • 終了した行を削除 - このオプションは、テーブルからすべての終了した行を削除します。
  • 終了したすべての行を削除し、初期値にリセット - このオプションは、テーブルからすべての終了した行を削除します。残りの行は行の追加の値に設定されます。
  • 何もしない - このオプションは、ウォームアップ時間が来ても何もしません。

[トリガー]タブ

[トリガー]タブを使用すれば、統計コレクターのトリガーのそれぞれのロジックを指定することができます。このタブは、FlexSim内の他のオブジェクトの[トリガー]タブと同じです。詳細については、「[トリガー]タブ」のトピックを参照してください。

[ラベル]タブ

[ラベル]タブを使用すれば、統計コレクターオブジェクトにラベルを追加することができます。他のFlexSimオブジェクトの[ラベル]タブと同じです。詳細については、「[ラベル]タブ」のトピックを参照してください。

[一般]タブ

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

共有条件

このプロパティは、すべてのイベントの条件を指定します。このプロパティは、イベントの発生直後に評価されます。条件が0または他の偽の値を返した場合は、イベントでテーブルが更新されません。

フローインスタンスを処理

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

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

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

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

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

テーブルを表示

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

行の値を表示

このボタンは、テーブルベースのビューを開く場合にクリックします。このビュー内のテーブルには、統計コレクターの各行の行の値が表示されます。行が列挙されている場合は、このテーブルにもその行に関連付けられたグループとインスタンスが表示されます。アクティブな行の内容

テーブルをエクスポート

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

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

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

プロパティ

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