タイム ウィンドウ

タイム ウィンドウとは、開始時間から終了時間までの期間のことです。この期間に、ルートはネットワーク ロケーション (ルート解析のストップなど) を訪問する必要があります。

ルートおよび配車ルートの 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 プロパティを使用します。

配車ルート解析では、ルート オブジェクトでも、EarliestStartTimeLatestStartTime という 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 フィールドによって設定されています。

タイム ウィンドウ情報を含む 4 つのストップの例

ルートは、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) 解析レイヤーの訪問先タイム ウィンドウに絶対的なタイム ウィンドウを使用できます。

ルートの解析では、ネットワークで選択されている規制を満たし、すべてのタイム ウィンドウを満たす、一連のストップを通過する最低コストのルートの検出が試みられます。 タイム ウィンドウの超過が避けられない場合は、合計超過時間が最も少なくなるルートの検出が試みられます。