متطلبات التحميل والحدود هي نوع من القيود التي يمكنك استخدامها لإدارة السعة. يحدّد هذا القيد السعة المطلوبة للشحنة والسعة القصوى للمركبة، ما يتيح لك تحسين عمليات تحديد المسارات استنادًا إلى هذه القيود.
يمكن أن تساعد متطلبات التحميل والحدود في تحقيق أهداف مثل:
- منع تحميل المركبات بشكل زائد
- مراقبة كيفية تغيُّر حمولات المركبات أثناء استلام الشحنات وتسليمها
- أعطِ الأولوية لربط مركبات النقل الثقيل بشحنات الحمولة الثقيلة.
يتم تحديد متطلبات التحميل والحدود في هذه السمات:
- تحدّد السمة
loadDemandsمقدار السعة التي تتطلّبها شحنة معيّنة. - تحدّد السمة
loadLimitsالحدّ الأقصى لسعة مركبة معيّنة.
البنية
كما هو موضّح في المخطّط البياني، يتم تنظيم متطلبات التحميل والحدود على النحو التالي:
loadDemandsهي سمة من سماتShipment. يمكن أن يحتوي النوعShipmentعلى عدة طلبات تحميل.loadLimitsهي سمة من سماتVehicle. يمكن أن يحتوي النوعVehicleعلى عدة حدود قصوى للحمولة.
قائمة التحقّق من الأساسيات
تصف قائمة التحقق التالية المعرفة الأساسية التي تمنع الأخطاء المحتملة المتعلقة بالحمل. يمكن أن تساعدك هذه القائمة في التحقّق من صحة طلبك وتحديد المشاكل في ردّك وحلّها.
الخصائص
يصف هذا القسم سمات متطلبات التحميل والحدود، وهي كالتالي:
- نوع الحمولة: سمة مشتركة بين متطلبات الحمولة وحدودها.
-
LoadوLoadLimit: هما سمتان فريدتان تظهران في طلبات التحميل وحدود التحميل على التوالي.
نوع الباب
نوع الحمولة هو مفتاح سلسلة يتم تطبيقه بالتساوي على الشحنات والمركبات. ينطبق نوع حمولة واحد على طلب حمولة الشحنة بالإضافة إلى حدّ حمولة المركبة.
تستخدم أنواع التحميل بنية نوع خريطة Protocol Buffers. عند تسمية نوع الحمل، استخدِم معرّفات تصف نوع الحمل ووحدته. على سبيل المثال: weightKg أو volume_gallons أو palletcount أو frequencyDaily.
Load وLoadLimit
يحتوي الكائنان Load وLoadLimit على سمات محدّدة لتحديد متطلبات السعة للشحنات والمركبات. يوضّح الجدول التالي هذه السمات:
| عنصر | أحد الوالدين | الموقع | نوع مكان الإقامة | وصف الموقع |
|---|---|---|---|---|
Load |
loadDemands |
amount |
سلسلة (بتنسيق int64) | تحدّد متطلبات سعة الشحنة في النوع المحدّد. |
LoadLimit |
loadLimits |
maxLoad |
سلسلة (بتنسيق int64) | تحدّد الحد الأقصى لسعة حمولة المركبة بالنوع المحدّد. |
أمثلة
يتناول هذا القسم ثلاثة أنواع من الأمثلة:
- عيّنات التعليمات البرمجية التي توضّح بنية سمات متطلبات الحمولة والحدود
- مثال على سيناريو يوضّح إحدى طرق استخدام متطلبات التحميل والحدود في طلب بيانات من واجهة برمجة التطبيقات.
- مثال على طلب يتضمّن القيم المحدّدة في سيناريو المثال
عيّنات تعليمات برمجية
يوضّح المثال التالي بنية طلب التحميل حيث يمكنك ضبط نوع loadDemands كسلسلة والسمة amount كسلسلة بتنسيق int64:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
يوضّح المثال التالي البنية الأساسية لحدّ التحميل، حيث يمكنك ضبط نوع loadLimits كسلسلة، وسمة maxLoad كسلسلة بتنسيق int64:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
مثال على السيناريو
يصف هذا القسم سيناريو لديك فيه نشاط تجاري لرعاية الكلاب أثناء النهار وتعمل على تحسين مسار لنقل بعض الكلاب في مركبة بعدد محدود من الصناديق.
تمثّل كل شحنة محطة واحدة تلتقط فيها عددًا معينًا من الكلاب. في هذا المثال، لكل شحنة موقع استلام مختلف، وهو منزل الكلاب التي تعتني بها، وجميع الشحنات لها نفس موقع التسليم، وهو مبنى مركز رعاية الكلاب.
في هذا المثال، تكون قيم السمات في طلبك على النحو التالي:
| أحد الوالدين | الموقع | النوع | القيمة | السيناريو |
|---|---|---|---|---|
loadDemands |
نوع الباب | سلسلة | dogUnit |
تحدّد هذه السمة نوع حمولة الشحنة. يستخدم هذا المثال dogUnit، حيث يمثّل كل dogUnit كلبًا واحدًا. |
loadDemands |
amount |
الرقم | الشحنة الأولى: 1الشحنة الثانية: 3 |
تحدّد هذه السمة كمية نوع الحمولة المحدّد. في هذا المثال، أنت تحدّد شحنتَين، في الأولى ستصطحب كلبًا واحدًا، وفي الثانية ستصطحب 3 كلاب. |
loadLimits |
نوع الباب | سلسلة | dogUnit |
تحدّد هذه السمة نوع الحدّ الأقصى للحمولة المطبَّق على المركبة. يجب أن يتطابق هذا مع نوع حمولة الشحنة ليكون الحدّ مناسبًا. |
loadLimits |
maxLoad |
الرقم | 6 |
تحدّد هذه السمة الحد الأقصى لكمية نوع الحمولة التي يمكن للمركبة نقلها. في هذا المثال، لديك مركبة واحدة فقط بسعة قصوى تبلغ 6 dogUnit، حيث يمثّل كل dogUnit صندوقًا واحدًا للكلاب. |
يوضّح المخطّط البياني التالي حدود الحمولة للمركبة ومتطلبات الحمولة لكل شحنة وكيفية استهلاك كل شحنة لحدود الحمولة للمركبة:

في هذا المثال، متطلبات الحمولة لكل شحنة وحدود الحمولة للمركبة لها التأثيرات التالية:
لن يواجه المحسِّن مشكلة في إنشاء مسار للمركبة لنقل الكلاب، لأنّ المركبة يمكنها نقل ما يصل إلى 6 كلاب، وأنت تنقل 4 كلاب فقط.
يعني وجود حد حمولة يبلغ 6
dogUnitعلى المركبة أيضًا أنه لا يمكنك حمل سوى كلبين آخرين على هذه المركبة المحددة.إذا كان عدد الكلاب أكبر من الحد الأقصى للحمولة، سيقوم المحسِّن إما بتخطي إحدى عمليات الاستلام أو تعيينها لمركبة مناسبة.
تذكَّر أنّه ما مِن مجموعة من الأنواع المحدّدة مسبقًا. في هذا المثال، يمكنك تغيير نوع الحمولة من وحدات الكلاب إلى وحدات الوزن للحد من وزن الكلاب، أو تغييره إلى قياسات خطية للحد من عرضها أو ارتفاعها. تتيح لك هذه المرونة تخصيص متطلبات التحميل والحدود وفقًا لاحتياجاتك المحددة.
مثال على الطلب
يوضّح المثال التالي بنية طلب optimizeTours أساسي يتضمّن قيم السيناريو النموذجي:
{ "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 } ] } }
يُرجى العِلم أنّه على عكس هذا المثال، يمكن أن تتضمّن الشحنة عدة متطلبات حمولة، ويمكن أن تتضمّن المركبة عدة حدود حمولة، ما يتيح لك تقديم قيود معقّدة يجب أخذها في الاعتبار عند تحسين مسارات أسطولك.
الحدود المرنة للحمولة
يمكنك ضبط حدود الحمولة كقيود مرنة من خلال إضافة softMaxLoad وcostPerUnitAboveSoftMax إلى loadLimits للمركبة. يتيح ذلك
لأداة التحسين تجاوز الحد الأقصى لحمولة المركبة مقابل تكلفة، مع إعطاء الأولوية لإكمال المسار
على الالتزام الصارم بحد الحمولة.
يمكنك استخدام maxLoad وsoftMaxLoad معًا لضبط حدّ أقصى صارم
وحدّ أقصى مرن للتحميل. في هذه الحالة، يحدّد softMaxLoad الحمل الذي يمكن تجاوزه، ويحدّد maxLoad حدًا صارمًا لا يمكن تجاوزه. وعند استخدام كليهما، يجب أن تكون قيمة maxLoad أكبر من قيمة softMaxLoad.
الخصائص
يوضّح الجدول التالي سمات القيود المرنة لمتطلبات التحميل والحدود.
| أحد الوالدين | اسم السمة | نوع مكان الإقامة | وصف الموقع |
|---|---|---|---|
loadLimits |
softMaxLoad |
سلسلة (بتنسيق int64) | الحد الأقصى المفضّل للحمولة في المركبة إذا تجاوزت حمولة المركبة هذه القيمة، يتم تحمّل تكلفة. |
loadLimits |
costPerUnitAboveSoftMax |
الرقم | تمثّل هذه السمة تكلفة كل وحدة حمولة تتجاوز softMaxLoad. هذا الحقل مطلوب عند استخدام softMaxLoad. يمكنك الاطّلاع على المفهوم الرئيسي نموذج التكلفة لمزيد من المعلومات عن التكاليف. |
عيّنة تعليمات برمجية
يوضّح المثال التالي بنية سمات القيود المرنة في loadLimits:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }