周期性と時間変動パラメーター
周期性とは
実際のプロセスは、常に同じように動くわけではありません。カスタマーサービスでは営業時間中に電話が増えます。製造現場では、スタッフ構成の異なるシフトで稼働します。小売業では季節によって繁忙期が生じます。
周期性を使うと、特定のシミュレーションルールをいつ適用するかを定義できます。1つのグローバル値を使う代わりに、時間帯ごとに異なるパラメーターを指定できます:
- 平日と週末
- 朝のシフトと夜のシフト
- 繁忙期と閑散期
- 営業時間と営業時間外
これにより、異なる時間の状況に応じて、シミュレーションを現実に近い形で動かせます。
周期性が重要な理由
顧客の到着をモデル化する簡単な例を考えてみます。
周期性なし:
- 1時間あたり10人の顧客、24時間365日
周期性あり:
- 平日9:00~18:00は1時間あたり25人
- 平日18:00~21:00は1時間あたり15人
- 週末は1時間あたり5人
- 夜間は1時間あたり2人
2つ目のモデルでは、待ち行列、リソースの利用、スループットに影響する現実的な需要パターンを表現できます。
利用可能な周期性タイプ
ProcessMindでは9種類の周期性タイプを利用できます。それぞれ、ルールを適用する時間を定義します:
| 種類 | パラメーター | 説明 |
|---|---|---|
| 常時 | (なし) | 常に適用され、変動なし |
| デフォルト | (なし) | 他の時間ベースのルールに一致しない場合のフォールバックルール |
| 固定期間 | startDateTime, endDateTime | 1回限りの期間(繰り返しなし) |
| 毎日 | startTime, endTime | 毎日同じ時間帯 |
| 平日ごと | startTime, endTime | 月曜から金曜のみ |
| 週末の各日 | startTime, endTime | 土曜と日曜のみ |
| 毎週 | startDay, startTime, endDay, endTime | 毎週繰り返し、複数日にまたがる場合あり |
| 毎月 | startDayOfMonth, startTime, endDayOfMonth, endTime | 毎月繰り返すパターン |
| 毎年 | startMonth, startDayOfMonth, startTime, endMonth, endDayOfMonth, endTime | 年次・季節性のパターン |
周期性タイプの詳細
常時
最も単純なオプションです。変動なしで、常にルールを適用します。
**使用する場面:**パラメーターが時間によって変化しない場合や、単純なベースラインシミュレーションを作成する場合です。
デフォルト
現在のシミュレーション時刻に一致する他の時間ベースのルールがない場合に適用されます。
**使用する場面:**特定の時間帯に例外を定義し、それ以外ではデフォルト値を使う場合です。
デフォルトを必ず含める
複数の周期性ルールを使う場合は、時間ベースのルールに空白が生じないよう、必ずデフォルトルールを含めてください。これにより、特定のルールに一致しない場合の予期しない動作を防げます。
毎日
ルールは毎日、特定の時間帯に適用されます。
パラメーター:
startTime:ルールの開始時刻(例:09:00)endTime:ルールの終了時刻(例:17:00)
**例:**一般的な営業時間09:00~17:00を、週末を含む毎日に適用します。
平日ごと
ルールは月曜から金曜のみ、特定の時間帯に適用されます。
パラメーター:
startTime:ルールの開始時刻endTime:ルールの終了時刻
**例:**カスタマーサービスは平日の08:00~18:00に稼働し、週末には異なるルールを適用します。
週末の各日
ルールは土曜と日曜のみ、特定の時間帯に適用されます。
パラメーター:
startTime:ルールの開始時刻endTime:ルールの終了時刻
**例:**週末のサポート時間を10:00~16:00に短縮します。
毎週
ルールは、毎週、複数日にまたがる時間範囲に適用されます。1日単位では表しにくいパターンに適しています。
パラメーター:
startDay:ルールの開始曜日(月曜、火曜など)startTime:開始日の時刻endDay:ルールの終了曜日endTime:終了日の時刻
**例:**水曜14:00から金曜12:00までを繁忙期間にします。
毎月
ルールは毎月、特定の日に適用されます。
パラメーター:
startDayOfMonth:ルールの開始日(1~31日)startTime:開始日の時刻endDayOfMonth:ルールの終了日endTime:終了日の時刻
**例:**毎月25日08:00から月末最終日の23:59までを、月末処理の繁忙期間にします。
毎年
ルールは毎年、特定の日付に適用されます。
パラメーター:
startMonth:ルールの開始月startDayOfMonth:開始月の日startTime:開始日の時刻endMonth:ルールの終了月endDayOfMonth:終了月の日endTime:終了日の時刻
**例:**11月15日00:00から12月31日23:59までを、年末商戦の繁忙期間にします。
固定期間
ルールは特定の日付と時刻の範囲に適用されます(繰り返しなし)。1回限りのイベントに使用します。
パラメーター:
startDateTime:正確な開始日時endDateTime:正確な終了日時
**例:**2025年3月15日~22日の製品発売週に、特別な処理ルールを適用します。
複数ルールの組み合わせ
周期性の効果は、複数のルールを組み合わせることで発揮されます。時間の状況ごとに異なるパラメーターを定義すると、シミュレーションがその時点で適用するルールを判定します。
例:複数シフトの処理時間
シフトによって処理時間が異なる製造プロセスを考えてみます:
| ルール名 | 周期性 | 処理時間の分布 |
|---|---|---|
| 日勤 | 平日ごと、08:00~16:00 | Normal(30 min, 5 min) |
| 夜勤 | 平日ごと、16:00~00:00 | Normal(45 min, 10 min) |
| 週末担当 | 週末の各日、10:00~18:00 | Normal(60 min, 15 min) |
| 夜間・デフォルト | デフォルト | Normal(90 min, 20 min) |
日勤は最も速く処理されます(フルスタッフで、作業員も勤務開始直後です)。夜勤は監督者が少ないため、処理が遅くなります。週末は最小限のスタッフ体制のため、最も遅くなります。デフォルトルールで夜間の時間帯を処理します。
ルールの優先順位
複数のルールが一致する可能性がある場合:
- ルールは、構成で定義されている順序に評価されます
- 最初に一致したルールが使用されます(上にあるルールが優先されます)
- デフォルトルールは、他のルールが適用されない場合にのみ一致します
**ヒント:**具体的なルールを一般的なルールより上に配置してください。平日と週末で動作を変える場合は、「平日ごと」を「毎日」より上に配置してください。
周期性を使用する場面
周期性は、さまざまなシミュレーションパラメーターに適用できます:
| パラメーター | 周期性の使用例 |
|---|---|
| ケースの到着 | 営業時間中は到着レートを高くし、夜間は低くします |
| 処理時間 | フルスタッフ時は処理を速くし、スタッフが少ない時間帯は遅くします |
| リソースキャパシティ | 繁忙時間帯はスタッフを増やし、夜間は最小限の体制にします |
| スキップ確率 | 週末や休日に異なるルーティングルールを適用します |
| Gatewayの確率 | 時間帯によって異なる判断パターンを設定します |
実例:カスタマーサポートセンター
カスタマーサポートのシミュレーションで、複数のパラメーターに周期性を設定する現実的な例を紹介します:
到着レートの設定
| 周期性 | 到着率 |
|---|---|
| 平日ごと09:00~18:00 | ポアソン(1時間あたり50件) |
| 平日ごと18:00~22:00 | ポアソン(1時間あたり20件) |
| 週末の各日10:00~16:00 | ポアソン(1時間あたり15件) |
| デフォルト | ポアソン(1時間あたり5件) |
営業時間中は到着が多く、夜間は中程度、週末と深夜は少なくなります。
処理時間の設定
| 周期性 | 分布 |
|---|---|
| 平日ごと09:00~17:00 | 三角分布(10、20、45分) |
| 週末の各日 | 三角分布(20、40、90分) |
| デフォルト | 三角分布(30、60、120分) |
スタッフが多い時間帯は最も速く、週末と営業時間外は遅くなります。
スタッフキャパシティの設定
| 周期性 | 利用可能な担当者 |
|---|---|
| 平日ごと09:00~18:00 | 10人 |
| 平日ごと18:00~22:00 | 4人 |
| 週末の各日10:00~16:00 | 3人 |
| デフォルト | 1人 |
営業時間中はフルスタッフ、それ以外は少人数の体制になります。
組み合わせた動作
火曜日の午前10時の場合:
- 1時間あたり50件の到着レートを使用します
- 高速の三角分布で処理します
- 10人の担当者を利用できます
火曜日の午後8時の場合:
- 到着レートは1時間あたり20件に下がります
- デフォルトの遅い分布で処理します
- 利用できる担当者は4人だけです
土曜日の午後2時の場合:
- 到着レートは1時間あたり15件です
- 週末用の分布で処理します
- 3人の担当者を利用できます
ベストプラクティス
1. デフォルトから始める
まず、デフォルトルールを必ず定義してください。これにより、他のルールで明示的に処理していない時間帯もカバーできます。
2. 一般的な設定から具体的な設定へ進める
まず平日と週末などの大まかなパターンを設定し、必要に応じて個々のシフト時間など、より具体的なルールを追加します。
3. 最初はシンプルにする
まずは平日と週末の区別から始め、時間帯や季節の詳細は後から追加します。必要に応じて、いつでも複雑さを加えられます。
4. データに基づいてパターンを設定する
可能であれば、履歴データを分析して実際のパターンを把握してください。時間帯や曜日ごとの到着レート、処理時間、スタッフ数を確認します。
5. エッジケースをテストする
ルールが切り替え時刻を正しく処理できることを確認します:
- シフトが切り替わるちょうど17:00にはどうなりますか?
- 深夜0時は正しく処理されますか?
- 月末ルールは、日数の異なる月でも機能しますか?
6. ルールを文書化する
複雑な周期性の設定は、後から理解しにくくなることがあります。各ルールが必要な理由と、どの業務パターンを表しているかを文書化してください。