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

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

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

يمكن أن تساعد أحمال الطلبات وحدودها في تحقيق أهداف مثل:

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

يتم تحديد متطلبات التحميل وحدوده في الخصائص التالية:

  • تحدّد السمة loadDemands مقدار السعة التي تتطلّبها شحنة معيّنة.
  • يمثّل loadLimits الحدّ الأقصى لسعة مركبة معيّنة.

البنية

كما هو موضّح في المخطّط، يتم تنظيم متطلبات التحميل وحدوده على النحو التالي:

  • loadDemands هي سمة من سمات Shipment. يمكن أن يحتوي Shipment على متطلبات تحميل متعددة.
  • loadLimits هي سمة من سمات Vehicle. يمكن أن يحتوي Vehicle على حدود تحميل متعددة.

قائمة التحقّق من Essentials

توضّح قائمة التحقّق التالية المعلومات الأساسية التي تمنع حدوث أخطاء محتملة متعلقة بالتحميل. يمكن أن تساعدك هذه القائمة في التحقّق من صحة طلبك وتحديد المشاكل في ردّك وحلّها.

.

الخصائص

يوضّح هذا القسم خصائص متطلبات التحميل وحدوده، وهي كما يلي:

  • نوع التحميل: سمة مشتركة بين طلبات التحميل وحدوده.
  • 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 مساحات مشغولة الآن، مع بقاء مساحتين فارغتين.

في هذا المثال، يكون لمتطلبات الحمولة لكل شحنة وحدود الحمولة للمركبة التأثيرات التالية:

  • لن يواجه المحسّن أي مشكلة في إنشاء مسار لنقل الكلاب، لأنّ المركبة يمكنها استيعاب ما يصل إلى 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
        }
      }
}