シミュレーションエンジンの仕組み
シミュレーションエンジンの仕組みを理解する
ProcessMindでは、**離散イベントシミュレーション(DES)**エンジンを使ってプロセスをモデル化します。エンジンの仕組みを理解すると、シミュレーションをより適切に設定し、結果を正確に読み取れます。無料トライアルで、実際のプロセスを使ってエンジンの動作を確認できます。
離散イベントシミュレーションとは
離散イベントシミュレーションでは、システムの状態は特定のイベントが起きたときだけ変化します。時計はイベントから次のイベントへ進み、その間は何も起きません。この方法が業務プロセスに適している理由は次のとおりです。
- アクティビティには明確な開始時刻と終了時刻があります
- リソースは特定の時点で割り当てられ、解放されます
- ケースは定められた時点で到着し、完了します
離散イベントを使う理由
物理学や流体力学で使われる連続シミュレーションとは異なり、業務プロセスを逐一モデル化する必要はありません。ローン申請が「提出済み」から「承認済み」へ少しずつ移行するのではなく、特定のイベントをきっかけに状態が変わります。
イベント処理の基本ループ
シミュレーションエンジンは、次のシンプルなループで処理を進めます。
1. Initialize: Set up starting conditions
2. Get Next Event: Find the earliest scheduled event from the priority queue
3. Advance Time: Move simulation clock to that event's time
4. Process Event: Handle the event (start activity, complete activity, etc.)
5. Schedule New Events: Based on what happened, add new events
6. Repeat: Continue until end time or max events reached (5,000,000)
7. Output: Generate the complete event log イベントの種類
シミュレーションでは、次のような種類のイベントが生成され、処理されます。
| イベントの種類 | 発生する処理 |
|---|---|
| ケースの到着 | 新しいケースが開始イベントからプロセスに入ります |
| アクティビティの開始 | ケースがアクティビティの実行を開始します(リソースを割り当て) |
| アクティビティの完了 | ケースがアクティビティを完了します(リソースを解放) |
| ゲートウェイの評価 | 判断地点で、進む経路が決まります |
| ケースの完了 | ケースが終了イベントに到達します |
ケースの生成と到着
ケースは、BPMNモデルの開始イベントを通じてシミュレーションに入ります。到着パターンはケース生成の分布によって決まります。
デフォルトの到着パターン
デフォルトでは、ケースはポアソン分布に従って到着し、到着率は1時間あたり1件です。多くの業務プロセスで見られる、現実的でランダムな到着間隔を表現できます。
到着パターンのカスタマイズ
分布の文書で説明している分布を使って、さまざまな到着パターンを設定できます。
プロセス内のケースの流れ
シーケンスフロー
ケースが要素を完了すると、直ちに出力側のシーケンスフローへ進みます。出力経路が1つだけの場合、ケースは自動的にその経路を進みます。
ゲートウェイの動作
ゲートウェイは、ケースの分岐や合流を制御します。
| ゲートウェイの種類 | 動作 |
|---|---|
| XOR(排他的) | 確率に基づくランダムな選択で、出力経路を1つだけ選びます。確率は相対的な重みとして扱われ、自動的に正規化されます。 |
| AND(並列) | すべての出力経路を同時に進みます。ケースは並列トークンに分割されます。 |
| OR(包含的) | 経路をランダムに選択します。少なくとも1つの経路が必ず選ばれます。 |
| イベントベース | 利用可能なイベントからランダムに選択します。 |
確率の設定
XORゲートウェイでは、各出力フローに確率を設定します。これらは相対的な重みとして扱われます。
- フローに70、20、10を設定すると、70%、20%、10%に正規化されます
- フローに7、2、1を設定しても、同じ結果になります
- 未設定のフローには、残りの割合が割り当てられます
アクティビティの実行
ケースがタスク(アクティビティ)に到達すると、エンジンは次の順序で処理します。
1. リソースの空き状況を確認
必要なリソースに空きキャパシティがあるか確認します。
2. 必要に応じてキューに追加
リソースを利用できない場合、ケースは待機キューに入ります。ProcessMindでは、デフォルトで**FIFO(先入れ先出し)**の順序を使い、到着した順にケースを処理します。
3. リソースを割り当て
リソースが利用可能になると、必要な数のリソースをそのケース用に確保します。
4. 処理時間をサンプリング
エンジンは、設定された処理時間の分布から値を取得し、アクティビティにかかる時間を決定します。
5. 完了イベントをスケジュール
時刻current_time + processing_timeに完了イベントをイベントキューへ追加します。
6. リソースを解放
完了イベントが発生すると、ほかのケースが使えるようにリソースをプールへ戻します。
最小処理時間
一意のタイムスタンプを保ち、現実に近い動作を再現するため、すべてのアクティビティには1秒以上の時間がかかります。処理時間の分布が0秒でも、アクティビティの所要時間は最低1秒です。
スキップ確率
アクティビティには、スキップ確率(0~100%)を設定できます。アクティビティがスキップされると、次のようになります。
- ケースは直ちに次の要素へ進みます
- リソースは消費されません
- 時間は経過しません(最小の1秒を除く)
- アクティビティは最小の所要時間でログに記録されます
これにより、実際の業務でステップがときどき省略される状況をモデル化できます。
時間の処理
シミュレーションの時計
シミュレーションでは仮想の時計を使い、イベントから次のイベントへ段階的に進めます。次のイベントが午前10時35分で、現在時刻が午前10時30分の場合、時計は午前10時35分まで進みます。
時間単位
内部では、すべての時間を統一した単位に変換します。所要時間は次の単位で指定できます。
- 秒
- 分
- 時間
- 日
到着率は別に設定し、1時間、1日、1週間、1か月、または1年あたりで指定します。
周期性と時間枠
シミュレーションの時刻に応じて、パラメーターを変化させることができます。たとえば、次のように設定できます。
- 平日と週末で到着率を変える
- 午前と午後のシフトで処理時間を変える
- 繁忙時間帯にリソースのキャパシティを変える
設定方法については、周期の文書をご覧ください。
リソース管理
リソースプール
各リソースには、同時に処理できるケース数を示すキャパシティが設定されています。
キュー管理
需要がキャパシティを超えると、ケースはキューで待機します。ProcessMindでは、デフォルトで**FIFO(先入れ先出し)**の順序を使い、到着した順にケースを処理します。
イベントログの生成
シミュレーションの実行中、各アクティビティの実行内容が出力イベントログに記録されます。
| フィールド | 説明 |
|---|---|
| ケースID | 各ケースを識別する一意のID(連番で生成) |
| アクティビティ | BPMN要素の名前 |
| 開始タイムスタンプ | アクティビティの開始時刻 |
| 完了タイムスタンプ | アクティビティの終了時刻 |
| リソース | アクティビティを実行したリソース |
| 属性 | その時点でのケース属性 |
このログは標準的なイベントログ形式に準拠しており、ProcessMindのすべてのツールで分析できます。
シミュレーションの制限
| 制限 | 値 | 目的 |
|---|---|---|
| イベントの最大数 | 5,000,000 | シミュレーションの無制限な実行を防止 |
| 最小時間 | 1秒 | 一意のタイムスタンプを確保 |
まずは短期間で実行し、その後に期間を延長
新しいシミュレーションを設定するときは、まず数日から数週間の短い期間で実行し、設定を確認してください。モデルが正しく動作することを確認できたら、期間を延ばします。
次のステップ
プロセスをより良く設計し、つながりのあるアーキテクチャを構築して、管理を続けましょう。
クレジットカード不要、待ち時間なしですぐにご利用いただけます。組織の業務の進め方を、明確につながるプロセス設計として可視化します。
プロセスアーキテクチャを構築し、オーナーシップと統制を定め、あらゆる階層で役割と責任を明確にします。
無料トライアルを開始して、プロセスのガバナンス、管理、継続的な改善を支える信頼できる基盤を築きましょう。