Route Optimization API menampilkan rute untuk kendaraan di permintaan. Pengiriman ditetapkan ke kendaraan, atau dapat dilewati tergantung pada properti permintaan Anda.
Pesan OptimizeToursResponse
(REST, gRPC) memiliki dua level teratas
properti:
routes[]
adalah rute untuk setiap kendaraan dengan pengiriman yang ditetapkan. Masing-masingRoute
berisi metrik yang mencerminkan properti setiap rute tersebut.metrics
adalah metrik gabungan untuk keseluruhan respons, di semua kendaraan dan rencana rute. Metrik tingkat teratas berisi properti yang sama dengan metrik per Rute, dengan nilai yang digabungkan di semua Rute.
Beberapa properti mungkin tidak selalu diisi bergantung pada hasil pengoptimalan:
skippedShipments[]
mencantumkan pengiriman yang tidak dilakukan oleh kendaraan mana pun. Pengiriman dapat dilewati jika tidak dapat dilakukan dalam waktu yang ditentukan kendala atau jika biaya pengiriman melebihi biaya penalti. Misalnya, jika pengambilan atau pengantaran kiriman memilikitimeWindow
kendaraan mungkin tidak mungkin atau hemat biaya melakukan kunjungan selama periode waktu yang ditentukan.validationErrors[]
menentukan error yang membuat permintaan tidak valid atau tidak mungkin diselesaikan jikasolvingMode
permintaan disetel keVALIDATE_ONLY
Dalam modeDEFAULT_SOLVE
normal, error validasi akan muncul dalam pesan {i>error<i}, alih-alih isi responsnya. Perlu diketahui bahwa Mode penyelesaianVALIDATE_ONLY
dapat melaporkan beberapa error sekaligus, berguna untuk permintaan {i>debugging<i} dengan cepat.
Properti rute
Setiap entri routes[]
adalah pesan ShipmentRoute
(REST, gRPC). Masing-masing
ShipmentRoute
mewakili penetapan rute untuk kendaraan tertentu dari
terhadap permintaan. Properti ShipmentRoute
penting yang terkait dengan properti yang sesuai
Vehicle
mencakup:
vehicleIndex
adalah indeks berbasis nol dariVehicle
dalam kolom pesan permintaan. Respons REST menghapus properti ini jika nilainya nol.vehicleStartTime
adalah waktu saat kendaraan harus memulai rutenya.vehicleEndTime
adalah waktu saat kendaraan diperkirakan selesai rute perjalanan.
Sebagai respons, routes
akan terlihat seperti:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
Setiap ShipmentRoute
berisi daftar visits
yang diurutkan yang akan digunakan kendaraan
selesai. Setiap Visit
(REST, gRPC) mewakili VisitRequest
(REST, gRPC) dari permintaan yang sesuai. Visit
penting
properti tersebut meliputi:
shipmentIndex
adalah indeks berbasis nol dari pengiriman yang berada pada kunjungan ini dalam permintaan yang sesuai.isPickup
benar jika kunjungan adalah pengambilan dan salah jika kunjungan adalah pengiriman. Respons REST menghapus properti ini jika nilainya salah (false).visitRequestIndex
adalah indeks berbasis nol dariVisitRequest
dariShipment.pickups
atauShipment.deliveries
dalam permintaan yang sesuai yang diwakili olehVisit
. Respons REST menghapus properti ini saat nilainya adalah nol.startTime
adalah waktu kunjungan diperkirakan akan dimulai.loadDemands
memetakan jenis pemuatan ke jumlah pemuatan yang diminta untuk menyelesaikanVisit
. Jumlah pemuatan bernilai negatif untuk kunjungan pengiriman, yang menunjukkan beban dikeluarkan dari kendaraan.
Contoh Visit
terlihat seperti:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Setiap ShipmentRoute
berisi daftar urut transitions
yang mewakili
perjalanan antara visits
untuk kendaraan tertentu. Pesan Transition
penting
Properti (REST, gRPC) mencakup:
startTime
adalah waktu saat kendaraan akan mulai melakukan transisi.travelDuration
adalah durasi yang harus ditempuh kendaraan menyelesaikan transisi.travelDistanceMeters
adalah jarak dalam meter yang harus dilalui kendaraan untuk menyelesaikan transisi.trafficInfoUnavailable
menunjukkan apakah data lalu lintas tersedia untuk transisi.waitDuration
menunjukkan waktu tidak ada aktivitas yang dihabiskan kendaraan untuk menunggu sebelum dapat memulaiVisit
berikutnya. Hal ini mungkin timbul karenastart_time
mengikutiVisit
.totalDuration
adalah total durasi transisi, termasuk perjalanan, waktu tunggu, waktu istirahat, dan penundaan.vehicleLoads
memetakan jenis muatan untuk memuat jumlah yang dibawa oleh kendaraan selama transisi ini.
Contoh Transition
terlihat seperti:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
Hubungan antara vists
dan transitions
dijelaskan di
Pengoptimalan Pesanan Pengambilan dan Pengiriman, serta dalam
Dokumentasi referensi ShipmentRoute
(REST, gRPC).
Properti metrik
Pesan Metrics
(REST, gRPC) merangkum seluruh solusi.
Beberapa properti Metrics
penting meliputi:
totalCost
adalah total biaya yang dikeluarkan untuk menyelesaikan rute. Baca selengkapnya biaya di Parameter Model Biaya.usedVehicleCount
adalah jumlah total kendaraan yang digunakan dalam solusi ini. Kendaraan boleh memiliki rute kosong ketika pengoptimal menentukan bahwa penggunaannya tidak diperlukan.skippedMandatoryShipmentCount
adalah jumlah pengiriman yang dilewati yang "wajib". Pengiriman wajib tidak mencantumkanpenaltyCost
yang yang timbul jika pengiriman dilewati. Pengiriman wajib masih dapat dilakukan dilewati jika performanya tidak layak berdasarkan batasan yang ditentukan. Baca selengkapnya tentang biaya di Parameter Model Biaya.
Metrik tambahan dilaporkan sebagai pesan AggregatedMetrics
(REST,
gRPC). Jenis pesan AggregatedMetrics
digunakan untuk
properti Metrics.aggregatedRouteMetrics
dan untuk ShipmentRoute.metrics
properti Metrics.aggregatedRouteMetrics
berisi metrik yang digabungkan di semua
ShipmentRoute
di OptimizeToursResponse
. Setiap ShipmentRoute.metrics
berisi metrik untuk ShipmentRoute
spesifik tersebut.
Properti AggregatedMetrics
penting meliputi:
performedShipmentCount
adalah jumlah pengiriman yang dilakukan oleh kendaraan atas seluruh rute mereka.travelDuration
adalah total waktu yang dihabiskan kendaraan dalam transportasi umum saat menyelesaikan rute mereka.waitDuration
adalah total waktu yang dihabiskan kendaraan untuk menunggu saat menyelesaikan rute mereka.delayDuration
adalah total waktu tunda kendaraan. Hal ini biasanya nol kecuali jikaTransitionAttributes
digunakan dalam permintaan.breakDuration
adalah total waktu yang dihabiskan kendaraan untuk beristirahat saat menyelesaikan rute mereka.visitDuration
adalah total waktu yang dihabiskan kendaraan untuk melakukan kunjungan saat menyelesaikan rute mereka. Jumlah ini secara efektif adalah jumlah dari semua NilaiVisitRequest.duration
untukVisitRequest
yang sesuai denganVisit
untuk kendaraan yang sesuai.totalDuration
adalah total durasi yang dibutuhkan untuk menyelesaikan kendaraan rute perjalanan.travelDistanceMeters
adalah total jarak yang ditempuh kendaraan saat menyelesaikan rute mereka.maxLoads
memetakan jenis pemuatan ke jumlah beban maksimum yang dibawa oleh kendaraan di titik mana pun pada rute mereka.
Contoh pesan Metrics
terlihat seperti:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
Contoh lengkap
Contoh respons lengkap untuk permintaan dari Membuat Permintaan terlihat seperti:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}