إنشاء رسالة طلب

كما هو موضّح بشكل موجز في نظرة عامة على تحسين المسار، يتألّف الطلب الأساسي من النموذج والشحنات والمركبات بصفتها كيانات مطلوبة:

  • يُسجِّل النموذج الإعدادات والقيود للطلب بأكمله، بما في ذلك كلّ من Shipments وVehicles.
  • تمثّل الشحنات المهام أو الشحنات الفعلية التي تتضمّن VisitRequest جمع الطلبات ونقلها. تتضمّن الشحنات إعدادات وقيودًا محلية.
  • تمثّل المركبات المركبات أو السائقين أو الموظفين. تنطبق أيضًا إعدادات وقيود محلية على المركبات.

تصف سمات كلّ عنصر جزءًا من مشكلة التحسين على مستوى تحديدٍ معيّن للدقة. يتم تطبيق القيود على مستوى الطراز على جميع الشحنات والمركبات، في حين أنّ القيود والخصائص المحدّدة للشحنات أو المركبات تكون خاصة بشحنة أو مركبة واحدة.

للحصول على مستندات كاملة عن كل نوع من الرسائل، اطّلِع على المستندات المرجعية لرسائل ShipmentModel (REST وgRPC) وShipment (REST وgRPC) وVehicle (REST وgRPC).

OptimizeToursRequest مكانًا للإقامة

في ما يلي بعض السمات الشائعة الاستخدام لرسالة OptimizeToursRequest (REST وgRPC) ذات المستوى الأعلى:

  • يشير العنصر searchMode إلى ما إذا كان سيتم عرض أول حل يستوفي القيود المحدّدة أو العثور على أفضل حل ممكن في مهلة زمنية محدّدة.
  • considerRoadTraffic لتحديد ما إذا كان سيتم استخدام بيانات حركة المرور المباشرة لتوجيه المسار وتقدير الوقت المقدَّر للوصول
  • يحدِّد الخيار populateTransitionPolylines ما إذا كان سيتم عرض مضلّعات المسار وعلامات المسار في الاستجابة أم لا.

خصائص التصميم

تشمل بعض الخصائص الشائعة الاستخدام لرسالة ShipmentModel (REST، gRPC) ما يلي:

  • يمثّل globalStartTime أقرب وقت لبدء المسارات لجميع المركبات والشحنات. ولا يجوز لأي مركبة بدء عمليات النقل والتحميل الأولى قبل هذا الوقت.
  • يمثّل globalEndTime آخر وقت لانتهاء المسارات لجميع المركبات والشحنات. يجب إكمال جميع عمليات الشحن والنقل المخصّصة قبل هذا الوقت.

سمات الشحن

تشمل بعض السمات الشائعة الاستخدام لرسالة Shipment (REST وgRPC) ما يلي:

  • يمثّل pickups[] وdeliveries[] المكان الذي يمكن فيه استلام الشحنة أو تسليمها. تستخدم سمتا pickups[] وdeliveries[] رسالة VisitRequest (REST وgRPC).
  • يمثّل loadDemands الحمولة المطلوبة لمركبة لإكمال شحن. يمثّل سمة load_limits (REST أو gRPC) المقابلة للمركبات مقدار الحمولة التي يمكن أن تستوعبها المركبة في وقت واحد. يمكنك الاطّلاع على مزيد من المعلومات عن الحمل في متطلبات الحمل وحدوده.
  • يمثّل penalty_cost التكلفة المتكبّدة في حال تخطّي شحنة. يمكنك الاطّلاع علىمزيد من المعلومات عن التكاليف في مَعلمات نموذج التكلفة.

سمات المركبة

في ما يلي بعض السمات الشائعة الاستخدام لرسالة Vehicle (REST وgRPC):

  • يمثّل الرمز startLocation المكان الذي يجب أن تبدأ فيه المركبة مسارها. هذا السمة اختيارية. إذا لم يتم تحديده، يبدأ مسار المركبة من موقع الشحنة الأولى المخصّصة لها.
  • يمثّل الرمز endLocation المكان الذي يجب أن تنتهي فيه رحلة المركبة. هذا السمة اختيارية. في حال عدم تحديده، ينتهي مسار المركبة عند الموقع الجغرافي لشحنتها الأخيرة المحدّدة لها.
  • يمثّل startTimeWindows[] الوقت الذي يمكن فيه للمركبة بدء مسارها. هذا السمة اختيارية.
  • يمثّل الرمز endTimeWindows[] وقت بدء مركبة مسارها وانتهائها منه. وكلا السمتَين اختياريتان.
  • يمثّل loadLimits سعة المركبة المتاحة لتلبية متطلبات حمولة الرسائل. يمكنك الاطّلاع على مزيد من المعلومات عن متطلبات الحمل وحدوده في متطلبات الحمل وحدوده.

في ما يلي مثال كامل لطلب بتنسيق JSON:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

يستهلك كلّ من OptimizeTours وBatchOptimizeTours رسائل الطلب مثل المثال الموضح أعلاه، ولكن بطرق مختلفة. قبل تقديم طلب تحسين مسار، من المهم فهم الفرق بين الطريقتَين التاليتَين:

مقارنة OptimizeTours وBatchOptimizeTours