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

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

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

يمكن أن تساعد أحمال الاستخدام والحدود القصوى في تحقيق أهداف مثل:

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

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

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

البنية

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

قائمة التحقّق من 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
        }
      }
}