تحميل الطلبات والحدود

يتمّ تحديد سمة loadDemands ضمن ShipmentModel.shipments.Shipment وسمة loadLimits ضمن ShipmentModel.vehicles.Vehicle.

متطلبات الحمل وحدوده هي نوع من القيود التي يمكنك استخدامها لإدارة السعة. وتحدِّد هذه القيود السعة المطلوبة للشحنة والحد الأقصى لسعة المركبة، ما يتيح لك تحسين عمليات إسناد المسارات استنادًا إلى هذه القيود.

يمكن أن تدعم متطلبات التحميل والحدّ الأقصى للتحميل أهدافًا مثل:

  • تجنُّب تحميل المركبات فوق طاقتها
  • مراقبة كيفية تغيُّر أحمال المركبات أثناء استلام الشحنات وتسليمها
  • يمكنك حصر عدد المرات التي يمكن أن تزور فيها المركبة موقعًا معيّنًا.

يتم تحديد متطلبات الحمل وحدوده في السمات التالية:

  • تحدّد السمة 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:

"loadDemands": {
  "MATCHING_LOAD_TYPE": {
    "amount": "YOUR_LOAD_AMOUNT"
  }
}

يعرض المثال التالي البنية الأساسية لحدّ الحمولة، حيث يمكنك ضبط نوع loadLimits كسلسلة، والسمة maxLoad كسلسلة بتنسيق int64:

"loadLimits": {
  "MATCHING_LOAD_TYPE": {
    "maxLoad": "YOUR_MAX_LOAD"
  }
}

جرّبه الآن

استخدِم أمثلة الرموز البرمجية أعلاه لإنشاء سيناريو خيالي. في هذا السيناريو، لديك شحنة تزن 10 كيلوغرام ومركبة يمكنها حمل 100 كيلوغرام:

  1. في مثال loadDemands، حدِّد نوع التحميل على أنّه weightKg.

    بعد إجراء ذلك، سيتم أيضًا تعبئة نوع التحميل في مثال loadLimits، ما يؤدي إلى مشاركة نوع التحميل. تذكَّر أنّه يجب أن تتطابق أنواع loadDemands وloadLimits لكي تستهلك الشحنة حدود المركبة.

  2. في مثال loadDemands نفسه، اضبط السمة amount على 10.

    وهذا يعني أنّ وزن الشحنة 10 كيلوغرام.

  3. في مثال loadLimits، اضبط السمة maxLoad على 100.

    وهذا يعني أنّ المركبة يمكنها حمل 100 كيلوغرام كحد أقصى.

يُرجى العِلم أنّه لا تتوفّر مجموعة من الأنواع المحدّدة مسبقًا. في هذا المثال، يمكنك تغيير الكيلوغرام إلى نقاط، أو تغييره إلى قياسات خطية بدلاً من الوزن. تتيح لك هذه المرونة تخصيص متطلبات التحميل وحدودها لتلبية احتياجاتك المحدّدة.

مثال على الطلب

يوضّح المثال التالي بنية طلب optimizeTours أساسي مع loadDemands في شحنة وloadLimits في مركبة:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "endLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "costPerKilometer": 1.0,
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

تذكَّر أنّ الشحنة قد تتضمّن متطلبات تحميل متعددة، ويمكن أن يكون للمركبة حدود تحميل متعددة، ما يتيح لك تقديم قيود معقدة يجب أخذها في الاعتبار عند تحسين مسارات أسطولك.