統計コレクターを使用する

統計コレクターについて

このトピックを読む前に、「データの取得についての主要な概念」を読んで、シミュレーションモデルからデータを取得するのに必要な処理全般とツールについて理解しておいてください。

統計コレクターは、シミュレーションの実行中に指定したオブジェクトおよびイベントから未加工データを収集するツールです。シミュレーションの実行中、統計コレクターはこれらのオブジェクトをリッスンし、未加工データを次の例に示すようなデータテーブルに格納します。このテーブルは、アイテムが組立ラインを出入りする時間を追跡します。

この未加工データを収集すると、次のことができるようになります。

  • [計算済みテーブルツール]を使用してデータを変換します(詳細については、「計算済みテーブルを使用する」を参照してください)。
  • FlexSimで利用可能なチャートの一部を使用してデータを視覚化します。
  • ExcelやTableauなどの外部のソフトウェアプログラムにデータをエクスポートします。

統計コレクターには、主に2つの利点があります。

  • 独自のデータ収集ニーズに簡単に適応できます。統計コレクターをカスタマイズして、シミュレーションの実行中に利用可能なほぼすべてのイベントまたは統計からデータを収集できます。その際、統計コレクターは必要とされるデータを推測することはなく、指定されたとおりのデータのみを提供します。それ以上でもそれ以下でもありません。つまり統計コレクターを使用すると、収集するデータを正確に決定できると同時に、収集しない不要なデータを除外できます。
  • これにより、シミュレーションモデルの未加工データに直接アクセスできます。シミュレーションモデルの結果を視覚化するためにチャートを作成すると便利な場合がありますが、シミュレーションの実行によって取得した未加工データにアクセスする方が便利な場合もあります。統計コレクターを使用するとき、シミュレーション実行時の情報を取得するためにチャートを作成する必要はありません。すべての未加工データは、作成および定義したデータテーブルで取得されます。これらのテーブルのデータを使用して、より多くの計算を実行したり、FlexSimのチャートにデータを表示したりできるほか、データをエクスポートして任意のデータ分析ソフトウェアプログラムを使用してより深く分析できます。

統計コレクターの使用に関する概要

高度なデータ収集の概要」では、シミュレーションモデルからカスタムデータを取得するプロセスには5つの基本フェーズがあることを説明しました。統計コレクターは、最初の2つのフェーズに関わっています。

統計コレクターを使用する前に、以下について決定する必要があります。

  1. 統計コレクターはどのイベントをリッスンする必要があるか?
  2. そのイベントが発生したときにどのデータを記録するか?
  3. そのデータをデータテーブルでどのように収集、更新、表示するか?

これらの質問に対する答えは、シミュレーションモデルを構築することで具体的にどのような決断を下そうとしているのか、あるいはどのような問題を解決しようとしているのかによって異なります(最も関心のあるデータ出力の種類を決定する方法の詳細については、「主要なメトリックを決定する」を参照してください)。

どのデータに関心があるか決定したら、まず、そのデータに関連付けられているイベントをリッスンするよう統計コレクターを設定します。次に、未加工データを更新して表示するデータテーブルの行と列を設定します。このトピックの残りのセクションでは、これらのタスクを行う方法について詳しく説明します。

新しい統計コレクターを作成する

留意すべき重要な概念の1つは、統計コレクターごとに必ずデータテーブルが関連付けられるということです。異なる未加工データをそれぞれ追跡するテーブルを複数作成する場合は、テーブルごとに個別の統計コレクターを作成します。

ツールボックスを使用して、統計コレクターを追加、管理、削除できます。詳細については、「ツールボックスを使用する」を参照してください。

コレクターにイベントを追加する

統計コレクターを設定するための最初のステップは、リッスンするイベントを追加することです。統計コレクターの[イベントリスニング]タブを使用してイベントを追加します。

イベントリストはこのタブの左側にあります。イベントリストには、統計コレクターが現在リッスンしているイベントがすべて表示されます。統計コレクターにリッスンさせるシミュレーションイベントをこのリストに追加する必要があります(統計コレクターがリッスンできるイベントのタイプの詳細については、「イベントのタイプ」を参照してください)。

[サンプラー]ボタンを使用してイベントを追加する

[サンプラー]ボタンは、イベントリストにイベントを追加する最も簡単な方法です。これによってタイマーイベント以外のほぼすべてのタイプのイベントをサンプリングできます。タイマーイベントを追加するには、[追加]メニューを使用する必要があります。

[サンプラー]ボタンを使用してイベントを追加するには:

  1. サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  2. シミュレーションの実行中に統計コレクターがリッスンするオブジェクトをクリックします。オブジェクトのサンプリングに使用する方法は、サンプリングするオブジェクトのタイプによって異なる場合があります。
  3. タイプ 説明
    3Dオブジェクト 3Dモデル内のオブジェクトをクリックしてサンプリングします
    処理フローアクティビティまたは共有アセット 処理フロー内のアクティビティまたは共有アセットをクリックしてサンプリングします
    グループ [グループ]の下のツールボックスで、グループの名前をクリックしてサンプリングします
    追跡変数 [追跡変数]の下のツールボックスで、変数の名前をクリックしてサンプリングします
  4. オブジェクトをクリックすると、このタイプのオブジェクトで使用できるすべてのイベントを一覧表示したメニューが開きます。リストから適切なイベントを選択します。

選択したイベントがイベントリストに表示されます。同じオブジェクトに対して複数のイベントをリッスンする場合は、イベントを追加できます。

メニューを使用してイベントを追加する

メニューを使用してイベントを選択するには、[追加]ボタン を使用します。これが統計コレクターにタイマーイベントを追加する唯一の方法であることに注意してください。

タイマーイベントを追加するには:

  1. 追加]ボタン をクリックして、メニューを開きます。
  2. タイマーイベントを追加]を選択します。
  3. タイマーイベントはデフォルト名のTimerでイベントリストに表示されます。必要に応じて、[イベントの詳細]でこの名前を変更できます。

オブジェクトまたはイベントを変更する

必要に応じて、[イベントの詳細]プロパティでオブジェクトまたはイベントを変更できます。

イベントの詳細を編集する

イベントリストにイベントを追加した後、[イベントの詳細]グループのプロパティを使用してイベントを編集できます。これらのプロパティは状況依存型です。つまり、現在イベントリストで選択されているイベントのタイプによって、異なるプロパティが使用可能になります(統計コレクターがリッスンできるイベントのタイプの詳細については、「イベントのタイプ」を参照してください)。

[イベントの詳細]を使用すると、次のことができます。

  • イベントパラメータからラベルを作成する - オブジェクトベースのイベントには、特定のパラメータが関連付けられています。これらのパラメータには、イベントをトリガーしたフローアイテムやトークンなど、イベントに関する基本情報が含まれています。[イベントの詳細]プロパティを使用すると、カスタムラベルを付けてこれらのパラメータの関連情報を保持できます。
  • 他のラベルのデータを記録する - イベントが発生した時点で関連情報を含む可能性のあるフローアイテムまたはトークンにラベルがある場合は、イベント発生時点でのラベルの値をキャプチャするように統計コレクターを設定できます。たとえば、アイテムの製品タイプを追跡するラベルの値を記録したり、アイテムの現在の重量を追跡するラベルの値を記録したりできます。
  • 変更ルールを定義する - 3Dオブジェクトまたは処理フローアクティビティで発生する統計的変化をリッスンする変更イベントを設定することもできます。[イベントの詳細]プロパティを使用して、統計イベントをトリガーする条件(別名[変更ルール])を決定します。
  • タイマーイベントを設定する - 統計コレクターは一定の間隔でデータを収集できます。タイムドイベントが起動すると、その時点でモデル内のさまざまなオブジェクトからデータを収集できます。イベントの詳細を編集して、タイマーイベントがモデルからデータをキャプチャする頻度を決定します。
  • イベントにカスタム名を付ける - 必要に応じてイベントの名前を変更できます。
  • オブジェクトまたはイベントを変更する - オブジェクトの選択が間違っていた場合に、その特定のイベントを使用するには(またはその逆の場合)、こちらでその変更を行うことができます。
  • 条件を追加する - 統計コレクターがリッスンするイベントをさらにフィルタリングまたは制限する場合は、条件を追加して、どのイベントを記録または無視するか統計コレクターに指示できます。たとえば、フローアイテムのラベルの値が特定の条件(ProductTypeラベルの値が2に等しいなど)を満たす場合にのみイベントを記録するように指定できます。

以下のセクションでは、これらの目的のためにイベントの詳細を編集する方法について説明します。

イベントパラメータからラベルを作成する

オブジェクトベースのイベントには、特定のパラメータが関連付けられています。多くの場合、これらのパラメータはイベントをトリガーした特定のフローアイテムまたはトークンを参照します。パラメータによっては、アイテムが送受信されたポートの番号を示す場合があります。タスク実行者に、アイテムをロードした場所を記録する機能が与えられている場合もあります。詳細については、「ラベルマッチング」を参照してください。

この情報を保持する必要がある場合は、この情報をキャプチャするラベルを作成して、データテーブルに表示されるようにできます。処理の後半でデータテーブルの列を設定するときに、ラベルの値をデータテーブルに取得できるように、この特定のラベル名を参照する必要があります。

イベントパラメータからラベルを作成するには:

  1. イベントリストでオブジェクトベースのイベントを選択します。
  2. イベントの詳細]グループで、[パラメータ]テーブルを探します。このテーブルには、その特定のイベントに対するイベントパラメータがすべて表示されます。個々のイベントパラメータが追跡する内容の詳細については、該当するオブジェクトのリファレンスページを参照してください。
  3. デフォルトでは、すべてのイベントパラメータについて[有効]列に[yes]が設定されています。これは、統計コレクターがこのパラメータからデータを収集できることを意味します。パラメータを無効にするには、セルの内側をクリックし、メニューから[no]を選択します。
  4. イベントデータラベル名]列では、このパラメータの情報を格納するラベルの名前を変更できます。たとえば、上の画像では、[入るアイテム]パラメータのデフォルトのラベルは[EnteringItem]です。この例では、代わりにカスタムラベル[MyItem]を使用するようにラベルが変更されています。名前を変更するには、セルの内側をクリックし、新しいラベル名を入力します。
  5. 必要に応じて、[条件]ボックスを使用して、統計コレクターがイベントを記録するかどうかをさらに制限できます。デフォルトのオプションは[常に]で、イベントが発生するたびに記録されます。このボックスの横にある矢印を使用してメニューを開き、可能なオプションを確認します。

他のラベルのデータを記録する

イベントが発生した時点で関連情報を含む可能性のあるフローアイテムまたはトークンにラベルがある場合は、イベント発生時点でのラベルの値をキャプチャするように統計コレクターを設定できます。

  1. イベントリストでオブジェクトベースのイベントを選択します。
  2. イベントラベル]グループで、[追加]ボタン をクリックして、メニューを開きます。
  3. このイベントの起動時にのみこのラベルのデータを取得する場合は、[このイベントのラベルを追加]を選択します。この統計コレクターにあるすべてのイベントが同じデータにアクセスする必要があることが確実な場合は、[すべてのイベントのラベルを追加]を選択します。それ以外の場合は、最初のオプションを使用します。
  4. 名前]ボックスに、ラベル用にわかりやすい名前を入力します。
  5. ]ボックスを使用して、ラベルの初期値を設定するか、ラベルの現在の値を取得します。このボックスの横にある矢印を使用してメニューを開き、可能なオプションを確認します。

これでこのラベルの値がデータテーブルで参照されます。

変更ルールを定義する

3Dオブジェクトまたはアクティビティで発生する統計的変化をリッスンする変更イベントを設定することもできます。[イベントの詳細]プロパティを使用して、統計イベントをトリガーする条件(別名[変更ルール])を決定します。

変更ルールを定義するには:

  1. イベントリストで選択したイベントが変更イベントであることを確認します。
  2. イベントの詳細]グループで、[変更ルール]メニューを開き、このイベントに適用する変更ルールを選択します。たとえば、あらゆる変更を追跡する場合は、[変更]を選択します。あらゆる増加を追跡する場合は、[増加]を選択します。
  3. 必要に応じて、イベントの起動をトリガーする[変更値]を入力します。

上の画像の例では、キューの中のフローアイテムが30個ちょうどに達するとイベントが起動するように変更ルールが設定されています。

タイマーイベントを設定する

タイマーイベントのイベントの詳細は、タイマーイベントが定期的に情報を記録するかどうかによって異なります。詳細については、「タイマーイベントを設定する」のセクションを参照してください。

データテーブルの行作成方法を選択する

イベントを追加してイベントの詳細を編集したら、統計コレクターのデータテーブルを設定します。具体的には、データテーブルが新しい行をテーブルに追加する方法と、テーブルの列に記録する情報の種類を決定する必要があります。これを行うには、コレクターの[データ記録]タブを使用します。

まず、データテーブルの行を定義します。統計コレクターには、シミュレーションの実行中にテーブルに行を追加する方法を決定する行作成モードが3つあります。

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

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

この行モードはラベルの一意の値を追跡するのにも理想的です。たとえば、アイテムのラベルにある各SKU番号や各製品タイプなどに行を作成できます。
行を列挙 [列挙された行]リストで指定された各オブジェクトの行を追加します。この行モードを選択すると、テーブルの行を構成するオブジェクトを[列挙された行]リストに入力できます。 この行モードは情報を収集するオブジェクトの数が固定されている場合に理想的です。たとえば、オブジェクトの合計スループットなどのオブジェクト統計を追跡する場合に理想的です。

データテーブルの行を設定するには:

  1. ]グループで、[行作成モード]メニューを開き、データテーブルに適した行モードを選択します。(異なる行モードのオプションについての説明は、上の表を参照してください)
  2. 行作成モードとして[一意の行の値]を選択した場合は、[行の値]メニューを使用して、新しい行を作成するために使用するラベルを選択する必要があります。[イベントごとに追加]を選択した場合、このステップは任意です。
  3. 行を列挙]を選択した場合は、[列挙された行]リストを使用して、テーブルの各行を構成するオブジェクトまたはグループを指定する必要があります。

シミュレーションの実行中にテーブルを表示することによって、データテーブルが行を正しく追加するかどうかをテストできます。シミュレーションが実行されている間に、いつ、どのように新しい行が作成されるのか観察できます。ただし、このテストは少なくとも1つの列をデータテーブルに追加するまで実行できないため、先に列を追加してください。

データテーブルの列の更新方法を決定する

データテーブルに行を追加する方法を設定したら、テーブルの列を設定する必要があります。列を設定する前に、データテーブルのロジックについて考えてみてください。次の質問に対する答えを考えてみましょう。

  • データテーブルには列がいくつありますか?
  • 列が記録するのはどんな情報ですか?
  • いつ、どのように列にデータが追加または更新されますか?

これらの質問に対する答えは、シミュレーションからデータを取得する目的によって異なります。データテーブルがどのように構成されているか大まかに理解したら、データテーブルの列の作成を始めることができます。

列について留意すべきことの1つは、明示的に何かを表示する列を作成しないと、データテーブルにその列が表示されないということです。たとえば、一意のアイテムごとに行を追加する場合、その値を表示する列を明示的に追加しないかぎり、データテーブルにはアイテムIDが表示されません。したがって、一般的なベストプラクティスとして、列を作成し、新しい行の作成を引き起こすオブジェクトの値またはラベル値が表示されるようにすると良いでしょう。

データテーブルに列を作成するには:

  1. ]グループで、[追加]ボタン をクリックして、メニューを開きます。
  2. 名前]ボックスに、列に付ける名前を入力します。これが表示名になることに注意してください。
  3. 更新]メニューをクリックし、いつテーブルが列のコンテンツを更新するか選択します。オプションは次のとおりです。
    • イベントに依存 - イベントが起動すると、列が更新されます。このオプションを選択した場合は、[イベント/列の関連付けを編集]ボタンを使用して、特定のイベントが起動したときに更新する列を決定します。
    • 行が追加されたとき - 行が最初に作成されたときに、列は一度だけ更新されます。
    • 常に - 列の更新は次のように行われます。
      • データテーブルを表示しているとき、画面がペイントされるたびに更新されます。
      • チャートがこの統計コレクターを使用しているときは、画面がペイントされるたびに更新されます。
      • この統計コレクターのテーブルでクエリを実行すると、クエリが実行される前に更新されます。
      • FlexScriptの式では、Tableコンストラクターを使用し、統計コレクターの名前で渡すか統計コレクターへの参照を渡すと、[常に]に設定された値が更新されます。
  4. 次に、[]ボックスを使用して、列に表示するデータを決定します。このボックスの横にあるメニューをクリックして、可能なオプションを確認します。次の表は、いくつかの一般的な値とメニューからの選択方法について説明します。
  5. 説明
    フローアイテムまたはトークンのID
    1. [イベントリスニング]タブのイベントパラメータのフローアイテムまたはトークンのラベルと一致していることを確認します(「イベントの詳細を編集する」を参照してください)。
    2. ]メニューの[ID]をポイントし、[イベントデータラベル値のID]を選択します。
    3. 統計コレクターで作成したすべてのイベントデータラベルを一覧表示するピックリストメニューがポップアップ表示されます。フローアイテムまたはトークンに割り当てたラベルの名前を選択します。
    4. また、アイテムまたはトークンIDを正しく表示するには、[値]ボックスの下の[保管タイプ]メニューを[未加工]に変更します。
    イベントが発生した時間 ]メニューで[時間]をポイントし、モデル使用時間を表示する[FlexSim時間]を選択します。必要に応じて他のオプションのいずれかを選択することもできます。
    イベントを引き起こした3Dオブジェクトまたはアクティビティ ]メニューの[ID]をポイントし、[イベントオブジェクトのID]を選択します。
  6. 保管タイプ]と[表示形式]は、[]ボックスで選択した内容に基づいて自動で更新されますが、正確であるかどうか確認することをお勧めします。
  7. データテーブルのすべての列を定義するまで、前のステップを繰り返します。
  8. 作成した列のいずれかが[イベントに依存]更新モード(ステップ3を参照)を使用している場合は、列リストの下にある[イベント/列の関連付けを編集]ボタンをクリックします。これにより、[イベント/列の関連付け]テーブルが開きます。
  9. 行には、統計コレクターが現在リッスンしているイベントが表示されます。列には、これまでにデータテーブルで定義した列が表示されます。特定のイベントが起動したときに更新するイベントと列について、対応するセルに[X]を入力します。イベントが更新しない列については、[X]を削除します。
  10. OK]ボタンを押して変更を保存し、統計コレクターを閉じます。

統計コレクターを設定したら、正しく設定されていることを検証します。これについては、次のセクションで説明します。

データテーブルを表示および検証する

データテーブルを設定したら、収集対象とする特定の情報をデータテーブルが収集して表示していることを検証することをお勧めします。これをテストする最善の方法は、シミュレーションの実行中または実行後にデータテーブルを表示することです。単純にテーブル内の未加工データを直接表示することもできます。

統計コレクターのデータテーブルを開くには:

  1. ツールボックスが開いた状態で、[統計コレクター]グループの下で、表示する特定の統計コレクターを探します。
  2. 統計コレクターを右クリックして、メニューを開きます。[テーブルを表示]を選択します。

その統計コレクターのデータテーブルがモデルの新しいウィンドウとして表示されます。まだシミュレーションモデルを実行していない場合、テーブルは空白になります。シミュレーションモデルをリセットして実行すると、リアルタイムで入力されるのを確認できます。

データテーブルをエクスポートする

統計コレクターのデータテーブルで収集された未加工データは、カンマ区切り値ファイル(.CSV)でエクスポートできます。必要に応じてExcelやTableauなどのサードパーティのデータ分析ソフトウェアプログラムにこのファイルをインポートできます。

統計コレクターテーブルからデータをエクスポートするには:

  1. 統計コレクターをエクスポートする前に、シミュレーションモデルを実行して、データテーブルに必要なデータが入力されていることを確認してください。
  2. ツールボックスが開いた状態で、[統計コレクター]グループの下で、エクスポートする特定の統計コレクターを探します。
  3. 統計コレクターを右クリックして、メニューを開きます。[CSVにエクスポート]を選択します。
  4. ファイルを保存するコンピュータのフォルダに移動します。適切な名前を付けて、ファイルを保存します。

これでファイルがコンピュータに保存されます。ファイルが適切なフォルダに表示されることを再確認します。

タイマーイベントを設定する

統計コレクターは、一定の間隔でデータを収集できます。タイムドイベントが起動すると、その時点でモデル内のさまざまなオブジェクトからデータを収集できます。イベントの詳細を編集して、タイマーイベントがモデルからデータをキャプチャする頻度を決定します。

このセクションでは、タイマーイベントのイベントの詳細を設定する方法について詳しく説明します。いくつかの異なるタイマーイベントのシナリオと、各シナリオのイベントの詳細を設定する方法について説明します。

定期的

定期的に情報を記録するタイマーイベントを発生させるには:

  1. シミュレーションモデルの実行開始時にイベントタイマーが開始されるように[初回]ボックスを0.00に設定します。
  2. イベント時間]テーブルに時間を追加しないでください。
  3. リピート]チェックボックスがオンになっていることを確認します。
  4. リピート時間]ボックスに、イベントタイマーが起動する頻度をシミュレーション時間単位で入力します。

上の画像の例では、タイマーイベントは10秒ごとに(シミュレーション時間単位で)起動します。

ウォームアップ期間の終了後、定期的に起動させる

データの収集を開始する前に、シミュレーションモデルを標準的な稼働率まで上げる必要があるため、ウォーミングアップすることをお勧めします。たとえば、1日24時間、週7日、一定の速度で稼働するビジネスシステムをシミュレーションする場合は、モデルが通常の稼働レベルに達する前に一定期間実行する必要があります。

  1. 初回]ボックスに、モデルが完全にウォーミングアップされる時間を(シミュレーションモデル単位で)設定します。
  2. イベント時間]テーブルに時間を追加しないでください。
  3. リピート]チェックボックスがオンになっていることを確認します。
  4. リピート時間]ボックスに、イベントタイマーが起動する頻度をシミュレーション時間単位で入力します。

上の画像の例では、モデルが丸24時間(86,400秒間)実行されるまでタイマーが待機します。その時間が過ぎると、タイマーイベントは10秒ごとに起動します。

不規則な間隔で繰り返す

次々と繰り返されるカスタムスケジュールでタイマーイベントを起動させるには、次のようにします。

  1. シミュレーションモデルの実行開始時にイベントタイマーが開始されるように[初回]ボックスを0.00に設定します。
  2. 間隔スケジュールを0以外の時間に開始するには、[イベントタイム]テーブルで、最初のセルの時間を変更して間隔スケジュールを開始する時間にします。
  3. 追加]ボタン をクリックして、[イベント時間]テーブルにセルを追加します。次のタイマーイベントが起動する間隔をシミュレーション時間単位で記述します。必要な間隔をすべて追加するまで、このステップを繰り返します。
  4. リピート]チェックボックスがオンになっていることを確認します。
  5. リピート時間]ボックスに、不規則なスケジュールを繰り返す頻度をシミュレーション時間単位で入力します。

上の画像の例では、次の時間にタイマーが起動します。

  • 時間0(モデルの開始時)
  • 時間2
  • 時間5
  • 時間9
  • その後、時間10にスケジュールが繰り返されるため、時間10に起動します
  • その後、時間12
  • 時間15
  • 時間19
  • 以下同様...

不規則な間隔で繰り返さない

特定の時間に記録し、繰り返さないようにタイマーイベントを設定するには、前のセクションのステップを使用してスケジュールを設定し、[リピート]チェックボックスをオフにします。たとえば前の画像では、タイマーは時間0、2、5、9で起動すると、その時点で起動を停止します。