「タイム ウィンドウ」とは、ネットワーク ロケーションを訪れてよい時間帯のことです。
ルートおよび配車ルートの 2 つのネットワーク解析レイヤーがタイム ウィンドウを組み込みます。以下の 2 つの表は、タイム ウィンドウを設定できるネットワーク解析クラスの一覧です。
ルート解析レイヤーのタイム ウィンドウ フィールド
ネットワーク解析クラス | タイム ウィンドウ フィールド |
---|---|
ストップ | TimeWindowStart |
TimeWindowEnd |
メモ:
[ストップ] レイヤーのタイム ウィンドウ フィールド (TimeWindowStart および TimeWindowEnd) のいずれかが設定されると、タイム ウィンドウが使用されます。タイム ウィンドウ フィールドのタイム ゾーンは、[ルート解析レイヤーの作成 (Make Route Analysis Layer)] ジオプロセシング ツール ダイアログ ボックスの [時間フィールドのタイム ゾーン] パラメーターを使用して新しいルート解析レイヤーを作成する際に指定できます。既存のレイヤーのタイム ウィンドウ フィールドのタイム ゾーンを更新するには、Python で RouteSolverProperties クラスの timeZoneUsageForTimeFields プロパティを使用します。
配車ルート解析レイヤーのタイム ウィンドウ フィールド
ネットワーク解析クラス | タイム ウィンドウ フィールド |
---|---|
訪問先 | TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
拠点 | TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
休憩 | TimeWindowStart |
TimeWindowEnd |
タイム ウィンドウは常に使用可能であるため、タイム ウィンドウを使用できるようにするために配車ルート解析レイヤーのプロパティを有効にする必要はありません。訪問先クラスと拠点クラスを使用すると、2 つのタイム ウィンドウを設定できます。
メモ:
[訪問先] レイヤーおよび [拠点] レイヤーのタイム ウィンドウ フィールド (TimeWindowStart および TimeWindowEnd) のいずれかが設定されると、タイム ウィンドウが使用されます。タイム ウィンドウ フィールドのタイム ゾーンは、[配車ルート (VRP) 解析レイヤーの作成 (Make Vehicle Routing Problem Analysis Layer)] ジオプロセシング ツール ダイアログ ボックスの [時間フィールドのタイム ゾーン] パラメーターを使用してルート解析レイヤーを作成する際に指定できます。既存のレイヤーのタイム ウィンドウ フィールドのタイム ゾーンを更新するには、Python で VehicleRoutingProblemSolverProperties クラスの timeZoneUsageForTimeFields プロパティを使用します。
配車ルート解析では、ルート オブジェクトでも、EarliestStartTime (最早開始時刻) と LatestStartTime (最遅開始時刻) という 2 つのフィールドを使用してタイム ウィンドウを設定できます。これらのフィールドで、移動を開始してよい時間帯を指定します。
タイム ウィンドウでの日付の使用
タイム ウィンドウの日付部分は、タイム ウィンドウが特定の日付、曜日、または現在の日付に応じて発生するかどうかを示します。たとえば、タイム ウィンドウが配達時間を表している場合、特定の日付にスケジュール設定された 1 回限りの配達、水曜日に行われる定期配達、または曜日に関係なく今日実施されるようにスケジュール設定された配達である可能性があります。
特定の日付にタイム ウィンドウを設定するには、タイム ウィンドウ フィールドに入力する際にその日付を含めるだけです。次のセクションの例では、タイム ウィンドウは 2018 年 3 月 16 日に発生します。
特定の日付を使用する代わりに、次の日付を使用して曜日を指定することができます。
- 今日 - 12/30/1899
- 日曜 - 12/31/1899
- 月曜 - 1/1/1900
- 火曜 - 1/2/1900
- 水曜 - 1/3/1900
- 木曜 - 1/4/1900
- 金曜 - 1/5/1900
- 土曜 - 1/6/1900
タイム ウィンドウの日付は、時刻 (ルート解析の場合) またはデフォルトの日付 (配車ルート (VRP) レイヤーの解析の場合) に指定した日付と一致する必要があります。
タイム ウィンドウの例
タイム ウィンドウについて理解するために、ルートが訪れる必要のある 4 つのストップ a、b、c、d を例にとります。各ストップのタイム ウィンドウは、TimeWindowStart および TimeWindowEnd フィールドによって設定されています。
ルートは、8:00 a.m. から 9:00 a.m. の間の任意のタイミングで、ポイント a から始めることができます。ただし、9:10 a.m. まではポイント b に到着してはいけません。以下に示すように、ルートは 9:05:08 a.m. に b に到着します。
b には 9:10 a.m. から 9:12 a.m. までの間に訪れる必要があるため、ルートは b で 4 分 40 秒待機して、9:10 a.m. に出発します。この待機時間 (4.66 分) はストップ b の Wait_TravelTime フィールドに格納され、ルートにかかる合計時間に加算されます。ストップの Cumul_TraveTime フィールドには、そのストップに到着するまでの合計時間が格納されます。ポイント b の累積移動時間は 10 分です (5 分 20 秒の移動時間と、ストップ b のタイム ウィンドウを遵守するための 4 分 40 秒の待ち時間の合計)。
ルートはストップ b を 9:10 a.m. に出発し、ストップ c に 9:15:20 a.m. に到着します。ただし、ストップ c には 9:10 ~ 9:12 a.m. のタイム ウィンドウがあります。このため、3 分 20 秒の違反が発生し、Violation_TravelTime フィールドに 3.33 分として格納されます。これは、ルートがストップ c のタイム ウィンドウを遵守できないためです。
ストップ c には、時間超過を示すシンボル が表示されます。
タイム ウィンドウは、ソフトな制約として適用されます。つまり、タイム ウィンドウを遵守するルーティングが試みられますが、必要に応じて一部のストップのタイム ウィンドウを超過する場合もあります。これは、ハードな制約とは異なります。この場合は、タイム ウィンドウを超過するストップへのルートは生成されません。ルート解析レイヤーでは、絶対的なタイム ウィンドウはサポートされていません。ただし、対応する MaxViolationTime フィールドをゼロに設定することで、配車ルート (VRP) 解析レイヤーの訪問先タイム ウィンドウに絶対的なタイム ウィンドウを使用できます。
ルートの解析では、ネットワークで選択されている規制を満たし、すべてのタイム ウィンドウを満たす、一連のストップを通過する最低コストのルートの検出が試みられます。タイム ウィンドウの超過が避けられない場合は、合計超過時間が最も少なくなるルートの検出が試みられます。