統計分布の徹底ガイド(simulation対応)
処理時間や到着率などsimulationのバラつきを統計分布でモデリング。
ProcessMindは**discrete event simulation (DES)**エンジンでプロセスをモデル化します。この仕組みを理解することで、simulation設定や結果の解釈がより正確に行えます。
Discrete Event Simulationでは、システム状態は特定のイベントのみで変化します。クロックはイベント間でジャンプし、イベントの間は変化しません。これが業務プロセスに最適な理由:
連続simulation(物理など)と異なり、業務プロセスでは細かい瞬間を再現せず、event単位で変化します。例えばローン申請は”submitted”から”approved”へevent発生時に切り替わります。
simulationエンジンは、シンプルながら強力なループで処理します:
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 (2,000,000)
7. Output: Generate the complete event log simulationでは、以下の種類のイベントを生成・処理します:
| イベント種別 | 内容 |
|---|---|
| Case Arrival | 新しいcaseがStart Eventでプロセス開始 |
| Activity Start | caseがアクティビティを開始(リソース割当) |
| Activity Complete | caseがアクティビティを完了(リソース解放) |
| Gateway Evaluation | 分岐点で進行パス決定 |
| Case Complete | caseがEnd Eventに到達 |
ケースはBPMNモデルのStart Eventからsimulationに入ります。到着パターンはケース生成分布でコントロールされます。
標準では、ケースはポアソン分布で1時間に1件到着します。ビジネスプロセスでよく見られる不規則な間隔を再現します。
Distributions で解説している分布を使って、さまざまな到着パターンを設定できます。
caseがエレメントを完了すると、すぐにアウトゴーイングのシーケンスフローを進みます。1本のみなら自動で進みます。
Gatewayはcaseの分岐や結合を制御します:
| Gateway Type | 動作説明 |
|---|---|
| XOR (Exclusive) | 確率重みづけで1つだけランダム分岐。設定は自動で重み付け・正規化されます。 |
| AND (Parallel) | すべて同時分岐。ケースは並行するトークンに分割されます。 |
| OR (Inclusive) | 1つ以上選択されるランダム分岐。 |
| Event-Based | 利用可能なeventの中からランダム選択。 |
XOR gatewayではアウトゴーイングごとに確率(相対重み)を設定します:
caseがタスク(アクティビティ)に到達すると、エンジンは次の手順で処理します:
必要なリソースにキャパシティがあるかチェックします。
リソースがなければ、caseは待機キューへ。ProcessMindは**FIFO (First In, First Out)**で到着順に対応します。
リソースが空き次第、必要分をこのcaseに割り当てます。
エンジンは設定された処理時間分布から値を取得し、アクティビティの所要時間を決定します。
current_time + processing_timeで完了イベントがイベントキューに追加されます。
完了イベント時に、リソースは他のcase用にプールへ戻ります。
すべてのアクティビティに1秒の最小durationがあります。処理時間分布が0でも必ず1秒かかります。
アクティビティにはスキップ率(0~100%)を設定できます。スキップされると:
現実の業務で一部工程が省略される場面をシミュレートできます。
simulationは仮想クロックでevent間を区切り、時間をジャンプさせます。次のeventが10:35で現在10:30ならクロックは10:35にジャンプします。
すべての時間は内部で統一単位に変換されます。指定可能な単位:
simulation時間に応じて値を変更可能です。例:
設定方法は周期性 をご確認ください。
各リソースにはcapacity(同時に扱えるcase数)が設定されています。
リソース需要がキャパシティを超えた場合、caseは待機キューに入ります。ProcessMindは**FIFO (First In, First Out)**方式で到着順に処理します。
simulation実行中、各アクティビティの実行が出力イベントログに記録されます:
| 項目 | 説明 |
|---|---|
| ケースID | ケースごとのユニークID(連番で生成) |
| Activity | BPMNエレメントの名称 |
| Start Timestamp | アクティビティ開始時刻 |
| Complete Timestamp | アクティビティ終了時刻 |
| Resource | 実行したリソース名 |
| Attributes | その時点でのcase属性 |
このログは標準的なイベントログフォーマットに準拠し、ProcessMindのどのツールでも分析可能です。
| 制限 | 値 | 目的 |
|---|---|---|
| Max Events | 2,000,000 | simulationの暴走防止 |
| Min Duration | 1秒 | タイムスタンプの一意性を保証 |
まず小さく始めましょう
新規simulationを設定する場合は、数日や数週間など短期間から設定を確認してください。挙動が正しいことが確認できたら、期間を拡大しましょう。
当サイトでは、閲覧体験の向上、コンテンツのパーソナライズ、トラフィックの分析のためにCookieを使用しています。「すべて許可」をクリックすると、Cookieの使用に同意いただいたことになります。