- JSON 表現
- アクセス
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表現
- トランジション
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表現
- EncodedPolyline
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表現
- 休憩
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表現
車両のルートは、次のように時間軸に沿って分解できます(訪問は n 回であると仮定します)。
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
違いに留意してください。
- 車両の始点と終点、各訪問の始点と終点(到着と出発)などの「時間厳守のイベント」。指定した時間に行われます。
- 訪問自体や訪問間の移行などの「期間」。時間間隔の継続時間は、ゼロ(開始と終了が同じ秒)になることもありますが、多くの場合、正の期間は正の値になります。
不変条件:
- 訪問回数が n 回の場合は、n+1 回遷移が発生します。
- 訪問は常に、前後のトランジション(インデックス + 1)で囲まれています。
- 車両が発進すると、常にトランジション #0 が続きます。
- 車両の終端には常にトランジション #n が先行します。
ズームインすると、Transition
と Visit
の実行中は次のようになります。
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
最後に、移行時に移動、中断、遅延、待機を設定する方法を説明します。
- 重複していません。
- DELAY は一意であり、次の訪問(または車両の終了)の直前の連続した期間である必要があります。したがって、開始時間と終了時間を知るには、遅延時間を知るだけで十分です。
- BREAKS は、重複しない連続した時間です。レスポンスでは、各休憩の開始時間と継続時間を指定します。
- TRAVEL と WAIT は「プリエンプティブ」です。この移行中に複数回中断されることがあります。クライアントは旅行が「できるだけ早く」行われると想定できるその「待機」をが残りの時間で埋められます。
(複雑な)例:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
JSON 表現 |
---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
フィールド | |
---|---|
vehicleIndex |
ルートを運行している車両。ソース |
vehicleLabel |
このルートを運行する車両のラベル。指定する場合は |
vehicleStartTime |
車両がルートを開始した時刻。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
vehicleEndTime |
車両がルートを終了した時刻。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
visits[] |
経路を表す順序付きの訪問シーケンス。Visits[i] はルートの i 番目の訪問です。このフィールドが空の場合、車両は未使用とみなされます。 |
transitions[] |
ルートの遷移の順序付きリスト。 |
hasTrafficInfeasibilities |
交通状況により推定移動時間 |
routePolyline |
エンコードされた経路のポリライン表現。このフィールドは、 |
breaks[] |
このルートを走行する車両の休憩。 |
metrics |
このルートの期間、距離、負荷の指標。 |
routeCosts |
ルートのコスト。コスト関連のリクエスト フィールド別に分類されます。キーは、入力 OptimizeToursRequest に対する相対パスの proto パスです。次に例を示します。「model.shipments.pickups.cost」、値は対応する費用フィールドで生成された合計費用で、ルート全体で集計されます。つまり、cost["model.shipments.pickups.cost"] はルート上のすべての受け取り費用の合計となります。2022 年 1 月時点で集計された形でのみ報告される TransitionAttributes に関連する費用を除き、モデルで定義されたすべての費用は、ここで詳細に報告されます。
|
routeTotalCost |
ルートの総費用。コストマップのすべての費用の合計。 |
アクセス
経路中に行われた訪問。この訪問は、Shipment
の集荷または宅配に対応しています。
JSON 表現 |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
フィールド | |
---|---|
shipmentIndex |
ソース |
isPickup |
true の場合、訪問は |
visitRequestIndex |
|
startTime |
訪問の開始時刻。車両がこれよりも早く訪問場所に到着する場合があるので注意してください。時刻は RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
loadDemands |
来店負荷の総需要。配送と訪問リクエスト
|
detour |
訪問前にルート上で訪問した荷物や時間帯によって生じる可能性のある待ち時間が原因で、余分に迂回される時間。訪問が配達の場合、迂回運転は対応する集荷訪問から計算され、次のようになります。
それ以外の場合は、車両
|
shipmentLabel |
対応する |
visitLabel |
対応する |
移行
経路上の 2 つのイベント間の遷移。ShipmentRoute
の説明をご覧ください。
車両に startLocation
や endLocation
がない場合、対応する移動指標は 0 になります。
JSON 表現 |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
フィールド | |
---|---|
travelDuration |
この移行中の移動時間。
|
travelDistanceMeters |
移行中の移動距離。 |
trafficInfoUnavailable |
|
delayDuration |
この切り替えに適用される遅延時間の合計。設定されている場合は、次のイベント(訪問または車両の終了時間)のちょうど
|
breakDuration |
この遷移中に発生する中断の合計(ある場合)。各休憩の開始時間と継続時間に関する詳細は、
|
waitDuration |
この移行中の待機時間。待機時間はアイドル時間に対応し、休憩時間は含まれません。また、この待ち時間は、連続していない複数の間隔に分割される場合があります。
|
totalDuration |
移行の合計時間です(便宜上記載)。これは次と等しくなります。
|
startTime |
この移行の開始時間。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
routePolyline |
遷移中にたどったルートのエンコードされたポリライン表現。このフィールドは、 |
vehicleLoads |
この遷移中の車両の読み込み。この車両の 最初の遷移中の負荷は、車両経路の開始負荷です。各訪問の後に、訪問が集荷か配達かに応じて、訪問の
|
EncodedPolyline
エンコードされたポリライン表現。ポリラインのエンコードについて詳しくは、https://developers.google.com/maps/documentation/utilities/polylinealgorithm、https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding をご覧ください。
JSON 表現 |
---|
{ "points": string } |
フィールド | |
---|---|
points |
エンコードされたポリラインの地点を表す文字列。 |
休憩
ブレークの実行を表すデータ。
JSON 表現 |
---|
{ "startTime": string, "duration": string } |
フィールド | |
---|---|
startTime |
休憩の開始時間。 RFC3339 UTC「Zulu」形式のタイムスタンプ。精度はナノ秒まで、小数点以下は最大 9 桁。例: |
duration |
休憩時間。
|