タイム ウィンドウとは、開始時間から終了時間までの期間のことです。この期間に、ルートはネットワーク ロケーション (ルート解析のストップなど) を訪問する必要があります。
ルートおよび配車ルートの 2 つのネットワーク解析レイヤーがタイム ウィンドウを組み込みます。 以下の 2 つの表は、タイム ウィンドウを設定できるネットワーク解析クラスの一覧です。
ルート解析レイヤーのタイム ウィンドウ フィールド
ネットワーク解析クラス | タイム ウィンドウ フィールド |
---|---|
ストップ |
TimeWindowStart |
TimeWindowEnd |
注意:
ストップ レイヤーのタイム ウィンドウ フィールド (TimeWindowStart および TimeWindowEnd) のいずれかが設定されると、タイム ウィンドウが使用されます。 タイム ウィンドウ フィールドのタイム ゾーンは、ルート解析レイヤーの作成ジオプロセシング ツール ダイアログ ボックスの [時間フィールドのタイム ゾーン] パラメーターを使用して新しいルート解析レイヤーを作成する際に指定できます。 ルート リボンの [基準タイム ゾーン] ドロップダウン リストを使用して、タイム ウィンドウ フィールドのタイム ゾーンを指定することもできます。 既存のレイヤーのタイム ウィンドウ フィールドのタイム ゾーンを更新するには、Python で RouteSolverProperties クラスの timeZoneUsageForTimeFields プロパティを使用します。
配車ルート解析レイヤーのタイム ウィンドウ フィールド
ネットワーク解析クラス | タイム ウィンドウ フィールド |
---|---|
訪問先 |
TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
拠点 | TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
休憩 | TimeWindowStart |
TimeWindowEnd |
タイム ウィンドウは常に使用可能であるため、タイム ウィンドウを使用できるようにするために配車ルート解析レイヤーのプロパティを有効にする必要はありません。 訪問先クラスと拠点クラスを使用すると、2 つのタイム ウィンドウを設定できます。
注意:
訪問先レイヤーおよび拠点レイヤーのタイム ウィンドウ フィールド (TimeWindowStart および TimeWindowEnd) のいずれかが設定されると、タイム ウィンドウが使用されます。 タイム ウィンドウ フィールドのタイム ゾーンは、配車ルート (VRP) 解析レイヤーの作成 ジオプロセシング ツール ダイアログ ボックスの [時間フィールドのタイム ゾーン] パラメーターを使用して配車ルート (VRP) 解析レイヤーを作成する際に指定できます。 VRP リボンの [基準タイム ゾーン] ドロップダウン リストを使用して、タイム ウィンドウ フィールドのタイム ゾーンを指定することもできます。 既存のレイヤーのタイム ウィンドウ フィールドのタイム ゾーンを更新するには、Python で VehicleRoutingProblemSolverProperties クラスの timeZoneUsageForTimeFields プロパティを使用します。
配車ルート解析では、ルート オブジェクトでも、EarliestStartTime と LatestStartTime という 2 つのフィールドを使用してタイム ウィンドウを設定できます。 これらのフィールドで、移動を開始してよい時間帯を指定します。
タイム ウィンドウでの日付の使用
ルート解析レイヤーの場合、「今日」で解析するには、タイム ウィンドウ フィールドと [時刻] を [今日 - 1899/12/30] の値に設定する必要があります。 同様に、配車ルート (VRP) 解析レイヤーの場合、「今日」で解析するには、[デフォルトの日付] を [今日 - 1899/12/30] の値に設定する必要があります。
曜日で解析する場合は、タイム ウィンドウ フィールドは引き続き「今日」の値を使用しますが、[日時] (ルート解析レイヤーの場合) と [デフォルトの日付] (配車ルート (VRP) 解析レイヤーの場合) は、その曜日に対応する日付を指定する必要があります。
特定の日付を使用する代わりに、次の日付を使用して曜日を指定することができます。
- 今日 - 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 分 52 秒待機して、9:10 a.m. に出発します。この待機時間 (4.66 分) はストップ b の Wait_TravelTime フィールドに格納され、ルートにかかる合計時間に加算されます。 ストップの Cumul_TraveTime フィールドには、そのストップに到着するまでの合計時間が格納されます。 ポイント b の累積移動時間は 10 分です (5 分 8 秒の移動時間と、ストップ b のタイム ウィンドウを遵守するための 4 分 52 秒の待ち時間の合計)。
ルートはストップ 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 のタイム ウィンドウを遵守できないためです。
タイム ウィンドウは、ソフトな制約として適用されます。 つまり、タイム ウィンドウを遵守するルーティングが試みられますが、必要に応じて一部のストップのタイム ウィンドウを超過する場合もあります。 これは、ハードな制約とは異なります。この場合は、タイム ウィンドウを超過するストップへのルートは生成されません。 ルート解析レイヤーでは、絶対的なタイム ウィンドウはサポートされていません。 ただし、対応する MaxViolationTime フィールドをゼロに設定することで、配車ルート (VRP) 解析レイヤーの訪問先タイム ウィンドウに絶対的なタイム ウィンドウを使用できます。
ルートの解析では、ネットワークで選択されている規制を満たし、すべてのタイム ウィンドウを満たす、一連のストップを通過する最低コストのルートの検出が試みられます。 タイム ウィンドウの超過が避けられない場合は、合計超過時間が最も少なくなるルートの検出が試みられます。