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)OptimizeToursRequest
(pesan)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(pesan)OptimizeToursResponse.Metrics
(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.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)Vehicle
(pesan)Vehicle.DurationLimit
(pesan)Vehicle.LoadLimit
(pesan)Vehicle.LoadLimit.Interval
(pesan)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)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 disetel atau disetel 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 dibatalkan penetapannya 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 tur kendaraan untuk satu atau beberapa pesan Metode ini termasuk Long Running Operation (LRO). Input untuk pengoptimalan (pesan Pengguna dapat melakukan polling Jika kolom Jika kolom
|
OptimizeTours |
---|
Mengirim Model Tujuannya adalah memberikan penetapan
|
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 keterlambatan untuk rute atau solusi. |
break_duration |
Total durasi jeda 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 (solusi respons), untuk setiap kuantitas pada rute ini (solusi respons), dihitung sebagai jumlah maksimum di seluruh |
BatchOptimizeToursMetadata
Jenis ini tidak memiliki kolom.
Metadata operasi untuk panggilan BatchOptimizeToursRequest
.
BatchOptimizeToursRequest
Permintaan untuk mengoptimalkan tur secara batch 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 di project yang sama.
Kolom | |
---|---|
parent |
Wajib. Project target dan lokasi untuk melakukan panggilan. Format: * Jika tidak ada lokasi yang ditentukan, wilayah 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 ditetapkan 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 menghasilkan waktu istirahat untuk kendaraan (misalnya istirahat makan siang). Waktu istirahat adalah periode waktu berurutan saat kendaraan tetap tidak ada aktivitas pada posisi saat ini dan tidak dapat melakukan kunjungan apa pun. Gangguan 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 dimulai (kendaraan mungkin tidak dimulai di tengah jeda), dalam hal ini tidak akan memengaruhi waktu mulai kendaraan.
- atau setelah akhir kendaraan (sama dengan, dengan waktu berakhir kendaraan).
Kolom | |
---|---|
break_requests[] |
Urutan jeda. Lihat pesan |
frequency_constraints[] |
Beberapa |
BreakRequest
Urutan jeda (yaitu nomor dan urutannya) yang berlaku untuk setiap kendaraan harus diketahui sebelumnya. BreakRequest
yang berulang menentukan urutan tersebut, sesuai urutan kemunculannya. Periode waktunya (earliest_start_time
/ latest_start_time
) mungkin tumpang-tindih, tetapi harus kompatibel dengan pesanan (ini dicentang).
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 istirahat. Harus positif. |
FrequencyConstraint
Anda dapat lebih membatasi 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 jangka waktu geser apa pun selama 12 jam, harus ada setidaknya satu jeda setidaknya satu jam", contoh tersebut akan diterjemahkan menjadi FrequencyConstraint
berikut:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Pengaturan waktu dan durasi jeda dalam solusi akan mengikuti semua batasan tersebut, selain jangka waktu dan durasi minimum yang sudah ditentukan dalam BreakRequest
.
Dalam praktiknya, FrequencyConstraint
dapat diterapkan untuk jeda yang tidak berurutan. Misalnya, jadwal berikut mengikuti "1h setiap 12 jam" contoh:
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 dari setiap interval waktu di rute yang tidak menyertakan setidaknya jeda |
DataFormat
Format data untuk file input dan output.
Enum | |
---|---|
DATA_FORMAT_UNSPECIFIED |
Nilai tidak valid, format tidak boleh UNSPECIFIED. |
JSON |
Notasi Objek JavaScript. |
PROTO_TEXT |
Format teks Buffering Protokol. Lihat https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Batas yang menentukan jarak maksimum yang dapat ditempuh. Dapat berupa keras atau lembut.
Jika batas lunak ditentukan, soft_max_meters
dan cost_per_kilometer_above_soft_max
harus ditentukan dan tidak negatif.
Kolom | |
---|---|
max_meters |
Batas ketat yang membatasi jarak untuk mencapai maksimal max_meters. Batas tidak boleh negatif. |
soft_max_meters |
Batas awal tidak menerapkan batas jarak maksimum, tetapi jika dilanggar akan mengakibatkan biaya yang menambah biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, soft_max_meters harus kurang dari max_meters dan harus bilangan 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 timbul jika jarak di atas batas
Biaya harus bilangan positif. |
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 yang harus dibatasi dan cara membatasinya.
Kolom | |
---|---|
routes[] |
Rute solusi yang akan diinjeksi. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skipped_shipments[] |
Melewati pengiriman solusi untuk diinjeksi. Beberapa bagian mungkin dihilangkan dari solusi awal. Lihat kolom |
constraint_relaxations[] |
Untuk nol kelompok kendaraan atau lebih, tentukan waktu dan seberapa banyak batasan yang akan dilonggarkan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan sepenuhnya dibatasi. |
ConstraintRelaxation
Untuk grup kendaraan, menentukan pada nilai minimum mana batasan kunjungan akan dilonggarkan dan ke tingkat mana. Pengiriman yang tercantum di kolom skipped_shipment
dibatasi untuk dilewati; yaitu, pengiriman 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 menerapkan batasan kunjungan Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations
kosong, waktu mulai dan urutan semua kunjungan pada routes
akan dibatasi sepenuhnya dan tidak ada kunjungan baru yang dapat disisipkan atau ditambahkan ke rute tersebut. Selain itu, waktu mulai dan waktu berakhir kendaraan di routes
dibatasi sepenuhnya, 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_time
DANj + 1 >= relaxations(i).threshold_visit_count
Demikian pula, start kendaraan dilonggarkan ke relaxations(i).level
jika memenuhi:
vehicle_start_time >= relaxations(i).threshold_time
DANrelaxations(i).threshold_visit_count == 0
dan ujung kendaraan dilonggarkan kerelaxations(i).level
jika memenuhi:vehicle_end_time >= relaxations(i).threshold_time
DANroute.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 disetel dan satu lagi dengan hanya threshold_time
yang disetel. Jika sebuah kunjungan memenuhi kondisi beberapa relaxations
, tingkat yang paling longgar akan berlaku. Hasilnya, dari awal kendaraan hingga kunjungan rute 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
akan dibatasi sepenuhnya dan tidak ada kunjungan yang dapat dimasukkan ke dalam urutan ini. Selain itu, jika awal atau akhir kendaraan tidak memenuhi kondisi pelonggaran apa pun, waktunya akan tetap, kecuali jika kendaraan kosong.
Kolom | |
---|---|
level |
Level relaksasi batasan yang berlaku saat kondisi pada atau setelah |
threshold_time |
Waktu saat atau setelah relaksasi |
threshold_visit_count |
Jumlah kunjungan pada saat atau setelah relaksasi Jika |
Tingkat
Mengekspresikan berbagai level relaksasi batasan, yang diterapkan untuk kunjungan dan yang mengikuti ketika memenuhi kondisi ambang batas.
Enumerasi di bawah ini adalah untuk meningkatkan relaksasi.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Tingkat relaksasi default implisit: tidak ada batasan yang longgar, yaitu, semua kunjungan sepenuhnya dibatasi. 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 dengan kendaraan yang sama dan urutan kunjungan harus diamati: 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 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. Harus berupa objek (file) tunggal. |
Lokasi
mengenkapsulasi 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 pengangkutan dan penurunan penumpang. Nilai arah dapat berasal dari 0 hingga 360, dengan 0 menentukan arah utara, 90 menentukan arah Timur, dll. |
OptimizeToursRequest
Permintaan untuk diberikan kepada pemecah masalah pengoptimalan tur yang menentukan model pengiriman serta parameter pengoptimalan.
Kolom | |
---|---|
parent |
Wajib. Project atau lokasi target untuk melakukan panggilan. Format: * Jika tidak ada lokasi yang ditentukan, wilayah akan dipilih secara otomatis. |
timeout |
Jika waktu tunggu ini disetel, 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 membuat solusi (jika memungkinkan) sebelum waktu tunggu berlalu. |
model |
Model pengiriman yang harus dipecahkan. |
solving_mode |
Secara default, mode penyelesaian 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 dibangun. Semua 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 dimasukkan tidak memungkinkan, error validasi belum tentu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan. |
injected_solution_constraint |
Batasi algoritma pengoptimalan untuk menemukan solusi akhir yang serupa dengan solusi sebelumnya. Misalnya, opsi ini dapat digunakan untuk membekukan bagian rute yang telah selesai atau yang akan diselesaikan tetapi tidak boleh dimodifikasi. Jika solusi yang dimasukkan tidak memungkinkan, error validasi belum tentu ditampilkan dan error yang menunjukkan ketidaklayakan dapat ditampilkan. |
refresh_details_routes[] |
Jika tidak kosong, rute yang diberikan akan dimuat ulang, tanpa mengubah urutan kunjungan atau waktu perjalanan yang mendasarinya: hanya detail lain yang akan diperbarui. Ini tidak menyelesaikan model. Mulai 2020/11, konfigurasi 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 paling banyak sekali di kategorinya:
Jika Menghapus kunjungan rute atau seluruh rute dari solusi yang diinjeksikan dapat memengaruhi batasan tersirat, yang dapat menyebabkan perubahan solusi, kesalahan 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 (benar), polyline 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 berdurasi panjang memiliki risiko gangguan yang jauh lebih besar (tetapi masih kecil). |
use_geodesic_distances |
Jika benar, 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, 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 pemecahan_mode=VALIDATE_ONLY: lihat kolom |
SearchMode
Mode yang menentukan perilaku penelusuran, dengan mengorbankan latensi versus kualitas solusi. Dalam semua mode, batas waktu permintaan global akan diterapkan.
Enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
Mode penelusuran tidak ditentukan, setara dengan RETURN_FAST . |
RETURN_FAST |
Hentikan penelusuran setelah menemukan solusi terbaik yang pertama. |
CONSUME_ALL_AVAILABLE_TIME |
Gunakan semua waktu yang tersedia untuk mencari solusi yang lebih baik. |
SolvingMode
Menentukan cara pemecah masalah menangani permintaan. Di 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 modelnya. Peringatan mungkin 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 dapat dilakukan ditampilkan di sini, tetapi hanya pengiriman yang terdeteksi sebagai tidak dapat dilakukan selama prapemrosesan. |
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 dilewati. |
validation_errors[] |
Daftar semua error validasi yang dapat kami deteksi secara independen. Lihat penjelasan "MULTIPLE ERRORS" untuk pesan |
metrics |
Metrik durasi, jarak, dan penggunaan untuk solusi ini. |
Metrik
Metrik keseluruhan, yang digabungkan di semua rute.
Kolom | |
---|---|
aggregated_route_metrics |
Digabungkan berdasarkan rute. Setiap metrik adalah jumlah (atau nilai maks, untuk pemuatan) pada semua kolom |
skipped_mandatory_shipment_count |
Jumlah pengiriman wajib 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, yang dihitung sebagai waktu mulai minimum untuk semua kendaraan bekas sebesar |
latest_vehicle_end_time |
Waktu berakhir terbaru untuk kendaraan bekas, yang dihitung sebagai waktu berakhir maksimum untuk semua kendaraan bekas sebesar |
costs |
Biaya solusi, yang diperinci berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, terkait dengan input OptimizeToursRequest, mis. "model.shipments.pickups.cost", dan nilainya adalah total biaya yang dihasilkan oleh kolom biaya yang sesuai, yang digabungkan dari keseluruhan 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. |
OptimizeToursValidationError
Menjelaskan error atau peringatan yang dialami saat memvalidasi OptimizeToursRequest
.
Kolom | |
---|---|
code |
Error validasi ditentukan oleh pasangan ( Kolom lain (di bawah) memberikan lebih banyak konteks tentang error tersebut. KESALAHAN BEBERAPA: Jika ada beberapa error, proses validasi akan mencoba menghasilkan beberapa error. 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: REFERENSI: Daftar semua pasangan (kode, nama):
|
display_name |
Nama tampilan error. |
fields[] |
Konteks error dapat melibatkan 0, 1 (sebagian besar waktu), atau beberapa kolom. Misalnya, merujuk pada 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. Ada pemetaan 1:1 antara STABILITAS: Tidak stabil: pesan error yang terkait dengan |
offending_values |
Dapat berisi nilai kolom. Fitur ini tidak selalu tersedia. Anda 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 hierarki yang sama. Misalnya, kami dapat menetapkan 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 atas seperti OptimizeToursRequest
atau ShipmentModel
agar pesan tidak memenuhi kriteria.
Kolom | |
---|---|
name |
Nama kolom, mis., "kendaraan". |
sub_field |
Sub-kolom bersarang rekursif, jika diperlukan. |
Kolom union
|
|
index |
Indeks kolom jika diulang. |
key |
Kunci jika kolomnya 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
Mengenkapsulasi serangkaian kondisi opsional yang harus dipenuhi saat menghitung rute kendaraan. Hal ini serupa 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 untuk 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 wajar. Preferensi akan diberikan untuk 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 wajar. Preferensi akan diberikan untuk rute yang tidak berisi navigasi dalam ruangan. Hanya berlaku untuk mode perjalanan |
Pengiriman
Pengiriman satu item, dari salah satu pengambilan ke salah satu pengiriman. Agar pengiriman dianggap telah dilaksanakan, kendaraan unik harus mengunjungi salah satu lokasi pengambilannya (dan mengurangi kapasitas cadangannya), lalu mengunjungi salah satu lokasi pengirimannya nanti (dan karenanya meningkatkan kembali kapasitas cadangannya).
Kolom | |
---|---|
display_name |
Nama tampilan pengiriman yang ditentukan pengguna. Panjang maksimal 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 |
Pemuatan permintaan 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, beban yang terkait akan dianggap sebagai null. |
allowed_vehicle_indices[] |
Kumpulan kendaraan yang dapat melakukan pengiriman ini. Jika kosong, semua kendaraan dapat menjalankannya. Kendaraan diberikan berdasarkan indeksnya di daftar |
costs_per_vehicle[] |
Menentukan biaya yang dikeluarkan saat pengiriman ini dikirimkan oleh setiap kendaraan. Jika ditentukan, kolom harus memiliki EITHER:
Biaya ini harus berada dalam unit yang sama dengan |
costs_per_vehicle_indices[] |
Indeks kendaraan yang menerapkan |
pickup_to_delivery_absolute_detour_limit |
Menentukan waktu putar balik absolut maksimum dibandingkan dengan jalur terpendek dari pengambilan ke pengiriman. Jika ditentukan, nilainya harus positif, dan pengiriman harus berisi setidaknya jenis pengambilan dan pengantaran. Misalnya, anggaplah waktu tersingkat untuk beralih dari alternatif pengambilan yang dipilih langsung ke alternatif pengiriman yang dipilih. Kemudian, menyetel
Jika batas relatif dan absolut ditentukan pada pengiriman yang sama, batas yang lebih membatasi akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai tahun 2017/10, putar balik hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
pickup_to_delivery_time_limit |
Menentukan durasi maksimum dari awal pengambilan hingga awal pengiriman pengiriman. Jika ditentukan, nilainya harus positif, dan pengiriman harus berisi setidaknya jenis pengambilan dan pengantaran. Hal ini tidak bergantung pada alternatif mana yang dipilih untuk pengambilan dan pengantaran, atau kecepatan kendaraan. Hal ini dapat ditentukan bersama dengan batasan pengalihan maksimum: solusi akan mematuhi kedua spesifikasi tersebut. |
shipment_type |
String yang tidak kosong yang menentukan "jenis" untuk pengiriman ini. Fitur ini dapat digunakan untuk menentukan inkompatibilitas atau persyaratan antara Berbeda dari |
label |
Menentukan label untuk pengiriman ini. Label ini dilaporkan dalam respons dalam |
ignore |
Jika benar, lewati pengiriman ini, tetapi jangan terapkan Mengabaikan pengiriman 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 pengantaran dikunjungi. Biaya dapat dinyatakan dalam unit yang sama yang digunakan untuk semua kolom terkait biaya lainnya dalam model dan harus bernilai positif. PENTING: Jika penalti ini tidak ditentukan, maka akan dianggap tidak terbatas, yaitu pengiriman harus diselesaikan. |
pickup_to_delivery_relative_detour_limit |
Menentukan waktu putar balik relatif maksimum dibandingkan dengan jalur terpendek dari pengambilan ke pengiriman. Jika ditentukan, nilainya harus positif, dan pengiriman harus berisi setidaknya jenis pengambilan dan pengantaran. Misalnya, anggaplah waktu tersingkat untuk beralih dari alternatif pengambilan yang dipilih langsung ke alternatif pengiriman yang dipilih. Kemudian, menyetel
Jika batas relatif dan absolut ditentukan pada pengiriman yang sama, batas yang lebih membatasi akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai tahun 2017/10, putar balik 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 merupakan pengiriman. Pesan ini menentukan jumlah tersebut. Lihat load_demands
.
Kolom | |
---|---|
amount |
Jumlah beban kendaraan yang melakukan kunjungan yang sesuai akan bervariasi. Karena ini adalah bilangan bulat, pengguna disarankan untuk memilih unit yang sesuai untuk menghindari kehilangan presisi. Harus ≥ 0. |
VisitRequest
Permintaan kunjungan yang dapat dilakukan dengan kendaraan: memiliki lokasi geografis (atau dua, lihat di bawah), jam buka dan tutup yang diwakili oleh jangka waktu, dan waktu durasi layanan (waktu yang dihabiskan oleh kendaraan setelah kendaraan tiba untuk mengambil atau mengembalikan barang).
Kolom | |
---|---|
arrival_location |
Geo-lokasi tempat kendaraan tiba saat melakukan |
arrival_waypoint |
Titik jalan tempat kendaraan tiba saat melakukan |
departure_location |
Geolokasi tempat kendaraan berangkat setelah menyelesaikan |
departure_waypoint |
Titik jalan tempat kendaraan berangkat setelah menyelesaikan |
tags[] |
Menentukan tag yang disertakan 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 periode waktu kedatangan, yaitu waktu kedatangan + durasi tidak harus berada di dalam jangka waktu. Hal ini dapat menyebabkan waktu tunggu jika kendaraan tiba sebelum Tidak adanya Periode waktu harus terpisah, yaitu tidak boleh ada periode waktu yang tumpang tindih atau berdekatan dengan yang lain, dan periode tersebut harus dalam urutan yang meningkat.
|
duration |
Durasi kunjungan, yaitu waktu yang dihabiskan oleh kendaraan antara kedatangan dan keberangkatan (untuk ditambahkan ke kemungkinan waktu tunggu; lihat |
cost |
Biaya untuk melayani permintaan kunjungan ini pada rute kendaraan. Kartu ini dapat digunakan untuk membayar biaya yang berbeda untuk setiap pengambilan atau pengiriman alternatif. Biaya ini harus dalam unit yang sama dengan |
load_demands |
Muat permintaan kunjungan ini. Kolom ini sama seperti kolom |
visit_types[] |
Menentukan jenis kunjungan. Izin ini dapat digunakan untuk mengalokasikan waktu tambahan yang diperlukan kendaraan untuk menyelesaikan kunjungan ini (lihat Suatu jenis hanya dapat muncul sekali. |
label |
Menentukan label untuk |
ShipmentModel
Model pengiriman berisi satu set pengiriman yang harus dilakukan oleh serangkaian kendaraan, sekaligus meminimalkan biaya keseluruhan, yang merupakan penjumlahan dari:
- biaya perutean kendaraan (jumlah biaya per total waktu, biaya per waktu perjalanan, dan biaya tetap untuk semua kendaraan).
- penalti 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. |
global_start_time |
Waktu mulai dan berakhir global untuk 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 berakhir efektif terbaru untuk semua kendaraan. Misalnya, pengguna dapat menetapkan biaya per jam ke kuantitas tersebut untuk mencoba dan mengoptimalkan penyelesaian pekerjaan paling awal. Biaya ini harus dalam unit yang sama dengan |
duration_distance_matrices[] |
Menentukan matriks durasi dan jarak yang digunakan dalam model. Jika kolom ini kosong, jarak Google Maps atau 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[] |
Kumpulan aturan prioritas yang harus diterapkan di model. |
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 kendaraan multi-penumpang. Pengoptimalan tersebut kemudian akan memilih subset kendaraan terbaik yang akan 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 sebanyak |
vehicle_start_tag |
Tag yang menentukan kendaraan mana yang menggunakan matriks durasi dan jarak ini. Jika kosong, ini berlaku untuk semua kendaraan, dan hanya boleh ada satu matriks. Setiap start kendaraan harus sama persis dengan 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 sama banyak 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, jumlah elemen harus sebanyak |
PrecedenceRule
Aturan prioritas antara dua peristiwa (setiap peristiwa adalah pengambilan atau pengantaran pengiriman): "kedua" peristiwa harus dimulai minimal offset_duration
setelah "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 diabaikan.
Kolom | |
---|---|
first_is_delivery |
Menunjukkan jika "pertama" adalah pengiriman. |
second_is_delivery |
Menunjukkan apakah peristiwa "kedua" adalah penayangan. |
offset_duration |
Offset antara "pertama" dan "kedua" peristiwa. Bisa jadi negatif. |
first_index |
Indeks pengiriman "pertama" peristiwa. Kolom ini harus ditentukan. |
second_index |
Indeks pengiriman "kedua" peristiwa. Kolom ini harus ditentukan. |
ShipmentRoute
Rute kendaraan dapat diuraikan, di sepanjang sumbu waktu, seperti ini (kita mengasumsikan 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 membuat perbedaan antara:
- "peristiwa tepat waktu", seperti awal dan akhir kendaraan serta awal dan akhir setiap kunjungan (disebut juga kedatangan dan keberangkatan). Peristiwa ini terjadi pada detik tertentu.
- "interval waktu", seperti kunjungan itu sendiri, dan transisi di antara kunjungan. Meskipun interval waktu terkadang dapat memiliki durasi nol, yaitu dimulai dan berakhir pada detik yang sama, interval waktu sering kali memiliki durasi positif.
Invarian:
- Jika ada n kunjungan, maka ada transisi n+1.
- Kunjungan selalu dikelilingi oleh transisi sebelumnya (indeks yang sama) dan transisi setelahnya (indeks + 1).
- Awal kendaraan selalu diikuti dengan transisi #0.
- Akhir kendaraan selalu didahului dengan transisi #n.
Jika diperbesar, berikut yang akan 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, BREAKS, TUNDA, dan WAIT selama transisi.
- Keduanya tidak tumpang tindih.
- PENEMPATAN bersifat unik dan harus berupa periode waktu yang berurutan tepat sebelum kunjungan berikutnya (atau akhir kendaraan). Dengan demikian, cukup mengetahui durasi penundaan untuk mengetahui waktu mulai dan waktu berakhirnya.
- BREAKS adalah periode waktu yang berdekatan dan tidak tumpang-tindih. Respons menentukan waktu mulai dan durasi setiap jeda.
- TRAVEL dan WAIT dapat "dapat di-preempt": dapat diinterupsi beberapa kali selama transisi ini. Klien dapat berasumsi bahwa perjalanan terjadi "sesegera mungkin" dan bahwa "{i>wait<i}" mengisi sisa waktu.
Contoh A (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. kunjungan[i] adalah kunjungan ke-i dalam rute tersebut. 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[] |
Jeda yang dijadwalkan untuk kendaraan yang melakukan rute ini. Urutan |
metrics |
Metrik durasi, jarak, dan beban untuk rute ini. Kolom |
route_costs |
Biaya rute, yang dikelompokkan berdasarkan kolom permintaan terkait biaya. Kuncinya adalah jalur proto, yang 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, biaya["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan selama 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 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 yang dienkode dari polyline. |
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 |
Saat 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 jeda 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 berdekatan. |
total_duration |
Total durasi transisi, diberikan untuk kenyamanan. 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 |
vehicle_loads |
Kendaraan dimuat selama transisi ini, untuk setiap jenis yang muncul di Beban selama transisi pertama adalah beban awal rute kendaraan. Kemudian, setelah setiap kunjungan, |
VehicleLoad
Melaporkan beban kendaraan yang sebenarnya di beberapa titik di sepanjang rute, untuk jenis tertentu (lihat Transition.vehicle_loads
).
Kolom | |
---|---|
amount |
Jumlah beban pada kendaraan, untuk jenis yang ditentukan. Satuan beban biasanya ditunjukkan oleh jenisnya. Lihat |
Kunjungi
Kunjungan yang dilakukan selama rute. Kunjungan ini berkaitan dengan pengambilan atau pengantaran Shipment
.
Kolom | |
---|---|
shipment_index |
Indeks kolom |
is_pickup |
Jika benar, kunjungan sesuai dengan pengambilan |
visit_request_index |
Indeks |
start_time |
Waktu saat kunjungan dimulai. Perhatikan bahwa kendaraan mungkin tiba lebih awal dari ini di lokasi kunjungan. Waktu konsisten dengan |
load_demands |
Total permintaan beban kunjungan sebagai jumlah pengiriman dan permintaan kunjungan |
detour |
Tambahan waktu putar balik karena pengiriman yang dikunjungi di rute sebelum kunjungan dan potensi waktu tunggu yang disebabkan oleh jangka waktu. Jika kunjungan adalah pengiriman, pengalihan dihitung dari kunjungan pengambilan yang sesuai dan sama dengan:
Jika tidak, komputasi dihitung dari kendaraan
|
shipment_label |
Salinan |
visit_label |
Salinan |
ShipmentTypeIncompatibility
Menentukan ketidaksesuaian antar-pengiriman bergantung pada delivery_type-nya. Tampilan pengiriman yang tidak kompatibel di rute yang sama dibatasi berdasarkan mode inkompatibilitas.
Kolom | |
---|---|
types[] |
Daftar jenis yang tidak kompatibel. Dua pengiriman yang memiliki |
incompatibility_mode |
Mode diterapkan pada inkompatibilitas. |
IncompatibilityMode
Mode yang menentukan bagaimana tampilan pengiriman yang tidak kompatibel dibatasi di rute yang sama.
Enum | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Mode inkompatibilitas tidak ditentukan. Nilai ini tidak boleh digunakan. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Dalam mode ini, dua pengiriman dengan jenis yang tidak kompatibel tidak akan dapat menggunakan kendaraan yang sama. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Untuk dua pengiriman dengan jenis yang tidak kompatibel dengan mode inkompatibilitas
|
ShipmentTypeRequirement
Menentukan persyaratan antar-pengiriman berdasarkan shipping_type-nya. Detail persyaratan ditentukan oleh mode persyaratan.
Kolom | |
---|---|
required_shipment_type_alternatives[] |
Daftar jenis pengiriman alternatif yang diwajibkan oleh |
dependent_shipment_types[] |
Semua pengiriman dengan jenis di kolom CATATAN: Rantai persyaratan sehingga |
requirement_mode |
Mode diterapkan ke persyaratan. |
RequirementMode
Mode yang menentukan tampilan pengiriman dependen di rute.
Enum | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Mode persyaratan tidak ditentukan. Nilai ini tidak boleh digunakan. |
PERFORMED_BY_SAME_VEHICLE |
Dalam mode ini, semua "dependen" pengiriman harus memiliki kendaraan yang sama dengan minimal salah satu dari yang "wajib" pengiriman. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Dengan mode "dependen" pengambilan pengiriman harus memiliki:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Sama seperti sebelumnya, kecuali "dependen" pengiriman harus memiliki “wajib” pengiriman di kendaraan mereka pada saat pengiriman. |
SkippedShipment
Menentukan detail pengiriman yang tidak dilakukan dalam solusi. Untuk kasus yang tidak penting dan/atau jika kami dapat mengidentifikasi penyebabnya, kami akan melaporkan alasannya di sini.
Kolom | |
---|---|
index |
Indeks ini sesuai dengan indeks pengiriman di |
label |
Salinan |
reasons[] |
Daftar alasan yang menjelaskan mengapa pengiriman dilewati. Lihat komentar di atas |
Alasan
Jika kami dapat menjelaskan alasan pengiriman dilewati, alasan tersebut akan dicantumkan 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 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 "Apel" kendaraan kapasitas akan terlampaui (termasuk kendaraan 1), setidaknya satu "Pear" kendaraan kapasitas akan terlampaui (termasuk kendaraan 3) dan setidaknya satu batas jarak satu kendaraan akan terlampaui (termasuk kendaraan 1).
Kolom | |
---|---|
code |
Lihat komentar Kode. |
example_exceeded_capacity_type |
Jika kode alasannya adalah |
example_vehicle_index |
Jika alasannya terkait dengan ketidakcocokan kendaraan pengiriman, kolom ini memberikan indeks satu kendaraan yang relevan. |
Kode
Kode yang mengidentifikasi jenis alasan. Urutan di sini tidak bermakna. Secara khusus, hal ini tidak memberikan indikasi apakah alasan tertentu akan muncul sebelum alasan lainnya dalam solusi, jika keduanya berlaku.
Enum | |
---|---|
CODE_UNSPECIFIED |
Hal ini tidak boleh digunakan. |
NO_VEHICLE |
Tidak ada kendaraan dalam model ini 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 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 tempuh dihitung dalam skenario kasus 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 perjalanan minimum dan travel_duration_limit kendaraan. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Kendaraan tidak dapat melakukan pengiriman ini dalam skenario kasus terbaik (lihat CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT untuk komputasi waktu) jika dimulai pada waktu mulai paling awal: total waktu akan membuat kendaraan berakhir setelah waktu berakhir terbarunya. |
VEHICLE_NOT_ALLOWED |
Kolom allowed_vehicle_indices pengiriman tidak boleh kosong dan kendaraan ini bukan miliknya. |
TimeWindow
Jendela waktu membatasi waktu peristiwa, seperti waktu kedatangan di kunjungan, atau waktu mulai dan berakhir kendaraan.
Batas jangka 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 lunak, soft_start_time
, menyatakan preferensi agar peristiwa terjadi pada atau setelah soft_start_time
dengan menimbulkan biaya yang proporsional dengan durasi 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 yang sulit. Jika tidak ditentukan, nilai tersebut akan ditetapkan ke |
end_time |
Waktu berakhir periode waktu sulit. Jika tidak ditentukan, nilai tersebut akan ditetapkan ke |
soft_start_time |
Waktu soft start dari jangka waktu. |
soft_end_time |
Waktu berakhir sementara pada jangka 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, dihitung sebagai:
Biaya ini harus positif, dan kolom ini 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 bernilai positif, dan kolom ini hanya dapat ditetapkan jika |
TransitionAttributes
Menentukan atribut transisi antara dua kunjungan berturut-turut di rute. Beberapa TransitionAttributes
dapat berlaku untuk transisi yang sama: dalam hal ini, semua biaya tambahan akan 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 akan diterapkan 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. Ini berada dalam unit yang sama dengan semua biaya lain dalam model dan tidak boleh negatif. Tarif ini berlaku di atas semua biaya lain yang ada. |
cost_per_kilometer |
Menentukan biaya per kilometer yang diterapkan ke jarak yang ditempuh saat melakukan transisi ini. Total ini menambahkan hingga |
distance_limit |
Menentukan batas jarak yang ditempuh saat melakukan transisi ini. Mulai 06/2021, hanya batas lunak yang didukung. |
delay |
Menentukan penundaan yang terjadi saat melakukan transisi ini. Keterlambatan ini selalu terjadi setelah menyelesaikan kunjungan sumber dan sebelum memulai kunjungan tujuan. |
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 ditetapkan pengguna. Panjang maksimal 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 sebelum mengambil kiriman. Jika tidak ditentukan, kendaraan akan dimulai saat penjemputan pertamanya. Jika model pengiriman memiliki matriks durasi dan jarak, |
start_waypoint |
Titik jalan yang mewakili lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil pengiriman apa pun. Jika |
end_location |
Lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
end_waypoint |
Titik jalan yang mewakili lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
start_tags[] |
Menentukan tag yang disertakan pada awal rute kendaraan. String kosong atau duplikat tidak diizinkan. |
end_tags[] |
Menentukan tag yang disertakan di akhir rute kendaraan. String kosong atau duplikat tidak diizinkan. |
start_time_windows[] |
Periode waktu saat kendaraan dapat berangkat dari lokasi awalnya. Nilai ini harus berada dalam batas waktu global (lihat kolom Periode waktu milik kolom berulang yang sama harus dipisahkan, yaitu tidak ada periode waktu yang dapat tumpang-tindih atau berdekatan dengan kolom lain, dan periode tersebut harus dalam urutan kronologis.
|
end_time_windows[] |
Periode waktu saat kendaraan mungkin tiba di lokasi akhir. Batas waktu tersebut harus berada dalam batas waktu global (lihat kolom Periode waktu milik kolom berulang yang sama harus dipisahkan, yaitu tidak ada periode waktu yang dapat tumpang-tindih atau berdekatan dengan kolom lain, dan periode tersebut harus dalam urutan kronologis.
|
unloading_policy |
Kebijakan bongkar muat diterapkan di kendaraan. |
load_limits |
Kapasitas kendaraan (misalnya, berat, volume, jumlah palet). Kunci dalam peta adalah ID jenis beban, sesuai dengan kunci kolom |
cost_per_hour |
Biaya kendaraan: semua biaya dijumlahkan dan harus dalam unit yang sama dengan Biaya per jam untuk rute kendaraan. Biaya ini berlaku untuk total waktu yang dibutuhkan oleh rute, dan mencakup waktu perjalanan, waktu tunggu, dan waktu kunjungan. Menggunakan |
cost_per_traveled_hour |
Biaya per jam perjalanan dari rute kendaraan. Biaya ini hanya berlaku untuk waktu perjalanan yang ditempuh rute (yaitu yang dilaporkan dalam |
cost_per_kilometer |
Biaya per kilometer rute kendaraan. Biaya ini diterapkan ke jarak yang dilaporkan di |
fixed_cost |
Biaya tetap berlaku 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. Dalam hal ini, kolom ini menunjukkan apakah kendaraan harus dianggap sebagai bekas atau tidak. Jika benar, kendaraan akan bergerak dari awal ke lokasi akhir meskipun tidak melayani pengiriman, serta biaya waktu dan jarak yang dihasilkan dari startnya --> akhir perjalanan akan diperhitungkan. Jika tidak, kendaraan tidak akan melakukan perjalanan dari awal ke lokasi akhirnya, dan tidak ada |
route_duration_limit |
Batas diterapkan ke total durasi rute kendaraan. Dalam |
travel_duration_limit |
Batas diterapkan pada durasi perjalanan rute kendaraan. Dalam |
route_distance_limit |
Batas diterapkan ke total jarak rute kendaraan. Dalam |
extra_visit_duration_for_visit_type |
Menentukan peta dari string visit_types ke durasi. Durasinya adalah waktu, selain Jika permintaan kunjungan memiliki beberapa jenis, durasi akan ditambahkan untuk setiap jenis di peta. |
break_rule |
Menjelaskan jadwal jeda yang akan diterapkan pada kendaraan ini. Jika kosong, tidak ada waktu 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, menyetel ini ke 2.0 berarti kendaraan ini lebih lambat dan memiliki waktu perjalanan dua kali lipat dari yang sebelumnya untuk kendaraan standar. Beberapa hal ini tidak memengaruhi durasi kunjungan. Hal ini memengaruhi biaya jika PERINGATAN: Waktu tempuh 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. Dapat berupa keras atau lembut.
Jika kolom batas terbatas ditentukan, nilai minimum minimum dan biaya terkait harus ditentukan bersama.
Kolom | |
---|---|
max_duration |
Batas ketat yang membatasi durasi agar mencapai maksimum max_duration. |
soft_max_duration |
Batas sementara tidak menerapkan batas durasi maksimum, tetapi jika dilanggar, rute akan dikenai biaya. Biaya ini menambah 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 akan membuat rute dikenai biaya, kuadrat dalam durasi. Biaya ini menambah biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan,
|
cost_per_hour_after_soft_max |
Biaya per jam yang timbul jika nilai minimum
Biaya harus bilangan positif. |
cost_per_square_hour_after_quadratic_soft_max |
Biaya per jam persegi yang timbul jika nilai minimum Biaya tambahannya adalah 0 jika durasi tidak melebihi nilai minimum. Jika tidak, biaya bergantung pada durasi sebagai berikut:
Biaya harus bilangan positif. |
LoadLimit
Menentukan batas beban yang berlaku untuk kendaraan, misalnya, "truk ini mungkin hanya bisa mengangkut hingga 3.500 kg". Lihat load_limits
.
Kolom | |
---|---|
soft_max_load |
Batas ringan dari beban. Lihat |
cost_per_unit_above_soft_max |
Jika beban melebihi |
start_load_interval |
Interval beban 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. |
Interval
Interval jumlah pemuatan 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 akan dibatasi oleh pesan ini. Jika keduanya ditentukan, |
TravelMode
Mode perjalanan yang dapat digunakan oleh kendaraan.
Ini harus merupakan bagian dari mode perjalanan Routes Preferred API Google Maps Platform. Lihat: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode perjalanan belum ditetapkan, setara dengan DRIVING . |
DRIVING |
Mode perjalanan yang sesuai dengan rute mobil (mobil, ...). |
WALKING |
Mode perjalanan yang sesuai dengan rute jalan kaki. |
UnloadingPolicy
Kebijakan tentang cara bongkar muat kendaraan. Hanya berlaku untuk pengiriman yang memiliki opsi ambil dan antar.
Pengiriman lainnya dapat terjadi di mana saja pada rute yang tidak bergantung pada unloading_policy
.
Enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Kebijakan bongkar muat tidak ditentukan; pengiriman harus dilakukan setelah pengambilan yang sesuai. |
LAST_IN_FIRST_OUT |
Pengiriman harus dilakukan dengan urutan terbalik |
FIRST_IN_FIRST_OUT |
Pengiriman harus dilakukan dengan urutan yang sama dengan pengambilan |
Waypoint
Mengenkapsulasi titik jalan. Titik jalan menandai lokasi kedatangan dan keberangkatan VisitRequests, 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. Jika Anda menetapkan nilai ini, rute akan melewati lokasi sehingga kendaraan dapat berhenti di sisi jalan yang membiaskan lokasi dari tengah jalan. Opsi ini tidak berfungsi untuk 'BERJALAN' mode perjalanan. |
Kolom union location_type . Berbagai cara untuk merepresentasikan lokasi. location_type hanya dapat berupa salah satu dari berikut: |
|
location |
Titik yang ditetapkan menggunakan koordinat geografis, yang mencakup arah opsional. |
place_id |
ID Tempat POI yang terkait dengan titik jalan. |