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 dibatalkan penetapannya 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 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 lintang dan bujur harus bukan nol.
BatchOptimizeTours |
---|
Mengoptimalkan tur kendaraan untuk satu atau beberapa pesan Metode ini adalah Operasi yang Berjalan Lama (LRO). Input untuk pengoptimalan (pesan Pengguna dapat melakukan polling Jika kolom Jika kolom
|
OptimizeTours |
---|
Mengirim Model Tujuannya adalah untuk memberikan penetapan
|
AggregatedMetrics
Metrik gabungan untuk ShipmentRoute
(resp. untuk OptimizeToursResponse
di semua elemen Transition
dan/atau Visit
(resp. di semua elemen ShipmentRoute
).
Kolom | |
---|---|
performed_ |
Jumlah pengiriman yang dilakukan. Perhatikan bahwa pasangan pengambilan dan pengiriman hanya dihitung satu kali. |
travel_ |
Total durasi perjalanan untuk rute atau solusi. |
wait_ |
Total durasi tunggu untuk rute atau solusi. |
delay_ |
Total durasi keterlambatan untuk rute atau solusi. |
break_ |
Total durasi jeda untuk rute atau solusi. |
visit_ |
Total durasi kunjungan untuk rute atau solusi. |
total_ |
Total durasi harus sama dengan jumlah semua durasi di atas. Untuk rute, ini juga sesuai dengan:
|
travel_ |
Total jarak perjalanan untuk rute atau solusi. |
max_ |
Beban maksimum yang dicapai di seluruh rute (resp. solusi), untuk setiap kuantitas di rute ini (resp. solusi), dihitung sebagai maksimum di semua |
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 tersebut berisi informasi untuk membaca/menulis dan menguraikan 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_ |
Wajib. Informasi Input/Output setiap model pembelian, seperti jalur file dan format data. |
AsyncModelConfig
Informasi untuk menyelesaikan satu model pengoptimalan secara asinkron.
Kolom | |
---|---|
display_ |
Opsional. Nama model yang ditentukan pengguna, dapat digunakan sebagai alias oleh pengguna untuk melacak model. |
input_ |
Wajib. Informasi tentang model input. |
output_ |
Wajib. Informasi lokasi output yang diinginkan. |
BatchOptimizeToursResponse
Jenis ini tidak memiliki kolom.
Respons untuk BatchOptimizeToursRequest
. Ini ditampilkan dalam Operasi yang Berjalan Lama setelah operasi selesai.
BreakRule
Aturan untuk membuat jeda waktu bagi kendaraan (misalnya istirahat makan siang). Jeda adalah periode waktu yang berurutan selama kendaraan tetap tidak ada aktivitas di posisinya saat ini dan tidak dapat melakukan kunjungan apa pun. Jeda dapat terjadi:
- selama perjalanan antara dua kunjungan (yang mencakup waktu tepat sebelum atau tepat setelah kunjungan, tetapi tidak di tengah kunjungan), dalam hal ini, waktu transit yang sesuai antara kunjungan akan diperpanjang,
- atau sebelum kendaraan mulai (kendaraan mungkin tidak mulai di tengah jeda), dalam hal ini tidak akan memengaruhi waktu mulai kendaraan.
- atau setelah akhir kendaraan (sama, dengan waktu akhir kendaraan).
Kolom | |
---|---|
break_ |
Urutan jeda. Lihat pesan |
frequency_ |
Beberapa |
BreakRequest
Urutan istirahat (yaitu jumlah dan urutannya) yang berlaku untuk setiap kendaraan harus diketahui sebelumnya. BreakRequest
berulang menentukan urutan tersebut, dalam urutan yang harus terjadi. Periode waktunya (earliest_start_time
/ latest_start_time
) dapat tumpang-tindih, tetapi harus kompatibel dengan urutan (ini diperiksa).
Kolom | |
---|---|
earliest_ |
Wajib. Batas bawah (inklusif) pada awal jeda. |
latest_ |
Wajib. Batas atas (inklusif) pada awal jeda. |
min_ |
Wajib. Durasi minimum jeda iklan. 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 ini dapat ditafsirkan sebagai "Dalam periode waktu geser 12 jam, harus ada setidaknya satu jeda selama minimal 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).
}
Waktu dan durasi jeda dalam solusi akan mematuhi semua batasan tersebut, selain periode waktu dan durasi minimum yang telah ditentukan di BreakRequest
.
Dalam praktiknya, FrequencyConstraint
dapat diterapkan untuk jeda yang tidak berurutan. Misalnya, jadwal berikut mengikuti contoh "1 jam setiap 12 jam":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
Kolom | |
---|---|
min_ |
Wajib. Durasi jeda minimum untuk batasan ini. Non-negatif. Lihat deskripsi |
max_ |
Wajib. Rentang maksimum interval waktu yang diizinkan di rute yang tidak menyertakan setidaknya sebagian jeda |
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. Dapat berupa 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_ |
Batas keras yang membatasi jarak maksimal max_meters. Batas tidak boleh negatif. |
soft_ |
Batas yang dapat dilewati tidak menerapkan batas jarak maksimum, tetapi jika dilanggar akan menghasilkan biaya yang ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, soft_max_meters harus kurang dari max_meters dan tidak boleh negatif. |
cost_ |
Biaya per kilometer yang dikeluarkan, meningkat hingga
Biaya ini tidak didukung di |
cost_ |
Biaya per kilometer yang dikenakan jika jarak melebihi batas
Biaya tidak boleh negatif. |
GcsDestination
Lokasi Google Cloud Storage tempat file output akan ditulis.
Kolom | |
---|---|
uri |
Wajib. URI Google Cloud Storage. |
GcsSource
Lokasi Google Cloud Storage tempat file input akan dibaca.
Kolom | |
---|---|
uri |
Wajib. URI objek Google Cloud Storage dengan format |
InjectedSolutionConstraint
Solusi yang dimasukkan dalam permintaan, termasuk informasi tentang kunjungan yang harus dibatasi dan cara membatasinya.
Kolom | |
---|---|
routes[] |
Rute solusi yang akan dimasukkan. Beberapa rute mungkin dihilangkan dari solusi asli. Rute dan pengiriman yang dilewati harus memenuhi asumsi validitas dasar yang tercantum untuk |
skipped_ |
Pengiriman solusi yang akan dimasukkan dilewati. Beberapa mungkin dihilangkan dari solusi asli. Lihat kolom |
constraint_ |
Untuk nol atau beberapa grup kendaraan, menentukan kapan dan seberapa banyak untuk melonggarkan batasan. Jika kolom ini kosong, semua rute kendaraan yang tidak kosong akan dibatasi sepenuhnya. |
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 di rute dengan kendaraan di |
vehicle_ |
Menentukan indeks kendaraan tempat Indeks kendaraan dipetakan sama seperti |
Relaksasi
Jika relaxations
kosong, waktu mulai dan urutan semua kunjungan di routes
akan sepenuhnya dibatasi 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 pelonggaran 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, awal 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 menjadirelaxations(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 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 hingga kunjungan rute secara berurutan hingga akhir kendaraan, tingkat relaksasi menjadi lebih santai: yaitu, tingkat relaksasi tidak menurun seiring kemajuan rute.
Waktu dan urutan kunjungan rute yang tidak memenuhi kondisi nilai minimum relaxations
apa pun akan sepenuhnya dibatasi dan tidak ada kunjungan yang dapat disisipkan 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 |
Tingkat pelonggaran batasan yang berlaku saat kondisi pada atau setelah |
threshold_ |
Waktu saat atau setelah relaksasi |
threshold_ |
Jumlah kunjungan saat atau setelah relaksasi Jika |
Tingkat
Mengekspresikan berbagai tingkat pelonggaran batasan, yang diterapkan untuk kunjungan dan kunjungan berikutnya jika memenuhi kondisi nilai minimum.
Pengenumerasian di bawah ini diurutkan berdasarkan peningkatan relaksasi.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Tingkat pelonggaran default implisit: tidak ada batasan yang dilonggarkan, 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_ |
Wajib. Format data input. |
Kolom union source . Wajib. source hanya dapat berupa salah satu dari berikut: |
|
gcs_ |
Lokasi Google Cloud Storage. File ini harus berupa satu objek (file). |
Lokasi
Mengenkapsulasi lokasi (titik geografis, dan judul opsional).
Kolom | |
---|---|
lat_ |
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 berkisar dari 0 hingga 360, dengan 0 menentukan arah utara, 90 menentukan arah timur, dll. |
OptimizeToursRequest
Permintaan yang akan diberikan ke solver 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 berakhir 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 habis. |
model |
Model pengiriman yang akan dipecahkan. |
solving_ |
Secara default, mode penyelesaian adalah |
search_ |
Mode penelusuran yang digunakan untuk menyelesaikan permintaan. |
injected_ |
Memandu algoritma pengoptimalan dalam menemukan solusi pertama yang mirip dengan solusi sebelumnya. Model dibatasi saat solusi pertama dibuat. 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 tidak selalu ditampilkan dan error yang menunjukkan ketidakmungkinan dapat ditampilkan. |
injected_ |
Batasi algoritma pengoptimalan untuk menemukan solusi akhir yang mirip dengan solusi sebelumnya. Misalnya, ini dapat digunakan untuk membekukan bagian rute yang telah selesai atau yang akan selesai, tetapi tidak boleh diubah. Jika solusi yang dimasukkan tidak memungkinkan, error validasi tidak selalu ditampilkan dan error yang menunjukkan ketidakmungkinan dapat ditampilkan. |
refresh_ |
Jika tidak kosong, rute yang diberikan akan dimuat ulang, tanpa mengubah urutan kunjungan atau waktu perjalanan yang mendasarinya: hanya detail lainnya yang akan diperbarui. Hal ini tidak menyelesaikan model. Mulai 11/2020, ini hanya mengisi polyline rute yang tidak kosong dan mengharuskan Kolom Kolom ini tidak boleh digunakan bersama dengan
|
interpret_ |
Jika benar:
Penafsiran ini berlaku untuk kolom Jika benar, label dalam kategori berikut harus muncul maksimal satu kali dalam kategorinya:
Jika Menghapus kunjungan rute atau seluruh rute dari solusi yang dimasukkan dapat memengaruhi batasan tersirat, yang dapat menyebabkan perubahan solusi, error validasi, atau ketidakmampuan. CATATAN: Pemanggil harus memastikan bahwa setiap |
consider_ |
Pertimbangkan estimasi traffic dalam menghitung kolom |
populate_ |
Jika true (benar), polyline akan diisi dalam |
populate_ |
Jika true (benar), polyline dan token rute akan diisi dalam respons |
allow_ |
Jika ditetapkan, permintaan dapat memiliki batas waktu (lihat https://grpc.io/blog/deadlines) hingga 60 menit. Jika tidak, batas waktu maksimumnya hanya 30 menit. Perhatikan bahwa permintaan yang berumur panjang memiliki risiko gangguan yang jauh lebih besar (tetapi masih kecil). |
use_ |
Jika benar, jarak perjalanan akan dihitung menggunakan jarak geodesik, bukan jarak Google Maps, dan waktu perjalanan akan dihitung menggunakan jarak geodesik dengan kecepatan yang ditentukan oleh |
label |
Label yang dapat digunakan untuk mengidentifikasi permintaan ini, dilaporkan kembali di |
geodesic_ |
Jika |
max_ |
Memotong jumlah error validasi yang ditampilkan. Error ini biasanya dilampirkan ke payload error INVALID_ARGUMENT sebagai detail error BadRequest (https://cloud.google.com/apis/design/errors#error_details), kecuali jika solving_mode=VALIDATE_ONLY: lihat kolom |
SearchMode
Mode yang menentukan perilaku penelusuran, dengan mengorbankan latensi versus kualitas solusi. Dalam semua mode, batas waktu permintaan global diterapkan.
Enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
Mode penelusuran tidak ditentukan, setara dengan RETURN_FAST . |
RETURN_FAST |
Hentikan penelusuran setelah menemukan solusi pertama yang baik. |
CONSUME_ALL_AVAILABLE_TIME |
Gunakan semua waktu yang tersedia untuk mencari solusi yang lebih baik. |
SolvingMode
Menentukan cara solver menangani permintaan. Dalam semua mode kecuali VALIDATE_ONLY
, jika permintaan tidak valid, Anda akan menerima error INVALID_REQUEST
. Lihat max_validation_errors
untuk membatasi jumlah error yang ditampilkan.
Enum | |
---|---|
DEFAULT_SOLVE |
Selesaikan model. Peringatan dapat dikeluarkan di [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Hanya memvalidasi model tanpa menyelesaikannya: mengisi OptimizeToursResponse.validation_errors sebanyak mungkin. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Hanya mengisi PENTING: tidak semua pengiriman yang tidak 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_ |
Salinan |
skipped_ |
Daftar semua pengiriman yang dilewati. |
validation_ |
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_ |
Digabungkan di seluruh rute. Setiap metrik adalah jumlah (atau maksimum, untuk pemuatan) di semua kolom |
skipped_ |
Jumlah pengiriman wajib yang dilewati. |
used_ |
Jumlah kendaraan yang digunakan. Catatan: jika rute kendaraan kosong dan |
earliest_ |
Waktu mulai paling awal untuk kendaraan bekas, dihitung sebagai minimum dari semua kendaraan bekas |
latest_ |
Waktu akhir 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, 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 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_ |
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 setelah bagian ini memberikan konteks selengkapnya tentang error. MULTIPLE ERRORS: Jika ada beberapa error, proses validasi akan mencoba menampilkan beberapa error tersebut. Sama seperti compiler, ini adalah proses yang tidak sempurna. Beberapa error validasi akan bersifat "fatal", yang berarti error tersebut menghentikan seluruh proses validasi. Hal ini berlaku untuk error STABILITAS: |
display_ |
Nama tampilan error. |
fields[] |
Konteks error dapat melibatkan 0, 1 (sebagian besar waktu), atau beberapa kolom. Misalnya, merujuk pada kendaraan #4 dan pengambilan pertama pengiriman #2 dapat dilakukan sebagai berikut:
Namun, perhatikan bahwa kardinalitas |
error_ |
String yang dapat dibaca manusia yang menjelaskan error. Terdapat pemetaan 1:1 antara STABILITAS: Tidak stabil: pesan error yang terkait dengan |
offending_ |
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 hierarkis yang sama. Misalnya, kita dapat menentukan elemen #2 dari start_time_windows
kendaraan #5 menggunakan:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Namun, kami menghilangkan entitas tingkat atas seperti OptimizeToursRequest
atau ShipmentModel
untuk menghindari pesan yang terlalu panjang.
Kolom | |
---|---|
name |
Nama kolom, misalnya, "vehicles". |
sub_ |
Sub-kolom bertingkat secara rekursif, jika diperlukan. |
Kolom union
|
|
index |
Indeks kolom jika diulang. |
key |
Kunci jika kolom adalah peta. |
OutputConfig
Tentukan tujuan untuk hasil [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
Kolom | |
---|---|
data_ |
Wajib. Format data output. |
Kolom union destination . Wajib. destination hanya dapat berupa salah satu dari berikut: |
|
gcs_ |
Lokasi Google Cloud Storage yang menjadi tujuan penulisan output. |
RouteModifiers
Mengenkapsulasi serangkaian kondisi opsional yang harus dipenuhi saat menghitung rute kendaraan. Hal ini mirip dengan RouteModifiers
di Routes Preferred API Google Maps Platform; lihat: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
Kolom | |
---|---|
avoid_ |
Menentukan apakah akan menghindari jalan tol jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi jalan tol. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_ |
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_ |
Menentukan apakah akan menghindari feri jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi perjalanan dengan feri. Hanya berlaku untuk mode perjalanan bermotor. |
avoid_ |
Opsional. Menentukan apakah akan menghindari navigasi di dalam ruangan jika memungkinkan. Preferensi akan diberikan ke rute yang tidak berisi navigasi dalam ruangan. Hanya berlaku untuk mode perjalanan |
Pengiriman
Pengiriman satu item, dari salah satu pengambilannya ke salah satu pengirimannya. Agar pengiriman dianggap telah dilakukan, kendaraan unik harus mengunjungi salah satu lokasi pengambilannya (dan mengurangi kapasitas cadangannya), lalu mengunjungi salah satu lokasi pengirimannya nanti (sehingga meningkatkan kembali kapasitas cadangannya).
Kolom | |
---|---|
display_ |
Nama tampilan pengiriman yang ditentukan pengguna. Panjangnya dapat mencapai 63 karakter dan dapat menggunakan karakter UTF-8. |
pickups[] |
Kumpulan alternatif pengambilan yang terkait dengan pengiriman. Jika tidak ditentukan, kendaraan hanya perlu mengunjungi lokasi yang sesuai dengan pengiriman. |
deliveries[] |
Kumpulan alternatif pengiriman yang terkait dengan pengiriman. Jika tidak ditentukan, kendaraan hanya perlu mengunjungi lokasi yang sesuai dengan pengambilan. |
load_ |
Permintaan muatan pengiriman (misalnya berat, volume, jumlah palet, dll.). Kunci dalam peta harus berupa ID yang menjelaskan jenis beban yang sesuai, idealnya juga menyertakan unit. Misalnya: "weight_kg", "volume_gallons", "pallet_count", dll. Jika kunci tertentu tidak muncul di peta, beban yang sesuai akan dianggap sebagai null. |
allowed_ |
Kumpulan kendaraan yang dapat melakukan pengiriman ini. Jika kosong, semua kendaraan dapat melakukannya. Kendaraan diberikan berdasarkan indeksnya dalam daftar |
costs_ |
Menentukan biaya yang dikeluarkan saat pengiriman ini dikirim oleh setiap kendaraan. Jika ditentukan, harus memiliki SALAH SATU:
Biaya ini harus dalam unit yang sama dengan |
costs_ |
Indeks kendaraan yang menerapkan |
pickup_ |
Menentukan waktu pengalihan absolut maksimum dibandingkan dengan jalur terpendek dari pengambilan ke pengiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi minimal pengambilan dan pengiriman. Misalnya, t adalah waktu terpendek yang diperlukan untuk berpindah 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 membatasi akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai 10/2017, pengalihan hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
pickup_ |
Menentukan durasi maksimum dari awal pengambilan hingga awal pengiriman paket. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi minimal pengambilan dan pengiriman. Hal ini tidak bergantung pada alternatif yang dipilih untuk pengambilan dan pengiriman, atau pada kecepatan kendaraan. Hal ini dapat ditentukan bersama dengan batasan pengalihan maksimum: solusi akan mematuhi kedua spesifikasi tersebut. |
shipment_ |
String yang 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_ |
Jika pengiriman tidak selesai, penalti ini akan ditambahkan ke biaya keseluruhan rute. Pengiriman dianggap selesai jika salah satu alternatif pengambilan dan pengirimannya dikunjungi. Biaya dapat dinyatakan dalam unit yang sama yang digunakan untuk semua kolom terkait biaya lainnya dalam model dan harus positif. PENTING: Jika tidak ditentukan, penalti ini dianggap tidak terbatas, yaitu pengiriman harus diselesaikan. |
pickup_ |
Menentukan waktu pengalihan relatif maksimum dibandingkan dengan jalur terpendek dari pengambilan ke pengiriman. Jika ditentukan, nilainya harus non-negatif, dan pengiriman harus berisi minimal pengambilan dan pengiriman. Misalnya, t adalah waktu terpendek yang diperlukan untuk berpindah 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 membatasi akan digunakan untuk setiap kemungkinan pasangan pengambilan/pengiriman. Mulai 10/2017, pengalihan hanya didukung jika durasi perjalanan tidak bergantung pada kendaraan. |
Muat
Saat melakukan kunjungan, jumlah yang telah ditentukan dapat ditambahkan ke muatan kendaraan jika merupakan 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 merupakan bilangan bulat, pengguna disarankan untuk memilih unit yang sesuai untuk menghindari hilangnya presisi. Harus ≥ 0. |
VisitRequest
Permintaan kunjungan yang dapat dilakukan oleh kendaraan: memiliki geolokasi (atau dua, lihat di bawah), waktu buka dan tutup yang diwakili oleh periode waktu, dan waktu durasi layanan (waktu yang dihabiskan oleh kendaraan setelah tiba untuk mengambil atau mengantar barang).
Kolom | |
---|---|
arrival_ |
Geolokasi tempat kendaraan tiba saat melakukan |
arrival_ |
Titik jalan tempat kendaraan tiba saat melakukan |
departure_ |
Geolokasi tempat kendaraan berangkat setelah menyelesaikan |
departure_ |
Titik jalan tempat kendaraan berangkat setelah menyelesaikan |
tags[] |
Menentukan tag yang dilampirkan ke permintaan kunjungan. String kosong atau duplikat tidak diizinkan. |
time_ |
Periode waktu yang membatasi waktu kedatangan pada kunjungan. Perhatikan bahwa kendaraan dapat berangkat di luar periode waktu kedatangan, yaitu waktu kedatangan + durasi tidak perlu berada dalam periode waktu. Hal ini dapat menyebabkan waktu tunggu jika kendaraan tiba sebelum Tidak adanya Periode waktu harus terpisah, yaitu tidak ada periode waktu yang tumpang-tindih atau berdekatan dengan periode waktu lain, dan periode waktu tersebut harus dalam urutan yang meningkat.
|
duration |
Durasi kunjungan, yaitu waktu yang dihabiskan kendaraan antara kedatangan dan keberangkatan (akan ditambahkan ke kemungkinan waktu tunggu; lihat |
cost |
Biaya untuk melayani permintaan kunjungan ini di rute kendaraan. Hal ini dapat digunakan untuk membayar biaya yang berbeda untuk setiap pengambilan atau pengiriman alternatif. Biaya ini harus dalam unit yang sama dengan |
load_ |
Memuat permintaan kunjungan ini. Kolom ini sama seperti kolom |
visit_ |
Menentukan jenis kunjungan. Ini dapat digunakan untuk mengalokasikan waktu tambahan yang diperlukan kendaraan untuk menyelesaikan kunjungan ini (lihat Jenis hanya dapat muncul sekali. |
label |
Menentukan label untuk |
ShipmentModel
Model pengiriman berisi serangkaian pengiriman yang harus dilakukan oleh serangkaian kendaraan, sekaligus meminimalkan biaya keseluruhan, yang merupakan jumlah dari:
- biaya pemilihan rute kendaraan (jumlah biaya per total waktu, biaya per waktu perjalanan, dan biaya tetap untuk semua kendaraan).
- penalti pengiriman yang tidak dilakukan.
- biaya durasi global pengiriman
Kolom | |
---|---|
shipments[] |
Kumpulan pengiriman yang harus dilakukan dalam model. |
vehicles[] |
Kumpulan kendaraan yang dapat digunakan untuk melakukan kunjungan. |
global_ |
Waktu mulai dan waktu 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_ |
Jika tidak ditetapkan, 00:00:00 UTC, 1 Januari 1971 (yaitu detik: 31536000, nano: 0) akan digunakan sebagai default. |
global_ |
"Durasi global" dari keseluruhan rencana adalah perbedaan antara waktu mulai efektif paling awal dan waktu akhir efektif terbaru dari semua kendaraan. Pengguna dapat menetapkan biaya per jam untuk jumlah tersebut untuk mencoba dan mengoptimalkan penyelesaian tugas paling awal, misalnya. Biaya ini harus dalam unit yang sama dengan |
duration_ |
Menentukan matriks durasi dan jarak yang digunakan dalam model. Jika kolom ini kosong, Google Maps atau jarak geodesik akan digunakan, bergantung pada nilai kolom Contoh penggunaan:
|
duration_ |
Tag yang menentukan sumber matriks durasi dan jarak; Tag sesuai dengan |
duration_ |
Tag yang menentukan tujuan matriks durasi dan jarak; Tag sesuai dengan |
transition_ |
Atribut transisi ditambahkan ke model. |
shipment_ |
Kumpulan shipment_types yang tidak kompatibel (lihat |
shipment_ |
Kumpulan persyaratan |
precedence_ |
Kumpulan aturan prioritas yang harus diterapkan dalam model. |
max_ |
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 bersifat heterogen. Pengoptimalan 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. Elemennya harus sama banyak dengan |
vehicle_ |
Tag yang menentukan kendaraan mana yang menerapkan matriks jarak dan durasi ini. Jika kosong, ini berlaku untuk semua kendaraan, dan hanya boleh ada satu matriks. Setiap awal kendaraan harus sama persis dengan satu matriks, yaitu hanya 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, kolom ini harus memiliki elemen sebanyak |
PrecedenceRule
Aturan prioritas antara dua peristiwa (setiap peristiwa adalah pengambilan atau pengiriman paket): peristiwa "kedua" harus dimulai minimal offset_duration
setelah peristiwa "pertama" dimulai.
Beberapa prioritas dapat merujuk ke peristiwa yang sama (atau terkait), misalnya, "pengambilan B terjadi setelah pengiriman A" dan "pengambilan C terjadi setelah pengambilan B".
Selain itu, prioritas hanya berlaku jika kedua pengiriman dilakukan dan diabaikan jika tidak.
Kolom | |
---|---|
first_ |
Menunjukkan apakah peristiwa "pertama" adalah pengiriman. |
second_ |
Menunjukkan apakah peristiwa "kedua" adalah pengiriman. |
offset_ |
Offset antara peristiwa "pertama" dan "kedua". Nilainya dapat negatif. |
first_ |
Indeks pengiriman peristiwa "pertama". Kolom ini harus ditentukan. |
second_ |
Indeks pengiriman peristiwa "kedua". 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 kita membedakan antara:
- "peristiwa tepat waktu", seperti awal dan akhir kendaraan serta awal dan akhir setiap kunjungan (alias kedatangan dan keberangkatan). Peristiwa ini terjadi pada detik tertentu.
- "interval waktu", seperti kunjungan itu sendiri, dan transisi antar-kunjungan. Meskipun interval waktu terkadang dapat memiliki durasi nol, yaitu dimulai dan berakhir pada detik yang sama, interval waktu sering kali memiliki durasi positif.
Invarian:
- Jika ada n kunjungan, ada n+1 transisi.
- Kunjungan selalu diapit 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.
Mari kita lihat lebih dekat apa yang terjadi selama Transition
dan Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Terakhir, berikut cara mengatur TRAVEL, BREAKS, DELAY, dan WAIT selama transisi.
- Keduanya tidak tumpang-tindih.
- DELAY bersifat unik dan harus berupa jangka waktu yang berurutan tepat sebelum kunjungan berikutnya (atau akhir kendaraan). Jadi, cukup mengetahui durasi penundaan untuk mengetahui waktu mulai dan waktu akhirnya.
- BREAKS adalah periode waktu yang berdekatan dan tidak tumpang-tindih. Respons menentukan waktu mulai dan durasi setiap istirahat.
- TRAVEL dan WAIT bersifat "dapat didahului": keduanya dapat terganggu beberapa kali selama transisi ini. Klien dapat mengasumsikan bahwa perjalanan terjadi "secepat 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_ |
Kendaraan yang melakukan rute, diidentifikasi dengan indeksnya di |
vehicle_ |
Label kendaraan yang melakukan rute ini, sama dengan |
vehicle_ |
Waktu saat kendaraan memulai rutenya. |
vehicle_ |
Waktu saat kendaraan menyelesaikan rutenya. |
visits[] |
Urutan kunjungan yang diurutkan yang mewakili rute. visits[i] adalah kunjungan ke-i di rute. Jika kolom ini kosong, kendaraan dianggap tidak digunakan. |
transitions[] |
Daftar urutan transisi untuk rute. |
has_ |
Jika
Kedatangan di next_visit kemungkinan akan terjadi lebih lambat dari periode waktu saat ini karena peningkatan estimasi waktu perjalanan |
route_ |
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_ |
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, costs["model.shipments.pickups.cost"] adalah jumlah semua biaya pengambilan di sepanjang rute. Semua biaya yang ditentukan dalam model dilaporkan secara mendetail di sini, kecuali biaya yang terkait dengan TransitionAttributes yang hanya dilaporkan secara gabungan mulai 01/2022. |
route_ |
Total biaya rute. Jumlah semua biaya dalam peta biaya. |
Istirahat
Data yang mewakili eksekusi jeda.
Kolom | |
---|---|
start_ |
Waktu mulai istirahat. |
duration |
Durasi jeda. |
EncodedPolyline
Representasi polyline yang dienkode. Informasi selengkapnya tentang encoding polyline dapat ditemukan di sini: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
Kolom | |
---|---|
points |
String yang mewakili titik polyline yang dienkode. |
Transisi
Transisi antara dua peristiwa di rute. Lihat deskripsi ShipmentRoute
.
Jika kendaraan tidak memiliki start_location
dan/atau end_location
, metrik perjalanan yang sesuai adalah 0.
Kolom | |
---|---|
travel_ |
Durasi perjalanan selama peralihan ini. |
travel_ |
Jarak yang ditempuh selama transisi. |
traffic_ |
Jika traffic diminta melalui |
delay_ |
Jumlah durasi penundaan yang diterapkan pada transisi ini. Jika ada, penundaan dimulai tepat |
break_ |
Jumlah durasi jeda yang terjadi selama transisi ini, jika ada. Detail tentang waktu mulai dan durasi setiap jeda disimpan di |
wait_ |
Waktu yang dihabiskan untuk menunggu selama transisi ini. Durasi tunggu sesuai dengan waktu tidak ada aktivitas dan tidak termasuk waktu istirahat. Perhatikan juga bahwa waktu tunggu ini dapat dibagi menjadi beberapa interval yang tidak berurutan. |
total_ |
Total durasi transisi, disediakan untuk memudahkan. Nilainya sama dengan:
|
start_ |
Waktu mulai transisi ini. |
route_ |
Representasi polyline yang dienkode dari rute yang diikuti selama transisi. Kolom ini hanya diisi jika |
route_ |
Hanya output. Token buram yang dapat diteruskan ke Navigation SDK untuk merekonstruksi rute selama navigasi, dan, jika terjadi perubahan rute, hormati 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_ |
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 tertentu. Satuan beban biasanya ditunjukkan oleh jenisnya. Lihat |
Kunjungi
Kunjungan yang dilakukan selama rute. Kunjungan ini sesuai dengan pengambilan atau pengiriman Shipment
.
Kolom | |
---|---|
shipment_ |
Indeks kolom |
is_ |
Jika benar, kunjungan sesuai dengan pengambilan |
visit_ |
Indeks |
start_ |
Waktu kunjungan dimulai. Perhatikan bahwa kendaraan mungkin tiba lebih awal dari waktu ini di lokasi kunjungan. Waktu konsisten dengan |
load_ |
Total permintaan beban kunjungan sebagai jumlah pengiriman dan permintaan kunjungan |
detour |
Waktu pengalihan tambahan karena pengiriman yang dikunjungi di rute sebelum kunjungan dan potensi waktu tunggu yang disebabkan oleh periode waktu. Jika kunjungan adalah pengiriman, pengalihan dihitung dari kunjungan pengambilan yang sesuai dan sama dengan:
Jika tidak, nilai ini dihitung dari
|
shipment_ |
Salinan |
visit_ |
Salinan |
ShipmentTypeIncompatibility
Menentukan ketidakcocokan antara pengiriman, bergantung pada shipment_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 yang diterapkan pada inkompatibilitas. |
IncompatibilityMode
Mode yang menentukan cara pembatasan tampilan pengiriman yang tidak kompatibel 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 pernah dapat menggunakan kendaraan yang sama. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Untuk dua pengiriman dengan jenis yang tidak kompatibel dengan mode inkompatibilitas
|
ShipmentTypeRequirement
Menentukan persyaratan antara pengiriman berdasarkan shipment_type-nya. Detail persyaratan ditentukan oleh mode persyaratan.
Kolom | |
---|---|
required_ |
Daftar jenis pengiriman alternatif yang diperlukan oleh |
dependent_ |
Semua pengiriman dengan jenis di kolom CATATAN: Rantai persyaratan sehingga |
requirement_ |
Mode yang 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 pengiriman "tergantung" harus menggunakan kendaraan yang sama dengan setidaknya satu pengiriman "wajib". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Dengan mode Oleh karena itu, pengambilan paket "tergantung" harus memiliki:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Sama seperti sebelumnya, kecuali pengiriman "tergantung" harus memiliki pengiriman "wajib" di kendaraannya 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 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 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 kapasitas "Apel" setidaknya satu kendaraan akan terlampaui (termasuk kendaraan 1), kapasitas "Persik" setidaknya satu kendaraan akan terlampaui (termasuk kendaraan 3), dan batas jarak setidaknya satu kendaraan akan terlampaui (termasuk kendaraan 1).
Kolom | |
---|---|
code |
Lihat komentar Kode. |
example_ |
Jika kode alasan adalah |
example_ |
Jika alasannya terkait dengan inkompatibilitas kendaraan pengiriman, kolom ini akan memberikan indeks satu kendaraan yang relevan. |
Kode
Kode yang mengidentifikasi jenis alasan. Urutan di sini tidak berarti. Secara khusus, hal ini tidak memberikan indikasi apakah alasan tertentu akan muncul sebelum alasan lainnya dalam solusi, jika keduanya berlaku.
Enum | |
---|---|
CODE_UNSPECIFIED |
Hal ini tidak boleh digunakan. |
NO_VEHICLE |
Tidak ada kendaraan dalam model sehingga 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 geodesik. |
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/d (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 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 terbarunya. |
VEHICLE_NOT_ALLOWED |
Kolom allowed_vehicle_indices pengiriman tidak kosong dan kendaraan ini bukan milik pengiriman tersebut. |
TimeWindow
Periode waktu membatasi waktu peristiwa, seperti waktu kedatangan pada kunjungan, atau waktu mulai dan berakhir kendaraan.
Batas jangka waktu hard, start_time
dan end_time
, menerapkan waktu paling awal dan paling akhir peristiwa, sehingga start_time <= event_time <=
end_time
. Batas bawah periode waktu soft, 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 soft, 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_ |
Waktu mulai periode waktu yang ketat. Jika tidak ditentukan, nilainya akan ditetapkan ke |
end_ |
Waktu berakhir periode waktu yang ketat. Jika tidak ditentukan, nilainya akan ditetapkan ke |
soft_ |
Waktu mulai lembut periode waktu. |
soft_ |
Waktu akhir tidak pasti untuk periode waktu. |
cost_ |
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 hanya dapat ditetapkan jika soft_start_time telah ditetapkan. |
cost_ |
Biaya per jam yang ditambahkan ke biaya lain dalam model jika peristiwa terjadi setelah
Biaya ini harus positif, dan kolom hanya dapat ditetapkan jika |
TransitionAttributes
Menentukan atribut transisi antara dua kunjungan berturut-turut di rute. Beberapa TransitionAttributes
dapat berlaku untuk transisi yang sama: dalam hal ini, semua biaya tambahan akan ditambahkan dan batasan atau batas yang paling ketat akan berlaku (mengikuti semantik "AND" alami).
Kolom | |
---|---|
src_ |
Tag yang menentukan kumpulan transisi (src->dst) yang berlaku untuk atribut ini. Kunjungan sumber atau awal kendaraan cocok jika |
excluded_ |
Lihat |
dst_ |
Kunjungan tujuan atau akhir kendaraan cocok jika |
excluded_ |
Lihat |
cost |
Menentukan biaya untuk melakukan transisi ini. Nilai ini dalam unit yang sama dengan semua biaya lainnya dalam model dan tidak boleh negatif. Biaya ini diterapkan di atas semua biaya lain yang sudah ada. |
cost_ |
Menentukan biaya per kilometer yang diterapkan ke jarak yang ditempuh saat melakukan transisi ini. Jumlah ini ditambahkan ke |
distance_ |
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. Penundaan ini selalu terjadi setelah menyelesaikan kunjungan sumber dan sebelum memulai kunjungan tujuan. |
Kendaraan
Membuat model kendaraan dalam masalah pengiriman. Memecahkan 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_ |
Nama tampilan kendaraan yang ditentukan pengguna. Panjangnya dapat mencapai 63 karakter dan dapat menggunakan karakter UTF-8. |
travel_ |
Mode perjalanan yang memengaruhi jalan yang dapat digunakan oleh kendaraan dan kecepatannya. Lihat juga |
route_ |
Kumpulan kondisi yang harus dipenuhi yang memengaruhi cara rute dihitung untuk kendaraan tertentu. |
start_ |
Lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil kiriman. Jika tidak ditentukan, kendaraan akan dimulai pada pengambilan pertamanya. Jika model pengiriman memiliki matriks durasi dan jarak, |
start_ |
Titik jalan yang mewakili lokasi geografis tempat kendaraan memulai perjalanan sebelum mengambil pengiriman apa pun. Jika |
end_ |
Lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
end_ |
Titik jalan yang mewakili lokasi geografis tempat kendaraan berakhir setelah menyelesaikan |
start_ |
Menentukan tag yang dilampirkan ke awal rute kendaraan. String kosong atau duplikat tidak diizinkan. |
end_ |
Menentukan tag yang dilampirkan ke akhir rute kendaraan. String kosong atau duplikat tidak diizinkan. |
start_ |
Periode waktu saat kendaraan dapat berangkat dari lokasi awalnya. Nilai ini 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 periode waktu tersebut harus dalam urutan kronologis.
|
end_ |
Jangka waktu saat kendaraan dapat tiba di lokasi akhirnya. Nilai ini 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 periode waktu tersebut harus dalam urutan kronologis.
|
unloading_ |
Kebijakan pemuatan diterapkan pada kendaraan. |
load_ |
Kapasitas kendaraan (misalnya, berat, volume, jumlah palet). Kunci dalam peta adalah ID jenis pemuatan, yang konsisten dengan kunci kolom |
cost_ |
Biaya kendaraan: semua biaya dijumlahkan dan harus dalam unit yang sama dengan Biaya per jam rute kendaraan. Biaya ini diterapkan ke total waktu yang diperlukan untuk rute, dan mencakup waktu perjalanan, waktu tunggu, dan waktu kunjungan. Menggunakan |
cost_ |
Biaya per jam perjalanan rute kendaraan. Biaya ini hanya diterapkan untuk waktu perjalanan yang ditempuh oleh rute (yaitu, yang dilaporkan di |
cost_ |
Biaya per kilometer rute kendaraan. Biaya ini diterapkan ke jarak yang dilaporkan di |
fixed_ |
Biaya tetap diterapkan jika kendaraan ini digunakan untuk menangani pengiriman. |
used_ |
Kolom ini hanya berlaku untuk kendaraan jika rutenya tidak melayani pengiriman apa pun. Dalam hal ini, kolom ini menunjukkan apakah kendaraan harus dianggap sebagai bekas atau tidak. Jika benar, kendaraan akan pergi dari lokasi awal ke lokasi akhir meskipun tidak melayani pengiriman apa pun, dan biaya waktu dan jarak yang dihasilkan dari perjalanan awal --> akhir akan diperhitungkan. Jika tidak, kendaraan tidak akan melakukan perjalanan dari lokasi awal ke lokasi akhir, dan tidak ada |
route_ |
Batas yang diterapkan pada total durasi rute kendaraan. Dalam |
travel_ |
Batas yang diterapkan pada durasi perjalanan rute kendaraan. Dalam |
route_ |
Batas yang diterapkan pada total jarak rute kendaraan. Dalam |
extra_ |
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_ |
Menjelaskan jadwal istirahat yang akan diterapkan pada kendaraan ini. Jika kosong, tidak ada istirahat yang akan dijadwalkan untuk kendaraan ini. |
label |
Menentukan label untuk kendaraan ini. Label ini dilaporkan dalam respons sebagai |
ignore |
Jika benar, Jika pengiriman dilakukan oleh kendaraan yang diabaikan di Jika pengiriman dilakukan oleh kendaraan yang diabaikan di |
travel_ |
Menentukan faktor perkalian yang dapat digunakan untuk meningkatkan atau mengurangi waktu perjalanan kendaraan ini. Misalnya, menetapkannya ke 2,0 berarti kendaraan ini lebih lambat dan memiliki waktu perjalanan dua kali lipat dari 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. Dapat berupa keras atau lembut.
Saat kolom batas lunak ditentukan, nilai minimum maksimum lunak dan biaya terkaitnya harus ditentukan bersama.
Kolom | |
---|---|
max_ |
Batas keras yang membatasi durasi maksimal max_duration. |
soft_ |
Batas yang dapat dilewati tidak menerapkan batas durasi maksimum, tetapi jika dilanggar akan membuat rute dikenai biaya. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan, |
quadratic_ |
Batas yang dapat dilewati tidak menerapkan batas durasi maksimum, tetapi jika dilanggar akan membuat rute dikenai biaya, kuadrat dalam durasi. Biaya ini ditambahkan ke biaya lain yang ditentukan dalam model, dengan unit yang sama. Jika ditentukan,
|
cost_ |
Biaya per jam yang dikenakan jika nilai minimum
Biaya tidak boleh negatif. |
cost_ |
Biaya per jam persegi yang dikenakan jika nilai minimum Biaya tambahan adalah 0 jika durasi berada di bawah nilai minimum, jika tidak, biayanya bergantung pada durasi sebagai berikut:
Biaya tidak boleh negatif. |
LoadLimit
Menentukan batas muatan yang berlaku untuk kendaraan, misalnya "truk ini hanya boleh mengangkut hingga 3.500 kg". Lihat load_limits
.
Kolom | |
---|---|
soft_ |
Batas beban yang dapat dilewati. Lihat |
cost_ |
Jika beban pernah melebihi |
start_ |
Interval muatan kendaraan yang dapat diterima di awal rute. |
end_ |
Interval muatan kendaraan yang dapat diterima di akhir rute. |
max_ |
Jumlah beban maksimum yang dapat diterima. |
Interval
Interval jumlah beban yang dapat diterima.
Kolom | |
---|---|
min |
Beban minimum yang dapat diterima. Harus ≥ 0. Jika keduanya ditentukan, |
max |
Muatan maksimum yang dapat diterima. Harus ≥ 0. Jika tidak ditentukan, beban maksimum tidak dibatasi oleh pesan ini. Jika keduanya ditentukan, |
TravelMode
Mode perjalanan yang dapat digunakan oleh kendaraan.
Mode perjalanan ini harus merupakan subkumpulan dari mode perjalanan Rute Pilihan API Google Maps Platform, lihat: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode perjalanan tidak ditentukan, 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 kendaraan dapat dibongkar muatannya. Hanya berlaku untuk pengiriman yang memiliki pengambilan dan pengiriman.
Pengiriman lainnya dapat terjadi di mana saja di rute, terlepas dari unloading_policy
.
Enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Kebijakan pembongkaran yang tidak ditentukan; pengiriman hanya boleh dilakukan setelah pengambilan yang sesuai. |
LAST_IN_FIRST_OUT |
Pengiriman harus dilakukan dalam urutan terbalik dari pengambilan |
FIRST_IN_FIRST_OUT |
Pengiriman harus dilakukan dalam urutan yang sama dengan pengambilan |
Waypoint
Mengenkapsulasi titik jalan. Titik jalan menandai lokasi kedatangan dan keberangkatan VisitRequests, serta lokasi awal dan akhir Kendaraan.
Kolom | |
---|---|
side_ |
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 dituju lokasi dari tengah jalan. Opsi ini tidak berfungsi untuk mode perjalanan 'BERJALAN KAKI'. |
Kolom union location_type . Berbagai cara untuk merepresentasikan lokasi. location_type hanya dapat berupa salah satu dari berikut: |
|
location |
Titik yang ditentukan menggunakan koordinat geografis, termasuk judul opsional. |
place_ |
ID Tempat POI yang terkait dengan titik jalan. |