- Representasi JSON
- Pengiriman
- VisitRequest
- LatLng
- Waypoint
- Location
- TimeWindow
- Kendaraan
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Interval
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- Tujuan
- Jenis
- DurationDistanceMatrix
- Baris
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Model pengiriman berisi serangkaian pengiriman yang harus dilakukan oleh serangkaian kendaraan, sekaligus meminimalkan biaya keseluruhan, yang merupakan jumlah dari:
- biaya pengarahan kendaraan (jumlah biaya per total waktu, biaya per waktu perjalanan, dan biaya tetap untuk semua kendaraan).
- sanksi pengiriman yang tidak dilakukan.
- biaya durasi pengiriman global
| Representasi JSON |
|---|
{ "shipments": [ { object ( |
| Kolom | |
|---|---|
shipments[] |
Kumpulan pengiriman yang harus dilakukan dalam model. |
vehicles[] |
Kumpulan kendaraan yang dapat digunakan untuk melakukan kunjungan. |
objectives[] |
Kumpulan tujuan untuk model ini, yang akan kita ubah menjadi biaya. Jika tidak kosong, model input harus bebas biaya. Untuk mendapatkan permintaan yang diubah, gunakan Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request untuk mengetahui detail selengkapnya. |
globalStartTime |
Waktu mulai dan berakhir global model: tidak ada waktu di luar rentang ini yang dapat dianggap valid. Rentang waktu model harus kurang dari satu tahun, yaitu Saat menggunakan kolom Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
globalEndTime |
Jika tidak ditetapkan, 00.00. 00 UTC, 1 Januari 1971 (yaitu detik: 31536000, nanos: 0) akan digunakan sebagai default. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
globalDurationCostPerHour |
"Durasi global" keseluruhan paket adalah selisih antara waktu mulai efektif paling awal dan waktu akhir efektif paling akhir dari semua kendaraan. Pengguna dapat menetapkan biaya per jam untuk jumlah tersebut guna mencoba dan mengoptimalkan penyelesaian tugas paling awal, misalnya. Biaya ini harus dalam satuan yang sama dengan |
durationDistanceMatrices[] |
Menentukan matriks durasi dan jarak yang digunakan dalam model. Jika kolom ini kosong, Google Maps atau jarak geodetik akan digunakan, bergantung pada nilai kolom Contoh penggunaan:
|
durationDistanceMatrixSrcTags[] |
Tag yang menentukan sumber matriks durasi dan jarak; Tag sesuai dengan |
durationDistanceMatrixDstTags[] |
Tag yang menentukan tujuan matriks durasi dan jarak; Tag sesuai dengan |
transitionAttributes[] |
Atribut transisi ditambahkan ke model. |
shipmentTypeIncompatibilities[] |
Kumpulan shipment_type yang tidak kompatibel (lihat |
shipmentTypeRequirements[] |
Kumpulan persyaratan |
precedenceRules[] |
Kumpulan aturan prioritas yang harus diterapkan dalam model. PENTING: Penggunaan aturan prioritas membatasi ukuran masalah yang dapat dioptimalkan. Permintaan menggunakan aturan prioritas yang mencakup banyak pengiriman dapat ditolak. |
maxActiveVehicles |
Membatasi jumlah maksimum kendaraan aktif. Kendaraan aktif jika rutenya melakukan minimal satu pengiriman. Hal ini dapat digunakan untuk membatasi jumlah rute jika jumlah pengemudi lebih sedikit daripada kendaraan dan armada kendaraan bersifat heterogen. Pengoptimalan kemudian akan memilih subkumpulan kendaraan terbaik untuk digunakan. Harus benar-benar positif. |
Pengiriman
Pengiriman satu item, dari salah satu pengambilan hingga salah satu pengirimannya. Agar pengiriman dianggap telah dilakukan, kendaraan unik harus mengunjungi salah satu lokasi pengambilan (dan mengurangi kapasitas cadangnya), lalu mengunjungi salah satu lokasi pengiriman nanti (dan dengan demikian meningkatkan kembali kapasitas cadangnya).
| Representasi JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Kolom | |
|---|---|
displayName |
Nama tampilan pengiriman yang ditentukan pengguna. Panjangnya bisa mencapai 63 karakter dan dapat menggunakan karakter UTF-8. |
pickups[] |
Kumpulan alternatif pengambilan yang terkait dengan pengiriman. Jika tidak ditentukan, kendaraan hanya perlu mengunjungi lokasi yang sesuai dengan pengiriman. |
deliveries[] |
Kumpulan alternatif pengiriman yang terkait dengan pengiriman. Jika tidak ditentukan, kendaraan hanya perlu mengunjungi lokasi yang sesuai dengan pengambilan. |
loadDemands |
Permintaan muatan pengiriman (misalnya, berat, volume, jumlah palet, dll.). Kunci dalam peta harus berupa ID yang menjelaskan jenis pemuatan yang sesuai, idealnya juga mencakup unit. Misalnya: "weight_kg", "volume_gallons", "pallet_count", dll. Jika kunci tertentu tidak muncul di peta, muatan yang sesuai dianggap sebagai null. |
allowedVehicleIndices[] |
Kumpulan kendaraan yang dapat melakukan pengiriman ini. Jika kosong, semua kendaraan dapat melakukannya. Kendaraan diberikan berdasarkan indeksnya dalam daftar |
costsPerVehicle[] |
Menentukan biaya yang dikeluarkan saat pengiriman ini dilakukan oleh setiap kendaraan. Jika ditentukan, harus memiliki SALAH SATU:
Biaya ini harus dalam satuan yang sama dengan |
costsPerVehicleIndices[] |
Indeks kendaraan yang menerapkan |
pickupToDeliveryAbsoluteDetourLimit |
Menentukan waktu penyimpangan absolut maksimum dibandingkan dengan jalur terpendek dari penjemputan hingga pengantaran. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya pengambilan dan pengiriman. Misalnya, misalkan t adalah waktu tersingkat yang diperlukan untuk beralih dari alternatif pengambilan yang dipilih langsung ke alternatif pengiriman yang dipilih. Kemudian, setelan Jika batas relatif dan absolut ditentukan pada pengiriman yang sama, batas yang lebih ketat akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai 10/2017, rute alternatif hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
pickupToDeliveryTimeLimit |
Menentukan durasi maksimum dari awal pengambilan hingga awal pengiriman kiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya pengambilan dan pengiriman. Hal ini tidak bergantung pada alternatif yang dipilih untuk pengambilan dan pengiriman, atau kecepatan kendaraan. Hal ini dapat ditentukan bersama dengan batasan penyimpangan maksimum: solusi akan mematuhi kedua spesifikasi. |
shipmentType |
String tidak kosong yang menentukan "jenis" untuk pengiriman ini. Fitur ini dapat digunakan untuk menentukan inkompatibilitas atau persyaratan antara Berbeda dengan |
label |
Menentukan label untuk pengiriman ini. Label ini dilaporkan dalam respons di |
ignore |
Jika benar, lewati pengiriman ini, tetapi jangan terapkan Mengabaikan pengiriman akan menyebabkan error validasi jika ada Mengabaikan pengiriman yang dilakukan di |
penaltyCost |
Jika pengiriman tidak diselesaikan, penalti ini akan ditambahkan ke keseluruhan biaya rute. Pengiriman dianggap selesai jika salah satu alternatif pengambilan dan pengirimannya dikunjungi. Biaya dapat dinyatakan dalam unit yang sama dengan yang digunakan untuk semua kolom terkait biaya lainnya dalam model dan harus positif. PENTING: Jika penalti ini tidak ditentukan, penalti dianggap tidak terbatas, yaitu pengiriman harus diselesaikan. |
pickupToDeliveryRelativeDetourLimit |
Menentukan waktu perjalanan relatif maksimum dibandingkan dengan jalur terpendek dari lokasi pengambilan ke pengantaran. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya pengambilan dan pengiriman. Misalnya, misalkan t adalah waktu tersingkat yang diperlukan untuk beralih dari alternatif pengambilan yang dipilih langsung ke alternatif pengiriman yang dipilih. Kemudian, setelan Jika batas relatif dan absolut ditentukan pada pengiriman yang sama, batas yang lebih ketat akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai 10/2017, rute alternatif hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
VisitRequest
Permintaan kunjungan yang dapat dilakukan oleh kendaraan: memiliki geolokasi (atau dua, lihat di bawah), waktu buka dan tutup yang diwakili oleh rentang waktu, dan durasi waktu layanan (waktu yang dihabiskan oleh kendaraan setelah tiba untuk mengambil atau menurunkan barang).
| Representasi JSON |
|---|
{ "arrivalLocation": { object ( |
| Kolom | |
|---|---|
arrivalLocation |
Geo-lokasi tempat kendaraan tiba saat melakukan |
arrivalWaypoint |
Titik jalan tempat kendaraan tiba saat melakukan |
departureLocation |
Geo-lokasi tempat kendaraan berangkat setelah menyelesaikan |
departureWaypoint |
Titik jalan tempat kendaraan berangkat setelah menyelesaikan |
tags[] |
Menentukan tag yang dilampirkan ke permintaan kunjungan. String kosong atau duplikat tidak diizinkan. |
timeWindows[] |
Jendela waktu yang membatasi waktu tiba pada kunjungan. Perhatikan bahwa kendaraan dapat berangkat di luar jangka waktu kedatangan, yaitu waktu kedatangan + durasi tidak harus berada dalam jangka waktu. Hal ini dapat menyebabkan waktu tunggu jika kendaraan tiba sebelum Tidak adanya Jangka waktu harus terpisah, yaitu tidak ada jangka waktu yang tumpang-tindih atau berdekatan dengan jangka waktu lain, dan harus dalam urutan menaik.
|
duration |
Durasi kunjungan, yaitu waktu yang dihabiskan oleh kendaraan antara kedatangan dan keberangkatan (untuk ditambahkan ke kemungkinan waktu tunggu; lihat |
cost |
Biaya untuk melayani permintaan kunjungan ini pada rute kendaraan. Hal ini dapat digunakan untuk membayar biaya yang berbeda untuk setiap pengambilan atau pengiriman alternatif kiriman. Biaya ini harus dalam satuan yang sama dengan |
loadDemands |
Memuat permintaan kunjungan ini. Hal ini sama seperti kolom |
visitTypes[] |
Menentukan jenis kunjungan. Hal ini dapat digunakan untuk mengalokasikan waktu tambahan yang diperlukan kendaraan untuk menyelesaikan kunjungan ini (lihat Jenis hanya dapat muncul satu kali. |
label |
Menentukan label untuk |
avoidUTurns |
Menentukan apakah belokan U harus dihindari dalam rute mengemudi di lokasi ini. Penghindaran belokan U adalah upaya terbaik dan penghindaran lengkap tidak dijamin. Fitur ini bersifat eksperimental dan perilakunya dapat berubah. Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request untuk mengetahui detail selengkapnya. |
LatLng
Objek yang merepresentasikan pasangan garis lintang/bujur. Objek ini dinyatakan sebagai pasangan nilai ganda untuk mewakili derajat lintang dan derajat bujur. Kecuali jika ditentukan lain, objek ini harus sesuai dengan standar WGS84. Nilai harus berada dalam rentang yang dinormalisasi.
| Representasi JSON |
|---|
{ "latitude": number, "longitude": number } |
| Kolom | |
|---|---|
latitude |
Lintang dalam derajat. Harus dalam rentang [-90.0, +90.0]. |
longitude |
Bujur dalam derajat. Harus dalam rentang [-180.0, +180.0]. |
Waypoint
Mengenkapsulasi titik jalan. Titik jalan menandai lokasi kedatangan dan keberangkatan VisitRequest, serta lokasi awal dan akhir Kendaraan.
| Representasi JSON |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| Kolom | |
|---|---|
sideOfRoad |
Opsional. Menunjukkan bahwa lokasi titik jalan ini dimaksudkan untuk memiliki preferensi agar kendaraan berhenti di sisi jalan tertentu. Saat Anda menetapkan nilai ini, rute akan melewati lokasi sehingga kendaraan dapat berhenti di sisi jalan yang cenderung mengarah ke lokasi dari tengah jalan. Opsi ini tidak berfungsi untuk mode perjalanan 'BERJALAN KAKI'. |
vehicleStopover |
Menunjukkan bahwa titik jalan ditujukan agar kendaraan berhenti di sana, dengan maksud untuk menjemput atau menurunkan penumpang. Opsi ini hanya berfungsi untuk mode perjalanan 'DRIVING', dan saat 'locationType' adalah 'location'. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
| Berbagai cara untuk merepresentasikan lokasi. Berikut adalah daftar kolom yang bersifat eksklusif satu sama lain. Maksimal satu kolom akan ditetapkan dalam respons: | |
location |
Titik yang ditentukan menggunakan koordinat geografis, termasuk arah opsional. |
placeId |
ID tempat POI yang terkait dengan titik jalan. Saat menggunakan ID tempat untuk menentukan lokasi kedatangan atau keberangkatan VisitRequest, gunakan ID tempat yang cukup spesifik untuk menentukan lokasi LatLng untuk navigasi ke tempat tersebut. Misalnya, ID tempat yang mewakili bangunan cocok, tetapi ID tempat yang mewakili jalan tidak disarankan. |
| Akhir kolom yang saling eksklusif. | |
Lokasi
Mencakup lokasi (titik geografis, dan arah opsional).
| Representasi JSON |
|---|
{
"latLng": {
object ( |
| Kolom | |
|---|---|
latLng |
Koordinat geografis titik jalan. |
heading |
Arah kompas yang terkait dengan arah aliran traffic. Nilai ini digunakan untuk menentukan sisi jalan yang akan digunakan untuk pengambilan dan pengantaran. Nilai arah dapat berupa 0 hingga 360, dengan 0 menentukan arah Utara, 90 menentukan arah Timur, dll. |
TimeWindow
Rentang waktu membatasi waktu terjadinya peristiwa, seperti waktu kedatangan di lokasi, atau waktu mulai dan berakhir kendaraan.
Batas jangka waktu tetap, startTime dan endTime, memberlakukan waktu paling awal dan paling akhir dari peristiwa, sehingga startTime <= event_time <=
endTime. Batas bawah periode waktu fleksibel, softStartTime, menyatakan preferensi agar peristiwa terjadi pada atau setelah softStartTime dengan menimbulkan biaya yang proporsional dengan berapa lama sebelum softStartTime peristiwa terjadi. Batas atas periode waktu fleksibel, softEndTime, menyatakan preferensi agar peristiwa terjadi pada atau sebelum softEndTime dengan menimbulkan biaya yang proporsional dengan berapa lama setelah softEndTime peristiwa terjadi. startTime, endTime, softStartTime, dan softEndTime harus berada dalam batas waktu global (lihat ShipmentModel.global_start_time dan ShipmentModel.global_end_time) dan harus mematuhi:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
| Representasi JSON |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| Kolom | |
|---|---|
startTime |
Waktu mulai periode sulit. Jika tidak ditentukan, nilai ini akan disetel ke Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
endTime |
Waktu berakhir periode waktu tetap. Jika tidak ditentukan, nilai ini akan disetel ke Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
softStartTime |
Waktu mulai periode waktu. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
softEndTime |
Waktu berakhir lembut periode waktu. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
costPerHourBeforeSoftStartTime |
Biaya per jam ditambahkan ke biaya lain dalam model jika peristiwa terjadi sebelum softStartTime, dihitung sebagai: Biaya ini harus positif, dan kolom hanya dapat ditetapkan jika softStartTime telah ditetapkan. |
costPerHourAfterSoftEndTime |
Biaya per jam ditambahkan ke biaya lain dalam model jika peristiwa terjadi setelah Biaya ini harus positif, dan kolom hanya dapat ditetapkan jika |
Kendaraan
Membuat model kendaraan dalam masalah pengiriman. Menyelesaikan masalah pengiriman akan membuat rute yang dimulai dari startLocation dan berakhir di endLocation untuk kendaraan ini. Rute adalah urutan kunjungan (lihat ShipmentRoute).
| Representasi JSON |
|---|
{ "displayName": string, "travelMode": enum ( |
| Kolom | |
|---|---|
displayName |
Nama tampilan kendaraan yang ditentukan pengguna. Panjangnya bisa mencapai 63 karakter dan dapat menggunakan karakter UTF-8. |
travelMode |
Mode perjalanan yang memengaruhi jalan yang dapat digunakan oleh kendaraan dan kecepatannya. Lihat juga |
routeModifiers |
Kumpulan kondisi yang harus dipenuhi yang memengaruhi cara rute dihitung untuk kendaraan tertentu. |
startLocation |
Lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil kiriman. Jika tidak ditentukan, kendaraan akan memulai perjalanan di lokasi penjemputan pertamanya. Jika model pengiriman memiliki matriks durasi dan jarak, |
startWaypoint |
Titik jalan yang merepresentasikan lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil kiriman. Jika |
endLocation |
Lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
endWaypoint |
Titik jalan yang merepresentasikan lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
startTags[] |
Menentukan tag yang dilampirkan di awal rute kendaraan. String kosong atau duplikat tidak diizinkan. |
endTags[] |
Menentukan tag yang dilampirkan di akhir rute kendaraan. String kosong atau duplikat tidak diizinkan. |
startTimeWindows[] |
Periode waktu saat kendaraan dapat berangkat dari lokasi awalnya. Nilai harus berada dalam batas waktu global (lihat kolom Jangka waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak ada jangka waktu yang dapat tumpang-tindih atau berdekatan dengan jangka waktu lain, dan harus dalam urutan kronologis.
|
endTimeWindows[] |
Periode waktu saat kendaraan dapat tiba di lokasi akhirnya. Nilai harus berada dalam batas waktu global (lihat kolom Jangka waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak ada jangka waktu yang dapat tumpang-tindih atau berdekatan dengan jangka waktu lain, dan harus dalam urutan kronologis.
|
unloadingPolicy |
Kebijakan pembongkaran diterapkan pada kendaraan. |
loadLimits |
Kapasitas kendaraan (berat, volume, jumlah palet, misalnya). Kunci dalam peta adalah ID jenis pemuatan, yang konsisten dengan kunci kolom |
costPerHour |
Biaya kendaraan: semua biaya dijumlahkan dan harus dalam unit yang sama dengan Biaya per jam rute kendaraan. Biaya ini diterapkan pada total waktu yang dibutuhkan untuk menempuh rute, dan mencakup waktu perjalanan, waktu tunggu, dan waktu kunjungan. Menggunakan |
costPerTraveledHour |
Biaya per jam perjalanan rute kendaraan. Biaya ini hanya diterapkan pada waktu perjalanan yang ditempuh rute (yaitu, yang dilaporkan di |
costPerKilometer |
Biaya per kilometer rute kendaraan. Biaya ini diterapkan pada jarak yang dilaporkan dalam |
fixedCost |
Biaya tetap yang diterapkan jika kendaraan ini digunakan untuk menangani pengiriman. |
usedIfRouteIsEmpty |
Kolom ini hanya berlaku untuk kendaraan yang rutenya tidak melayani pengiriman apa pun. Hal ini menunjukkan apakah kendaraan harus dianggap sebagai bekas atau tidak dalam kasus ini. Jika benar, kendaraan akan berangkat dari lokasi awal ke lokasi akhir meskipun tidak melayani pengiriman apa pun, dan biaya waktu dan jarak yang dihasilkan dari perjalanan awal --> akhir akan diperhitungkan. Jika tidak, kendaraan tidak melakukan perjalanan dari lokasi awal ke lokasi akhir, dan tidak ada |
routeDurationLimit |
Batas diterapkan pada total durasi rute kendaraan. Dalam |
travelDurationLimit |
Batas yang diterapkan pada durasi perjalanan rute kendaraan. Dalam |
routeDistanceLimit |
Batas diterapkan pada total jarak rute kendaraan. Dalam |
extraVisitDurationForVisitType |
Menentukan peta dari string visitTypes ke durasi. Durasi adalah waktu selain Jika permintaan kunjungan memiliki beberapa jenis, durasi akan ditambahkan untuk setiap jenis di peta. |
breakRule |
Menjelaskan jadwal istirahat yang akan diterapkan pada kendaraan ini. Jika kosong, tidak ada istirahat yang akan dijadwalkan untuk kendaraan ini. |
label |
Menentukan label untuk kendaraan ini. Label ini dilaporkan dalam respons sebagai |
ignore |
Jika benar (true), Jika pengiriman dilakukan oleh kendaraan yang diabaikan di Jika pengiriman dilakukan oleh kendaraan yang diabaikan di |
travelDurationMultiple |
Menentukan faktor perkalian yang dapat digunakan untuk menambah atau mengurangi waktu perjalanan kendaraan ini. Misalnya, menyetelnya ke 2,0 berarti kendaraan ini lebih lambat dan memiliki waktu perjalanan dua kali lebih lama dibandingkan kendaraan standar. Pengganda ini tidak memengaruhi durasi kunjungan. Hal ini memengaruhi biaya jika PERINGATAN: Waktu perjalanan akan dibulatkan ke detik terdekat setelah kelipatan ini diterapkan, tetapi sebelum melakukan operasi numerik apa pun. Oleh karena itu, kelipatan kecil dapat menyebabkan hilangnya presisi. Lihat juga |
TravelMode
Mode perjalanan yang dapat digunakan oleh kendaraan.
Ini harus berupa subset dari mode perjalanan Google Maps Platform Routes API, lihat: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
Catatan: Rute WALKING masih dalam versi beta dan terkadang mungkin tidak memiliki trotoar atau jalur pejalan kaki yang jelas. Anda harus menampilkan peringatan ini kepada pengguna untuk semua rute jalan kaki yang Anda tampilkan di aplikasi.
| Enum | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode perjalanan tidak ditentukan, sama dengan DRIVING. |
DRIVING |
Mode perjalanan yang sesuai dengan petunjuk arah mengemudi (mobil, ...). |
WALKING |
Mode perjalanan yang sesuai dengan rute jalan kaki. |
RouteModifiers
Mencakup serangkaian kondisi opsional yang harus dipenuhi saat menghitung rute kendaraan. Hal ini mirip dengan RouteModifiers di Google Maps Platform Routes Preferred API; lihat: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Representasi JSON |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| Kolom | |
|---|---|
avoidTolls |
Menentukan apakah akan menghindari jalan tol jika memungkinkan. Rute yang tidak berisi jalan tol akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoidHighways |
Menentukan apakah akan menghindari jalan raya jika memungkinkan. Rute yang tidak berisi jalan raya akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoidFerries |
Menentukan apakah akan menghindari feri jika memungkinkan. Rute yang tidak berisi perjalanan dengan kapal feri akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoidIndoor |
Opsional. Menentukan apakah akan menghindari navigasi di dalam ruangan jika memungkinkan. Rute yang tidak berisi navigasi dalam ruangan akan diprioritaskan. Hanya berlaku untuk mode perjalanan |
UnloadingPolicy
Kebijakan tentang cara menurunkan kendaraan. Hanya berlaku untuk pengiriman yang memiliki pengambilan dan pengantaran.
Pengiriman lain dapat terjadi di mana saja di rute, terlepas dari unloadingPolicy.
| Enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Kebijakan pembongkaran yang tidak ditentukan; pengiriman hanya boleh dilakukan setelah pengambilan yang sesuai. |
LAST_IN_FIRST_OUT |
Pengiriman harus dilakukan dalam urutan terbalik dari pengambilan |
FIRST_IN_FIRST_OUT |
Pengiriman harus dilakukan dalam urutan yang sama dengan pengambilan |
LoadLimit
Menentukan batas muatan yang berlaku untuk kendaraan, misalnya, "truk ini hanya boleh mengangkut hingga 3.500 kg". Lihat loadLimits.
| Representasi JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Kolom | |
|---|---|
softMaxLoad |
Batas lunak beban. Lihat |
costPerUnitAboveSoftMax |
Jika beban pernah melebihi |
startLoadInterval |
Interval muatan yang dapat diterima dari kendaraan di awal rute. |
endLoadInterval |
Interval muatan yang dapat diterima dari kendaraan di akhir rute. |
maxLoad |
Jumlah beban maksimum yang dapat diterima. |
costPerKilometer |
Biaya memindahkan satu unit muatan sejauh satu kilometer untuk kendaraan ini. Hal ini dapat digunakan sebagai pengganti konsumsi bahan bakar: jika beban adalah berat (dalam Newton), maka beban*kilometer memiliki dimensi energi. Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request untuk mengetahui detail selengkapnya. |
costPerTraveledHour |
Biaya perjalanan dengan satu unit muatan selama satu jam untuk kendaraan ini. Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request untuk mengetahui detail selengkapnya. |
Interval
Interval jumlah muatan yang dapat diterima.
| Representasi JSON |
|---|
{ "min": string, "max": string } |
| Kolom | |
|---|---|
min |
Beban minimum yang dapat diterima. Harus ≥ 0. Jika keduanya ditentukan, |
max |
Beban maksimum yang dapat diterima. Harus ≥ 0. Jika tidak ditentukan, beban maksimum tidak dibatasi oleh pesan ini. Jika keduanya ditentukan, |
LoadCost
Biaya pemindahan satu unit beban selama Transition. Untuk beban tertentu, biaya adalah jumlah dari dua bagian:
- min(load,
loadThreshold) *costPerUnitBelowThreshold - max(0, load -
loadThreshold) *costPerUnitAboveThreshold
Dengan biaya ini, solusi lebih memilih untuk memenuhi permintaan tinggi terlebih dahulu, atau secara setara mengambil permintaan tinggi terakhir. Misalnya, jika kendaraan memiliki
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
dan rutenya adalah start,pickup,pickup,delivery,delivery,end dengan transisi:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
maka biaya yang dikeluarkan oleh LoadCost ini adalah (cost_below * load_below * kilometers + cost_above * load_above * kms)
- transisi 0: 0,0
- transisi 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transisi 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- transisi 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transisi 4: 0.0
Jadi, LoadCost di atas rute adalah 120,0.
Namun, jika rutenya adalah start,pickup,delivery,pickup,delivery,end dengan transisi:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
maka biaya yang dikeluarkan oleh LoadCost ini adalah
- transisi 0: 0,0
- transisi 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transisi 2: 0,0
- transisi 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transisi 4: 0.0
Di sini, LoadCost di sepanjang rute adalah 40,0.
LoadCost membuat solusi dengan transisi yang sangat berat menjadi lebih mahal.
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request untuk mengetahui detail selengkapnya.
| Representasi JSON |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| Kolom | |
|---|---|
loadThreshold |
Jumlah beban di atasnya biaya pemindahan satu unit beban berubah dari costPerUnitBelowThreshold menjadi costPerUnitAboveThreshold. Harus >= 0. |
costPerUnitBelowThreshold |
Biaya pemindahan unit beban, untuk setiap unit antara 0 dan nilai minimum. Harus berupa nilai terbatas, dan >= 0. |
costPerUnitAboveThreshold |
Biaya pemindahan unit beban, untuk setiap unit di atas nilai minimum. Dalam kasus khusus dengan nilai minimum = 0, ini adalah biaya tetap per unit. Harus berupa nilai terbatas, dan >= 0. |
DurationLimit
Batas yang menentukan durasi maksimum rute kendaraan. Bisa keras atau lembut.
Jika kolom batas lunak ditentukan, batas maksimal lunak dan biaya terkaitnya harus ditentukan bersama-sama.
| Representasi JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| Kolom | |
|---|---|
maxDuration |
Batas ketat yang membatasi durasi menjadi paling banyak maxDuration. |
softMaxDuration |
Batas lunak tidak memberlakukan batas durasi maksimum, tetapi jika dilanggar, rute akan dikenai biaya. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan satuan yang sama. Jika ditentukan, |
quadraticSoftMaxDuration |
Batas lunak tidak memberlakukan batas durasi maksimum, tetapi jika dilanggar, rute akan dikenai biaya, kuadrat dalam durasi. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan satuan yang sama. Jika
|
costPerHourAfterSoftMax |
Biaya per jam yang dikenakan jika batas Biaya tidak boleh negatif. |
costPerSquareHourAfterQuadraticSoftMax |
Biaya per jam persegi yang dikenakan jika batas Biaya tambahan adalah 0 jika durasi berada di bawah nilai minimum, jika tidak, biaya bergantung pada durasi sebagai berikut: Biaya tidak boleh negatif. |
DistanceLimit
Batas yang menentukan jarak maksimum yang dapat ditempuh. Bisa keras atau lembut.
Jika batas lunak ditentukan, softMaxMeters dan costPerKilometerAboveSoftMax harus ditentukan dan tidak boleh negatif.
| Representasi JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| Kolom | |
|---|---|
maxMeters |
Batas ketat yang membatasi jarak menjadi paling banyak maxMeters. Batas tidak boleh negatif. |
softMaxMeters |
Batas lunak yang tidak menerapkan batas jarak maksimum, tetapi jika dilanggar akan menimbulkan biaya yang ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, softMaxMeters harus kurang dari maxMeters dan tidak boleh negatif. |
costPerKilometerBelowSoftMax |
Biaya per kilometer yang dikeluarkan, meningkat hingga Biaya ini tidak didukung di |
costPerKilometerAboveSoftMax |
Biaya per kilometer yang dikenakan jika jarak melebihi batas Biaya tidak boleh negatif. |
BreakRule
Aturan untuk membuat jeda waktu bagi kendaraan (misalnya, istirahat makan siang). Istirahat adalah periode waktu yang berurutan saat kendaraan tetap tidak bergerak di posisinya saat ini dan tidak dapat melakukan kunjungan apa pun. Istirahat dapat terjadi:
- selama perjalanan antara dua kunjungan (yang mencakup waktu tepat sebelum atau tepat setelah kunjungan, tetapi tidak di tengah kunjungan), yang dalam hal ini memperpanjang waktu transit yang sesuai antara kunjungan,
- atau sebelum kendaraan dinyalakan (kendaraan mungkin tidak dinyalakan di tengah istirahat), dalam hal ini tidak memengaruhi waktu mulai kendaraan.
- atau setelah akhir kendaraan (sama, dengan waktu akhir kendaraan).
| Representasi JSON |
|---|
{ "breakRequests": [ { object ( |
| Kolom | |
|---|---|
breakRequests[] |
Urutan jeda. Lihat pesan |
frequencyConstraints[] |
Beberapa |
BreakRequest
Urutan istirahat (yaitu jumlah dan urutannya) yang berlaku untuk setiap kendaraan harus diketahui sebelumnya. BreakRequest yang berulang menentukan urutan tersebut, dalam urutan yang harus terjadi. Rentang waktunya (earliestStartTime / latestStartTime) mungkin tumpang-tindih, tetapi harus kompatibel dengan urutannya (ini diperiksa).
| Representasi JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Kolom | |
|---|---|
earliestStartTime |
Wajib. Batas bawah (inklusif) pada awal jeda. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
latestStartTime |
Wajib. Batas atas (inklusif) pada awal jeda. Menggunakan RFC 3339 yang outputnya akan selalu dinormalisasi Z dan menggunakan 0, 3, 6, atau 9 digit pecahan. Offset selain "Z" juga diterima. Contoh: |
minDuration |
Wajib. Durasi minimum jeda. Harus positif. |
FrequencyConstraint
Frekuensi dan durasi jeda yang ditentukan di atas dapat dibatasi lebih lanjut dengan menerapkan frekuensi jeda minimum, seperti "Harus ada jeda minimal 1 jam setiap 12 jam". Dengan asumsi bahwa hal ini dapat diartikan sebagai "Dalam jangka waktu geser 12 jam, harus ada setidaknya satu istirahat minimal satu jam", contoh tersebut akan diterjemahkan ke FrequencyConstraint berikut:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Waktu dan durasi jeda dalam solusi akan mematuhi semua batasan tersebut, selain periode waktu dan durasi minimum yang telah ditentukan dalam BreakRequest.
FrequencyConstraint dalam praktiknya dapat berlaku untuk jeda yang tidak berurutan. Misalnya, jadwal berikut mematuhi contoh "1h every 12h":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| Representasi JSON |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| Kolom | |
|---|---|
minBreakDuration |
Wajib. Durasi jeda minimum untuk batasan ini. Non-negatif. Lihat deskripsi |
maxInterBreakDuration |
Wajib. Rentang waktu maksimum yang diizinkan untuk setiap interval waktu dalam rute yang tidak menyertakan istirahat |
Tujuan
Tujuan menggantikan model biaya sepenuhnya, dan oleh karena itu tidak kompatibel dengan biaya yang sudah ada. Setiap tujuan dipetakan ke sejumlah biaya yang telah ditentukan sebelumnya untuk, misalnya, atribut kendaraan, pengiriman, atau transisi.
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request untuk mengetahui detail selengkapnya.
| Representasi JSON |
|---|
{
"type": enum ( |
| Kolom | |
|---|---|
type |
Jenis tujuan. |
weight |
Seberapa besar bobot tujuan ini dibandingkan dengan tujuan lainnya. Nilai ini dapat berupa bilangan non-negatif apa pun, bobot tidak harus berjumlah 1. Bobot defaultnya adalah 1,0. |
Jenis
Jenis tujuan yang akan dipetakan ke serangkaian biaya.
| Enum | |
|---|---|
DEFAULT |
Kumpulan biaya default akan digunakan untuk memastikan solusi yang wajar. Catatan: tujuan ini dapat digunakan sendiri, tetapi juga akan selalu ditambahkan dengan bobot 1.0, sebagai dasar, ke tujuan yang ditentukan oleh pengguna, jika belum ada. |
MIN_DISTANCE |
"MIN". Minimalkan total jarak yang ditempuh. |
MIN_WORKING_TIME |
Minimalkan total waktu kerja, yang dijumlahkan untuk semua kendaraan. |
MIN_TRAVEL_TIME |
Sama seperti di atas, tetapi hanya berfokus pada waktu perjalanan. |
MIN_NUM_VEHICLES |
Minimalkan jumlah kendaraan yang digunakan. |
DurationDistanceMatrix
Menentukan matriks durasi dan jarak dari lokasi awal kunjungan dan kendaraan ke lokasi akhir kunjungan dan kendaraan.
| Representasi JSON |
|---|
{
"rows": [
{
object ( |
| Kolom | |
|---|---|
rows[] |
Menentukan baris matriks durasi dan jarak. Harus memiliki elemen sebanyak |
vehicleStartTag |
Tag yang menentukan kendaraan mana yang akan dikenai matriks durasi dan jarak ini. Jika kosong, ini berlaku untuk semua kendaraan, dan hanya boleh ada satu matriks. Setiap mulai kendaraan harus cocok dengan tepat satu matriks, yaitu tepat satu kolom Semua matriks harus memiliki |
Baris
Menentukan baris matriks durasi dan jarak.
| Representasi JSON |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| Kolom | |
|---|---|
durations[] |
Nilai durasi untuk baris tertentu. Harus memiliki elemen sebanyak |
meters[] |
Nilai jarak untuk baris tertentu. Jika tidak ada biaya atau batasan yang merujuk pada jarak dalam model, kolom ini dapat dibiarkan kosong; jika tidak, kolom ini harus memiliki elemen sebanyak |
TransitionAttributes
Menentukan atribut transisi antara dua kunjungan berturut-turut di rute. Beberapa TransitionAttributes dapat berlaku untuk transisi yang sama: dalam hal ini, semua biaya tambahan akan ditambahkan dan batasan atau batas yang paling ketat akan berlaku (mengikuti semantik "AND" alami).
| Representasi JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Kolom | |
|---|---|
srcTag |
Tag yang menentukan kumpulan transisi (src->dst) yang berlaku untuk atribut ini. Kunjungan sumber atau start kendaraan cocok jika |
excludedSrcTag |
Lihat |
dstTag |
Kunjungan tujuan atau akhir kendaraan cocok jika |
excludedDstTag |
Lihat |
cost |
Menentukan biaya untuk melakukan transisi ini. Nilai ini menggunakan satuan yang sama dengan semua biaya lainnya dalam model dan tidak boleh negatif. Biaya ini diterapkan di atas semua biaya yang ada. |
costPerKilometer |
Menentukan biaya per kilometer yang diterapkan pada jarak yang ditempuh saat melakukan transisi ini. Nilai ini ditambahkan ke |
distanceLimit |
Menentukan batas jarak yang ditempuh saat melakukan transisi ini. Mulai 2021/06, hanya batas ringan yang didukung. |
delay |
Menentukan penundaan yang terjadi saat melakukan transisi ini. Penundaan ini selalu terjadi setelah menyelesaikan kunjungan sumber dan sebelum memulai kunjungan tujuan. |
ShipmentTypeIncompatibility
Menentukan ketidakcocokan antara pengiriman, bergantung pada shipmentType-nya. Tampilan pengiriman yang tidak kompatibel pada rute yang sama dibatasi berdasarkan mode ketidakcocokan.
| Representasi JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| Kolom | |
|---|---|
types[] |
Daftar jenis yang tidak kompatibel. Dua pengiriman yang memiliki |
incompatibilityMode |
Mode diterapkan pada ketidakcocokan. |
IncompatibilityMode
Mode yang menentukan cara pembatasan tampilan pengiriman yang tidak kompatibel pada rute yang sama.
| Enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Mode ketidakcocokan tidak ditentukan. Nilai ini tidak boleh digunakan. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Dalam mode ini, dua pengiriman dengan jenis yang tidak kompatibel tidak akan pernah menggunakan kendaraan yang sama. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Dalam mode ini, dua pengiriman dengan jenis yang tidak kompatibel tidak akan pernah berada di kendaraan yang sama pada waktu yang sama:
|
ShipmentTypeRequirement
Menentukan persyaratan antar-pengiriman berdasarkan shipmentType-nya. Detail persyaratan ditentukan oleh mode persyaratan.
| Representasi JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| Kolom | |
|---|---|
requiredShipmentTypeAlternatives[] |
Daftar jenis pengiriman alternatif yang diperlukan oleh |
dependentShipmentTypes[] |
Semua pengiriman dengan jenis di kolom CATATAN: Rantai persyaratan yang membuat |
requirementMode |
Mode yang diterapkan pada persyaratan. |
RequirementMode
Mode yang menentukan tampilan pengiriman dependen pada rute.
| Enum | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Mode persyaratan tidak ditentukan. Nilai ini tidak boleh digunakan. |
PERFORMED_BY_SAME_VEHICLE |
Dalam mode ini, semua pengiriman "dependen" harus menggunakan kendaraan yang sama dengan minimal satu pengiriman "wajib". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Dengan mode Oleh karena itu, pengambilan kiriman "dependent" harus memiliki salah satu dari:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Sama seperti sebelumnya, kecuali pengiriman "dependent" harus memiliki pengiriman "required" pada kendaraan saat pengiriman. |
PrecedenceRule
Aturan prioritas antara dua peristiwa (setiap peristiwa adalah pengambilan atau pengiriman kiriman): peristiwa "kedua" harus dimulai setidaknya offsetDuration setelah "pertama" dimulai.
Beberapa preseden dapat merujuk pada peristiwa yang sama (atau terkait), misalnya, "pengambilan B terjadi setelah pengiriman A" dan "pengambilan C terjadi setelah pengambilan B".
Selain itu, prioritas hanya berlaku jika kedua pengiriman dilakukan dan diabaikan jika tidak.
| Representasi JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| Kolom | |
|---|---|
firstIsDelivery |
Menunjukkan apakah peristiwa "pertama" adalah pengiriman. |
secondIsDelivery |
Menunjukkan apakah peristiwa "kedua" adalah pengiriman. |
offsetDuration |
Selisih antara peristiwa "pertama" dan "kedua". Nilainya bisa negatif. |
firstIndex |
Indeks pengiriman peristiwa "pertama". Kolom ini harus ditentukan. |
secondIndex |
Indeks pengiriman peristiwa "second". Kolom ini harus ditentukan. |