Permintaan dan batas muatan adalah jenis batasan yang dapat Anda gunakan untuk mengelola kapasitas. Batasan ini menentukan kapasitas yang diperlukan pengiriman dan kapasitas maksimum kendaraan, yang memungkinkan Anda mengoptimalkan penetapan rute berdasarkan batasan ini.
Permintaan dan batas muatan dapat mendukung sasaran seperti:
- Mencegah kendaraan kelebihan muatan.
- Memantau perubahan muatan kendaraan saat pengiriman diambil dan dikirim.
- Memprioritaskan pemasangan kendaraan tugas berat dengan pengiriman muatan berat.
Permintaan dan batas muatan ditentukan dalam properti ini:
loadDemandsmenentukan jumlah kapasitas yang diperlukan pengiriman tertentu.loadLimitsmenentukan kapasitas maksimum untuk kendaraan tertentu.
Struktur
Seperti yang ditunjukkan dalam diagram, permintaan dan batas muatan disusun sebagai berikut:
loadDemandsadalah propertiShipment. AShipmentdapat memiliki beberapa permintaan muatan.loadLimitsadalah propertiVehicle. AVehicledapat memiliki beberapa batas muatan.
Checklist penting
Checklist berikut menjelaskan pengetahuan penting yang mencegah potensi kesalahan terkait muatan. Daftar ini dapat membantu Anda memvalidasi permintaan dan memecahkan masalah respons.
Properti
Bagian ini menjelaskan properti untuk permintaan dan batas muatan, yaitu sebagai berikut:
- Jenis muatan: Properti bersama antara permintaan dan batas muatan.
LoaddanLoadLimit: Properti unik yang ada dalam permintaan muatan dan batas muatan.
Jenis muatan
Jenis muatan adalah kunci string yang Anda terapkan secara sama untuk pengiriman dan kendaraan. Satu jenis muatan berlaku untuk permintaan muatan pengiriman serta batas muatan kendaraan.
Jenis muatan menggunakan sintaksis jenis peta Protocol Buffers. Saat memberi nama jenis muatan, gunakan ID yang menjelaskan jenis muatan dan unitnya. Misalnya: weightKg, volume_gallons, palletcount, atau frequencyDaily.
Load dan LoadLimit
Objek Load dan LoadLimit berisi properti tertentu untuk
menentukan persyaratan kapasitas pengiriman dan kendaraan. Tabel berikut
menjelaskan properti ini:
| Objek | Orang tua | Properti | Jenis properti | Deskripsi properti |
|---|---|---|---|---|
Load |
loadDemands |
amount |
string (format int64) | Menentukan persyaratan kapasitas pengiriman dalam jenis yang ditentukan. |
LoadLimit |
loadLimits |
maxLoad |
string (format int64) | Menentukan kapasitas muatan maksimum kendaraan dalam jenis yang ditentukan. |
Contoh
Bagian ini membahas tiga jenis contoh:
- Contoh kode yang mengilustrasikan struktur properti permintaan dan batas muatan.
- Contoh skenario yang menunjukkan salah satu cara menggunakan permintaan dan batas muatan dalam permintaan API.
- Contoh permintaan yang menyertakan nilai yang ditetapkan dalam contoh skenario.
Contoh kode
Contoh berikut menunjukkan struktur permintaan muatan tempat Anda dapat menetapkan jenis
loadDemands sebagai string dan properti amount sebagai string
dalam format int64:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
Contoh berikut menunjukkan struktur paling dasar dari batas muatan, tempat Anda
dapat menetapkan jenis loadLimits sebagai string, dan properti maxLoad
sebagai string dalam format int64:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Contoh skenario
Bagian ini menjelaskan skenario saat Anda memiliki bisnis penitipan dan mengoptimalkan rute untuk mengangkut beberapa dalam kendaraan dengan jumlah kandang terbatas.
Setiap pengiriman mewakili satu perhentian tempat Anda mengambil sejumlah. Dalam contoh ini, setiap pengiriman memiliki lokasi pengambilan yang berbeda, yaitu rumah yang Anda rawat, dan semua pengiriman memiliki lokasi pengiriman yang sama, yaitu gedung penitipan Anda.
Untuk contoh ini, nilai properti dalam permintaan Anda adalah sebagai berikut:
| Orang tua | Properti | Jenis | Nilai | Skenario |
|---|---|---|---|---|
loadDemands |
jenis muatan | string | dogUnit |
Menentukan jenis muatan untuk pengiriman. Contoh ini menggunakan dogUnit, dengan setiap dogUnit mewakili satu. |
loadDemands |
amount |
angka | Pengiriman pertama: 1Pengiriman kedua: 3 |
Menentukan kuantitas jenis muatan yang ditentukan. Dalam contoh ini, Anda menentukan dua pengiriman, yang pertama mengambil satu, dan yang kedua mengambil 3. |
loadLimits |
jenis muatan | string | dogUnit |
Menentukan jenis batas muatan yang diterapkan ke kendaraan. Jenis muatan ini harus cocok dengan jenis muatan pengiriman agar batasnya relevan. |
loadLimits |
maxLoad |
angka | 6 |
Menentukan kuantitas maksimum jenis muatan yang dapat dibawa kendaraan. Dalam contoh ini, Anda hanya memiliki satu kendaraan dengan kapasitas maksimum 6 dogUnit, dengan setiap dogUnit mewakili satu kandang. |
Diagram berikut mengilustrasikan batas muatan kendaraan, permintaan muatan setiap pengiriman, dan cara setiap pengiriman menggunakan batas muatan kendaraan:

Dalam contoh ini, permintaan muatan setiap pengiriman dan batas muatan kendaraan memiliki efek berikut:
Pengoptimal tidak akan mengalami masalah dalam membuat rute bagi kendaraan untuk mengangkut, karena kendaraan dapat membawa hingga 6, dan Anda hanya mengambil 4.
Memiliki batas muatan 6
dogUnitpada kendaraan juga berarti Anda hanya dapat membawa dua lagi di kendaraan tertentu ini.Jika jumlah lebih besar dari batas muatan, pengoptimal akan melewatkan salah satu pengambilan atau menetapkannya ke kendaraan yang sesuai.
Ingatlah bahwa tidak ada kumpulan jenis yang telah ditentukan. Dalam contoh ini, Anda dapat mengubah jenis muatan dari unit menjadi unit berat untuk membatasi berat, atau mengubahnya menjadi pengukuran linear untuk membatasi lebar atau tingginya. Fleksibilitas ini memungkinkan Anda menyesuaikan permintaan dan batas muatan dengan kebutuhan spesifik Anda.
Contoh permintaan
Contoh berikut menunjukkan struktur permintaan optimizeTours dasar yang menggabungkan nilai contoh skenario:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
Perlu diingat bahwa, tidak seperti contoh ini, pengiriman dapat memiliki beberapa permintaan muatan, dan kendaraan dapat memiliki beberapa batas muatan, sehingga Anda dapat memberikan batasan kompleks yang perlu dipertimbangkan saat mengoptimalkan rute armada.
Batas muatan yang dapat dilewati
Anda dapat menetapkan batas muatan sebagai batasan yang dapat dilewati dengan menambahkan softMaxLoad dan
costPerUnitAboveSoftMax pada loadLimits kendaraan. Hal ini memungkinkan pengoptimal melebihi muatan maksimum kendaraan dengan biaya tertentu, sehingga memprioritaskan penyelesaian rute daripada kepatuhan ketat terhadap batas muatan.
Anda dapat menggunakan maxLoad dan softMaxLoad bersama-sama untuk menetapkan batas muatan yang ketat
dan yang dapat dilewati. Dalam hal ini, softMaxLoad menetapkan muatan yang dapat
dilewati, dan maxLoad menetapkan batas ketat yang tidak dapat dilewati. Jika
keduanya digunakan, maxLoad harus lebih besar dari softMaxLoad.
Properti
Tabel berikut menjelaskan properti batasan yang dapat dilewati untuk permintaan dan batas muatan.
| Orang tua | Nama properti | Jenis properti | Deskripsi properti |
|---|---|---|---|
loadLimits |
softMaxLoad |
string (format int64) | Muatan maksimum pilihan untuk kendaraan. Jika muatan kendaraan melebihi nilai ini, biaya akan dikenakan. |
loadLimits |
costPerUnitAboveSoftMax |
angka | Biaya per unit muatan di atas softMaxLoad. Kolom ini wajib diisi saat menggunakan softMaxLoad. Lihat Konsep utama model Biaya untuk mempelajari biaya lebih lanjut. |
Contoh kode
Contoh berikut menunjukkan struktur properti batasan yang dapat dilewati dari loadLimits:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }