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)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- lintang 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 perjalanan kendaraan untuk satu atau beberapa pesan Metode ini adalah Operasi yang Berjalan Lama (LRO). Input untuk pengoptimalan (pesan Pengguna dapat melakukan polling Jika kolom LRO Jika kolom
|
| OptimizeTours |
|---|
|
Mengirim Model Tujuannya adalah memberikan penetapan
|
| OptimizeToursLongRunning |
|---|
|
Ini adalah varian metode
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request untuk mengetahui detail selengkapnya.
|
| OptimizeToursUri |
|---|
|
Ini adalah varian metode Klien menentukan URI Metode ini lebih disarankan daripada metode
Eksperimental: Lihat https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request untuk mengetahui detail selengkapnya.
|
AggregatedMetrics
Metrik gabungan untuk ShipmentRoute (atau untuk OptimizeToursResponse di semua elemen Transition dan/atau Visit (atau 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 menunggu 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 |
Beban maksimum yang dicapai di seluruh rute (atau solusi), untuk setiap kuantitas di rute (atau solusi) ini, dihitung sebagai maksimum di semua |
performed_mandatory_shipment_count |
Jumlah pengiriman wajib yang dilakukan. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
performed_shipment_penalty_cost_sum |
Jumlah Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
BatchOptimizeToursMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Meminta pengoptimalan batch tur sebagai operasi asinkron. Setiap file input harus berisi satu OptimizeToursRequest, dan setiap file output akan berisi satu OptimizeToursResponse. Permintaan 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:
Jika tidak ada lokasi yang ditentukan, region akan dipilih secara otomatis. |
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. Nilai ini ditampilkan dalam Operasi Berjalan Lama setelah operasi selesai.
BreakRule
Aturan untuk membuat jeda waktu untuk 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), dalam hal ini akan 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).
| Kolom | |
|---|---|
break_requests[] |
Urutan jeda. Lihat pesan |
frequency_constraints[] |
Beberapa |
BreakRequest
Urutan istirahat (yaitu jumlah dan urutannya) yang berlaku untuk setiap kendaraan harus diketahui sebelumnya. BreakRequest yang berulang menentukan urutan tersebut, dalam urutan terjadinya. Rentang waktunya (earliest_start_time / latest_start_time) dapat tumpang-tindih, tetapi harus kompatibel dengan urutannya (hal ini diperiksa).
| Kolom | |
|---|---|
earliest_start_time |
Wajib. Batas bawah (inklusif) pada awal jeda. |
latest_start_time |
Wajib. Batas atas (inklusif) pada awal jeda. |
min_duration |
Wajib. Durasi minimum jeda. Harus positif. |
FrequencyConstraint
Orang dapat membatasi lebih lanjut frekuensi dan durasi jeda yang ditentukan di atas, dengan menerapkan frekuensi jeda minimum, seperti "Harus ada jeda minimal 1 jam setiap 12 jam". Dengan asumsi bahwa hal ini dapat ditafsirkan sebagai "Dalam rentang 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 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
| Kolom | |
|---|---|
min_break_duration |
Wajib. Durasi jeda minimum untuk batasan ini. Non-negatif. Lihat deskripsi |
max_inter_break_duration |
Wajib. Rentang waktu maksimum yang diizinkan untuk setiap interval waktu dalam rute yang tidak menyertakan 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. Bisa keras atau lembut.
Jika batas lunak 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 menjadi paling banyak max_meter. Batas harus non-negatif. |
soft_max_meters |
Batas lunak 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_meter harus kurang dari max_meter dan tidak boleh negatif. |
cost_per_kilometer_below_soft_max |
Biaya per kilometer yang dikeluarkan, meningkat hingga Biaya ini tidak didukung di |
cost_per_kilometer_above_soft_max |
Biaya per kilometer yang dikeluarkan jika jarak di atas 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 disisipkan dalam permintaan, termasuk informasi tentang kunjungan mana yang harus dibatasi dan cara membatasinya.
| Kolom | |
|---|---|
routes[] |
Rute solusi yang akan disuntikkan. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skipped_shipments[] |
Pengiriman solusi yang dilewati untuk disisipkan. Beberapa mungkin tidak ada dalam solusi asli. Lihat kolom |
constraint_relaxations[] |
Untuk nol atau lebih grup kendaraan, menentukan kapan dan seberapa besar batasan akan dilonggarkan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan sepenuhnya dibatasi. |
ConstraintRelaxation
Untuk sekelompok kendaraan, menentukan pada nilai minimum berapa batasan kunjungan akan dilonggarkan dan hingga tingkat mana. Pengiriman yang tercantum dalam kolom skipped_shipment dibatasi untuk dilewati; yaitu, tidak dapat dilakukan.
| Kolom | |
|---|---|
relaxations[] |
Semua pelonggaran batasan kunjungan yang akan berlaku untuk kunjungan di rute dengan kendaraan di |
vehicle_indices[] |
Menentukan indeks kendaraan yang menerapkan batasan kunjungan Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations kosong, waktu mulai dan urutan semua kunjungan di routes sepenuhnya dibatasi dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan akhir kendaraan dalam routes sepenuhnya dibatasi, kecuali jika kendaraan kosong (yaitu, tidak memiliki kunjungan dan used_if_route_is_empty disetel ke salah (false) dalam model).
relaxations(i).level menentukan tingkat pelonggaran batasan yang diterapkan pada kunjungan #j yang memenuhi:
route.visits(j).start_time >= relaxations(i).threshold_timeDANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, start kendaraan dilonggarkan menjadi relaxations(i).level jika memenuhi:
vehicle_start_time >= relaxations(i).threshold_timeDANrelaxations(i).threshold_visit_count == 0dan ujung kendaraan dilonggarkan menjadirelaxations(i).leveljika memenuhi:vehicle_end_time >= relaxations(i).threshold_timeDANroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Untuk menerapkan tingkat kelonggaran 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 diterapkan. Akibatnya, dari awal kendaraan melalui kunjungan rute secara berurutan hingga akhir kendaraan, tingkat kelonggaran menjadi lebih longgar: yaitu, tingkat kelonggaran 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 disisipkan ke dalam urutan ini. Selain itu, jika awal atau akhir perjalanan kendaraan tidak memenuhi kondisi relaksasi apa pun, waktu akan ditetapkan, kecuali jika kendaraan kosong.
| Kolom | |
|---|---|
level |
Tingkat pelonggaran batasan yang berlaku saat kondisi pada atau setelah |
threshold_time |
Waktu saat atau setelah pelonggaran |
threshold_visit_count |
Jumlah kunjungan saat atau setelah relaksasi Jika |
Tingkat
Menyatakan berbagai tingkat pelonggaran batasan, yang diterapkan untuk kunjungan dan kunjungan berikutnya saat memenuhi kondisi nilai minimum.
Enumerasi di bawah ini diurutkan berdasarkan peningkatan kelonggaran.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Tingkat pelonggaran default implisit: tidak ada batasan yang dilonggarkan, yaitu semua kunjungan dibatasi sepenuhnya. Nilai ini tidak boleh digunakan secara eksplisit di |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Waktu mulai kunjungan dan waktu mulai/berakhir 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 dalam kondisi santai: kunjungan benar-benar gratis pada atau setelah waktu minimum 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. Ini harus berupa satu objek (file). |
Lokasi
Mencakup lokasi (titik geografis, dan arah opsional).
| Kolom | |
|---|---|
lat_lng |
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. |
OptimizeToursLongRunningMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan OptimizeToursLongRunning.
OptimizeToursRequest
Permintaan yang akan diberikan kepada pemecah pengoptimalan tur yang menentukan model pengiriman yang akan dipecahkan serta parameter pengoptimalan.
| Kolom | |
|---|---|
parent |
Wajib. Project atau lokasi target untuk melakukan panggilan. Format:
Jika tidak ada lokasi yang ditentukan, region akan dipilih secara otomatis. |
timeout |
Jika waktu tunggu ini ditetapkan, server akan menampilkan respons sebelum periode waktu tunggu berlalu atau batas waktu server untuk permintaan sinkronis tercapai, mana saja yang lebih dulu. Untuk permintaan asinkron, server akan membuat solusi (jika memungkinkan) sebelum waktu tunggu berakhir. |
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[] |
Mengarahkan algoritma pengoptimalan dalam menemukan solusi pertama yang mirip dengan solusi sebelumnya. Model dibatasi saat solusi pertama dibuat. Setiap pengiriman yang tidak dilakukan di rute akan dilewati secara implisit dalam solusi pertama, tetapi dapat dilakukan dalam solusi berikutnya. Solusi harus memenuhi beberapa asumsi validitas dasar:
Jika solusi yang disuntikkan tidak layak, error validasi tidak selalu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan sebagai gantinya. |
injected_solution_constraint |
Membatasi algoritma pengoptimalan untuk menemukan solusi akhir yang mirip dengan solusi sebelumnya. Misalnya, hal ini dapat digunakan untuk membekukan bagian rute yang telah diselesaikan atau yang akan diselesaikan, tetapi tidak boleh diubah. Jika solusi yang disuntikkan tidak layak, error validasi tidak selalu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan sebagai gantinya. |
refresh_details_routes[] |
Jika tidak kosong, rute yang diberikan akan diperbarui, tanpa mengubah urutan kunjungan atau waktu perjalanan yang mendasarinya: hanya detail lainnya yang akan diperbarui. Hal ini tidak menyelesaikan model. Mulai 2020/11, ini hanya mengisi polyline rute yang tidak kosong dan mewajibkan Kolom Kolom ini tidak boleh digunakan bersama dengan
|
interpret_injected_solutions_using_labels |
Jika benar:
Interpretasi ini berlaku untuk kolom Jika benar, label dalam kategori berikut hanya boleh muncul paling banyak satu kali dalam kategorinya:
Jika Menghapus kunjungan rute atau seluruh rute dari solusi yang disisipkan dapat memengaruhi batasan tersirat, yang dapat menyebabkan perubahan solusi, error validasi, atau tidak dapat diterapkan. CATATAN: Pemanggil harus memastikan bahwa setiap |
consider_road_traffic |
Pertimbangkan estimasi traffic dalam menghitung kolom |
populate_polylines |
Jika benar (true), polyline akan diisi dalam respons |
populate_transition_polylines |
Jika benar (true), polyline dan token rute akan diisi dalam respons |
allow_large_deadline_despite_interruption_risk |
Jika disetel, 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 tetap kecil). |
use_geodesic_distances |
Jika benar (true), jarak perjalanan akan dihitung menggunakan jarak geodetik, bukan jarak Google Maps, dan waktu tempuh akan dihitung menggunakan jarak geodetik dengan kecepatan yang ditentukan oleh |
label |
Label yang dapat digunakan untuk mengidentifikasi permintaan ini, dilaporkan kembali di |
geodesic_meters_per_second |
Jika |
max_validation_errors |
Memangkas 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 mempertimbangkan latensi versus kualitas solusi. Di semua mode, batas waktu permintaan global diberlakukan.
| Enum | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Mode penelusuran tidak ditentukan, setara dengan RETURN_FAST. |
RETURN_FAST |
Hentikan penelusuran setelah menemukan solusi baik pertama. |
CONSUME_ALL_AVAILABLE_TIME |
Gunakan semua waktu yang tersedia untuk mencari solusi yang lebih baik. |
SolvingMode
Menentukan cara pemecah masalah harus 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 sebanyak mungkin OptimizeToursResponse.validation_errors. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Hanya mengisi PENTING: tidak semua pengiriman yang tidak layak ditampilkan di sini, tetapi hanya pengiriman yang terdeteksi tidak layak selama praproses. |
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 perjalanan yang berisi rute yang diikuti oleh setiap kendaraan, pengiriman yang telah dilewati, dan biaya keseluruhan solusi.
| Kolom | |
|---|---|
routes[] |
Rute 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 "BEBERAPA ERROR" 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, digabungkan di semua rute.
| Kolom | |
|---|---|
aggregated_route_metrics |
Digabungkan di seluruh rute. Setiap metrik adalah jumlah (atau maksimum, untuk pemuatan) 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 bekas, dihitung sebagai minimum dari semua kendaraan bekas |
latest_vehicle_end_time |
Waktu berakhir terbaru untuk kendaraan bekas, dihitung sebagai maksimum dari semua kendaraan bekas |
costs |
Biaya solusi, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, relatif terhadap input OptimizeToursRequest, misalnya "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan di seluruh solusi. Dengan kata lain, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan selama 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:
Jika tidak ada lokasi yang ditentukan, region akan dipilih secara otomatis. |
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
Mendeskripsikan error atau peringatan yang terjadi saat memvalidasi OptimizeToursRequest.
| Kolom | |
|---|---|
code |
Error validasi ditentukan oleh pasangan ( Kolom setelah bagian ini memberikan konteks selengkapnya tentang error. BEBERAPA ERROR: Jika ada beberapa error, proses validasi akan mencoba menampilkan beberapa error tersebut. 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 (sebagian besar waktu) atau lebih banyak kolom. Misalnya, pengambilan pertama kendaraan #4 dan pengiriman #2 dapat dilakukan sebagai berikut: Namun, perhatikan bahwa kardinalitas |
error_message |
String yang menjelaskan error dan dapat dibaca manusia. Terdapat pemetaan 1:1 antara STABILITAS: Tidak stabil: pesan error yang terkait dengan |
offending_values |
Dapat berisi nilai kolom. Fitur 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 tidak menyertakan entitas tingkat teratas seperti OptimizeToursRequest atau ShipmentModel agar pesan tidak terlalu panjang.
| Kolom | |
|---|---|
name |
Nama kolom, misalnya, "vehicles". |
sub_field |
Sub-field yang disusun secara rekursif, jika diperlukan. |
Kolom union
|
|
index |
Indeks kolom jika berulang. |
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
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.
| Kolom | |
|---|---|
avoid_tolls |
Menentukan apakah akan menghindari jalan tol jika memungkinkan. Rute yang tidak berisi jalan tol akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_highways |
Menentukan apakah akan menghindari jalan tol jika memungkinkan. Rute yang tidak berisi jalan raya akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_ferries |
Menentukan apakah akan menghindari feri jika memungkinkan. Rute yang tidak mencakup perjalanan dengan feri akan diprioritaskan. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_indoor |
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 |
Pengiriman
Pengiriman satu item, dari salah satu lokasi pengambilan ke salah satu lokasi pengiriman. 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 oleh karena itu, meningkatkan kembali kapasitas cadangnya).
| Kolom | |
|---|---|
display_name |
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. |
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 mencakup unit. Misalnya: "weight_kg", "volume_gallons", "pallet_count", dll. Jika kunci tertentu tidak muncul dalam peta, muatan yang sesuai 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 dilakukan oleh setiap kendaraan. Jika ditentukan, 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 perjalanan memutar absolut maksimum dibandingkan dengan jalur terpendek dari penjemputan hingga pengiriman. 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. |
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 pengambilan dan pengiriman. Hal ini tidak bergantung pada alternatif mana yang dipilih untuk pengambilan dan pengiriman, atau kecepatan kendaraan. Hal ini dapat ditentukan bersama dengan batasan perutean maksimum: solusi akan mematuhi kedua spesifikasi. |
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 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. |
pickup_to_delivery_relative_detour_limit |
Menentukan waktu perjalanan memutar relatif maksimum dibandingkan dengan jalur terpendek dari lokasi penjemputan 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. |
Muat
Saat melakukan kunjungan, jumlah yang telah ditentukan sebelumnya 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 terkait akan bervariasi. Karena merupakan bilangan bulat, pengguna disarankan untuk memilih satuan yang sesuai agar tidak kehilangan presisi. Harus ≥ 0. |
VisitRequest
Permintaan kunjungan yang dapat dilakukan oleh kendaraan: memiliki geo-lokasi (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).
| Kolom | |
|---|---|
arrival_location |
Geo-lokasi tempat kendaraan tiba saat melakukan |
arrival_waypoint |
Titik jalan tempat kendaraan tiba saat melakukan |
departure_location |
Geo-lokasi 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[] |
Periode waktu yang membatasi waktu kedatangan 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 Periode waktu harus terpisah, yaitu tidak boleh tumpang-tindih atau berdekatan dengan periode 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 di rute kendaraan. Hal ini dapat digunakan untuk membayar biaya yang berbeda untuk setiap pengambilan atau pengiriman alternatif kiriman. Biaya ini harus dalam unit yang sama dengan |
load_demands |
Memuat 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 satu kali. |
label |
Menentukan label untuk |
avoid_u_turns |
Menentukan apakah putar balik 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. |
ShipmentModel
Model pengiriman berisi serangkaian pengiriman yang harus dilakukan oleh serangkaian kendaraan, sekaligus meminimalkan biaya keseluruhan, yang merupakan jumlah dari:
- biaya perutean 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
| 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. |
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 disetel, 00:00:00 UTC, 1 Januari 1971 (yaitu detik: 31536000, nanos: 0) akan digunakan sebagai default. |
global_duration_cost_per_hour |
"Durasi global" keseluruhan paket adalah selisih antara waktu mulai berlaku paling awal dan waktu akhir berlaku 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 |
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_type yang tidak kompatibel (lihat |
shipment_type_requirements[] |
Kumpulan persyaratan |
precedence_rules[] |
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. |
max_active_vehicles |
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. |
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. Jumlah elemennya harus sama dengan |
vehicle_start_tag |
Tag yang menentukan kendaraan yang menerapkan matriks durasi dan jarak ini. Jika kosong, ini berlaku untuk semua kendaraan, dan hanya boleh ada satu matriks. Setiap start 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. Jumlah elemennya harus sama dengan |
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 |
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.
| 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 |
Tujuan "MIN". Minimalkan total jarak tempuh. |
MIN_WORKING_TIME |
Minimalkan total waktu kerja, yang dijumlahkan untuk semua kendaraan. |
MIN_TRAVEL_TIME |
Sama seperti di atas, tetapi hanya berfokus pada waktu tempuh. |
MIN_NUM_VEHICLES |
Minimalkan 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 "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.
| Kolom | |
|---|---|
first_is_delivery |
Menunjukkan apakah peristiwa "pertama" adalah pengiriman. |
second_is_delivery |
Menunjukkan apakah peristiwa "kedua" adalah pengiriman. |
offset_duration |
Selisih 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, sepanjang sumbu waktu, seperti ini (kita asumsikan ada n kunjungan):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Perhatikan bahwa kami membedakan antara:
- "peristiwa tepat waktu", seperti awal dan akhir perjalanan kendaraan serta awal dan akhir setiap kunjungan (alias kedatangan dan keberangkatan). Terjadi pada detik tertentu.
- "interval waktu", seperti kunjungan itu sendiri, dan transisi antar-kunjungan. Meskipun interval waktu terkadang memiliki durasi nol, yaitu dimulai dan diakhiri pada detik yang sama, interval waktu sering kali memiliki durasi positif.
Invarian:
- Jika ada n kunjungan, ada n+1 transisi.
- Kunjungan selalu diawali dengan transisi sebelumnya (indeks yang sama) dan transisi setelahnya (indeks + 1).
- Kendaraan selalu dimulai dengan transisi #0.
- Akhir kendaraan selalu didahului oleh transisi #n.
Saat diperbesar, berikut yang terjadi selama Transition dan Visit:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Terakhir, berikut cara TRAVEL, BREAKS, DELAY, dan WAIT dapat diatur selama transisi.
- Keduanya tidak tumpang-tindih.
- KETERLAMBATAN bersifat unik dan harus berupa periode waktu yang berdekatan tepat sebelum kunjungan berikutnya (atau akhir perjalanan kendaraan). Jadi, Anda cukup mengetahui durasi penundaan untuk mengetahui waktu mulai dan berakhirnya.
- BREAKS adalah jangka waktu yang berdekatan dan tidak tumpang-tindih. Respons menentukan waktu mulai dan durasi setiap istirahat.
- TRAVEL dan WAIT dapat "diinterupsi": keduanya dapat terganggu beberapa kali selama transisi ini. Klien dapat mengasumsikan bahwa perjalanan terjadi "sesegera mungkin" dan "tunggu" 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, diidentifikasi berdasarkan indeksnya dalam |
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 merepresentasikan 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 rentang waktu saat ini karena perkiraan waktu perjalanan yang meningkat |
route_polyline |
Representasi polyline yang dienkode dari rute. Kolom ini hanya diisi jika |
breaks[] |
Istirahat terjadwal untuk kendaraan yang melakukan rute ini. Urutan |
metrics |
Metrik durasi, jarak, dan pemuatan untuk rute ini. Kolom |
vehicle_fullness |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
route_costs |
Biaya rute, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, relatif terhadap input OptimizeToursRequest, misalnya "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan di seluruh rute. Dengan kata lain, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan di rute tersebut. 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 istirahat.
| 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 merepresentasikan titik-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 pada transisi ini. Jika ada, penundaan dimulai tepat |
break_duration |
Jumlah durasi jeda yang terjadi selama transisi ini, jika ada. Detail tentang waktu mulai dan durasi setiap istirahat disimpan di |
wait_duration |
Waktu yang dihabiskan untuk menunggu selama transisi ini. Durasi menunggu sesuai dengan waktu tidak ada aktivitas dan tidak termasuk waktu istirahat. Perhatikan juga bahwa waktu tunggu ini dapat dibagi menjadi beberapa interval yang tidak berdekatan. |
total_duration |
Total durasi transisi, disediakan untuk kemudahan. 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, menghormati niat 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 beban aktual kendaraan di suatu titik di sepanjang rute, untuk jenis tertentu (lihat Transition.vehicle_loads).
| Kolom | |
|---|---|
amount |
Jumlah beban pada kendaraan, untuk jenis tertentu. 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 (true), kunjungan sesuai dengan pengambilan |
visit_request_index |
Indeks |
start_time |
Waktu saat kunjungan dimulai. Perhatikan bahwa kendaraan dapat tiba lebih awal dari waktu ini di lokasi kunjungan. Waktu konsisten dengan |
load_demands |
Total permintaan pemuatan kunjungan sebagai jumlah pengiriman dan permintaan kunjungan |
detour |
Waktu perjalanan tambahan karena pengiriman yang dikunjungi di rute sebelum kunjungan dan potensi waktu tunggu yang disebabkan oleh rentang waktu. Jika kunjungan adalah pengiriman, pengalihan rute dihitung dari kunjungan pengambilan yang sesuai dan sama dengan: Jika tidak, nilai ini dihitung dari |
shipment_label |
Salinan |
visit_label |
Salinan |
injected_solution_location_token |
Token buram yang merepresentasikan 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. |
ShipmentTypeIncompatibility
Menentukan ketidakcocokan antara pengiriman bergantung pada shipment_type-nya. Tampilan pengiriman yang tidak kompatibel pada rute yang sama dibatasi berdasarkan mode ketidakcocokan.
| Kolom | |
|---|---|
types[] |
Daftar jenis yang tidak kompatibel. Dua pengiriman yang memiliki |
incompatibility_mode |
Mode yang diterapkan pada inkompatibilitas. |
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 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 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 setidaknya salah satu pengiriman "wajib". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Dengan mode Oleh karena itu, pengambilan kiriman "tanggungan" harus memiliki salah satu dari:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Sama seperti sebelumnya, kecuali pengiriman "dependent" harus memiliki pengiriman "required" di kendaraan pada saat pengiriman. |
SkippedShipment
Menentukan detail pengiriman yang belum dilakukan dalam solusi. Untuk kasus sepele dan/atau jika kami dapat mengidentifikasi penyebab lewati, kami melaporkan alasannya di sini.
| Kolom | |
|---|---|
index |
Indeks sesuai dengan indeks pengiriman dalam |
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 di masa mendatang. |
estimated_incompatible_vehicle_ratio |
Perkiraan rasio kendaraan yang tidak dapat melakukan pengiriman ini karena setidaknya salah satu alasan di bawah. Catatan: kolom ini hanya diisi jika alasannya melibatkan kendaraan. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
Alasan
Jika kami dapat menjelaskan alasan pengiriman dilewati, alasannya akan tercantum di sini. Jika alasannya tidak sama untuk semua kendaraan, reason akan memiliki lebih dari 1 elemen. Pengiriman yang dilewati tidak boleh memiliki alasan duplikat, yaitu jika semua kolom sama kecuali 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 kapasitas "Apel" satu kendaraan akan terlampaui (termasuk kendaraan 1), setidaknya kapasitas "Pir" satu kendaraan akan terlampaui (termasuk kendaraan 3), dan setidaknya batas jarak satu kendaraan akan terlampaui (termasuk kendaraan 1).
| Kolom | |
|---|---|
code |
Lihat komentar Kode. |
example_vehicle_indices[] |
Sama seperti Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
example_exceeded_capacity_type |
Jika kode alasan adalah |
example_vehicle_index |
Jika alasannya terkait dengan ketidakcocokan kendaraan pengiriman, kolom ini memberikan indeks salah satu kendaraan yang relevan. |
Kode
Kode yang mengidentifikasi jenis alasan. Urutan di sini tidak ada artinya. Khususnya, tidak ada indikasi apakah suatu alasan 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, kita menggunakan jarak geodetik. |
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/s (sekitar 130 km/jam). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Sama seperti di atas, tetapi kita hanya membandingkan waktu tempuh 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 bukan miliknya. |
VEHICLE_IGNORED |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
SHIPMENT_IGNORED |
Kolom Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
Pengiriman dilewati di Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
Kelonggaran rute kendaraan yang ditentukan dalam Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
ZERO_PENALTY_COST |
Pengiriman memiliki biaya penalti nol. Meskipun dapat berguna sebagai pilihan pemodelan tingkat lanjut, hal ini juga dapat menjelaskan setelah fakta mengapa pengiriman dilewati. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di masa mendatang. |
TimeWindow
Rentang waktu membatasi waktu terjadinya peristiwa, seperti waktu kedatangan saat berkunjung, atau waktu mulai dan berakhir kendaraan.
Batas jangka waktu tetap, start_time dan end_time, memberlakukan 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 berapa lama 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) dan 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, nilainya akan ditetapkan ke |
end_time |
Waktu berakhir periode waktu tetap. Jika tidak ditentukan, nilainya akan ditetapkan ke |
soft_start_time |
Waktu mulai lembut periode waktu. |
soft_end_time |
Waktu berakhir sementara periode waktu. |
cost_per_hour_before_soft_start_time |
Biaya per jam ditambahkan ke biaya lain dalam model jika peristiwa terjadi sebelum soft_start_time, 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 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 berurutan di 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 berlaku untuk atribut ini. Kunjungan sumber atau awal kendaraan cocok jika |
excluded_src_tag |
Lihat |
dst_tag |
Kunjungan tujuan atau akhir kendaraan cocok jika |
excluded_dst_tag |
Lihat |
cost |
Menentukan biaya untuk melakukan transisi ini. Nilai ini berada dalam unit yang sama dengan semua biaya lainnya dalam model dan tidak boleh negatif. Biaya ini diterapkan di atas semua biaya yang ada. |
cost_per_kilometer |
Menentukan biaya per kilometer yang diterapkan pada jarak yang ditempuh saat melakukan transisi ini. Nilai ini ditambahkan ke |
distance_limit |
Menentukan batas jarak yang ditempuh saat melakukan transisi ini. Mulai 2021/06, hanya batas lunak 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 diberi akhiran |
Kendaraan
Membuat model 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 bisa 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 |
Kumpulan kondisi yang harus dipenuhi yang memengaruhi cara penghitungan rute untuk kendaraan tertentu. |
start_location |
Lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil kiriman. Jika tidak ditentukan, kendaraan akan memulai perjalanan dari lokasi penjemputan pertamanya. Jika model pengiriman memiliki matriks durasi dan jarak, |
start_waypoint |
Titik jalan yang merepresentasikan lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil pengiriman. Jika |
end_location |
Lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
end_waypoint |
Titik jalan yang merepresentasikan lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
start_tags[] |
Menentukan tag yang dilampirkan ke awal rute kendaraan. String kosong atau duplikat tidak diizinkan. |
end_tags[] |
Menentukan tag yang dilampirkan di akhir rute kendaraan. String kosong atau duplikat tidak diizinkan. |
start_time_windows[] |
Periode waktu saat kendaraan dapat berangkat dari lokasi awalnya. Nilai harus berada dalam batas waktu global (lihat kolom Periode waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak ada periode waktu yang dapat tumpang-tindih atau berdekatan dengan periode waktu lain, dan harus dalam urutan kronologis.
|
end_time_windows[] |
Rentang waktu saat kendaraan dapat tiba di lokasi akhir. Nilai harus berada dalam batas waktu global (lihat kolom Periode waktu yang termasuk dalam kolom berulang yang sama harus terpisah, yaitu tidak ada periode waktu yang dapat tumpang-tindih atau berdekatan dengan periode waktu lain, dan harus dalam urutan kronologis.
|
unloading_policy |
Kebijakan pembongkaran diterapkan pada kendaraan. |
load_limits |
Kapasitas kendaraan (berat, volume, jumlah palet, misalnya). Kunci dalam peta adalah ID jenis beban, yang konsisten dengan kunci kolom |
cost_per_hour |
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 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 berlaku untuk waktu tempuh yang diperlukan oleh rute (yaitu, yang dilaporkan dalam |
cost_per_kilometer |
Biaya per kilometer rute kendaraan. Biaya ini diterapkan pada jarak yang dilaporkan di |
fixed_cost |
Biaya tetap diterapkan jika kendaraan ini digunakan untuk menangani pengiriman. |
used_if_route_is_empty |
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 bergerak 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 melakukan perjalanan dari lokasi awal ke lokasi akhir, dan tidak ada |
route_duration_limit |
Batas diterapkan pada total durasi rute kendaraan. Dalam |
travel_duration_limit |
Batas yang diterapkan pada durasi perjalanan rute kendaraan. Dalam |
route_distance_limit |
Batas 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 |
Mendeskripsikan 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, 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 |
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.
| Kolom | |
|---|---|
max_duration |
Batas ketat yang membatasi durasi menjadi paling lama max_duration. |
soft_max_duration |
Batas lunak yang 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 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 unit yang sama. Jika ditentukan,
|
cost_per_hour_after_soft_max |
Biaya per jam yang dikenakan jika batas Biaya tidak boleh negatif. |
cost_per_square_hour_after_quadratic_soft_max |
Biaya per jam persegi yang dikenakan jika batas Biaya tambahan adalah 0 jika durasinya 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 membawa muatan hingga 3.500 kg". Lihat load_limits.
| Kolom | |
|---|---|
soft_max_load |
Batas lunak beban. Lihat |
cost_per_unit_above_soft_max |
Jika beban pernah melebihi |
start_load_interval |
Interval muatan yang dapat diterima dari kendaraan di awal rute. |
end_load_interval |
Interval muatan yang dapat diterima dari kendaraan di akhir rute. |
max_load |
Jumlah beban maksimum yang dapat diterima. |
cost_per_kilometer |
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. |
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 muatan 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 beban 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 secara setara 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 rute adalah 120,0.
Namun, jika rutenya adalah start,pickup,delivery,pickup,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: 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 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.
| Kolom | |
|---|---|
load_threshold |
Jumlah muatan di atasnya biaya pemindahan satu 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 beban, untuk setiap unit antara 0 dan nilai minimum. Harus berupa nilai terbatas, dan >= 0. |
cost_per_unit_above_threshold |
Biaya pemindahan satu 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. |
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 Anda.
| Enum | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode perjalanan tidak ditentukan, setara dengan DRIVING. |
DRIVING |
Mode perjalanan yang sesuai dengan rute mengemudi (mobil, ...). |
WALKING |
Mode perjalanan yang sesuai dengan rute jalan kaki. |
UnloadingPolicy
Kebijakan tentang cara menurunkan kendaraan. Hanya berlaku untuk pengiriman yang memiliki pengambilan dan pengantaran.
Pengiriman lainnya dapat dilakukan di mana saja di sepanjang rute, terlepas dari unloading_policy.
| Enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Kebijakan pembongkaran 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 berada di antara 0 dan 1, dihitung sebagai rasio antara kolom metrik yang dibatasi (misalnya, AggregatedMetrics.travel_distance_meters) dan batas kendaraan terkait (misalnya, Vehicle.route_distance_limit), jika ada. Jika tidak, rasio kelengkapan akan tetap tidak disetel. Jika batasnya adalah 0, kolom akan ditetapkan ke 1. Catatan: jika rute mengalami masalah karena lalu lintas, beberapa rasio keterisian mentah mungkin melebihi 1,0, misalnya, kendaraan mungkin melebihi batas jaraknya. Dalam kasus ini, kami membatasi nilai kecukupan 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
Mengkapsulasi 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 sehingga kendaraan dapat berhenti di sisi jalan yang cenderung mengarah ke lokasi dari tengah jalan. Opsi ini tidak berfungsi untuk mode perjalanan 'BERJALAN KAKI'. |
vehicle_stopover |
Menunjukkan bahwa titik jalan ditujukan agar kendaraan berhenti di sana, dengan maksud untuk menjemput atau mengantar. Opsi ini hanya berfungsi untuk mode perjalanan 'DRIVING', dan saat 'location_type' adalah 'location'. Eksperimental: Perilaku atau keberadaan kolom ini dapat berubah di 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 arah 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 merepresentasikan bangunan cocok, tetapi ID tempat yang merepresentasikan jalan tidak disarankan. |