グローバル最適化を使用した計画
学習の目的
この単元を完了すると、次のことができるようになります。
- スケジュールのグローバル最適化を実行する。
- スケジュールを夜間に最適化するジョブを設定する。
- 最適化のベストプラクティスを説明する。
グローバル最適化の効果
Maria は組織の最適化を設定しました。これで、テストをして最適化の効果を確認する準備ができました。まず、ガントチャートの上部を見て、最適化前のスケジュールの効率を確認します。
現在、Ursa Major は自動化されたスケジュールを使用しています。スケジュールされた時間は 70 時間、平均移動時間 32 分、稼働率 78% となっています。派遣担当者が各予定を手動でスケジュールしていた頃と比べると、すでに大きく改善されています。
スケジュールを最適化する
それでも、この数値にはまだ改善の余地があると Maria は考えます。そこで、彼女はスケジュールを次のように最適化します。
- サービス予定のリストのドロップダウンから [最適化] を選択します。
- 最適化オプションを選択します。Maria は次の値を選択します。
- サービステリトリー: Los Angeles
- 最適化する日付: 2025 年 1 月 6 日から 2025 年 1 月 7 日 (Maria はタイムトラベル組織を使用しています)
- 含めるサービス予定: すべて
- スケジュールポリシー: 顧客優先
- 検索条件: なし
- [最適化] をクリックします。
最適化の実行には時間がかかります。開始されたという通知を受け取ったら、ガントチャートで進行状況を確認できます。
最適化が完了し、Maria はガントチャートを確認します。
Ursa Major のスケジュールされた時間は 73 時間、平均移動時間 15 分、稼働率 84% となりました。これは非常に大きな改善です。Maria のチームは、より多くのお客様により早く太陽光発電を提供することができます。
最適化を毎晩実行する
Maria はスケジュールを毎晩最適化することにしました。そうすれば、チームが翌朝出勤したときに、最良のスケジュールで仕事を進めることができます。
Maria は毎日退社前に手動でスケジュールを最適化することもできますが、可能なものはすべて自動化したいと考えています。そうしておけば、彼女が介入しなくても業務は遂行されます。
そこで彼女は定期的な最適化ジョブを作成します。
- アプリケーションランチャー で [Field Service Admin] をクリックします。
- [Field Service 設定] をクリックします。
- [最適化] をクリックして [スケジュール済みジョブ] をクリックします。
- [最適化] ペインで [New Job (新しいジョブ)] をクリックします。
- スケジュール済みジョブの名前を入力します。Maria は
Nightly Schedule Optimization
と入力します。 - [保存] をクリックします。
新しいジョブを設定します。
- 新しい最適化ジョブを開きます。Maria は [Nightly Schedule Optimization] の横をクリックしします。
- ジョブのスコアを定義します。Maria は次のように定義します。
- Effective Territories (有効なテリトリー): San Francisco と Los Angeles
- Optimize in Stages (フェーズ単位の最適化): Maria は切り替えて、テリトリーセットごとに最適化していきます。
- Territories per stage (フェーズあたりのテリトリー): 1
- Time horizon in days (対象期間 (日数)): 2
- Filter by criteria (検索条件): None (なし)
- スケジュールポリシー: 顧客優先
- Email recipient (メール受信者):
maria@ursamajor.com
- Frequency (頻度): Recurring (繰り返し)
- すべての月と曜日を選択
- Hour (時間): 1 (午前)
- [保存] をクリックします。
- 最適化ジョブを今すぐ実行するには、最適化ジョブを開いて [Run Now (今すぐ実行)] をクリックします。
Maria は Sandbox で最適化ジョブを実行してテストします。ジョブは 2 時間後にタイムアウトしてしまいました。彼女は処理時間を短縮することにします。
- アプリケーションランチャー で [Field Service Admin] をクリックします。
- [Field Service 設定] をクリックします。
- [最適化]、[ロジック] の順にクリックします。
- [Global Optimization (グローバル最適化)] で、各サービス予定に使用する実行時間を選択します。Maria は [Medium (中)] を選択します。
- 最適化中に変更しないサービス予定をオンにします。Maria は [In Progress (処理中)]、[Cannot Complete (完了できません)]、[Completed (完了)] をオンにします。すでに処理中、完了済み、または完了できないジョブのスケジュールを移動しても意味がありません。したがって、この 3 つのいずれかの状況にある予定は固定されて、最適化中には移動されません。同じように、派遣作業員またはエージェントによって固定済みの予定も、最適化の対象にはなりません。
- [保存] をクリックします。
グローバル最適化プロセスによって処理時間が大幅に短縮され、2 時間足らずで完了しました。彼女は最適化されたスケジュールに満足し、Ursa Major のスケジュールがますます効率化されたのを見て感激しています。
最適化を最適化する
最良のスケジュールを作成する前に多数の可能性が考慮される最適化は、リソースを大量に消費するプロセスです。Maria のように、グローバル最適化ジョブは夜間に実行するようスケジュールすることをお勧めします。ただし、スケジュールに問題が生じれば、いつでも全日最適化を使用して修正することができます。次の単元で取り上げますが、あらゆる状況に対処する最適化があります。
Maria はグローバル最適化を使用することを楽しみにしていますが、最適化プロセス自体が最適化されていることを確認したいと考えています。そこで次のような確認事項のリストを作成しました。
- 予定の到着期間の開始から終了までの期間と、許容最早開始日から期日までの期間を最小限に抑える。
- 対象期間を制限する。グローバル最適化では指定する期間のスケジュール全体が最適化されます。期間を短く設定すると、最適化の対象が減ることを意味し、スケジュールの変更も少なくなります。ほとんどのスケジュールは頻繁に変更されるため、通常は 1 ~ 7 日前に最適化することをお勧めします。
- ビジネスに対応するテリトリーを設定して、予定を地理的に制限する。そうすれば、たとえばロサンゼルスの予定の最適化計算には、ロサンゼルスで仕事をする派遣作業員のみが含まれます。必要に応じて、ロサンゼルス内の小さなテリトリー (ビバリーヒルズやバーバンクなど) を指定することもできます。
- 作業ルールを使用して各予定に対応可能な候補者プールを絞り込む。
- 「テリトリーを照合」作業ルールを使用して、サービス予定を適切なテリトリーの作業員に割り当てる。
- 「自宅からの最長移動時間」作業ルールタイプを使用して、作業員のホームベースから予定までの最大距離または最大移動時間を設定する。
- 「拡張照合」作業ルールを使用して、カスタム条件を使用してサービス予定をスケジュールする。たとえば、サービス予定を特定の郵便番号内の派遣作業員に割り当てるなど。
- 予定あたりの秒数を増やす。
- 固定済みの予定は最適化中に移動されることはないため、固定済みの予定の数を減らす。固定済みの予定があると、スケジュールの柔軟性が低下します。
- 予定を固定するのは、絶対に必要な場合に限る。
- ルール違反の予定のスケジュールを解除する (固定されてしまうため)。
- 状態チェックを実行して、最適化しようとしているデータの状態に問題がないことを確認する。
この単元では、Maria は最適化を有効にして設定しました。次に、グローバル最適化を実行し、結果を確認し、夜間最適化ジョブを作成しました。さらに、Sandbox で夜間最適化を実行し、実行時間を短縮するために最適化ロジックを調整しました。最後に、最適化自体を最適化する方法を確認しました。