Rute kendaraan dapat diuraikan, sepanjang sumbu waktu, seperti ini (kita asumsikan ada n kunjungan):
| | | | | 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
Perhatikan bahwa kami membedakan antara:
- "peristiwa tepat waktu", seperti awal dan akhir perjalanan kendaraan serta awal dan akhir setiap kunjungan (alias kedatangan dan keberangkatan). Peristiwa ini terjadi pada detik tertentu.
- "interval waktu", seperti kunjungan itu sendiri, dan transisi antar-kunjungan. Meskipun interval waktu terkadang memiliki durasi nol, yaitu dimulai dan diakhiri pada detik yang sama, interval waktu sering kali memiliki durasi positif.
Invarian:
- Jika ada n kunjungan, ada n+1 transisi.
- Kunjungan selalu diawali dengan transisi sebelumnya (indeks yang sama) dan transisi setelahnya (indeks + 1).
- Start kendaraan selalu diikuti dengan transisi #0.
- Akhir kendaraan selalu didahului oleh transisi #n.
Saat diperbesar, berikut yang terjadi selama Transition dan 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
Terakhir, berikut cara mengatur PERJALANAN, ISTIRAHAT, KETERLAMBATAN, dan MENUNGGU selama transisi.
- Keduanya tidak tumpang-tindih.
- PENUNDAAN bersifat unik dan harus berupa periode waktu yang berkesinambungan tepat sebelum kunjungan berikutnya (atau akhir kendaraan). Oleh karena itu, Anda cukup mengetahui durasi penundaan untuk mengetahui waktu mulai dan berakhirnya.
- BREAKS adalah periode waktu yang berdekatan dan tidak tumpang-tindih. Respons menentukan waktu mulai dan durasi setiap jeda.
- TRAVEL dan WAIT dapat "dihentikan sementara": keduanya dapat terganggu beberapa kali selama transisi ini. Klien dapat menganggap bahwa perjalanan terjadi "sesegera mungkin" dan "menunggu" mengisi sisa waktu.
Contoh (kompleks):
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 | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Representasi JSON |
|---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
| Kolom | |
|---|---|
vehicleIndex |
Kendaraan yang melakukan rute, diidentifikasi berdasarkan indeksnya di |
vehicleLabel |
Label kendaraan yang melakukan rute ini, sama dengan |
vehicleStartTime |
Waktu saat kendaraan memulai rutenya. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
vehicleEndTime |
Waktu saat kendaraan menyelesaikan rutenya. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
visits[] |
Urutan kunjungan yang diurutkan yang mewakili rute. visits[i] adalah kunjungan ke-i dalam rute. Jika kolom ini kosong, kendaraan dianggap tidak digunakan. |
transitions[] |
Daftar transisi yang diurutkan untuk rute. |
hasTrafficInfeasibilities |
Jika Kedatangan di next_visit kemungkinan akan terjadi lebih lambat daripada jangka waktu saat ini karena perkiraan waktu perjalanan yang meningkat |
routePolyline |
Representasi polyline yang dienkode dari rute. Kolom ini hanya diisi jika |
breaks[] |
Istirahat yang dijadwalkan untuk kendaraan yang melakukan rute ini. Urutan |
metrics |
Metrik durasi, jarak, dan beban untuk rute ini. Kolom |
vehicleFullness |
Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
routeCosts |
Biaya rute, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, relatif terhadap input OptimizeToursRequest, misalnya "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan di seluruh rute. Dengan kata lain, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan di seluruh rute. Semua biaya yang ditentukan dalam model dilaporkan secara mendetail di sini, kecuali biaya yang terkait dengan TransitionAttributes yang hanya dilaporkan secara gabungan mulai 01/2022. |
routeTotalCost |
Total biaya rute. Jumlah semua biaya dalam peta biaya. |
Kunjungi
Kunjungan yang dilakukan selama rute. Kunjungan ini sesuai dengan pengambilan atau pengiriman Shipment.
| Representasi JSON |
|---|
{ "shipmentIndex": integer, "isPickup": boolean, "visitRequestIndex": integer, "startTime": string, "loadDemands": { string: { object ( |
| Kolom | |
|---|---|
shipmentIndex |
Indeks kolom |
isPickup |
Jika benar (true), kunjungan sesuai dengan pengambilan |
visitRequestIndex |
Indeks |
startTime |
Waktu saat kunjungan dimulai. Perhatikan bahwa kendaraan mungkin tiba lebih awal dari waktu ini di lokasi kunjungan. Waktu konsisten dengan Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
loadDemands |
Total permintaan pemuatan kunjungan sebagai jumlah pengiriman dan permintaan kunjungan |
detour |
Waktu perjalanan tambahan karena pengiriman yang dikunjungi di rute sebelum kunjungan dan potensi waktu tunggu yang disebabkan oleh rentang waktu. Jika kunjungan adalah pengiriman, rute alternatif dihitung dari kunjungan pengambilan yang sesuai dan sama dengan: Jika tidak, nilai ini dihitung dari |
shipmentLabel |
Salinan |
visitLabel |
Salinan |
visitType |
Opsional. Menentukan jenis kunjungan. Mengganti kolom |
injectedSolutionLocationToken |
Token buram yang merepresentasikan informasi tentang lokasi kunjungan. Kolom ini dapat diisi di kunjungan rute hasil jika Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request untuk mengetahui detail selengkapnya. |
VisitType
Menunjukkan apakah kunjungan adalah pengambilan, pengiriman, atau kunjungan ke Stop. Kunjungan ke perhentian hanya digunakan jika pengoptimalan multimodal diaktifkan.
| Enum | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Jenis kunjungan tidak ditentukan. |
PICKUP_SHIPMENT |
Kunjungan sesuai dengan pengambilan pengiriman. |
DELIVER_SHIPMENT |
Kunjungan sesuai dengan pengiriman. |
Transisi
Transisi antara dua acara di rute. Lihat deskripsi ShipmentRoute.
Jika kendaraan tidak memiliki startLocation dan/atau endLocation, metrik perjalanan yang sesuai adalah 0.
| Representasi JSON |
|---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
| Kolom | |
|---|---|
travelDuration |
Durasi perjalanan selama transisi ini. |
travelDistanceMeters |
Jarak yang ditempuh selama transisi. |
trafficInfoUnavailable |
Jika traffic diminta melalui |
delayDuration |
Jumlah durasi penundaan yang diterapkan pada transisi ini. Jika ada, penundaan dimulai tepat |
breakDuration |
Jumlah durasi jeda yang terjadi selama transisi ini, jika ada. Detail tentang waktu mulai dan durasi setiap jeda disimpan di |
waitDuration |
Waktu yang dihabiskan untuk menunggu selama transisi ini. Durasi menunggu sesuai dengan waktu tidak ada aktivitas dan tidak termasuk waktu istirahat. Perhatikan juga bahwa waktu tunggu ini dapat dibagi menjadi beberapa interval yang tidak berurutan. |
totalDuration |
Total durasi transisi, disediakan untuk kenyamanan. Nilainya sama dengan:
|
startTime |
Waktu mulai transisi ini. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
routePolyline |
Representasi polyline yang dienkode dari rute yang diikuti selama transisi. Kolom ini hanya diisi jika |
routeToken |
Hanya output. Token buram yang dapat diteruskan ke Navigation SDK untuk merekonstruksi rute selama navigasi, dan, jika terjadi pengalihan rute, menghormati maksud awal saat rute dibuat. Perlakukan token ini sebagai blob buram. Jangan bandingkan nilainya di seluruh permintaan karena nilainya dapat berubah meskipun layanan menampilkan rute yang sama persis. Kolom ini hanya diisi jika |
vehicleLoads |
Muatan kendaraan selama transisi ini, untuk setiap jenis yang muncul di Muatan selama transisi pertama adalah muatan awal rute kendaraan. Kemudian, setelah setiap kunjungan, |
EncodedPolyline
Representasi polyline yang dienkode. Informasi selengkapnya tentang encoding polyline dapat ditemukan di sini: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| Representasi JSON |
|---|
{ "points": string } |
| Kolom | |
|---|---|
points |
String yang merepresentasikan titik polyline yang dienkode. |
Istirahat
Data yang merepresentasikan eksekusi istirahat.
| Representasi JSON |
|---|
{ "startTime": string, "duration": string } |
| Kolom | |
|---|---|
startTime |
Waktu mulai istirahat. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
duration |
Durasi istirahat. |
VehicleFullness
VehicleFullness adalah metrik yang menghitung seberapa penuh kendaraan. Setiap kolom VehicleFullness berada di antara 0 dan 1, dihitung sebagai rasio antara kolom metrik yang dibatasi (misalnya, AggregatedMetrics.travel_distance_meters) dan batas kendaraan terkait (misalnya, Vehicle.route_distance_limit), jika ada. Jika tidak, rasio kelengkapan tetap tidak disetel. Jika batasnya adalah 0, kolom akan disetel ke 1. Catatan: jika rute mengalami masalah traffic, beberapa rasio kepenuhan mentah mungkin melebihi 1,0, misalnya kendaraan mungkin melebihi batas jaraknya. Dalam kasus ini, kami membatasi nilai kecukupan pada 1,0.
| Representasi JSON |
|---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
| Kolom | |
|---|---|
maxFullness |
Nilai maksimum semua kolom lainnya dalam pesan ini. |
distance |
Rasio antara |
travelDuration |
Rasio antara [AggregatedMetrics.travel_duration_seconds][] dan |
activeDuration |
Rasio antara [AggregatedMetrics.total_duration_seconds][] dan |
maxLoad |
Rasio maksimum di antara semua jenis [AggregatedMetrics.max_load][] dan |
activeSpan |
Rasio (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) untuk kendaraan tertentu. Jika penyebut tidak ada, ( |