Catatan untuk produksi
Agar mudah, panduan ini menggunakan REST dan JSON. Namun, untuk lingkungan produksi, rekomendasi keseluruhannya adalah menggunakan gRPC dan library klien untuk performa yang lebih baik. Untuk mengetahui informasi selengkapnya, lihat library klien Route Optimization API.
Setelah Anda mengirim permintaan di bagian Membuat permintaan pertama Anda, pengoptimal
akan menampilkan OptimizeToursResponse. Respons ini adalah rencana rute yang harus diikuti oleh pengemudi Anda. Panduan ini menunjukkan cara membacanya.
Ringkasan rencana rute
Untuk skenario penitipan, pengoptimal menetapkan gunung Bernese dan Chihuahua ke van Anda dan melewati German shepherd. Rencana rute pengemudi Anda adalah sebagai berikut:
- Mulai shift pukul 07.55 di tempat penitipan anak.
- Jemput gunung Bernese di dekat Coit Tower pada pukul 08.20.
- Jemput Chihuahua di South Sunset Playground Park pukul 08.58.
- Tiba kembali di pusat penitipan anak pada pukul 09.24, dan tunggu hingga jendela pengantaran dibuka pada pukul 09.30.
- Mengantar Bernese Mountain pukul 09.30.
- Turunkan Chihuahua pukul 09.35.
- Selesaikan giliran kerja pada pukul 09.40.
Biaya rencana rute adalah $147,22, termasuk denda $100 karena melewatkan German shepherd.
Untuk memeriksa hasil, bandingkan respons Anda dengan contoh respons lengkap. Hasil Anda mungkin sedikit berbeda karena waktu dan jarak perjalanan bergantung pada data jalan saat ini.
Contoh respons lengkap
{ "routes": [ { "vehicleStartTime": "2024-02-13T15:55:04Z", "vehicleEndTime": "2024-02-13T17:40:00Z", "visits": [ { "isPickup": true, "startTime": "2024-02-13T16:20:00Z", "detour": "0s", "shipmentLabel": "Bernese mountain dog", "visitType": "PICKUP_SHIPMENT" }, { "shipmentIndex": 1, "isPickup": true, "startTime": "2024-02-13T16:58:12Z", "detour": "2600s", "shipmentLabel": "Chihuahua", "visitType": "PICKUP_SHIPMENT" }, { "startTime": "2024-02-13T17:30:00Z", "detour": "2297s", "shipmentLabel": "Bernese mountain dog", "visitType": "DELIVER_SHIPMENT" }, { "shipmentIndex": 1, "startTime": "2024-02-13T17:35:00Z", "detour": "656s", "shipmentLabel": "Chihuahua", "visitType": "DELIVER_SHIPMENT" } ], "transitions": [ { "travelDuration": "1496s", "travelDistanceMeters": 7082, "waitDuration": "0s", "totalDuration": "1496s", "startTime": "2024-02-13T15:55:04Z" }, { "travelDuration": "1992s", "travelDistanceMeters": 16589, "waitDuration": "0s", "totalDuration": "1992s", "startTime": "2024-02-13T16:25:00Z" }, { "travelDuration": "1252s", "travelDistanceMeters": 7860, "waitDuration": "356s", "totalDuration": "1608s", "startTime": "2024-02-13T17:03:12Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:35:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2024-02-13T17:40:00Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "routeCosts": { "model.vehicles.cost_per_hour": 47.22 }, "routeTotalCost": 47.22, "vehicleFullness": { "maxFullness": 0.3497777777777778, "activeSpan": 0.3497777777777778 } } ], "skippedShipments": [ { "index": 2, "label": "German shepherd", "penaltyCost": 100 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "4740s", "waitDuration": "356s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "1200s", "totalDuration": "6296s", "travelDistanceMeters": 31531, "performedShipmentPenaltyCostSum": 2000 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2024-02-13T15:55:04Z", "latestVehicleEndTime": "2024-02-13T17:40:00Z", "totalCost": 147.22, "costs": { "model.vehicles.cost_per_hour": 47.22, "model.shipments.penalty_cost": 100 } } }
Struktur respons
OptimizeToursResponse berisi dua komponen utama:
routes: Rencana rute untuk setiap kendaraan di armada Anda, termasuk urutan dan waktu untuk setiap pengambilan dan pengiriman. Anda memiliki satu van, jadi ada satu rencana rute.metrics: Ringkasan seluruh rencana rute, termasuk total biaya, durasi, dan jarak.
Karena pengoptimal melewati German shepherd, respons juga menyertakan
skippedShipments.
Bagian berikut menunjukkan tempat untuk menemukan setiap detail ringkasan rencana rute dalam respons.
Kendaraan mana yang menjalankan rute mana?
Pengoptimal menghasilkan rencana rute (array routes) yang sesuai
dengan urutan vehicles dalam permintaan Anda.
Kolom vehicleIndex mengidentifikasi setiap kendaraan berdasarkan posisi berbasis nol, yang untuk van Anda adalah 0. Kolom vehicleStartTime dan
vehicleEndTime menginstruksikan pengemudi kapan harus memulai dan mengakhiri
shift mereka.
Route Optimization API menampilkan stempel waktu dalam UTC, yang ditandai dengan akhiran Z,
terlepas dari selisih dalam permintaan Anda. Untuk mendapatkan waktu San Francisco, kurangi 8 jam. Untuk van Anda, shift berjalan dari pukul 07.55 hingga 09.40, seperti yang ditunjukkan dalam
contoh kode berikut.
{
"routes": [
{
// "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
}
]
...
}
Bagaimana urutan penjemputan dan pengantaran?
Dalam setiap rute, array visits berisi setiap pengambilan dan pengiriman
untuk kendaraan yang ditetapkan dalam urutan kronologis.
shipmentIndex setiap kunjungan adalah posisi berbasis nol pengiriman dalam permintaan Anda: 0 adalah Bernese mountain dog, dan 1 adalah Chihuahua. Kolom
shipmentLabel menampilkan label yang Anda tetapkan untuk setiap pengiriman.
Untuk membedakan antara penjemputan dan pengantaran (atau pengiriman), Anda dapat memeriksa
kolom visitType atau isPickup:
visitType: Menentukan tindakan kunjungan secara eksplisit.- Pengambilan:
visitType="PICKUP_SHIPMENT" - Pengiriman:
visitType="DELIVER_SHIPMENT"
- Pengambilan:
isPickup: Kolom bantuan boolean.- Pengambilan:
isPickup=true - Pengiriman:
isPickup=false(dihilangkan di JSON)
- Pengambilan:
Untuk menentukan urutan peristiwa yang tepat dan perkiraan waktu tiba di setiap
lokasi, baca array visits secara berurutan. Tabel berikut menunjukkan tindakan rencana rute berdasarkan urutan dan nilai kolom shipmentIndex, isPickup atau visitType, dan startTime.
| Urutan | Nilai shipmentIndex |
Nilai isPickup atau visitType |
Nilai startTime (UTC) |
Tindakan |
|---|---|---|---|---|
| Kunjungan pertama | 0 (dihilangkan di JSON) | Benar atau PICKUP_SHIPMENT |
2024-02-13T16:20:00Z | Jemput gunung Bernese pukul 08.20. |
| Kunjungan kedua | 1 | Benar atau PICKUP_SHIPMENT |
2024-02-13T16:58:12Z | Menjemput Chihuahua pukul 08.58. |
| Kunjungan ketiga | 0 (dihilangkan di JSON) | False (dihilangkan) atau DELIVER_SHIPMENT |
2024-02-13T17:30:00Z | Mengantar Bernese Mountain ke pusat penitipan pada pukul 09.30. |
| Kunjungan keempat | 1 | False (dihilangkan) atau DELIVER_SHIPMENT |
2024-02-13T17:35:00Z | Mengantar Chihuahua ke pusat penitipan pukul 09.35. |
Contoh kode berikut menunjukkan cara respons memberikan urutan ini:
{
"routes": [
{
"visits": [
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
"isPickup": true,
"startTime": "2024-02-13T16:20:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "PICKUP_SHIPMENT"
},
{
"shipmentIndex": 1,
"isPickup": true,
"startTime": "2024-02-13T16:58:12Z",
"shipmentLabel": "Chihuahua",
"visitType": "PICKUP_SHIPMENT"
},
{
// "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:30:00Z",
"shipmentLabel": "Bernese mountain dog",
"visitType": "DELIVER_SHIPMENT"
},
{
"shipmentIndex": 1,
// "isPickup": false, // Omitted in actual JSON response because it's false
"startTime": "2024-02-13T17:35:00Z",
"shipmentLabel": "Chihuahua",
"visitType": "DELIVER_SHIPMENT"
}
]
}
]
}
Setiap kunjungan juga memiliki visitRequestIndex, yang merupakan posisi berbasis nol dari opsi pengambilan atau pengantaran yang dipilih pengoptimal untuk pengiriman. Setiap dalam skenario ini hanya memiliki satu opsi penjemputan dan satu opsi pengantaran, sehingga visitRequestIndex selalu 0, dan respons akan menghilangkannya.
Apa yang terjadi di antara kunjungan?
Dalam setiap rute, array transitions mencantumkan detail perjalanan antar-kunjungan. Meskipun visits dan transitions adalah daftar yang terpisah, keduanya
disisipkan dalam waktu, sebagai berikut:
transitions[0](Berkendara dari titik awal ke kunjungan pertama)visits[0](Kunjungan pertama)transitions[1](Mendorong kunjungan kedua setelah kunjungan pertama)visits[1](Kunjungan kedua)...visits[N-1](Kunjungan terakhir, dengan N adalah jumlah total kunjungan)transitions[N](Mengemudi dari perhentian terakhir ke tujuan akhir)
Anda dapat mengikuti linimasa rute dengan melihat kolom startTime di
kedua array. startTime transisi adalah saat pengemudi mulai
melakukan perjalanan, dan startTime kunjungan adalah saat pengemudi memulai penjemputan
atau pengantaran.
Setiap transisi menunjukkan perkiraan waktu dan jarak mengemudi antar-lokasi.
Tabel berikut memetakan kolom transitions dan visits ke
tindakan rute kronologis untuk skenario penitipan.
| Urutan | Nama kolom | Nilai startTime (UTC) |
Detail | Tindakan |
|---|---|---|---|---|
| Transisi pertama | transitions[0] |
2024-02-13T15:55:04Z |
travelDuration: 1496 dtktravelDistanceMeters: 7082 |
Berkendara sejauh 7 km selama 25 menit dari pusat penitipan anak untuk menjemput gunung Bernese. Shift dimulai pukul 07.55. |
| Kunjungan pertama | visits[0] |
2024-02-13T16:20:00Z |
shipmentIndex: 0 (dihilangkan di JSON)isPickup: True |
Jemput gunung Bernese mulai pukul 08.20. Kunjungan memerlukan waktu 5 menit. |
| Transisi kedua | transitions[1] |
2024-02-13T16:25:00Z |
travelDuration: 1992stravelDistanceMeters: 16589 |
Berkendara sejauh 17 km selama 33 menit dari Coit Tower untuk menjemput Chihuahua mulai pukul 08.25. |
| Kunjungan kedua | visits[1] |
2024-02-13T16:58:12Z |
shipmentIndex: 1isPickup: True |
Menjemput Chihuahua mulai pukul 08.58. Kunjungan memerlukan waktu 5 menit. |
| Transisi ketiga | transitions[2] |
2024-02-13T17:03:12Z |
travelDuration: 1252 dtktravelDistanceMeters: 7860waitDuration: 356 dtk |
Berkendara sejauh 8 km selama 21 menit dari South Sunset Playground kembali ke pusat penitipan anak mulai pukul 09.03. Tiba pukul 09.24 dan menunggu selama 6 menit hingga jendela pengantaran dibuka. |
| Kunjungan ketiga | visits[2] |
2024-02-13T17:30:00Z |
shipmentIndex: 0 (dihilangkan di JSON)isPickup: False (dihilangkan di JSON) |
Antar gunung Bernese ke pusat penitipan mulai pukul 09.30. Kunjungan memerlukan waktu 5 menit. |
| Transisi keempat | transitions[3] |
2024-02-13T17:35:00Z |
travelDuration: 0 dtktravelDistanceMeters: 0 (dihilangkan di JSON) |
Jangan mengemudi. Siap mengantar Chihuahua ke pusat penitipan hewan peliharaan pukul 09.35. |
| Kunjungan keempat | visits[3] |
2024-02-13T17:35:00Z |
shipmentIndex: 1isPickup: Salah (dihilangkan di JSON) |
Antar Chihuahua ke pusat penitipan mulai pukul 09.35. Kunjungan memerlukan waktu 5 menit. |
| Transisi kelima | transitions[4] |
2024-02-13T17:40:00Z |
travelDuration: 0 dtktravelDistanceMeters: 0 (dihilangkan di JSON) |
Jangan mengemudi. Pengemudi mengakhiri shift pada pukul 09.40. |
Contoh kode berikut menunjukkan cara respons memberikan urutan ini untuk
transitions[0] dan transitions[1]:
{
"routes": [
{
"transitions": [
{
"travelDuration": "1496s",
"travelDistanceMeters": 7082,
"waitDuration": "0s",
"totalDuration": "1496s",
"startTime": "2024-02-13T15:55:04Z"
},
{
"travelDuration": "1992s",
"travelDistanceMeters": 16589,
"waitDuration": "0s",
"totalDuration": "1992s",
"startTime": "2024-02-13T16:25:00Z"
},
...
]
}
]
}
Berapa biaya rutenya?
Anda dapat melihat beberapa kolom dalam respons, bergantung pada apakah Anda memerlukan biaya untuk kendaraan tertentu atau total biaya untuk seluruh armada.
Tabel berikut mencantumkan semua cara untuk menemukan informasi biaya dalam respons:
| Orang tua | Parameter | Cakupan | Deskripsi |
|---|---|---|---|
ShipmentRoute |
routeCosts |
Per rute | Perincian komponen biaya tertentu (seperti biaya per jam) untuk rute tertentu tersebut. |
routeTotalCost |
Per rute | Total biaya yang dihitung untuk rute tertentu tersebut. | |
Metrics |
totalCost |
Total (Semua rute) | Total biaya gabungan untuk semua rute dalam solusi. |
costs |
Total (Semua rute) | Perincian komponen biaya gabungan di semua rute dalam solusi. |
Biaya yang ditentukan dalam routeCosts dan costs mencerminkan batasan biaya yang Anda tentukan dalam permintaan. Untuk mengetahui informasi selengkapnya, lihat dokumen
Konsep utama model biaya.
Untuk skenario penitipan ini, karena Anda memiliki pengiriman yang dilewati, biaya per rute dan total biaya gabungan akan berbeda. Biaya rute hanya mencakup biaya yang terkait dengan rute tertentu (upah pengemudi), sedangkan total biaya gabungan juga mencakup denda untuk pengiriman yang dilewati. Contoh kode berikut menunjukkan tempat untuk menemukan nilai ini dalam respons:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T15:55:04Z",
"vehicleEndTime": "2024-02-13T17:40:00Z",
...
"routeCosts": {
"model.vehicles.cost_per_hour": 47.22
},
"routeTotalCost": 47.22
}
],
"metrics": {
"totalCost": 147.22,
"costs": {
"model.shipments.penalty_cost": 100,
"model.vehicles.cost_per_hour": 47.22
},
...
}
}
Menurut rencana rute, pengemudi mengoperasikan van dari pukul 07.55 hingga 09.40, yaitu sekitar 1 jam 45 menit (6.296 detik). Dengan tarif yang Anda tentukan sebesar $27 per jam, biaya rute adalah $47,22. Karena pengoptimal melewatkan pengiriman German shepherd, pengoptimal menambahkan biaya penalti sebesar $100, sehingga total biaya gabungan menjadi $147,22.
Mengapa pengiriman dilewati?
Pengoptimal mencantumkan pengiriman yang tidak dilakukannya dalam array skippedShipments. Alasan pengiriman dilewati bergantung pada apakah Anda
menetapkan penaltyCost:
- Pengiriman wajib (tanpa
penaltyCost): Pengoptimal tidak akan pernah melewatkan pengiriman ini hanya karena biaya pelaksanaannya mahal. Pengiriman hanya akan dilewati jika tidak dapat dimasukkan ke dalam rute mana pun, misalnya, karena periode waktunya bertentangan dengan pengiriman lain. - Pengiriman opsional (dengan
penaltyCost): Pengoptimal juga dapat melewati pengiriman ini jika biaya pelaksanaannya lebih besar daripada denda. Anda dapat menetapkan biaya penalti yang berbeda untuk memprioritaskan beberapa pengiriman daripada yang lain.
Untuk skenario ini, periode penjemputan German shepherd bertentangan dengan periode Bernese mountain dog. Coit Tower dan Land's End berjarak 25 menit, sehingga pengemudi tidak dapat melakukan kedua penjemputan dalam jangka waktu 20 menit. Pengoptimal harus melewati salah satunya. Karena German shepherd memiliki biaya penalti yang lebih rendah ($100 dibandingkan dengan $1.000 untuk klien reguler), pengoptimal akan melewatinya dan dikenai penalti $100.
Contoh kode berikut menunjukkan objek skippedShipments dalam respons:
{
...
"skippedShipments": [
{
"index": 2,
"label": "German shepherd",
"penaltyCost": 100
}
],
...
}
Objek skippedShipments dalam respons berisi kolom berikut:
index: Indeks berbasis nol pengiriman dalam permintaan Anda (2 untuk pengiriman ketiga).label: Label yang Anda tentukan dalam permintaan ("German shepherd").penaltyCost: Biaya penalti yang Anda tentukan dalam permintaan, yang ditambahkan API ke total biaya.
Agar pengoptimal tidak melewatkan pengiriman, longgarkan batasan yang
menyebabkan konflik. Misalnya, minta pemilik German shepherd untuk memberikan
waktu penjemputan yang lebih fleksibel, lalu perbarui timeWindows untuk penjemputan tersebut
dalam permintaan Anda.
Kolom respons dalam contoh
Tabel berikut menjelaskan semua kolom respons yang ditampilkan dalam
OptimizeToursResponse dari skenario contoh. Meskipun Anda tidak perlu
menggunakan setiap kolom untuk memahami rencana rute, Anda dapat menganalisis kolom ini untuk
menentukan cara menyesuaikan OptimizeToursRequest agar sesuai dengan kebutuhan
bisnis Anda. Untuk mengetahui informasi selengkapnya, lihat Siklus proses rencana rute.
Anda dapat memfilter konten menurut induk atau penelusuran teks.
| Orang tua | Parameter | Jenis Properti | Deskripsi |
|---|---|---|---|
OptimizeToursResponse |
routes |
Array objek (ShipmentRoute) |
Ini berisi daftar rute yang dihitung untuk setiap kendaraan (satu per kendaraan). Untuk skenario penitipan ini, file ini berisi rencana rute mendetail untuk satu van Anda. |
metrics |
Objek (Metrics) |
Bagian ini berisi metrik keseluruhan untuk solusi, yang digabungkan di semua rute. Untuk skenario penitipan ini, berikut adalah ringkasan biaya dan durasi operasional untuk hari tersebut. | |
skippedShipments |
Array objek (SkippedShipment) |
Ini berisi daftar pengiriman yang dilewati dalam solusi. Untuk skenario ini, ketiga (gembala jerman) dilewati. | |
ShipmentRoute |
vehicleStartTime |
Stempel waktu | Ini adalah waktu saat kendaraan memulai rutenya. Untuk skenario penitipan ini, pengemudi mulai mengemudikan van pada pukul 07.55. |
vehicleEndTime |
Stempel waktu | Ini adalah waktu saat kendaraan menyelesaikan rutenya. Untuk skenario penitipan ini, pengemudi selesai mengemudikan van pada pukul 09.40. | |
visits |
Array objek (Visit) |
Ini adalah daftar pengambilan dan pengiriman yang diurutkan pada rute. Untuk skenario penitipan ini, ini adalah urutan penjemputan dan pengantaran kedua tersebut. | |
transitions |
Array objek (Transition) |
Ini adalah daftar yang diurutkan untuk jarak, serta waktu perjalanan dan tunggu di antara kunjungan. Untuk skenario penitipan ini, hal ini menjelaskan jarak dan waktu tempuh antara Coit Tower, South Sunset Playground Park, dan tempat penitipan. | |
metrics |
Objek (AggregatedMetrics) |
Ini adalah metrik khusus untuk satu rute ini. Untuk skenario penitipan ini, berikut adalah statistik untuk van tertentu ini. Metrik ini didasarkan pada biaya yang Anda tentukan dalam permintaan. Untuk mengetahui detail selengkapnya, lihat dokumen Konsep utama model biaya. | |
routeCosts |
Objek (Peta) | Berikut adalah perincian biaya spesifik untuk rute ini. Untuk skenario penitipan ini, biaya dihitung dari upah pengemudi sebesar $27 per jam. | |
routeTotalCost |
Angka | Ini adalah total biaya untuk rute spesifik ini. Untuk skenario penitipan ini, total biaya untuk rute van ini adalah 47.22. |
|
vehicleFullness |
Objek (VehicleFullness) |
Ini adalah perincian seberapa dekat kendaraan dengan batas operasionalnya, seperti waktu, jarak, dan muatan. Untuk skenario penitipan ini,
hanya waktu mulai dan akhir giliran kerja yang membatasi pengemudi, sehingga pengoptimal
menghitung vehicleFullness sebagai pecahan dari durasi rute
sebenarnya dan waktu maksimum yang tersedia untuk giliran kerja pengemudi. |
|
Visit |
shipmentIndex |
Bilangan bulat | Ini adalah indeks berbasis nol pengiriman dalam permintaan asli. Untuk skenario penitipan ini, 0 mewakili gunung Bernese, dan 1 mewakili Chihuahua. |
isPickup |
Boolean | Kolom ini bernilai benar jika kunjungan ini adalah pengambilan. Untuk skenario penitipan ini, nilainya benar saat menjemput dan salah (atau tidak ada) saat mengantar ke tempat penitipan. | |
startTime |
Stempel waktu | Ini adalah perkiraan waktu mulai kunjungan. Untuk skenario penitipan ini, ini adalah saat pengemudi mengetuk pintu. | |
detour |
Durasi | Ini adalah waktu tambahan yang ditambahkan pengoptimal ke perjalanan pengiriman tertentu ini. Rute memutar adalah perbedaan antara rencana rute aktual dan
perjalanan langsung yang ideal jika pengemudi tidak memiliki pengiriman atau tugas lain
yang harus diselesaikan. Untuk skenario penitipan ini, kunjungan pertama, yaitu untuk menjemput gunung Bernese, memiliki rute memutar 0 karena pengemudi langsung pergi dari pusat penitipan ke lokasi penjemputan ini. Untuk penjemputan Chihuahua, pengalihan rutenya adalah 43 menit karena pengemudi menjemput gunung Bernese terlebih dahulu (dan menghabiskan waktu 5 menit untuk menaikkan). |
|
shipmentLabel |
String | Ini adalah label dari permintaan untuk setiap pengiriman. Untuk skenario penitipan ini, labelnya adalah "Chihuahua" atau "Bernese mountain dog". | |
visitType |
String (Enum) | Ini menunjukkan jenis kunjungan, yang dapat berupa PICKUP_SHIPMENT
untuk pengambilan atau DELIVER_SHIPMENT untuk pengiriman. Untuk skenario ini,
nilainya adalah PICKUP_SHIPMENT atau DELIVER_SHIPMENT. |
|
Transition |
travelDuration |
Durasi | Ini adalah waktu yang dihabiskan untuk perjalanan selama transisi antar-kunjungan ini. Misalnya, dalam skenario penitipan ini, pengemudi menghabiskan waktu sekitar 25 menit untuk berkendara dari tempat penitipan ke Coit Tower untuk menjemput gunung Bernese. |
travelDistanceMeters |
Bilangan bulat | Ini adalah jarak yang ditempuh dalam meter selama transisi ini. Misalnya, dalam skenario penitipan ini, pengemudi menempuh jarak 7 kilometer dari tempat penitipan ke Coit Tower untuk menjemput gunung Bernese. | |
waitDuration |
Durasi | Ini adalah waktu yang dihabiskan untuk menunggu sebelum penjemputan atau pengiriman berikutnya. Untuk skenario penitipan ini, durasinya adalah 6 menit (356 detik) untuk transisi ketiga, karena pengemudi tiba di pusat penitipan sebelum periode pengantaran dibuka pada pukul 09.30. Untuk transisi lainnya, nilai ini adalah 0. | |
totalDuration |
Durasi | Ini adalah total durasi transisi, termasuk mengemudi dan menunggu. Misalnya, pengemudi menghabiskan 25 menit (25 menit mengemudi dan 0 menit menunggu) pada transisi pertama, dan 27 menit (21 menit mengemudi dan 6 menit menunggu) pada transisi ketiga kembali ke tempat penitipan anak. | |
startTime |
Stempel waktu | Waktu ini adalah saat perjalanan dimulai. Waktu ini cocok dengan waktu penyelesaian kunjungan sebelumnya (atau, untuk transisi pertama, waktu mulai kendaraan). Untuk skenario penitipan, transisi pertama dimulai pada pukul 07.55 saat pengemudi meninggalkan tempat penitipan, dan transisi kedua dimulai pada pukul 08.25 saat pengemudi meninggalkan Coit Tower. | |
Metrics |
aggregatedRouteMetrics |
Objek (AggregatedMetrics) |
Ini adalah jumlah metrik di semua rute. Untuk skenario penitipan ini, berikut adalah total metrik untuk satu van Anda. |
usedVehicleCount |
Bilangan bulat | Ini adalah jumlah kendaraan yang digunakan dalam solusi. Untuk skenario penitipan ini, Anda hanya menggunakan satu van. | |
earliestVehicleStartTime |
Stempel waktu | Ini adalah waktu mulai paling awal di antara semua kendaraan. Untuk skenario penitipan ini, rute van dimulai pada pukul 07.55. | |
latestVehicleEndTime |
Stempel waktu | Ini adalah waktu berakhir paling lambat di antara semua kendaraan. Untuk skenario penitipan ini, rute van berakhir pada pukul 09.40. | |
totalCost |
Angka | Ini adalah total biaya solusi. Untuk skenario penitipan ini, seluruh rencana rute memerlukan biaya 147.22 untuk hari itu (termasuk upah pengemudi 47.22 dan denda pengiriman yang dilewati 100). |
|
costs |
Objek (Peta) | Berikut adalah perincian total biaya menurut kategori. Untuk skenario penitipan ini, pengoptimal menghitung biaya rute berdasarkan biaya per jam dan biaya penalti untuk German shepherd yang dilewati. | |
AggregatedMetrics |
performedShipmentCount |
Bilangan bulat | Ini adalah jumlah pengiriman yang berhasil dirutekan. Untuk skenario penitipan ini, pengemudi mengangkut dua. |
travelDuration |
Durasi | Ini adalah total waktu yang dihabiskan untuk bepergian. Untuk skenario penitipan ini, pengemudi melakukan perjalanan selama 79 menit. | |
waitDuration |
Durasi | Ini adalah total waktu yang dihabiskan untuk menunggu. Untuk skenario penitipan ini, pengemudi berhenti selama 6 menit (356 detik) di pusat penitipan sambil menunggu jendela pengantaran dibuka. | |
delayDuration |
Durasi | Ini adalah durasi tambahan yang Anda tentukan menggunakan atribut transisi, seperti waktu yang disediakan untuk parkir. Untuk skenario penitipan ini, Anda tidak menentukan atribut transisi apa pun dalam permintaan, sehingga nilai ini adalah nol. | |
breakDuration |
Durasi | Ini adalah total waktu yang dihabiskan untuk istirahat. Untuk skenario penitipan ini, tidak ada istirahat. | |
visitDuration |
Durasi | Ini adalah total waktu yang dihabiskan untuk melakukan layanan saat kunjungan. Untuk skenario penitipan ini, durasinya adalah 20 menit (5 menit per kunjungan untuk 4 kunjungan). | |
totalDuration |
Durasi | Ini adalah jumlah dari semua komponen durasi. Untuk skenario penitipan ini, total durasinya adalah 105 menit (6.296 detik). | |
travelDistanceMeters |
Bilangan bulat | Ini adalah total jarak perjalanan dalam meter. Untuk skenario penitipan ini, pengemudi menempuh jarak total 31,5 km. | |
performedShipmentPenaltyCostSum |
Ganda | Ini adalah jumlah biaya penalti dari semua pengiriman yang dilakukan. Untuk skenario ini, biayanya adalah 2000 karena pengemudi menjemput gunung Bernese dan Chihuahua (masing-masing dengan biaya penalti 1000). |
|
VehicleFullness |
maxFullness |
Angka | Ini adalah rasio pemakaian tertinggi di semua kolom VehicleFullness. Untuk skenario penitipan ini, nilainya adalah 0,35 karena pengemudi hanya mengoperasikan van selama 105 menit dari seluruh shift pagi, yang Anda tentukan sebagai 5 jam dalam permintaan. |
activeSpan |
Angka | Ini adalah rasio total durasi shift pengemudi dibandingkan dengan jam operasional rencana rute. Angka yang lebih rendah berarti pengemudi menghabiskan lebih sedikit waktu pada hari kerja untuk mengoperasikan kendaraan. Untuk skenario penitipan ini, nilainya adalah 0,35 karena pengemudi mengoperasikan van selama 105 menit selama shift 5 jam. | |
SkippedShipment |
index |
Bilangan bulat | Ini adalah indeks berbasis nol pengiriman dalam permintaan asli. Untuk skenario ini, 2 mewakili German shepherd. |
label |
String | Ini adalah label yang Anda tentukan untuk pengiriman dalam permintaan. | |
penaltyCost |
Angka | Ini adalah biaya penalti yang Anda keluarkan saat pengoptimal melewati pengiriman ini. ID ini
cocok dengan penaltyCost yang Anda tentukan dalam permintaan. |