周期性と時間変動パラメータの設定
繰り返し(周期性)とは?
実際の業務プロセスは常に同じ運用ではありません。カスタマーサービスは営業時間中に問い合わせが増え、工場はシフトや人員で動きが変わります。小売では季節ごとに需要のピーク時期があります。
周期性(周期性)は、特定のシミュレーションルールをいつ適用するかを設定できます。グローバルな値ではなく、期間ごとに異なるパラメータを細かく設定できます。
- 平日と週末で切り替え
- 朝シフトと夜シフト
- 繁忙期と閑散期
- 営業時間内・時間外など
これにより、シミュレーションがさまざまな時間帯や状況に合わせ現実的に動きます。
なぜ周期設定が重要か
カスタマー到着件数のシンプルな例を考えてみましょう。
周期設定なしの場合:
- 1時間あたり10件、24時間365日同じ
周期設定ありの場合:
- 平日9:00〜18:00は1時間あたり25件
- 平日18:00〜21:00は1時間あたり15件
- 週末は1時間あたり5件
- 夜間は1時間あたり2件
後者のようにリアルな需要パターンを再現すると、待ち行列・リソース利用・処理量に影響を反映できます。
利用可能な周期タイプ
ProcessMindは9種類の周期タイプをサポートし、それぞれのタイプでルールの適用タイミングを定義できます。
| タイプ | パラメータ | 説明 |
|---|---|---|
| Always | (なし) | 常に適用されるルール、変動なし |
| Default | (なし) | 他の時間ベースのルールが該当しない場合のフォールバック |
| Fixed Period | startDateTime, endDateTime | 1回だけの期間(繰り返しなし) |
| Each Day | startTime, endTime | 毎日同じ時間で適用 |
| Each Weekday | startTime, endTime | 月曜〜金曜のみ適用 |
| Each Weekend Day | startTime, endTime | 土曜・日曜のみ適用 |
| Each Week | startDay, startTime, endDay, endTime | 週ごとに複数日にまたがる繰り返し |
| Each Month | startDayOfMonth, startTime, endDayOfMonth, endTime | 月ごとの繰り返しパターン |
| Each Year | startMonth, startDayOfMonth, startTime, endMonth, endDayOfMonth, endTime | 年次・季節的なパターン |
周期タイプの詳細
Always
最もシンプルな選択肢で、常にルールが変動なく適用されます。
活用例: パラメータが時間で変動しない場合や、ベースラインのシミュレーション作成時に推奨です。
Default
他の時間ベースのルールが該当しない場合のフォールバックになります。
活用例: 特定の時間のみ例外を設定し、それ以外はデフォルト値を使いたい場合に便利です。
Defaultルールは必ず追加
複数の周期ルールを設定する際は、どの時間帯にも漏れがないよう必ずDefaultルールを含めてください。該当ルールがなくて想定外の動作になるのを防げます。
毎日
このルールは毎日の特定時間に適用されます。
パラメータ:
startTime:ルール開始時刻(例:09:00)endTime:ルール終了時刻(例:17:00)
例: 09:00~17:00の営業時間が週末も含めて毎日適用されます。
平日のみ
このルールは月曜から金曜までの特定時間に適用されます。
パラメータ:
startTime:開始時刻endTime:終了時刻
例: カスタマーサービスは平日8:00~18:00で稼働し、週末は別ルールとします。
週末のみ
このルールは土日限定の特定時間帯に適用されます。
パラメータ:
startTime:開始時刻endTime:終了時刻
例: 週末はサポート対応を10:00~16:00に短縮します。
毎週
このルールは週の中で複数日にわたる時間帯に適用できます。1日単位で区切れないパターンに便利です。
パラメータ:
startDay:開始曜日(Monday, Tuesdayなど)startTime:開始曜日の時刻endDay:終了曜日endTime:終了曜日の時刻
例: 水曜14:00から金曜12:00までが高負荷期間となります。
毎月
このルールは毎月の特定日に適用されます。
パラメータ:
startDayOfMonth:開始日(1~31)startTime:開始日の時刻endDayOfMonth:終了日endTime:終了日の時刻
例: 毎月25日8:00から最終日23:59まで月末処理の繁忙期となります。
毎年
このルールは毎年の特定期間に適用されます。
パラメータ:
startMonth:開始月startDayOfMonth:開始月の日付startTime:開始日の時刻endMonth:終了月endDayOfMonth:終了月の日付endTime:終了日の時刻
例: 11月15日0:00~12月31日23:59が年末商戦のピークです。
固定期間
このルールは特定の日付と時間範囲に適用されます(繰り返しではありません)。一度きりのイベントに使用します。
パラメータ:
startDateTime: 開始日時endDateTime: 終了日時
例: 2025年3月15日〜22日のプロダクトローンチ週、特別対応ルールを適用します。
複数ルールの組み合わせ
周期設定の本当の強みは、複数のルールを組み合わせて使うことです。異なる時間帯ごとにパラメータを設定でき、シミュレーション中に自動で適用されるルールが判定されます。
例:複数シフトの処理時間
シフトごとに処理時間が異なる製造プロセスの例です:
| ルール名 | 周期 | 処理時間分布 |
|---|---|---|
| Day Shift | 平日 08:00-16:00 | Normal(30 min, 5 min) |
| Evening Shift | 平日 16:00-00:00 | Normal(45 min, 10 min) |
| Weekend Crew | 週末 10:00-18:00 | Normal(60 min, 15 min) |
| Overnight/Default | デフォルト | Normal(90 min, 20 min) |
Day Shiftはスタッフが多く最速です。Evening Shiftは監督が減るためやや遅くなります。週末は最小人数体制で最も遅いです。デフォルトは夜間の時間帯をカバーします。
ルールの優先順位
複数のルールが一致する場合:
- ルールは設定に記載された順に評価されます
- 最初に一致したルールが適用されます(上のものが優先)
- デフォルトルールは他の条件が該当しない場合のみ適用されます
ポイント: より具体的なルールを一般的なルールより上に配置しましょう。平日と土日で異なる動作が必要な場合は「Each Weekday」を「Each Day」より上に配置してください。
周期設定を使う項目
周期設定は多くのシミュレーションパラメータに利用できます:
| パラメータ | 周期設定のユースケース |
|---|---|
| ケースの到着 (Case Arrivals) | 業務時間は到着件数が多く、夜間は少ない |
| 処理時間 (処理時間s) | フルスタッフ時は処理が早く、時間外は遅い |
| リソースキャパシティ (Resource Capacity) | ピーク時は人員増強、夜間は最少体制 |
| スキップ確率 (Skip Chances) | 週末や祝日で異なるルーティング |
| ゲートウェイ分岐確率 (Gateway Probabilities) | 時間帯による意思決定パターンの変化 |
総合例:カスタマーサポートセンター
複数パラメータにまたがる周期設定の活用例を、カスタマーサポートのシミュレーションで紹介します。
到着率の設定例
| 周期 | 到着率 |
|---|---|
| Each Weekday 09:00-18:00 | Poisson(1時間あたり50件) |
| Each Weekday 18:00, -22:00 | Poisson(1時間あたり20件) |
| Each Weekend Day 10:00-16:00 | Poisson(1時間あたり15件) |
| Default | Poisson(1時間あたり5件) |
ビジネス時間帯は件数が多く、夜間は中程度、週末・深夜は少なめという現実的なパターンを再現できます。
処理時間の設定
| 周期 | 分布 |
|---|---|
| 平日 09:00-17:00 | Triangular(10, 20, 45 min) |
| 週末 | Triangular(20, 40, 90 min) |
| デフォルト | Triangular(30, 60, 120 min) |
ピーク時間帯は最速、週末や時間外は遅くなります。
スタッフ体制の設定
| 周期 | 稼働エージェント数 |
|---|---|
| 平日 09:00-18:00 | 10名 |
| 平日 18:00, -22:00 | 4名 |
| 週末 10:00-16:00 | 3名 |
| デフォルト | 1名 |
営業時間中はフル体制、それ以外は必要最低限で対応します。
仕組みの例
火曜日10:00の場合:
- 到着は1時間あたり50件
- 処理は高速な三角分布を使用
- 10名のエージェントが稼働
火曜日20:00の場合:
- 到着は1時間あたり20件に減少
- 処理はデフォルト(遅い)分布を使用
- 4名のエージェントのみ稼働
土曜日14:00の場合:
- 到着は1時間あたり15件
- 処理は週末分布を使用
- 3名のエージェントが稼働
ベストプラクティス
1. まずDefaultから設定
最初にDefaultルールを必ず設定しましょう。その他ルールで対応できない時間帯もカバーできます。
2. ざっくり→詳細の順で設定
まず平日/週末のような大枠から始めて、必要に応じてシフトなど細かなルールを追加しましょう。
3. まずはシンプルに
最初は平日/週末などの大まかな区分けから始め、あとで時間帯や季節ごとの細かい条件も追加できます。
4. データでパターンを設計
可能なら履歴データを分析し、(到着件数・処理時間・曜日・時間帯別の人員など)実際の傾向をもとに設計しましょう。
5. 境界ケースのテスト
シフト切替(例:17:00)・深夜・月末など、端のタイミングでも正しくルールが適用されるか確かめてください。
- シフトが交代する17:00ちょうどに何が起きますか?
- 深夜の処理は正しく行われていますか?
- 日数が異なる月でも、月末のルールは適切に機能しますか?