Tujuan Route Optimization API adalah merencanakan rute untuk armada kendaraan guna mengunjungi serangkaian lokasi. Objek OptimizeToursRequest menjelaskan properti kendaraan dan lokasi ini serta merupakan struktur utama dari isi permintaan setiap endpoint.
Struktur dasar objek OptimizeToursRequest adalah sebagai berikut:
- Kolom
modelmenyimpan pesanShipmentModelyang berisi dua kolom kunci:
Dokumen ini menjelaskan jenis pesan berikut:
ShipmentModel: Berisi daftar pengiriman, kendaraan yang tersedia, dan objek lain yang menjelaskan hubungannya.Shipment: Menjelaskan lokasi yang akan dikunjungi oleh kendaraan. Tugas dapat merepresentasikan paket sebenarnya yang akan diambil dan dikirim atau tempat pengemudi kendaraan melakukan layanan.Vehicle: Menjelaskan sarana transportasi antara lokasi pengiriman. Setiap kendaraan sesuai dengan kendaraan sebenarnya atau orang yang bergerak dengan berjalan kaki.
ShipmentModel
ShipmentModel menyimpan elemen masalah pengoptimalan rute. Model ini
berisi serangkaian pengiriman yang dapat dilakukan oleh serangkaian kendaraan, dengan
mempertimbangkan batasan dan meminimalkan biaya keseluruhan.
Tabel di bawah menjelaskan beberapa properti ShipmentModel yang relevan:
| Properti | Deskripsi |
|---|---|
shipments dan vehicles |
Objek wajib yang berisi detail satu atau banyak pengiriman dan kendaraan. |
globalStartTime dan globalEndTime |
Menunjukkan awal dan akhir periode waktu saat semua kendaraan harus menyelesaikan semua pengiriman. Meskipun properti ini tidak wajib, sebaiknya sertakan properti ini karena pengoptimal berfungsi paling baik jika mematuhi batasan waktu. |
Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di
ShipmentModel.
Contoh ShipmentModel
Dalam contoh ini, Anda memiliki layanan penitipan dan Anda mulai membuat permintaan. Anda akan menentukan pengiriman dan kendaraan nanti, tetapi Anda ingin memulai dengan menetapkan jam buka dan biaya operasional per jam.
Untuk contoh ini, nilai properti ShipmentModel dalam permintaan Anda adalah
sebagai berikut:
| Properti | Nilai | Deskripsi |
|---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | Tanggal dan waktu mulai jam buka. |
globalEndTime |
2024-02-14T06:00:00.000Z | Tanggal dan waktu berakhirnya jam buka. |
Berikut adalah contoh kode pesan ShipmentModel yang menggabungkan nilai skenario contoh.
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
Jenis pesan Shipment menentukan struktur properti pengiriman yang
dapat dikirim atau layanan yang dapat dilakukan pada rute.
Seperti yang diilustrasikan dalam diagram:
- Pesan
Shipmentmemiliki semua informasi pengiriman atau layanan di dunia nyata. - Semua pesan
Shipmentditentukan dalam kolomshipments. - Kolom
shipmentsberisi satu atau banyak pesanShipment.
Pesan Shipment memerlukan setidaknya satu objek pickups atau deliveries.
Definisi objek ini adalah sebagai berikut:
pickupsmenentukan lokasi pengambilan pengiriman.deliveriesmenentukan lokasi pengiriman.pickupsdandeliveriesberisi jenis pesanVisitRequestyang menentukan lokasi dan detail lainnya.
Tabel berikut menjelaskan berbagai skenario berdasarkan konfigurasi
pickups dan deliveries dalam pesan Shipment.
| Skenario | Deskripsi |
|---|---|
pickups saja |
Diasumsikan bahwa Anda hanya mengambil pengiriman. |
deliveries saja |
Diasumsikan bahwa Anda telah memuat pengiriman terlebih dahulu atau sedang memberikan layanan. |
pickups dan deliveries |
Kendaraan yang ditetapkan harus menyelesaikan penjemputan terlebih dahulu, lalu pengiriman. Hanya kendaraan yang melakukan pengambilan yang dapat melakukan pengiriman. |
Beberapa pickups atau deliveries |
Jika pengiriman mencantumkan beberapa kemungkinan untuk pickups atau deliveries, pengoptimal akan memilih satu opsi pengambilan dan satu opsi pengiriman untuk digunakan, berdasarkan meminimalkan biaya dan memenuhi batasan. |
Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di
Shipment.
Contoh Shipment
Dalam contoh ini, Anda memiliki layanan penitipan, tempat Anda menjemput dari rumah mereka dan mengantarkannya ke tempat penitipan Anda. Anda ingin menetapkan lokasi penjemputan dua, dan menetapkan lokasi pengirimannya ke bisnis Anda:
- Rumah pertama berada di Coit Tower, San Francisco. Koordinat untuk lokasi ini adalah lintang 37,8024 dan bujur -122,4058.
- Rumah kedua berada di South Sunset Playground Park, San Francisco. Koordinat lokasi ini adalah lintang 37,7359 dan bujur -122,5011.
- Penitipan Anda berada di Mission Dolores Park, San Francisco. Koordinat untuk lokasi ini adalah lintang 37.759773 dan bujur -122.427063.
Berikut adalah contoh kode pesan Shipment, dengan objek shipments
berisi dua jenis pesan Shipment dengan koordinat contoh.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
Jenis pesan Vehicle menentukan struktur properti kendaraan yang dapat
melakukan pengiriman dalam rute.
Seperti yang diilustrasikan dalam diagram:
- Pesan
Vehiclememiliki semua informasi kendaraan di dunia nyata. - Semua pesan
Vehicleditentukan dalam kolomvehicles. - Kolom
vehiclesberisi beberapa pesanVehicle.
Tabel berikut menjelaskan beberapa properti yang relevan dari Vehicle.
| Properti | Deskripsi |
|---|---|
startLocation dan endLocation |
Lokasi awal dan akhir kendaraan, yang merupakan bagian dari rute akhir yang dioptimalkan. Jika tidak ditentukan, lokasi tersebut akan ditetapkan secara default ke lokasi pengambilan pengiriman pertama dan pengiriman terakhir. |
costPerHour, costPerKilometer, costPerTraveledHour |
Parameter biaya khusus kendaraan. Sebaiknya Anda memiliki minimal satu parameter biaya dalam permintaan agar API menampilkan rute yang dioptimalkan. Lihat konsep utama Model biaya untuk mempelajari lebih lanjut biaya. |
startTimeWindows dan endTimeWindows |
Tentukan jangka waktu saat kendaraan dapat beroperasi di rute. Periode ini harus berada dalam periode waktu globalStartTime dan globalEndTime yang ditetapkan di ShipmentModel. Meskipun properti ini tidak wajib, sebaiknya sertakan properti ini karena pengoptimal berfungsi paling baik jika mematuhi batasan waktu. |
Contoh Vehicle
Dalam contoh ini, Anda memiliki layanan penitipan dan ingin menentukan
lokasi kendaraan Anda di awal dan akhir hari serta jumlah bahan bakar yang
dihabiskan. Anda tidak perlu menentukan jam kerja kendaraan karena jam kerja tersebut cocok dengan jam yang Anda tentukan di properti globalStartTime dan globalEndTime dalam objek ShipmentModel.
Untuk contoh ini, nilai properti Vehicle dalam permintaan Anda adalah
sebagai berikut:
| Properti | Nilai | Deskripsi |
|---|---|---|
startLocation |
latitude: 37.759773, longitude: -122.427063 |
Koordinat awal rute untuk kendaraan Anda. Lokasi ini cocok dengan lokasi tempat penitipan Anda yang berada di Mission Dolores Park, San Francisco. |
endLocation |
latitude: 37.759773, longitude: -122.427063 |
Koordinat akhir rute untuk kendaraan Anda. Lokasi ini cocok dengan lokasi tempat penitipan Anda yang berada di Mission Dolores Park, San Francisco. |
costPerHour |
27 | Jumlah yang Anda bayarkan kepada pengemudi untuk mengemudikan kendaraan penitipan Anda. Anda membayar pengemudi $27 per jam. |
Berikut adalah contoh kode pesan Vehicle yang menggabungkan nilai skenario contoh.
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
Lihat dokumentasi referensi untuk mengetahui daftar lengkap properti di
Vehicle.
Contoh permintaan lengkap
Contoh kode berikut memberikan contoh permintaan lengkap, yang menggabungkan contoh ShipmentModel, Shipment, dan Vehicle yang ditampilkan dalam dokumen ini.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }