Permintaan dan batas beban 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 beban dapat mendukung tujuan seperti:
- Mencegah kendaraan kelebihan muatan.
- Pantau perubahan muatan kendaraan saat pengiriman diambil dan dikirim.
- Prioritaskan pencocokan kendaraan tugas berat dengan pengiriman muatan berat.
Permintaan dan batas muatan ditentukan dalam properti berikut:
loadDemands
menentukan jumlah kapasitas yang diperlukan oleh pengiriman tertentu.loadLimits
menentukan kapasitas maksimum untuk kendaraan tertentu.
Struktur
Seperti yang ditunjukkan dalam diagram, permintaan dan batas beban disusun sebagai berikut:
loadDemands
adalah propertiShipment
.Shipment
dapat memiliki beberapa permintaan pemuatan.loadLimits
adalah propertiVehicle
.Vehicle
dapat memiliki beberapa batas beban.
Checklist Essentials
Checklist berikut menjelaskan pengetahuan penting yang mencegah potensi kesalahan terkait pemuatan. Daftar ini dapat membantu Anda memvalidasi permintaan dan memecahkan masalah respons.
Properti
Bagian ini menjelaskan properti untuk permintaan dan batas beban, yaitu sebagai berikut:
- Jenis beban: Properti bersama antara permintaan dan batas beban.
Load
danLoadLimit
: Properti unik yang ada dalam permintaan pemuatan dan batas pemuatan.
Jenis pemuatan
Jenis muatan adalah kunci string yang Anda terapkan secara merata pada pengiriman dan kendaraan. Jenis muatan tunggal berlaku untuk permintaan muatan pengiriman serta batas muatan kendaraan.
Jenis beban menggunakan sintaksis jenis peta Protocol Buffers. Saat memberi nama jenis beban, gunakan ID yang menjelaskan jenis beban 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 mencakup tiga jenis contoh:
- Contoh kode yang mengilustrasikan struktur properti permintaan dan batas beban.
- Contoh skenario yang menunjukkan salah satu cara untuk menggunakan permintaan dan batas beban dalam permintaan API.
- Contoh permintaan yang menyertakan nilai yang ditetapkan dalam skenario contoh.
Contoh kode
Contoh berikut menunjukkan struktur permintaan beban 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 Anda mengoptimalkan rute untuk mengangkut beberapa dalam kendaraan dengan jumlah kandang yang terbatas.
Setiap pengiriman mewakili satu perhentian tempat Anda menjemput 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 bangunan tempat penitipan Anda.
Untuk contoh ini, nilai properti dalam permintaan Anda adalah sebagai berikut:
Orang tua | Properti | Jenis | Nilai | Skenario |
---|---|---|---|---|
loadDemands |
jenis beban | string | dogUnit |
Menentukan jenis muatan untuk pengiriman. Contoh ini menggunakan dogUnit , dengan setiap dogUnit mewakili satu. |
loadDemands |
amount |
angka | Pengiriman pertama: 1 Pengiriman kedua: 3 |
Menentukan jumlah jenis beban yang ditentukan. Dalam contoh ini, Anda menentukan dua pengiriman, yang pertama Anda mengambil satu, yang kedua Anda mengambil 3. |
loadLimits |
jenis beban | string | dogUnit |
Menentukan jenis batas muatan yang diterapkan pada kendaraan. Harus cocok dengan jenis muatan pengiriman agar batasnya relevan. |
loadLimits |
maxLoad |
angka | 6 |
Menentukan jumlah 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 menggambarkan 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 untuk kendaraan yang akan mengangkut, karena kendaraan dapat membawa hingga 6, dan Anda hanya mengambil 4.
Memiliki batas muatan 6
dogUnit
pada kendaraan juga berarti Anda hanya dapat membawa dua lagi di kendaraan ini.Jika jumlah lebih besar daripada batas muatan, pengoptimal akan melewati salah satu penjemputan atau menetapkannya ke kendaraan yang sesuai.
Ingatlah bahwa tidak ada kumpulan jenis yang telah ditentukan sebelumnya. 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 tinggi. Fleksibilitas ini memungkinkan Anda menyesuaikan permintaan dan batas beban dengan kebutuhan spesifik Anda.
Contoh permintaan
Contoh berikut menunjukkan struktur permintaan optimizeTours
dasar yang menggabungkan nilai skenario contoh:
{ "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 } ] } }
Ingatlah bahwa, tidak seperti contoh ini, pengiriman dapat memiliki beberapa permintaan muatan, dan kendaraan dapat memiliki beberapa batas muatan, sehingga Anda dapat memberikan batasan kompleks untuk dipertimbangkan saat mengoptimalkan rute armada Anda.
Batas pemuatan ringan
Anda dapat menetapkan batas muatan sebagai batasan ringan dengan menambahkan softMaxLoad
dan
costPerUnitAboveSoftMax
pada loadLimits
kendaraan. Hal ini memungkinkan
pengoptimal melebihi beban maksimum kendaraan dengan biaya, memprioritaskan penyelesaian rute
daripada kepatuhan ketat terhadap batas beban.
Anda dapat menggunakan maxLoad
dan softMaxLoad
bersama-sama untuk menetapkan batas beban berat dan ringan. Dalam hal ini, softMaxLoad
menetapkan beban yang dapat
dilampaui, dan maxLoad
menetapkan batas ketat yang tidak dapat dilampaui. Jika
keduanya digunakan, maxLoad
harus lebih besar daripada softMaxLoad
.
Properti
Tabel berikut menjelaskan properti batasan ringan untuk permintaan dan batas pemuatan.
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 beban 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 ringan loadLimits
:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }