Indeks
RouteOptimization(antarmuka)AggregatedMetrics(pesan)BatchOptimizeToursMetadata(pesan)BatchOptimizeToursRequest(pesan)BatchOptimizeToursRequest.AsyncModelConfig(pesan)BatchOptimizeToursResponse(pesan)BreakRule(pesan)BreakRule.BreakRequest(pesan)BreakRule.FrequencyConstraint(pesan)DataFormat(enum)DistanceLimit(pesan)GcsDestination(pesan)GcsSource(pesan)InjectedSolutionConstraint(pesan)InjectedSolutionConstraint.ConstraintRelaxation(pesan)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(pesan)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(enum)InputConfig(pesan)Location(pesan)OptimizeToursLongRunningMetadata(pesan)OptimizeToursRequest(pesan)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(pesan)OptimizeToursResponse.Metrics(pesan)OptimizeToursUriMetadata(pesan)OptimizeToursUriRequest(pesan)OptimizeToursUriResponse(pesan)OptimizeToursValidationError(pesan)OptimizeToursValidationError.FieldReference(pesan)OutputConfig(pesan)RouteModifiers(pesan)Shipment(pesan)Shipment.Load(pesan)Shipment.VisitRequest(pesan)ShipmentModel(pesan)ShipmentModel.DurationDistanceMatrix(pesan)ShipmentModel.DurationDistanceMatrix.Row(pesan)ShipmentModel.Objective(pesan)ShipmentModel.Objective.Type(enum)ShipmentModel.PrecedenceRule(pesan)ShipmentRoute(pesan)ShipmentRoute.Break(pesan)ShipmentRoute.EncodedPolyline(pesan)ShipmentRoute.Transition(pesan)ShipmentRoute.VehicleLoad(pesan)ShipmentRoute.Visit(pesan)ShipmentRoute.Visit.VisitType(enum)ShipmentTypeIncompatibility(pesan)ShipmentTypeIncompatibility.IncompatibilityMode(enum)ShipmentTypeRequirement(pesan)ShipmentTypeRequirement.RequirementMode(enum)SkippedShipment(pesan)SkippedShipment.Reason(pesan)SkippedShipment.Reason.Code(enum)TimeWindow(pesan)TransitionAttributes(pesan)Uri(pesan)Vehicle(pesan)Vehicle.DurationLimit(pesan)Vehicle.LoadLimit(pesan)Vehicle.LoadLimit.Interval(pesan)Vehicle.LoadLimit.LoadCost(pesan)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(pesan)Waypoint(pesan)
RouteOptimization
Layanan untuk mengoptimalkan tur kendaraan.
Validitas jenis kolom tertentu:
google.protobuf.Timestamp- Waktu dalam waktu Unix: detik sejak 1970-01-01T00:00:00+00:00.
- detik harus dalam [0, 253402300799], yaitu dalam [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos harus tidak ditetapkan atau ditetapkan ke 0.
google.protobuf.Duration- detik harus dalam [0, 253402300799], yaitu dalam [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- nanos harus tidak ditetapkan atau ditetapkan ke 0.
google.type.LatLng- latitude harus dalam [-90.0, 90.0].
- bujur harus dalam [-180.0, 180.0].
- setidaknya salah satu dari lintang dan bujur harus bukan nol.
| BatchOptimizeTours |
|---|
|
Mengoptimalkan tur kendaraan untuk satu atau beberapa pesan Metode ini adalah Operasi yang Berjalan Lama (LRO). Input untuk pengoptimalan (pesan Pengguna dapat melakukan polling Jika kolom Jika kolom
|
| OptimizeTours |
|---|
|
Mengirim Model Tujuannya adalah untuk memberikan penetapan
|
| OptimizeToursLongRunning |
|---|
|
Ini adalah varian metode
|
| OptimizeToursUri |
|---|
|
Ini adalah varian metode Klien menentukan URI Metode ini lebih disarankan daripada metode
|
AggregatedMetrics
Metrik gabungan untuk ShipmentRoute (resp. untuk OptimizeToursResponse) di semua elemen Transition dan/atau Visit (resp. di semua elemen ShipmentRoute).
| Kolom | |
|---|---|
performed_shipment_count |
Jumlah pengiriman yang dilakukan. Perhatikan bahwa pasangan pengambilan dan pengiriman hanya dihitung satu kali. |
travel_duration |
Total durasi perjalanan untuk rute atau solusi. |
wait_duration |
Total durasi tunggu untuk rute atau solusi. |
delay_duration |
Total durasi penundaan untuk rute atau solusi. |
break_duration |
Total durasi istirahat untuk rute atau solusi. |
visit_duration |
Total durasi kunjungan untuk rute atau solusi. |
total_duration |
Total durasi harus sama dengan jumlah semua durasi di atas. Untuk rute, hal ini juga sesuai dengan: |
travel_distance_meters |
Total jarak perjalanan untuk rute atau solusi. |
max_loads |
Muatan maksimum yang dicapai di seluruh rute (resp. solusi), untuk setiap jumlah di rute ini (resp. solusi), dihitung sebagai maksimum di semua |
performed_mandatory_shipment_count |
Jumlah pengiriman wajib yang dilakukan. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
performed_shipment_penalty_cost_sum |
Jumlah Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
BatchOptimizeToursMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Meminta pengoptimalan tur batch sebagai operasi asinkron. Setiap file input harus berisi satu OptimizeToursRequest, dan setiap file output akan berisi satu OptimizeToursResponse. Permintaan tersebut berisi informasi untuk membaca/menulis dan mengurai file. Semua file input dan output harus berada dalam project yang sama.
| Kolom | |
|---|---|
parent |
Wajib. Project target dan lokasi untuk melakukan panggilan. Format:
Nilai |
model_configs[] |
Wajib. Informasi Input/Output setiap model pembelian, seperti jalur file dan format data. |
AsyncModelConfig
Informasi untuk menyelesaikan satu model pengoptimalan secara asinkron.
| Kolom | |
|---|---|
display_name |
Opsional. Nama model yang ditentukan pengguna, dapat digunakan sebagai alias oleh pengguna untuk melacak model. |
input_config |
Wajib. Informasi tentang model input. |
output_config |
Wajib. Informasi lokasi output yang diinginkan. |
BatchOptimizeToursResponse
Jenis ini tidak memiliki kolom.
Respons terhadap BatchOptimizeToursRequest. Ini ditampilkan dalam Operasi yang Berjalan Lama setelah operasi selesai.
BreakRule
Aturan untuk membuat waktu istirahat bagi kendaraan (misalnya, istirahat makan siang). Istirahat adalah jangka waktu yang berurutan saat kendaraan tetap tidak ada aktivitas di posisinya saat ini dan tidak dapat melakukan kunjungan apa pun. Kerusakan dapat terjadi:
- selama perjalanan antara dua kunjungan (yang mencakup waktu tepat sebelum atau tepat setelah kunjungan, tetapi tidak di tengah kunjungan), dalam hal ini waktu transit yang sesuai antara kunjungan akan diperpanjang,
- atau sebelum kendaraan mulai (kendaraan tidak boleh mulai di tengah-tengah istirahat), sehingga tidak memengaruhi waktu mulai kendaraan.
- atau setelah akhir kendaraan (sama, dengan waktu akhir kendaraan).
| Kolom | |
|---|---|
break_requests[] |
Urutan jeda. Lihat pesan |
frequency_constraints[] |
Beberapa |
BreakRequest
Urutan istirahat (yaitu jumlah dan urutannya) yang berlaku untuk setiap kendaraan harus diketahui terlebih dahulu. BreakRequest berulang menentukan urutan tersebut, sesuai urutan kemunculannya. Jendela waktu mereka (earliest_start_time / latest_start_time) mungkin tumpang-tindih, tetapi harus kompatibel dengan pesanan (hal ini diperiksa).
| Kolom | |
|---|---|
earliest_start_time |
Wajib. Batas bawah (inklusif) pada awal istirahat. |
latest_start_time |
Wajib. Batas atas (inklusif) pada awal istirahat. |
min_duration |
Wajib. Durasi minimum jeda. Harus positif. |
FrequencyConstraint
Seseorang dapat lebih membatasi frekuensi dan durasi istirahat yang ditentukan di atas, dengan menerapkan frekuensi istirahat minimum, seperti "Harus ada istirahat minimal 1 jam setiap 12 jam". Dengan asumsi bahwa ini dapat ditafsirkan sebagai "Dalam periode waktu geser 12 jam, harus ada setidaknya satu istirahat minimal satu jam", contoh tersebut akan diterjemahkan ke FrequencyConstraint berikut:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Waktu dan durasi istirahat 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 mengikuti contoh "1 jam setiap 12 jam":
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
| Kolom | |
|---|---|
min_break_duration |
Wajib. Durasi istirahat minimum untuk batasan ini. Nonnegatif. Lihat deskripsi |
max_inter_break_duration |
Wajib. Rentang maksimum yang diizinkan untuk interval waktu apa pun dalam rute yang tidak menyertakan setidaknya sebagian istirahat |
DataFormat
Format data untuk file input dan output.
| Enum | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
Nilai tidak valid, format tidak boleh UNSPECIFIED. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
Format teks Buffering Protokol. Lihat https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Batas yang menentukan jarak maksimum yang dapat ditempuh. Batas ini dapat berupa batas ketat atau longgar.
Jika batas fleksibel ditentukan, soft_max_meters dan cost_per_kilometer_above_soft_max harus ditentukan dan tidak boleh negatif.
| Kolom | |
|---|---|
max_meters |
Batas ketat yang membatasi jarak hingga maksimum max_meters. Batas tidak boleh negatif. |
soft_max_meters |
Batas yang dapat dilewati tidak menerapkan batas jarak maksimum, tetapi jika dilanggar, akan menghasilkan biaya yang ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, soft_max_meters harus kurang dari max_meters dan harus non-negatif. |
cost_per_kilometer_below_soft_max |
Biaya per kilometer yang dikenakan, meningkat hingga Biaya ini tidak didukung di |
cost_per_kilometer_above_soft_max |
Biaya per kilometer yang dikenakan jika jarak melebihi batas Biaya tidak boleh negatif. |
GcsDestination
Lokasi Google Cloud Storage tempat file output akan ditulis.
| Kolom | |
|---|---|
uri |
Wajib. URI Google Cloud Storage. |
GcsSource
Lokasi Google Cloud Storage tempat file input akan dibaca.
| Kolom | |
|---|---|
uri |
Wajib. URI objek Google Cloud Storage dengan format |
InjectedSolutionConstraint
Solusi yang dimasukkan dalam permintaan, termasuk informasi tentang kunjungan mana yang harus dibatasi dan bagaimana kunjungan tersebut harus dibatasi.
| Kolom | |
|---|---|
routes[] |
Rute solusi yang akan dimasukkan. Beberapa rute mungkin dihilangkan dari solusi awal. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skipped_shipments[] |
Pengiriman solusi yang dilewati untuk diinjeksikan. Beberapa mungkin dihilangkan dari solusi aslinya. Lihat kolom |
constraint_relaxations[] |
Untuk nol atau beberapa grup kendaraan, menentukan kapan dan seberapa banyak batasan harus dilonggarkan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan dibatasi sepenuhnya. |
ConstraintRelaxation
Untuk sekelompok kendaraan, menentukan batas yang akan melonggarkan batasan pada kunjungan dan ke tingkat mana. Pengiriman yang tercantum dalam kolom skipped_shipment dibatasi untuk dilewati; yaitu, pengiriman tersebut tidak dapat dilakukan.
| Kolom | |
|---|---|
relaxations[] |
Semua pelonggaran batasan kunjungan yang akan berlaku untuk kunjungan pada rute dengan kendaraan di |
vehicle_indices[] |
Menentukan indeks kendaraan yang akan menerapkan batasan kunjungan Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations kosong, waktu mulai dan urutan semua kunjungan pada routes sepenuhnya dibatasi dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan berakhir kendaraan di routes sepenuhnya dibatasi, kecuali jika kendaraan kosong (yaitu, tidak memiliki kunjungan dan used_if_route_is_empty ditetapkan ke salah dalam model).
relaxations(i).level menentukan tingkat relaksasi batasan yang diterapkan ke kunjungan #j yang memenuhi:
route.visits(j).start_time >= relaxations(i).threshold_timeDANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, waktu mulai kendaraan dilonggarkan menjadi relaxations(i).level jika memenuhi:
vehicle_start_time >= relaxations(i).threshold_timeDANrelaxations(i).threshold_visit_count == 0dan akhir kendaraan dilonggarkan menjadirelaxations(i).leveljika memenuhi:vehicle_end_time >= relaxations(i).threshold_timeDANroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Untuk menerapkan tingkat relaksasi jika kunjungan memenuhi threshold_visit_count ATAU threshold_time, tambahkan dua relaxations dengan level yang sama: satu dengan hanya threshold_visit_count yang ditetapkan dan yang lainnya dengan hanya threshold_time yang ditetapkan. Jika kunjungan memenuhi kondisi beberapa relaxations, tingkat yang paling longgar akan berlaku. Akibatnya, dari awal kendaraan melalui kunjungan rute secara berurutan hingga akhir kendaraan, tingkat relaksasi menjadi lebih santai: yaitu, tingkat relaksasi tidak menurun seiring berjalannya rute.
Waktu dan urutan kunjungan rute yang tidak memenuhi kondisi nilai minimum relaxations mana pun sepenuhnya dibatasi dan tidak ada kunjungan yang dapat dimasukkan ke dalam urutan ini. Selain itu, jika awal atau akhir kendaraan tidak memenuhi kondisi relaksasi apa pun, waktunya akan tetap, kecuali jika kendaraan kosong.
| Kolom | |
|---|---|
level |
Tingkat relaksasi batasan yang berlaku saat kondisi pada atau setelah |
threshold_time |
Waktu saat atau setelah pelonggaran |
threshold_visit_count |
Jumlah kunjungan saat atau setelah pelonggaran Jika |
Level
Menyatakan berbagai tingkat relaksasi batasan, yang diterapkan untuk kunjungan dan kunjungan berikutnya saat memenuhi kondisi nilai minimum.
Enumerasi di bawah ini diurutkan berdasarkan tingkat relaksasi yang meningkat.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Tingkat relaksasi default implisit: tidak ada batasan yang direlaksasi, yaitu semua kunjungan dibatasi sepenuhnya. Nilai ini tidak boleh digunakan secara eksplisit di |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Waktu mulai kunjungan dan waktu mulai/akhir kendaraan akan dilonggarkan, tetapi setiap kunjungan tetap terikat pada kendaraan yang sama dan urutan kunjungan harus diperhatikan: tidak ada kunjungan yang dapat disisipkan di antara atau sebelum kunjungan tersebut. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AFTER_THRESHOLD, tetapi urutan kunjungan juga dilonggarkan: kunjungan hanya dapat dilakukan oleh kendaraan ini, tetapi berpotensi tidak dilakukan. |
RELAX_ALL_AFTER_THRESHOLD |
Sama seperti RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, tetapi kendaraan juga dilonggarkan: kunjungan sepenuhnya gratis pada atau setelah waktu batas dan berpotensi tidak dilakukan. |
InputConfig
Tentukan input untuk [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Kolom | |
|---|---|
data_format |
Wajib. Format data input. |
Kolom union source. Wajib. source hanya dapat berupa salah satu dari berikut: |
|
gcs_source |
Lokasi Google Cloud Storage. Objek ini harus berupa satu objek (file). |
Lokasi
Menggabungkan lokasi (titik geografis, dan judul opsional).
| Kolom | |
|---|---|
lat_lng |
Koordinat geografis titik jalan. |
heading |
Arah kompas yang terkait dengan arah arus lalu lintas. Nilai ini digunakan untuk menentukan sisi jalan yang akan digunakan untuk penjemputan dan pengantaran. Nilai arah dapat berkisar antara 0 hingga 360, dengan 0 menentukan arah ke Utara, 90 menentukan arah ke Timur, dll. |
OptimizeToursLongRunningMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan OptimizeToursLongRunning.
OptimizeToursRequest
Permintaan yang akan diberikan ke pemecah masalah pengoptimalan tur yang menentukan model pengiriman yang akan dipecahkan serta parameter pengoptimalan.
| Kolom | |
|---|---|
parent |
Wajib. Project atau lokasi target untuk melakukan panggilan. Format:
Nilai |
timeout |
Jika waktu tunggu ini ditetapkan, server akan menampilkan respons sebelum periode waktu tunggu berlalu atau batas waktu server untuk permintaan sinkron tercapai, mana saja yang lebih cepat. Untuk permintaan asinkron, server akan menghasilkan solusi (jika memungkinkan) sebelum waktu tunggu habis. |
model |
Model pengiriman yang akan diselesaikan. |
solving_mode |
Secara default, mode penyelesaiannya adalah |
search_mode |
Mode penelusuran yang digunakan untuk menyelesaikan permintaan. |
injected_first_solution_routes[] |
Memandu algoritma pengoptimalan dalam menemukan solusi pertama yang mirip dengan solusi sebelumnya. Model dibatasi saat solusi pertama dibuat. Setiap pengiriman yang tidak dilakukan pada rute akan dilewati secara implisit dalam solusi pertama, tetapi dapat dilakukan dalam solusi berikutnya. Solusi harus memenuhi beberapa asumsi validitas dasar:
Jika solusi yang dimasukkan tidak layak, error validasi tidak selalu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan. |
injected_solution_constraint |
Batasi algoritma pengoptimalan untuk menemukan solusi akhir yang mirip dengan solusi sebelumnya. Misalnya, ini dapat digunakan untuk membekukan bagian rute yang telah selesai atau yang akan diselesaikan, tetapi tidak boleh diubah. Jika solusi yang dimasukkan tidak layak, error validasi tidak selalu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan. |
refresh_details_routes[] |
Jika tidak kosong, rute yang diberikan akan diperbarui, tanpa mengubah urutan kunjungan atau waktu perjalanan yang mendasarinya: hanya detail lain yang akan diperbarui. Tindakan ini tidak menyelesaikan model. Mulai 11/2020, kolom ini hanya mengisi polyline rute yang tidak kosong dan mengharuskan Kolom Kolom ini tidak boleh digunakan bersama dengan
|
interpret_injected_solutions_using_labels |
Jika benar:
Penafsiran ini berlaku untuk kolom Jika benar, label dalam kategori berikut harus muncul maksimal satu kali dalam kategorinya:
Jika Menghapus kunjungan rute atau seluruh rute dari solusi yang dimasukkan dapat berdampak pada batasan tersirat, yang dapat menyebabkan perubahan pada solusi, error validasi, atau ketidaklayakan. CATATAN: Pemanggil harus memastikan bahwa setiap |
consider_road_traffic |
Pertimbangkan estimasi traffic dalam menghitung kolom |
populate_polylines |
Jika benar, polyline akan diisi dalam |
populate_transition_polylines |
Jika true, polyline dan token rute akan diisi dalam respons |
allow_large_deadline_despite_interruption_risk |
Jika ini ditetapkan, permintaan dapat memiliki batas waktu (lihat https://grpc.io/blog/deadlines) hingga 60 menit. Jika tidak, batas waktu maksimumnya hanya 30 menit. Perhatikan bahwa permintaan yang berjalan lama memiliki risiko gangguan yang jauh lebih besar (tetapi masih kecil). |
use_geodesic_distances |
Jika benar (true), jarak perjalanan akan dihitung menggunakan jarak geodesi, bukan jarak Google Maps, dan waktu perjalanan akan dihitung menggunakan jarak geodesi dengan kecepatan yang ditentukan oleh |
label |
Label yang dapat digunakan untuk mengidentifikasi permintaan ini, yang dilaporkan kembali di |
geodesic_meters_per_second |
Jika |
max_validation_errors |
Memotong jumlah error validasi yang ditampilkan. Error ini biasanya dilampirkan ke payload error INVALID_ARGUMENT sebagai detail error BadRequest (https://cloud.google.com/apis/design/errors#error_details), kecuali jika solving_mode=VALIDATE_ONLY: lihat kolom |
SearchMode
Mode yang menentukan perilaku penelusuran, yang menyeimbangkan latensi versus kualitas solusi. Di semua mode, batas waktu permintaan global diterapkan.
| Enum | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Mode penelusuran yang tidak ditentukan, setara dengan RETURN_FAST. |
RETURN_FAST |
Hentikan penelusuran setelah menemukan solusi pertama yang baik. |
CONSUME_ALL_AVAILABLE_TIME |
Menghabiskan semua waktu yang tersedia untuk mencari solusi yang lebih baik. |
SolvingMode
Menentukan cara pemecah masalah menangani permintaan. Dalam semua mode kecuali VALIDATE_ONLY, jika permintaan tidak valid, Anda akan menerima error INVALID_REQUEST. Lihat max_validation_errors untuk membatasi jumlah error yang ditampilkan.
| Enum | |
|---|---|
DEFAULT_SOLVE |
Selesaikan model. Peringatan dapat dikeluarkan di [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Hanya memvalidasi model tanpa menyelesaikannya: mengisi OptimizeToursResponse.validation_errors sebanyak mungkin. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Hanya mengisi PENTING: tidak semua pengiriman yang tidak memungkinkan ditampilkan di sini, tetapi hanya pengiriman yang terdeteksi sebagai tidak memungkinkan selama pra-pemrosesan. |
TRANSFORM_AND_RETURN_REQUEST |
Mode ini hanya berfungsi jika Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request untuk mengetahui detail selengkapnya. |
OptimizeToursResponse
Respons setelah menyelesaikan masalah pengoptimalan tur yang berisi rute yang diikuti oleh setiap kendaraan, pengiriman yang telah dilewati, dan biaya keseluruhan solusi.
| Kolom | |
|---|---|
routes[] |
Rute yang dihitung untuk setiap kendaraan; rute ke-i sesuai dengan kendaraan ke-i dalam model. |
request_label |
Salinan |
skipped_shipments[] |
Daftar semua pengiriman yang dilewati. |
validation_errors[] |
Daftar semua error validasi yang dapat kami deteksi secara independen. Lihat penjelasan "MULTIPLE ERRORS" untuk pesan |
processed_request |
Dalam beberapa kasus, kami mengubah permintaan yang masuk sebelum menyelesaikannya, yaitu menambahkan biaya. Jika solving_mode == TRANSFORM_AND_RETURN_REQUEST, permintaan yang diubah akan ditampilkan di sini. Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request untuk mengetahui detail selengkapnya. |
metrics |
Metrik durasi, jarak, dan penggunaan untuk solusi ini. |
Metrik
Metrik keseluruhan, yang digabungkan di semua rute.
| Kolom | |
|---|---|
aggregated_route_metrics |
Digabungkan di seluruh rute. Setiap metrik adalah jumlah (atau maksimum, untuk beban) di semua kolom |
skipped_mandatory_shipment_count |
Jumlah pengiriman wajib yang dilewati. |
used_vehicle_count |
Jumlah kendaraan yang digunakan. Catatan: jika rute kendaraan kosong dan |
earliest_vehicle_start_time |
Waktu mulai paling awal untuk kendaraan yang digunakan, dihitung sebagai nilai minimum dari semua kendaraan yang digunakan sebesar |
latest_vehicle_end_time |
Waktu berakhir terbaru untuk kendaraan yang digunakan, dihitung sebagai nilai maksimum dari semua kendaraan yang digunakan sebesar |
costs |
Biaya solusi, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, yang relatif terhadap OptimizeToursRequest input, misalnya "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan di seluruh solusi. Dengan kata lain, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan di seluruh solusi. 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. |
total_cost |
Total biaya solusi. Jumlah semua nilai dalam peta biaya. |
OptimizeToursUriMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan OptimizeToursUri.
OptimizeToursUriRequest
Permintaan yang digunakan oleh metode OptimizeToursUri.
| Kolom | |
|---|---|
parent |
Wajib. Project atau lokasi target untuk melakukan panggilan. Format:
Nilai |
input |
Wajib. URI objek Cloud Storage yang berisi |
output |
Wajib. URI objek Cloud Storage yang akan berisi |
OptimizeToursUriResponse
Respons yang ditampilkan oleh metode OptimizeToursUri.
| Kolom | |
|---|---|
output |
Opsional. URI objek Cloud Storage yang berisi
|
OptimizeToursValidationError
Menjelaskan error atau peringatan yang terjadi saat memvalidasi OptimizeToursRequest.
| Kolom | |
|---|---|
code |
Error validasi ditentukan oleh pasangan ( Kolom setelah bagian ini memberikan lebih banyak konteks tentang error. MULTIPLE ERRORS: Jika ada beberapa error, proses validasi akan mencoba menampilkan beberapa di antaranya. Sama seperti compiler, ini adalah proses yang tidak sempurna. Beberapa error validasi akan bersifat "fatal", yang berarti error tersebut menghentikan seluruh proses validasi. Hal ini berlaku untuk error STABILITAS: |
display_name |
Nama tampilan error. |
fields[] |
Konteks error dapat melibatkan 0, 1 (sering kali), atau beberapa kolom. Misalnya, merujuk ke kendaraan #4 dan pengambilan pertama pengiriman #2 dapat dilakukan sebagai berikut: Namun, perhatikan bahwa kardinalitas |
error_message |
String yang dapat dibaca manusia yang menjelaskan error. Terdapat pemetaan 1:1 antara STABILITAS: Tidak stabil: pesan error yang terkait dengan |
offending_values |
Dapat berisi nilai kolom. Opsi ini tidak selalu tersedia. Anda sama sekali tidak boleh mengandalkannya dan hanya menggunakannya untuk proses debug model manual. |
FieldReference
Menentukan konteks untuk error validasi. FieldReference selalu merujuk ke kolom tertentu dalam file ini dan mengikuti struktur hierarkis yang sama. Misalnya, kita dapat menentukan elemen #2 dari start_time_windows kendaraan #5 menggunakan:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Namun, kami menghilangkan entitas tingkat teratas seperti OptimizeToursRequest atau ShipmentModel agar pesan tidak terlalu panjang.
| Kolom | |
|---|---|
name |
Nama kolom, misalnya, "vehicles". |
sub_field |
Subkolom bertingkat secara rekursif, jika diperlukan. |
Kolom union
|
|
index |
Indeks kolom jika diulang. |
key |
Kunci jika kolom adalah peta. |
OutputConfig
Tentukan tujuan untuk hasil [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Kolom | |
|---|---|
data_format |
Wajib. Format data output. |
Kolom union destination. Wajib. destination hanya dapat berupa salah satu dari berikut: |
|
gcs_destination |
Lokasi Google Cloud Storage yang menjadi tujuan penulisan output. |
RouteModifiers
Menggabungkan serangkaian kondisi opsional yang harus dipenuhi saat menghitung rute kendaraan. Hal ini mirip dengan RouteModifiers di Routes Preferred API Google Maps Platform; lihat: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Kolom | |
|---|---|
avoid_tolls |
Menentukan apakah akan menghindari jalan tol jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi jalan tol. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_highways |
Menentukan apakah akan menghindari jalan raya jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi jalan raya. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_ferries |
Menentukan apakah akan menghindari kapal feri jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi perjalanan dengan kapal feri. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_indoor |
Opsional. Menentukan apakah akan menghindari navigasi di dalam ruangan jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi navigasi dalam ruangan. Hanya berlaku untuk mode perjalanan |
Pengiriman
Pengiriman satu item, dari salah satu pengambilan ke salah satu pengirimannya. Agar pengiriman dianggap telah dilakukan, kendaraan unik harus mengunjungi salah satu lokasi pengambilan (dan mengurangi kapasitas cadangannya), lalu mengunjungi salah satu lokasi pengiriman di lain waktu (sehingga meningkatkan kembali kapasitas cadangannya).
| Kolom | |
|---|---|
display_name |
Nama tampilan pengiriman yang ditentukan pengguna. Panjangnya dapat 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. |
load_demands |
Permintaan muatan pengiriman (misalnya berat, volume, jumlah palet, dll.). Kunci dalam peta harus berupa ID yang menjelaskan jenis beban yang sesuai, idealnya juga menyertakan unit. Misalnya: "weight_kg", "volume_gallons", "pallet_count", dll. Jika kunci tertentu tidak muncul di peta, muatan yang sesuai akan dianggap sebagai null. |
allowed_vehicle_indices[] |
Kumpulan kendaraan yang dapat melakukan pengiriman ini. Jika kosong, semua kendaraan dapat melakukannya. Kendaraan diberikan berdasarkan indeksnya dalam daftar |
costs_per_vehicle[] |
Menentukan biaya yang dikeluarkan saat pengiriman ini dikirimkan oleh setiap kendaraan. Jika ditentukan, parameter ini harus memiliki SALAH SATU:
Biaya ini harus dalam unit yang sama dengan |
costs_per_vehicle_indices[] |
Indeks kendaraan yang menerapkan |
pickup_to_delivery_absolute_detour_limit |
Menentukan waktu memutar absolut maksimum dibandingkan dengan jalur terpendek dari pengambilan hingga pengiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya satu pengambilan dan satu pengiriman. Misalnya, 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 memutar hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
pickup_to_delivery_time_limit |
Menentukan durasi maksimum dari awal pengambilan hingga awal pengiriman kiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya satu pengambilan dan satu pengiriman. Hal ini tidak bergantung pada alternatif yang dipilih untuk pengambilan dan pengiriman, atau pada kecepatan kendaraan. Hal ini dapat ditentukan bersama dengan batasan rute memutar maksimum: solusi akan mematuhi kedua spesifikasi tersebut. |
shipment_type |
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 |
penalty_cost |
Jika pengiriman tidak selesai, penalti ini akan ditambahkan ke biaya keseluruhan 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 denda ini tidak ditentukan, denda akan dianggap tidak terbatas, yaitu pengiriman harus diselesaikan. |
pickup_to_delivery_relative_detour_limit |
Menentukan waktu memutar relatif maksimum dibandingkan dengan jalur terpendek dari pengambilan hingga pengiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi setidaknya satu pengambilan dan satu pengiriman. Misalnya, 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 memutar hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
Muat
Saat melakukan kunjungan, jumlah yang telah ditentukan dapat ditambahkan ke muatan kendaraan jika berupa pengambilan, atau dikurangi jika berupa pengiriman. Pesan ini menentukan jumlah tersebut. Lihat load_demands.
| Kolom | |
|---|---|
amount |
Jumlah muatan kendaraan yang melakukan kunjungan yang sesuai akan bervariasi. Karena ini adalah bilangan bulat, pengguna disarankan untuk memilih unit yang sesuai agar tidak kehilangan presisi. Harus ≥ 0. |
VisitRequest
Permintaan kunjungan yang dapat dilakukan oleh kendaraan: memiliki geolokasi (atau dua, lihat di bawah), waktu buka dan tutup yang diwakili oleh periode waktu, dan waktu durasi layanan (waktu yang dihabiskan oleh kendaraan setelah tiba untuk mengambil atau mengantarkan barang).
| Kolom | |
|---|---|
arrival_location |
Lokasi geografis tempat kendaraan tiba saat melakukan |
arrival_waypoint |
Titik jalan tempat kendaraan tiba saat melakukan |
departure_location |
Lokasi geografis tempat kendaraan berangkat setelah menyelesaikan |
departure_waypoint |
Titik jalan tempat kendaraan berangkat setelah menyelesaikan |
tags[] |
Menentukan tag yang dilampirkan ke permintaan kunjungan. String kosong atau duplikat tidak diizinkan. |
time_windows[] |
Jendela waktu yang membatasi waktu tiba pada kunjungan. Perhatikan bahwa kendaraan dapat berangkat di luar periode waktu kedatangan, yaitu waktu kedatangan + durasi tidak harus berada dalam periode waktu. Hal ini dapat menyebabkan waktu tunggu jika kendaraan tiba sebelum Tidak adanya Jangka waktu harus terpisah, yaitu tidak boleh ada jangka waktu yang tumpang-tindih atau berdekatan dengan jangka waktu lain, dan harus dalam urutan menaik.
|
duration |
Durasi kunjungan, yaitu waktu yang dihabiskan kendaraan antara kedatangan dan keberangkatan (akan 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 alternatif pengambilan atau pengiriman paket. Biaya ini harus dalam unit yang sama dengan |
load_demands |
Permintaan muatan dari permintaan kunjungan ini. Kolom ini sama seperti kolom |
visit_types[] |
Menentukan jenis kunjungan. Hal ini dapat digunakan untuk mengalokasikan waktu tambahan yang diperlukan kendaraan untuk menyelesaikan kunjungan ini (lihat Jenis hanya dapat muncul sekali. |
label |
Menentukan label untuk |
avoid_u_turns |
Menentukan apakah putar balik harus dihindari di rute mengemudi di lokasi ini. Penghindaran putar balik adalah upaya terbaik dan penghindaran sepenuhnya 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. |
ShipmentModel
Model pengiriman berisi serangkaian pengiriman yang harus dilakukan oleh serangkaian kendaraan, sekaligus meminimalkan biaya keseluruhan, yang merupakan jumlah dari:
- biaya pemilihan rute kendaraan (jumlah biaya per total waktu, biaya per waktu perjalanan, dan biaya tetap untuk semua kendaraan).
- denda pengiriman yang tidak dilakukan.
- biaya durasi global pengiriman
| 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 tanpa 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. |
global_start_time |
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 |
global_end_time |
Jika tidak ditetapkan, 00:00:00 UTC, 1 Januari 1971 (yaitu detik: 31536000, nano: 0) akan digunakan sebagai default. |
global_duration_cost_per_hour |
"Durasi global" dari keseluruhan rencana adalah perbedaan antara waktu mulai efektif paling awal dan waktu akhir efektif paling lambat 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 unit yang sama dengan |
duration_distance_matrices[] |
Menentukan matriks durasi dan jarak yang digunakan dalam model. Jika kolom ini kosong, Google Maps atau jarak geodesi akan digunakan, bergantung pada nilai kolom Contoh penggunaan:
|
duration_distance_matrix_src_tags[] |
Tag yang menentukan sumber matriks durasi dan jarak; Tag sesuai dengan |
duration_distance_matrix_dst_tags[] |
Tag yang menentukan tujuan matriks durasi dan jarak; Tag sesuai dengan |
transition_attributes[] |
Atribut transisi ditambahkan ke model. |
shipment_type_incompatibilities[] |
Kumpulan shipment_types yang tidak kompatibel (lihat |
shipment_type_requirements[] |
Kumpulan persyaratan |
precedence_rules[] |
Serangkaian aturan prioritas yang harus diterapkan dalam model. PENTING: Penggunaan aturan prioritas membatasi ukuran masalah yang dapat dioptimalkan. Permintaan yang menggunakan aturan prioritas yang menyertakan banyak pengiriman mungkin akan ditolak. |
max_active_vehicles |
Membatasi jumlah maksimum kendaraan aktif. Kendaraan aktif jika rutenya melakukan setidaknya satu pengiriman. Hal ini dapat digunakan untuk membatasi jumlah rute jika jumlah pengemudi lebih sedikit daripada kendaraan dan armada kendaraannya heterogen. Pengoptimalan kemudian akan memilih subset kendaraan terbaik untuk digunakan. Harus benar-benar positif. |
DurationDistanceMatrix
Menentukan matriks durasi dan jarak dari lokasi awal kunjungan dan kendaraan ke lokasi akhir kunjungan dan kendaraan.
| Kolom | |
|---|---|
rows[] |
Menentukan baris matriks durasi dan jarak. Elemennya harus sebanyak |
vehicle_start_tag |
Tag yang menentukan kendaraan yang akan menerapkan matriks durasi dan jarak ini. Jika kosong, ini berlaku untuk semua kendaraan, dan hanya boleh ada satu matriks. Setiap titik awal kendaraan harus cocok dengan tepat satu matriks, yaitu tepat satu kolom Semua matriks harus memiliki |
Baris
Menentukan baris matriks durasi dan jarak.
| Kolom | |
|---|---|
durations[] |
Nilai durasi untuk baris tertentu. Elemennya harus sebanyak |
meters[] |
Nilai jarak untuk baris tertentu. Jika tidak ada biaya atau batasan yang mengacu pada jarak dalam model, kolom ini dapat dibiarkan kosong; jika tidak, kolom ini harus memiliki elemen sebanyak |
Tujuan
Tujuan menggantikan model biaya sepenuhnya, sehingga tidak kompatibel dengan biaya yang sudah ada sebelumnya. Setiap tujuan dipetakan ke sejumlah biaya yang telah ditentukan, misalnya, kendaraan, pengiriman, atau atribut transisi.
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request untuk mengetahui detail selengkapnya.
| Kolom | |
|---|---|
type |
Jenis tujuan. |
weight |
Seberapa besar tujuan ini harus diperhitungkan dibandingkan dengan tujuan lainnya. Bobot ini dapat berupa angka non-negatif, dan jumlah bobot tidak harus sama dengan 1. Bobot ditetapkan secara default ke 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 pengukuran, ke tujuan yang ditentukan oleh pengguna, jika belum ada. |
MIN_DISTANCE |
Tujuan "MIN". Meminimalkan total jarak tempuh. |
MIN_WORKING_TIME |
Meminimalkan total waktu kerja, yang dijumlahkan untuk semua kendaraan. |
MIN_TRAVEL_TIME |
Sama seperti di atas, tetapi hanya berfokus pada waktu perjalanan. |
MIN_NUM_VEHICLES |
Meminimalkan jumlah kendaraan yang digunakan. |
PrecedenceRule
Aturan prioritas antara dua peristiwa (setiap peristiwa adalah pengambilan atau pengiriman kiriman): peristiwa "kedua" harus dimulai setidaknya offset_duration setelah peristiwa "pertama" dimulai.
Beberapa prioritas dapat merujuk ke 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 akan diabaikan jika tidak.
| Kolom | |
|---|---|
first_is_delivery |
Menunjukkan apakah peristiwa "pertama" adalah pengiriman. |
second_is_delivery |
Menunjukkan apakah peristiwa "kedua" adalah pengiriman. |
offset_duration |
Offset antara peristiwa "pertama" dan "kedua". Nilainya bisa negatif. |
first_index |
Indeks pengiriman peristiwa "pertama". Kolom ini harus ditentukan. |
second_index |
Indeks pengiriman peristiwa "kedua". Kolom ini harus ditentukan. |
ShipmentRoute
Rute kendaraan dapat diuraikan, di 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 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 dapat memiliki durasi nol, yaitu dimulai dan diakhiri pada detik yang sama, interval waktu tersebut sering kali memiliki durasi positif.
Invarian:
- Jika ada n kunjungan, akan ada n+1 transisi.
- Kunjungan selalu dikelilingi oleh transisi sebelum kunjungan (indeks yang sama) dan transisi setelah kunjungan (indeks + 1).
- Keberangkatan kendaraan selalu diikuti dengan transisi #0.
- Akhir kendaraan selalu didahului oleh transisi #n.
Jika 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, PENUNDAAN, dan MENUNGGU selama transisi.
- Keduanya tidak tumpang-tindih.
- DELAY bersifat unik dan harus berupa jangka waktu yang berdekatan tepat sebelum kunjungan berikutnya (atau akhir kendaraan). Jadi, Anda cukup mengetahui durasi penundaan untuk mengetahui waktu mulai dan berakhirnya.
- BREAKS adalah jangka waktu yang berurutan dan tidak tumpang-tindih. Respons menentukan waktu mulai dan durasi setiap istirahat.
- TRAVEL dan WAIT dapat "di-preempt": keduanya dapat diinterupsi beberapa kali selama transisi ini. Klien dapat berasumsi bahwa perjalanan terjadi "secepat mungkin" dan bahwa "menunggu" mengisi waktu yang tersisa.
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 | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Kolom | |
|---|---|
vehicle_index |
Kendaraan yang melakukan rute, yang diidentifikasi berdasarkan indeksnya di |
vehicle_label |
Label kendaraan yang melakukan rute ini, sama dengan |
vehicle_start_time |
Waktu saat kendaraan memulai rutenya. |
vehicle_end_time |
Waktu saat kendaraan menyelesaikan rutenya. |
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. |
has_traffic_infeasibilities |
Jika Kedatangan di next_visit kemungkinan akan terjadi lebih lambat dari periode waktu saat ini karena peningkatan estimasi waktu perjalanan |
route_polyline |
Representasi polyline yang dienkode dari rute. Kolom ini hanya diisi jika |
breaks[] |
Istirahat yang dijadwalkan untuk kendaraan yang menjalankan rute ini. Urutan |
metrics |
Metrik durasi, jarak, dan beban untuk rute ini. Kolom |
vehicle_fullness |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
route_costs |
Biaya rute, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, yang relatif terhadap OptimizeToursRequest input, 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 sepanjang 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. |
route_total_cost |
Total biaya rute. Jumlah semua biaya dalam peta biaya. |
Istirahat
Data yang mewakili eksekusi jeda.
| Kolom | |
|---|---|
start_time |
Waktu mulai istirahat. |
duration |
Durasi istirahat. |
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.
| Kolom | |
|---|---|
points |
String yang mewakili titik polyline yang dienkode. |
Transisi
Transisi antara dua peristiwa di rute. Lihat deskripsi ShipmentRoute.
Jika kendaraan tidak memiliki start_location dan/atau end_location, metrik perjalanan yang sesuai adalah 0.
| Kolom | |
|---|---|
travel_duration |
Durasi perjalanan selama transisi ini. |
travel_distance_meters |
Jarak yang ditempuh selama transisi. |
traffic_info_unavailable |
Jika traffic diminta melalui |
delay_duration |
Jumlah durasi penundaan yang diterapkan ke transisi ini. Jika ada, penundaan akan dimulai tepat |
break_duration |
Jumlah durasi istirahat yang terjadi selama transisi ini, jika ada. Detail tentang waktu mulai dan durasi setiap jeda iklan disimpan di |
wait_duration |
Waktu yang dihabiskan untuk menunggu selama transisi ini. Durasi tunggu 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. |
total_duration |
Total durasi transisi, yang disediakan untuk memudahkan. Nilainya sama dengan:
|
start_time |
Waktu mulai transisi ini. |
route_polyline |
Representasi polyline yang dienkode dari rute yang diikuti selama transisi. Kolom ini hanya diisi jika |
route_token |
Hanya output. Token buram yang dapat diteruskan ke Navigation SDK untuk merekonstruksi rute selama navigasi, dan, jika terjadi pengalihan rute, mempertahankan tujuan 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 |
vehicle_loads |
Muatan kendaraan selama transisi ini, untuk setiap jenis yang muncul di Muatan selama transisi pertama adalah muatan awal rute kendaraan. Kemudian, setelah setiap kunjungan, |
VehicleLoad
Melaporkan muatan aktual kendaraan di beberapa titik di sepanjang rute, untuk jenis tertentu (lihat Transition.vehicle_loads).
| Kolom | |
|---|---|
amount |
Jumlah muatan pada kendaraan, untuk jenis yang ditentukan. Unit beban biasanya ditunjukkan oleh jenisnya. Lihat |
Kunjungi
Kunjungan yang dilakukan selama rute. Kunjungan ini sesuai dengan pengambilan atau pengiriman Shipment.
| Kolom | |
|---|---|
shipment_index |
Indeks kolom |
is_pickup |
Jika benar, kunjungan tersebut sesuai dengan pengambilan |
visit_request_index |
Indeks |
start_time |
Waktu saat kunjungan dimulai. Perhatikan bahwa kendaraan mungkin tiba lebih awal dari waktu ini di lokasi kunjungan. Waktu konsisten dengan |
load_demands |
Total permintaan muatan kunjungan sebagai jumlah pengiriman dan permintaan kunjungan |
detour |
Waktu tambahan untuk memutar karena pengiriman yang dikunjungi pada rute sebelum kunjungan dan potensi waktu tunggu yang disebabkan oleh periode waktu. Jika kunjungan adalah pengiriman, rute memutar dihitung dari kunjungan pengambilan yang sesuai dan sama dengan: Jika tidak, nilai ini akan dihitung dari |
shipment_label |
Salinan |
visit_label |
Salinan |
visit_type |
Opsional. Menentukan jenis kunjungan. Mengganti kolom |
injected_solution_location_token |
Token buram yang mewakili informasi tentang lokasi kunjungan. Kolom ini dapat diisi dalam 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 tersebut 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 paket. |
ShipmentTypeIncompatibility
Menentukan ketidakcocokan antara pengiriman bergantung pada shipment_type-nya. Kemunculan pengiriman yang tidak kompatibel pada rute yang sama dibatasi berdasarkan mode ketidakkompatibelan.
| Kolom | |
|---|---|
types[] |
Daftar jenis yang tidak kompatibel. Dua pengiriman yang memiliki |
incompatibility_mode |
Mode yang diterapkan pada ketidaksesuaian. |
IncompatibilityMode
Mode yang menentukan cara pembatasan pengiriman yang tidak kompatibel pada rute yang sama.
| Enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Mode ketidakcocokan yang 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 dapat menggunakan kendaraan yang sama. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Dalam mode ini, dua pengiriman dengan jenis yang tidak kompatibel tidak boleh berada di kendaraan yang sama pada waktu yang sama:
|
ShipmentTypeRequirement
Menentukan persyaratan antar-pengiriman berdasarkan shipment_type-nya. Detail persyaratan ditentukan oleh mode persyaratan.
| Kolom | |
|---|---|
required_shipment_type_alternatives[] |
Daftar jenis pengiriman alternatif yang diperlukan oleh |
dependent_shipment_types[] |
Semua pengiriman dengan jenis di kolom CATATAN: Rantai persyaratan yang membuat |
requirement_mode |
Mode yang diterapkan ke persyaratan. |
RequirementMode
Mode yang menentukan tampilan pengiriman dependen pada rute.
| Enum | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Mode persyaratan yang tidak ditentukan. Nilai ini tidak boleh digunakan. |
PERFORMED_BY_SAME_VEHICLE |
Dalam mode ini, semua pengiriman "dependen" harus menggunakan kendaraan yang sama dengan setidaknya salah satu pengiriman "wajib". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Dengan mode Oleh karena itu, pengambilan pengiriman "dependen" harus memiliki:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Sama seperti sebelumnya, kecuali bahwa pengiriman "dependen" harus memiliki pengiriman "wajib" di kendaraan pada saat pengiriman. |
SkippedShipment
Menentukan detail pengiriman yang tidak dilakukan dalam solusi. Untuk kasus yang sepele dan/atau jika kami dapat mengidentifikasi penyebab pengabaian, kami akan melaporkan alasannya di sini.
| Kolom | |
|---|---|
index |
Indeks sesuai dengan indeks pengiriman di |
label |
Salinan |
reasons[] |
Daftar alasan yang menjelaskan mengapa pengiriman dilewati. Lihat komentar di atas |
penalty_cost |
Ini adalah salinan Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
estimated_incompatible_vehicle_ratio |
Estimasi rasio kendaraan yang tidak dapat melakukan pengiriman ini karena setidaknya salah satu alasan di bawah. Catatan: ini hanya diisi jika alasannya melibatkan kendaraan. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
Alasan
Jika kami dapat menjelaskan alasan pengiriman dilewati, alasannya akan dicantumkan di sini. Jika alasannya tidak identik untuk semua kendaraan, reason akan memiliki lebih dari 1 elemen. Pengiriman yang dilewati tidak boleh memiliki alasan duplikat, yaitu semua kolom sama kecuali untuk example_vehicle_index. Contoh:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
Pengiriman yang dilewati tidak kompatibel dengan semua kendaraan. Alasannya mungkin berbeda untuk semua kendaraan, tetapi setidaknya satu kapasitas "Apel" kendaraan akan terlampaui (termasuk kendaraan 1), setidaknya satu kapasitas "Pir" kendaraan akan terlampaui (termasuk kendaraan 3), dan setidaknya satu batas jarak kendaraan akan terlampaui (termasuk kendaraan 1).
| Kolom | |
|---|---|
code |
Lihat komentar Kode. |
example_vehicle_indices[] |
Sama seperti Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
example_exceeded_capacity_type |
Jika kode alasannya adalah |
example_vehicle_index |
Jika alasannya terkait dengan ketidakcocokan pengiriman-kendaraan, kolom ini memberikan indeks satu kendaraan yang relevan. |
Kode
Kode yang mengidentifikasi jenis alasan. Urutan di sini tidak berarti. Secara khusus, hal ini tidak memberikan indikasi apakah alasan tertentu akan muncul sebelum alasan lain dalam solusi, jika keduanya berlaku.
| Enum | |
|---|---|
CODE_UNSPECIFIED |
Metode ini tidak boleh digunakan. |
NO_VEHICLE |
Tidak ada kendaraan dalam model yang membuat semua pengiriman tidak dapat dilakukan. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
Permintaan pengiriman melebihi kapasitas kendaraan untuk beberapa jenis kapasitas, salah satunya adalah example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
Jarak minimum yang diperlukan untuk melakukan pengiriman ini, yaitu dari Perhatikan bahwa untuk komputasi ini, kami menggunakan jarak geodesi. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Waktu minimum yang diperlukan untuk melakukan pengiriman ini, termasuk waktu perjalanan, waktu tunggu, dan waktu layanan, melebihi Catatan: waktu perjalanan dihitung dalam skenario terbaik, yaitu sebagai jarak geodesi x 36 m/dtk (sekitar 130 km/jam). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Sama seperti di atas, tetapi kami hanya membandingkan waktu perjalanan minimum dan travel_duration_limit kendaraan. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Kendaraan tidak dapat melakukan pengiriman ini dalam skenario terbaik (lihat CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT untuk penghitungan waktu) jika dimulai pada waktu mulai paling awal: total waktu akan membuat kendaraan berakhir setelah waktu berakhir paling lambat. |
VEHICLE_NOT_ALLOWED |
Kolom allowed_vehicle_indices pengiriman tidak kosong dan kendaraan ini tidak termasuk di dalamnya. |
VEHICLE_IGNORED |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
SHIPMENT_IGNORED |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
Pengiriman dilewati di Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
Relaksasi rute kendaraan yang ditentukan dalam Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
ZERO_PENALTY_COST |
Pengiriman memiliki biaya penalti nol. Meskipun hal ini dapat berguna sebagai pilihan pemodelan lanjutan, hal ini juga dapat menjelaskan setelahnya mengapa pengiriman dilewati. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
TimeWindow
Periode waktu membatasi waktu peristiwa, seperti waktu kedatangan saat kunjungan, atau waktu mulai dan berakhir kendaraan.
Batas rentang waktu yang ketat, start_time dan end_time, menerapkan waktu paling awal dan paling akhir dari peristiwa, sehingga start_time <= event_time <=
end_time. Batas bawah periode waktu fleksibel, soft_start_time, menyatakan preferensi agar peristiwa terjadi pada atau setelah soft_start_time dengan menimbulkan biaya yang sebanding dengan berapa lama sebelum soft_start_time peristiwa terjadi. Batas atas periode waktu fleksibel, soft_end_time, menyatakan preferensi agar peristiwa terjadi pada atau sebelum soft_end_time dengan menimbulkan biaya yang sebanding dengan durasi setelah soft_end_time peristiwa terjadi. start_time, end_time, soft_start_time, dan soft_end_time harus berada dalam batas waktu global (lihat ShipmentModel.global_start_time dan ShipmentModel.global_end_time) serta harus mematuhi:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| Kolom | |
|---|---|
start_time |
Waktu mulai periode waktu tetap. Jika tidak ditentukan, nilai ini akan ditetapkan ke |
end_time |
Waktu berakhir periode waktu tetap. Jika tidak ditentukan, nilai ini akan ditetapkan ke |
soft_start_time |
Waktu mulai fleksibel untuk periode waktu. |
soft_end_time |
Waktu berakhir fleksibel untuk periode waktu. |
cost_per_hour_before_soft_start_time |
Biaya per jam yang ditambahkan ke biaya lain dalam model jika peristiwa terjadi sebelum soft_start_time, yang dihitung sebagai: Biaya ini harus positif, dan kolom hanya dapat ditetapkan jika soft_start_time telah ditetapkan. |
cost_per_hour_after_soft_end_time |
Biaya per jam yang ditambahkan ke biaya lain dalam model jika peristiwa terjadi setelah Biaya ini harus positif, dan kolom hanya dapat ditetapkan jika |
TransitionAttributes
Menentukan atribut transisi antara dua kunjungan berturut-turut pada rute. Beberapa TransitionAttributes dapat berlaku untuk transisi yang sama: dalam hal ini, semua biaya tambahan akan dijumlahkan dan batasan atau batas yang paling ketat akan berlaku (mengikuti semantik "AND" alami).
| Kolom | |
|---|---|
src_tag |
Tag yang menentukan kumpulan transisi (src->dst) yang menerapkan atribut ini. Kunjungan sumber atau awal kendaraan cocok jika dan hanya jika |
excluded_src_tag |
Lihat |
dst_tag |
Kunjungan tujuan atau akhir kendaraan cocok jika dan hanya jika |
excluded_dst_tag |
Lihat |
cost |
Menentukan biaya untuk melakukan transisi ini. Biaya ini menggunakan unit yang sama dengan semua biaya lain dalam model dan tidak boleh negatif. Biaya ini diterapkan di atas semua biaya lain yang ada. |
cost_per_kilometer |
Menentukan biaya per kilometer yang diterapkan ke jarak yang ditempuh saat melakukan transisi ini. Nilai ini ditambahkan ke |
distance_limit |
Menentukan batas jarak yang ditempuh saat melakukan transisi ini. Mulai Juni 2021, hanya batas sementara yang didukung. |
delay |
Menentukan penundaan yang terjadi saat melakukan transisi ini. Penundaan ini selalu terjadi setelah menyelesaikan kunjungan sumber dan sebelum memulai kunjungan tujuan. |
URI
Universal Resource Identifier yang mengarah ke resource yang dapat dibaca dan ditulis oleh Route Optimization API.
| Kolom | |
|---|---|
uri |
URI resource. Resource mungkin belum ada. Konten resource dienkode sebagai JSON atau textproto. Hanya resource Google Cloud Storage yang didukung. Jika resource dienkode sebagai JSON, nama resource harus diakhiri dengan |
Kendaraan
Memodelkan kendaraan dalam masalah pengiriman. Menyelesaikan masalah pengiriman akan membuat rute yang dimulai dari start_location dan berakhir di end_location untuk kendaraan ini. Rute adalah urutan kunjungan (lihat ShipmentRoute).
| Kolom | |
|---|---|
display_name |
Nama tampilan kendaraan yang ditentukan pengguna. Panjangnya dapat mencapai 63 karakter dan dapat menggunakan karakter UTF-8. |
travel_mode |
Mode perjalanan yang memengaruhi jalan yang dapat digunakan oleh kendaraan dan kecepatannya. Lihat juga |
route_modifiers |
Serangkaian kondisi yang harus dipenuhi yang memengaruhi cara rute dihitung untuk kendaraan tertentu. |
start_location |
Lokasi geografis tempat kendaraan memulai sebelum mengambil pengiriman. Jika tidak ditentukan, kendaraan akan memulai rute dari lokasi penjemputan pertamanya. Jika model pengiriman memiliki matriks durasi dan jarak, |
start_waypoint |
Titik jalan yang mewakili lokasi geografis tempat kendaraan memulai sebelum mengambil pengiriman. Jika |
end_location |
Lokasi geografis tempat kendaraan berhenti setelah menyelesaikan |
end_waypoint |
Titik jalan yang mewakili lokasi geografis tempat kendaraan berhenti setelah menyelesaikan |
start_tags[] |
Menentukan tag yang dilampirkan ke awal rute kendaraan. String kosong atau duplikat tidak diizinkan. |
end_tags[] |
Menentukan tag yang dilampirkan ke akhir rute kendaraan. String kosong atau duplikat tidak diizinkan. |
start_time_windows[] |
Periode waktu saat kendaraan dapat berangkat dari lokasi awalnya. Kendaraan harus berada dalam batas waktu global (lihat kolom Periode waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak boleh ada periode waktu yang tumpang-tindih atau berdekatan dengan periode waktu lain, dan harus dalam urutan kronologis.
|
end_time_windows[] |
Periode waktu saat kendaraan dapat tiba di lokasi akhirnya. Kendaraan harus berada dalam batas waktu global (lihat kolom Periode waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak boleh ada periode waktu yang tumpang-tindih atau berdekatan dengan periode waktu lain, dan harus dalam urutan kronologis.
|
unloading_policy |
Kebijakan pembongkaran yang diterapkan pada kendaraan. |
load_limits |
Kapasitas kendaraan (misalnya, berat, volume, jumlah palet). Kunci dalam peta adalah ID jenis muatan, yang konsisten dengan kunci kolom |
cost_per_hour |
Biaya kendaraan: semua biaya dijumlahkan dan harus dalam satuan yang sama dengan Biaya per jam rute kendaraan. Biaya ini diterapkan ke total waktu yang dibutuhkan oleh rute, dan mencakup waktu perjalanan, waktu tunggu, dan waktu kunjungan. Menggunakan |
cost_per_traveled_hour |
Biaya per jam perjalanan rute kendaraan. Biaya ini hanya diterapkan pada waktu perjalanan yang ditempuh oleh rute (yaitu, yang dilaporkan dalam |
cost_per_kilometer |
Biaya per kilometer rute kendaraan. Biaya ini diterapkan ke jarak yang dilaporkan dalam |
fixed_cost |
Biaya tetap yang diterapkan jika kendaraan ini digunakan untuk menangani pengiriman. |
used_if_route_is_empty |
Kolom ini hanya berlaku untuk kendaraan jika rutenya tidak melayani pengiriman apa pun. Menunjukkan apakah kendaraan harus dianggap sebagai kendaraan bekas atau tidak dalam kasus ini. Jika benar, kendaraan akan berpindah dari lokasi awal ke lokasi akhir meskipun tidak melayani pengiriman apa pun, dan biaya waktu serta jarak yang dihasilkan dari perjalanan awal --> akhir akan diperhitungkan. Jika tidak, kendaraan tidak akan melakukan perjalanan dari lokasi awal ke lokasi akhir, dan tidak ada |
route_duration_limit |
Batas yang diterapkan pada total durasi rute kendaraan. Dalam |
travel_duration_limit |
Batas yang diterapkan pada durasi perjalanan rute kendaraan. Dalam |
route_distance_limit |
Batas yang diterapkan pada total jarak rute kendaraan. Dalam |
extra_visit_duration_for_visit_type |
Menentukan peta dari string visit_types ke durasi. Durasi adalah waktu selain Jika permintaan kunjungan memiliki beberapa jenis, durasi akan ditambahkan untuk setiap jenis di peta. |
break_rule |
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, Jika pengiriman dilakukan oleh kendaraan yang diabaikan di Jika pengiriman dilakukan oleh kendaraan yang diabaikan di |
travel_duration_multiple |
Menentukan faktor perkalian yang dapat digunakan untuk menambah atau mengurangi waktu perjalanan kendaraan ini. Misalnya, menetapkan nilai ini ke 2,0 berarti kendaraan ini lebih lambat dan memiliki waktu perjalanan dua kali lipat dari kendaraan standar. Kelipatan ini tidak memengaruhi durasi kunjungan. Hal ini akan 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 mengakibatkan hilangnya presisi. Lihat juga |
DurationLimit
Batas yang menentukan durasi maksimum rute kendaraan. Batas ini dapat berupa batas ketat atau longgar.
Jika kolom batas fleksibel ditentukan, nilai minimum maksimum fleksibel dan biaya terkaitnya harus ditentukan bersama.
| Kolom | |
|---|---|
max_duration |
Batas ketat yang membatasi durasi hingga maksimal max_duration. |
soft_max_duration |
Batas fleksibel tidak menerapkan batas durasi maksimum, tetapi jika dilanggar, rute akan dikenai biaya. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, |
quadratic_soft_max_duration |
Batas yang dapat dilewati tidak menerapkan batas durasi maksimum, tetapi jika dilanggar, rute akan dikenai biaya, kuadrat dalam durasi. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika
|
cost_per_hour_after_soft_max |
Biaya per jam yang dikenakan jika nilai minimum Biaya tidak boleh negatif. |
cost_per_square_hour_after_quadratic_soft_max |
Biaya per jam kuadrat 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. |
LoadLimit
Menentukan batas muatan yang berlaku untuk kendaraan, misalnya, "truk ini hanya boleh mengangkut hingga 3.500 kg". Lihat load_limits.
| Kolom | |
|---|---|
soft_max_load |
Batas lunak beban. Lihat |
cost_per_unit_above_soft_max |
Jika muatan melebihi |
start_load_interval |
Interval muatan kendaraan yang dapat diterima di awal rute. |
end_load_interval |
Interval muatan kendaraan yang dapat diterima di akhir rute. |
max_load |
Jumlah beban maksimum yang dapat diterima. |
cost_per_kilometer |
Biaya pemindahan satu unit muatan sejauh satu kilometer untuk kendaraan ini. Hal ini dapat digunakan sebagai proxy untuk konsumsi bahan bakar: jika muatan adalah berat (dalam Newton), maka muatan*kilometer memiliki dimensi energi. Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request untuk mengetahui detail selengkapnya. |
cost_per_traveled_hour |
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 beban yang dapat diterima.
| 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 muatan selama Transition. Untuk beban tertentu, biaya adalah jumlah dari dua bagian:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
Dengan biaya ini, solusi lebih memilih untuk mengirimkan permintaan tinggi terlebih dahulu, atau mengambil permintaan tinggi terakhir. Misalnya, jika kendaraan memiliki
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
dan rutenya adalah start,pickup,pickup,delivery,delivery,end dengan transisi:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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 sepanjang rute adalah 120,0.
Namun, jika rutenya adalah mulai,pengambilan,pengiriman,pengambilan,pengiriman,selesai dengan transisi:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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 berat menjadi lebih mahal.
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request untuk mengetahui detail selengkapnya.
| Kolom | |
|---|---|
load_threshold |
Jumlah muatan yang melebihi biaya pemindahan unit muatan berubah dari cost_per_unit_below_threshold menjadi cost_per_unit_above_threshold. Harus >= 0. |
cost_per_unit_below_threshold |
Biaya pemindahan unit muatan, untuk setiap unit antara 0 dan nilai minimum. Harus berupa nilai terbatas, dan >= 0. |
cost_per_unit_above_threshold |
Biaya pemindahan unit muatan, untuk setiap unit di atas batas. Dalam kasus khusus nilai minimum = 0, ini adalah biaya tetap per unit. Harus berupa nilai terbatas, dan >= 0. |
TravelMode
Mode perjalanan yang dapat digunakan oleh kendaraan.
Mode ini harus merupakan subset dari mode perjalanan Routes API Google Maps Platform, 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 yang tidak ditentukan, setara dengan DRIVING. |
DRIVING |
Mode perjalanan yang sesuai dengan rute mobil (mobil, ...). |
WALKING |
Moda transportasi yang sesuai dengan rute jalan kaki. |
UnloadingPolicy
Kebijakan tentang cara kendaraan dapat dibongkar. Hanya berlaku untuk pengiriman yang memiliki pengambilan dan pengantaran.
Pengiriman lain dapat dilakukan di mana saja di rute tersebut, terlepas dari unloading_policy.
| 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 |
VehicleFullness
VehicleFullness adalah metrik yang menghitung seberapa penuh kendaraan. Setiap kolom VehicleFullness bernilai antara 0 dan 1, yang 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 kepenuhan tidak akan ditetapkan. Jika batasnya adalah 0, kolom akan ditetapkan ke 1. Catatan: jika rute mengalami ketidakmungkinan traffic, beberapa rasio kepenuhan mentah mungkin melebihi 1,0, misalnya kendaraan mungkin melebihi batas jaraknya. Dalam kasus ini, kami membatasi nilai kepenuhan pada 1,0.
| Kolom | |
|---|---|
max_fullness |
Maksimum semua kolom lainnya dalam pesan ini. |
distance |
Rasio antara |
travel_duration |
Rasio antara [AggregatedMetrics.travel_duration_seconds][] dan |
active_duration |
Rasio antara [AggregatedMetrics.total_duration_seconds][] dan |
max_load |
Rasio maksimum di antara semua jenis [AggregatedMetrics.max_load][] dan |
active_span |
Rasio (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) untuk kendaraan tertentu. Jika penyebut tidak ada, ( |
Waypoint
Mengenkapsulasi titik jalan. Titik jalan menandai lokasi kedatangan dan keberangkatan VisitRequest, serta lokasi awal dan akhir Kendaraan.
| Kolom | |
|---|---|
side_of_road |
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 tersebut sehingga kendaraan dapat berhenti di sisi jalan yang menjadi bias lokasi dari tengah jalan. Opsi ini tidak berfungsi untuk mode perjalanan 'WALKING'. |
vehicle_stopover |
Menunjukkan bahwa titik jalan dimaksudkan sebagai tempat kendaraan berhenti, dengan tujuan untuk menjemput atau menurunkan penumpang. Opsi ini hanya berfungsi untuk mode perjalanan 'DRIVING', dan jika 'location_type' adalah 'location'. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah pada masa mendatang. |
Kolom union location_type. Berbagai cara untuk merepresentasikan lokasi. location_type hanya dapat berupa salah satu dari berikut: |
|
location |
Titik yang ditentukan menggunakan koordinat geografis, termasuk judul opsional. |
place_id |
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 direkomendasikan. |