高度なデータ収集の概要
高度なデータ収集方法を使用する理由
ほとんどのシミュレーションプロジェクトに必要なのは、標準的なデータ収集方法だけです(標準的な方法の概要については、「データ収集に関する主要な概念」を参照してください)。ただし、シミュレーションプロジェクトによっては、より高度なデータ収集方法が必要になる場合があります。高度な方法を使うと便利なプロジェクトの典型的な状況は次のとおりです。
- プロジェクトにカスタム統計が必要 - FlexSimには、多くのプロジェクトのニーズに合ったさまざまな標準統計が用意されていますが、シミュレーションプロジェクトで求められるすべてのデータ収集ニーズに必ずしも対応できるわけではありません。統計コレクターツールと計算済みテーブルツールを使用すれば、シミュレーションプロジェクトに固有のほとんどのカスタムデータを収集できます。
- さまざまなモデルの設定を試したい - 1つまたは複数の変数を変更してシミュレーションモデルを複数回実行し、これらの変更が主要なパフォーマンス指標にどのように影響するかを確認できます。実験ツールとオプティマイザーツールでこれらの実験を実施し、この種のデータをキャプチャできます。これら2つのツールの詳細については、「実験についての主要な概念」を参照してください。
高度なデータ収集方法
次の画像は、カスタム統計のデータ収集プロセスにおける主要フェーズの概要を示しています。
次のセクションでは、プロセスの各フェーズについて説明し、詳細については他の関連トピックへのリンクを示します。
イベントを追加
このフェーズでは、統計コレクターを作成し、データを収集するオブジェクトとイベントを決定します。その後、統計コレクターはシミュレーションの実行中にこれらのイベントをリッスンし、これらのイベントに関するデータを記録します。
たとえば、アイテムの滞在時間、つまりアイテムが組立ラインを流れるのに要する時間を調べるとします。まず、FlexSimで組立ラインのシミュレーションモデルを構築します。
次に、アイテムの滞在時間に関わるモデルのイベントをリッスンする統計コレクターを作成します。上の画像に示すモデルでは、パーツストレージキューのOnEntryイベントをリッスンするように統計コレクターを設定できます。このイベントは、アイテムがキューに入るたびに起動します。仕上げステーションプロセッサのOnExitイベントをリッスンするよう設定することもできます。このイベントは、アイテムがプロセッサからシンクに移動するたびに起動します。これらの2つのイベントをリッスンすることで、各フローアイテムがシミュレーションを通過する際に各イベントが発生する時間を記録できます。
この処理の詳細については、「統計コレクターを使用する」を参照してください。
データテーブルを設定する
モデルが実行されている間、統計コレクターはリッスンしているオブジェクトやイベントからすべてのデータをキャプチャし、この未加工データをすべてデータテーブルと呼ばれるテーブルに格納します。そのため、データテーブルをフォーマットして、シミュレーション実行中にテーブルに行を追加する方法と、各列にセルのコンテンツを入力する方法を決定する必要があります。
前のセクションで使用した例に戻ると、パーツストレージキューに入る個別のフローアイテムごとに行が作成されるように、コレクターのデータテーブルを設定します。データテーブルの1つの列に、アイテムがキューに入る時間が記録されます。その後、アイテムが仕上げステーションプロセッサから出たときに、データテーブルの別の列に、アイテムが出た時間を記録できます。
モデルを実行したとき、データテーブルで生成された未加工データは次の画像のようになります。
この処理の詳細については、「統計コレクターを使用する」を参照してください。
データを変換する
統計コレクターのデータテーブルで生成された未加工データを取り出し、何らかの方法でデータを変換、フィルタリング、結合して新しいデータを作成することもできます。このデータを変換するには、計算済みテーブルを作成します。詳細については、「計算済みテーブルを使用する」を参照してください。
前のセクションで使用した例に戻ると、アイテムが最初のキューに入って最終プロセッサを出た時間についての未加工データを収集したら、計算済みテーブルを使用して2つの値で引き算を行い、各アイテムの合計滞在時間を取得できます。
シミュレーションモデルを実行する
シミュレーションが実行されている間、統計コレクターは未加工データを収集し、計算済みテーブルはこのデータを指定されたとおりに変換します。詳細については、「シミュレーションを実行する」を参照してください。
データを分析する
データを分析するには、次のようにします。
- ダッシュボードのグラフにデータを表示する(詳細については、「ダッシュボードとチャートについての主要な概念」を参照してください)
- 実験または最適化を実施して、理想的なモデル設定を決定する(詳細については、「実験についての主要な概念」を参照してください)
- サードパーティ製ソフトウェアを使用して分析できるように、これらのツールのいずれかからデータをエクスポートする
イベントのタイプ
このセクションを読む前に、「イベントについての主要な概念」のトピックで説明されている概念について理解しておいてください。
統計コレクターは、シミュレーションモデルの幅広いイベントをリッスンできます。次のセクションでは、リッスンすることができるイベントの一般的なカテゴリについて説明します。
3Dオブジェクトイベントと処理フローイベント
標準イベントは、シミュレーション実行中に3Dオブジェクトがフローアイテムと相互作用している間に発生するイベントです。処理フローアクティビティがトークンと相互作用するときに発生するイベントを指すこともあります。標準イベントは通常、イベントが発生した直後に起動するトリガーに関連付けられます。たとえば、プロセッサがフローアイテムの処理を終了すると、OnProcessFinishトリガーが起動します。トークンが処理フローアクティビティに入ると、アクティビティのOnEntryトリガーが起動します。
統計コレクターは、特定のイベントが発生するたびに、3Dオブジェクトまたは処理フローアクティビティから情報を収集できます。イベントが発生すると、その特定のイベントに関連付けられたあらゆるデータが収集されます。たとえば、次のデータを収集できます。
- イベントを発生させたアイテムまたはトークンのID
- イベントが発生した時間
- イベントが発生したときのオブジェクトの状態
- イベントが発生した瞬間のアイテムに関連付けられたラベルの値など
イベントが発生した時点で収集する情報を統計コレクターに明示的に指示する必要があることに注意してください。
グループイベント
個々のオブジェクトやアクティビティだけでなく、3Dオブジェクトや処理フローアクティビティのグループをリッスンすることもできます。グループのメンバーにイベントが発生すると、統計コレクターはそれを記録できます。たとえば、ワークステーションと呼ばれるグループに複数のプロセッサを配置し、グループ内のいずれかのプロセッサでOnProcessFinishトリガーが起動するたびにリッスンできます。
オブジェクトやアクティビティのグループをリッスンすることは、複雑化が進むなかでモデルを拡張するのに適した方法です。統計コレクターを一度設定するだけで、グループ内の全オブジェクトのイベントをリッスンできます。個々のオブジェクトがシミュレーションモデルに追加されるたびにそれらのオブジェクトを追加する必要はありません。詳細については、「グループ」を参照してください。
変更イベントと追跡変数
変更イベントは一般的に、3Dオブジェクトまたはアクティビティで発生する統計的変化をリッスンするイベントです。その統計的変化が発生すると、統計コレクターは関連データを記録します。たとえば、統計コレクターは3Dモデル内のキューのコンテンツを監視します。コンテンツが特定のしきい値を上回るか下回ると、コレクターはそれが起こった時間を記録します。減少して再びしきい値を下回ったときにも記録できます。
状態の変化をリッスンすることもできます。たとえば、オペレーターがアイドル状態から稼働状態に変わるたびに追跡できます。統計コレクターでは、統計イベントをデータテーブルに記録させる条件である、イベントの変更ルールを定義できます。
統計コレクターは、カスタム統計変化を追跡するために作成した追跡変数をリッスンすることもできます。このツールの詳細については、「追跡変数」を参照してください。
タイマーイベント
タイマーイベントと呼ばれる一定の間隔でデータを収集するように統計コレクターを設定できます。いずれかのタイマーイベントが発生すると、統計コレクターは、その瞬間に存在するシミュレーションモデルに関するデータを記録します。標準的なオブジェクトベースのイベントと同様に、収集する情報を統計コレクターに明示的に指示する必要があります。
統計コレクターでFlexScriptを使用する
統計コレクターにイベントを追加すると、シミュレーション実行中にシミュレーションモデルのそのイベントをリッスンします。そのイベントが発生するたびに、統計コレクターはイベントデータオブジェクトを作成します。このオブジェクトは、シミュレーション実行中の短時間にのみ存在します。イベントが発生すると、必要な情報(ラベルやイベントパラメータのデータなど)を収集します。その後イベントデータオブジェクトは、収集した情報をデータテーブルに入力します。イベントデータオブジェクトは、データテーブルで指定したすべての行と列の更新が終了すると破棄されます。
FlexScriptを使用してこのオブジェクトを参照する必要がある場合は、変数data
を使用します。たとえば、統計コレクターの設定時、ラベルをイベントパラメータに一致させているときにフローアイテムにMyItemという名前を割り当てるとします。3DモデルのこのフローアイテムにProductTypeというラベルが付いているとします。フローアイテムに付いているProductTypeラベルの値を取得するには、次の構文を使用します。data.MyItem.ProductType
統計コレクターがラベルを検出できない場合は、エラーメッセージが表示されます。この問題を回避するために、?
を構文の末尾に付けることができます。この疑問符は、ラベルが存在しない場合は空の値を返すようにシステムに指示するものです。構文は次のようになります。data.MyItem.ProductType?
FlexScriptを使用して特定のイベントに関連付けられたイベントノードから情報を取得するには、構文data.eventNode
を使用します。