تُعدّ متطلبات الحمولة وحدودها نوعًا من القيود التي يمكنك استخدامها لإدارة السعة. يحدّد هذا القيد السعة المطلوبة للشحنة و الحد الأقصى لسعةالمركبة ، ما يتيح لك تحسين عمليات تخصيص المسارات استنادًا إلى هذه القيود.
يمكن أن تتوافق متطلبات الحمولة وحدودها مع أهداف مثل:
- منع تحميل المركبات فوق طاقتها
- تتبُّع كيفية تغيُّر حمولات المركبات عند استلام الشحنات وتسليمها
- منح الأولوية لربط المركبات الثقيلة بالشحنات الثقيلة
يتم تحديد متطلبات الحمولة وحدودها في السمات التالية:
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 } } }