تفسير ردّ من واجهة برمجة التطبيقات Route Optimization API... باستخدام الكلاب

المطوّرون في المنطقة الاقتصادية الأوروبية

ملاحظة حول الإنتاج

لتبسيط الأمر، يستخدم هذا الدليل REST وJSON. ومع ذلك، بالنسبة إلى بيئة التشغيل الفعلي، ننصحك بشكل عام باستخدام gRPC ومكتبات العملاء لتحقيق أداء أفضل. لمزيد من المعلومات، يُرجى الاطّلاع على مكتبات عملاء Route Optimization API.

بعد إرسال الطلب في تقديم طلبك الأول، يعرض المحسِّن OptimizeToursResponse. هذا الردّ هو خطة المسار التي يجب أن يتّبعها السائق. يوضّح لك هذا الدليل كيفية قراءته.

ملخّص خطة المسار

بالنسبة إلى سيناريو رعاية الكلاب، يخصّص المحسِّن كلب جبل بيرنيز وكلب الشيواوا لشاحنتك ويتخطّى كلب الراعي الألماني. خطة مسار السائق هي كما يلي:

  • تبدأ نوبة العمل في الساعة 7:55 صباحًا في مركز الرعاية النهارية.
  • اصطحب كلب جبل البرنيز بالقرب من برج كويت في الساعة 8:20 صباحًا.
  • اصطحب كلب الشيواوا من حديقة "ساوث سانسيت بلاي غراوند" في الساعة 8:58 صباحًا.
  • العودة إلى مركز الرعاية النهارية في الساعة 9:24 صباحًا، والانتظار حتى تفتح نافذة التسليم في الساعة 9:30 صباحًا.
  • تسليم كلب جبل البرنيز عند الساعة 9:30 صباحًا
  • يجب توصيل كلب الشيواوا عند الساعة 9:35 صباحًا.
  • إنهاء المناوبة عند الساعة 9:40 صباحًا

تبلغ تكلفة خطة المسار 147.22 دولارًا، بما في ذلك غرامة قدرها 100 دولار مقابل تخطي كلب الراعي الألماني.

للتحقّق من نتائجك، قارِن ردّك بالردّ الكامل في المثال. قد تختلف نتائجك قليلاً لأن مدة الرحلة والمسافات تعتمد على بيانات الطريق الحالية.

مثال على الردّ الكامل

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "detour": "0s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "detour": "2600s",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "startTime": "2024-02-13T17:30:00Z",
          "detour": "2297s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2024-02-13T17:35:00Z",
          "detour": "656s",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ],
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        {
          "travelDuration": "1252s",
          "travelDistanceMeters": 7860,
          "waitDuration": "356s",
          "totalDuration": "1608s",
          "startTime": "2024-02-13T17:03:12Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:35:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:40:00Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "4740s",
        "waitDuration": "356s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "6296s",
        "travelDistanceMeters": 31531,
        "performedShipmentPenaltyCostSum": 2000
      },
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22,
      "vehicleFullness": {
        "maxFullness": 0.3497777777777778,
        "activeSpan": 0.3497777777777778
      }
    }
  ],
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "4740s",
      "waitDuration": "356s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "6296s",
      "travelDistanceMeters": 31531,
      "performedShipmentPenaltyCostSum": 2000
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T15:55:04Z",
    "latestVehicleEndTime": "2024-02-13T17:40:00Z",
    "totalCost": 147.22,
    "costs": {
      "model.vehicles.cost_per_hour": 47.22,
      "model.shipments.penalty_cost": 100
    }
  }
}
    

بنية الردّ

يحتوي OptimizeToursResponse على عنصر ShipmentRoute يتضمّن نوع رسالة visits وعنصر Metrics يتضمّن aggregatedRouteMetrics وtotalCost.

يحتوي OptimizeToursResponse على مكوّنَين رئيسيَّين:

  • ‫routes: خطة المسار لكل مركبة في أسطولك، بما في ذلك ترتيب وأوقات كل عملية استلام وتسليم لديك شاحنة واحدة، لذا هناك خطة مسار واحدة.
  • ‫metrics: ملخّص لخطة المسار بالكامل، بما في ذلك إجمالي التكلفة والمدة والمسافة

بما أنّ المحسِّن يتخطّى كلب الراعي الألماني، تتضمّن الاستجابة أيضًا skippedShipments.

توضّح لك الأقسام التالية مكان العثور على كل تفاصيل ملخّص خطة المسار في الردّ.

ما هي المركبة التي تسلك أي مسار؟

ينشئ المحسِّن خطة مسار (مصفوفة routes) تتوافق مع ترتيب vehicles في طلبك.

يحدّد الحقل vehicleIndex كل مركبة استنادًا إلى موضعها الذي يبدأ من الصفر، وهو 0 لشاحنتك. يحدّد الحقلان vehicleStartTime وvehicleEndTime للسائق وقت بدء نوبة عمله وانتهائها.

تعرض واجهة برمجة التطبيقات Route Optimization API الطوابع الزمنية بالتوقيت العالمي المنسق (UTC)، ويتم تمييزها باللاحقة Z، بغض النظر عن الإزاحة في طلبك. لمعرفة الوقت في سان فرانسيسكو، اطرح 8 ساعات. بالنسبة إلى شاحنتك، تبدأ المناوبة من الساعة 7:55 صباحًا إلى الساعة 9:40 صباحًا، كما هو موضّح في عينة تعليمات برمجية التالية.

{
"routes": [
    {
    // "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
    "vehicleStartTime": "2024-02-13T15:55:04Z",
    "vehicleEndTime": "2024-02-13T17:40:00Z",
    ...
    }
  ]
  ...
}

ما هو ترتيب الاستلام والتسليم؟

ضمن كل مسار، تحتوي مصفوفة visits على كل عملية استلام وتسليم للمركبة المحدّدة بترتيب زمني.

shipmentIndex لكل زيارة هو موضع الشحنة المستند إلى الصفر في طلبك: 0 هو كلب جبل بيرنيز، و1 هو تشيواوا. يعرض الحقل shipmentLabel التصنيف الذي حدّدته لكل شحنة.

للتمييز بين الاستلام والتسليم، يمكنك الاطّلاع على الحقلَين visitType أو isPickup:

  • visitType: يحدّد هذا الإجراء بشكل صريح إجراء الزيارة.
    • استلام الطلب: visitType = "PICKUP_SHIPMENT"
    • التسليم: visitType = "DELIVER_SHIPMENT"
  • isPickup: حقل مساعِد للقيم المنطقية.
    • استلام الطلب: isPickup = true
    • التسليم: isPickup = false (تم حذفها في JSON)

لتحديد التسلسل الدقيق للأحداث ووقت الوصول المتوقّع إلى كل موقع جغرافي، يُرجى قراءة مصفوفة visits بالترتيب. يوضّح الجدول التالي إجراء خطة المسار استنادًا إلى ترتيب وقيم الحقول shipmentIndex وisPickup أو visitType وstartTime.

التسلسل قيمة shipmentIndex قيمة isPickup أو visitType قيمة "startTime" (بالتوقيت العالمي المنسَّق) الإجراء
الزيارة الأولى ‫0 (تم حذفه في JSON) صحيح أو PICKUP_SHIPMENT 2024-02-13T16:20:00Z استلِم كلب جبل البرنيز عند الساعة 8:20 صباحًا.
الزيارة الثانية 1 صحيح أو PICKUP_SHIPMENT 2024-02-13T16:58:12Z استلِم كلب التشيواوا عند الساعة 8:58 صباحًا.
الزيارة الثالثة ‫0 (تم حذفه في JSON) False (تم حذفه) أو DELIVER_SHIPMENT 2024-02-13T17:30:00Z أريد توصيل كلب جبل البرنيز إلى مركز رعاية الكلاب عند الساعة 9:30 صباحًا.
الزيارة الرابعة 1 False (تم حذفه) أو DELIVER_SHIPMENT 2024-02-13T17:35:00Z أريد توصيل كلب الشيواوا إلى مركز رعاية الكلاب عند الساعة 9:35 صباحًا.

يوضّح نموذج الرمز البرمجي التالي كيف يوفّر الردّ هذا التسلسل:

{
  "routes": [
    {
      "visits": [
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:30:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:35:00Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ]
    }
  ]
}

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

ماذا يحدث بين الزيارات؟

ضمن كل مسار، تعرض مصفوفة transitions تفاصيل التنقّل بين الزيارات. على الرغم من أنّ visits وtransitions قائمتان منفصلتان، إلا أنّهما تتداخلان في الوقت، على النحو التالي:

  1. transitions[0] (القيادة من نقطة البداية إلى الزيارة الأولى)
  2. ‫visits[0] (الزيارة الأولى)
  3. transitions[1] (القيادة من الزيارة الأولى إلى الزيارة الثانية)
  4. ‫visits[1] (الزيارة الثانية)
  5. ...
  6. ‫visits[N-1] (الزيارة الأخيرة، حيث يمثّل N إجمالي عدد الزيارات)
  7. ‫transitions[N] (القيادة من آخر زيارة إلى النهاية)

يمكنك تتبُّع المخطط الزمني للمسار من خلال الاطّلاع على الحقل startTime في كلتا المصفوفتَين. startTime الانتقال هو الوقت الذي يبدأ فيه السائق رحلته، وstartTime الزيارة هو الوقت الذي يبدأ فيه السائق عملية الاستلام أو التسليم.

يعرض كل انتقال وقت القيادة المتوقّع والمسافة بين المواقع الجغرافية. يعرض الجدول التالي كلاً من حقلَي transitions وvisits لإجراءات المسار الزمني لسيناريو مركز رعاية الكلاب.

التسلسل اسم الحقل قيمة "startTime" (بالتوقيت العالمي المنسَّق) التفاصيل الإجراء
الانتقال الأول transitions[0] 2024-02-13T15:55:04Z travelDuration: 1496s
travelDistanceMeters: 7082
القيادة لمسافة 7 كيلومتر لمدة 25 دقيقة من مركز الرعاية النهارية لاصطحاب كلب جبل بيرنيز تبدأ المناوبة في الساعة 7:55 صباحًا.
الزيارة الأولى visits[0] 2024-02-13T16:20:00Z shipmentIndex: 0 (تم حذفه في JSON)
isPickup: صحيح
اصطحب كلب جبل بيرنيز بدءًا من الساعة 8:20 صباحًا. تستغرق الزيارة 5 دقائق.
عملية النقل الثانية transitions[1] 2024-02-13T16:25:00Z travelDuration: 1992s
travelDistanceMeters: 16589
القيادة لمسافة 17 كيلومتر لمدة 33 دقيقة من برج كويت لاصطحاب كلب الشيواوا بدءًا من الساعة 8:25 صباحًا
الزيارة الثانية visits[1] 2024-02-13T16:58:12Z shipmentIndex: 1
isPickup: صحيح
اصطحب كلب الشيواوا بدءًا من الساعة 8:58 صباحًا. تستغرق الزيارة 5 دقائق.
الانتقال الثالث transitions[2] 2024-02-13T17:03:12Z travelDuration: 1252s
travelDistanceMeters: 7860
waitDuration: 356s
القيادة لمسافة 8 كيلومتر لمدة 21 دقيقة من South Sunset Playground إلى مركز الرعاية النهارية بدءًا من الساعة 9:03 صباحًا، والوصول في الساعة 9:24 صباحًا، والانتظار لمدة 6 دقائق حتى تفتح نافذة التوصيل
الزيارة الثالثة visits[2] 2024-02-13T17:30:00Z ‫shipmentIndex: 0 (تم حذفه في JSON)
isPickup: خطأ (تم حذفه في JSON)
يجب توصيل كلب جبل بيرنيز إلى مركز رعاية الكلاب بدءًا من الساعة 9:30 صباحًا. تستغرق الزيارة 5 دقائق.
عملية النقل الرابعة transitions[3] 2024-02-13T17:35:00Z travelDuration: 0s
travelDistanceMeters: 0 (تم حذفه في JSON)
لا يُسمح بالقيادة. أنا على استعداد لتوصيل كلب الشيواوا إلى مركز الرعاية النهارية في الساعة 9:35 صباحًا.
الزيارة الرابعة visits[3] 2024-02-13T17:35:00Z shipmentIndex: 1
isPickup: False (omitted in JSON)
أريد توصيل كلب الشيواوا إلى مركز الرعاية النهارية للكلاب بدءًا من الساعة 9:35 صباحًا. تستغرق الزيارة 5 دقائق.
الانتقال الخامس transitions[4] 2024-02-13T17:40:00Z travelDuration: 0s
travelDistanceMeters: 0 (تم حذفه في JSON)
لا يُسمح بالقيادة. ينهي السائق نوبة عمله في الساعة 9:40 صباحًا.

توضّح عينة التعليمات البرمجية التالية كيف يوفّر الردّ هذا التسلسل لـ transitions[0] وtransitions[1]:

{
  "routes": [
    {
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        ...
      ]
    }
  ]
}

كم تبلغ تكلفة المسار؟

يمكنك الاطّلاع على عدة حقول في الردّ حسب ما إذا كنت بحاجة إلى تكلفة مركبة معيّنة أو التكلفة الإجمالية لأسطول المركبات بالكامل.

يسرد الجدول التالي جميع الطرق التي يمكنك من خلالها العثور على معلومات التكلفة في الردّ:

أحد الوالدين المَعلمة النطاق الوصف
ShipmentRoute routeCosts لكل مسار تفاصيل مكوّنات التكلفة المحدّدة (مثل التكلفة في الساعة) لهذا المسار المحدّد
routeTotalCost لكل مسار إجمالي التكلفة المحسوبة لهذا المسار المحدّد
Metrics totalCost الإجمالي (كل المسارات) إجمالي التكلفة المجمّعة لجميع المسارات في الحلّ
costs الإجمالي (كل المسارات) تقسيم مكوّنات التكلفة المجمّعة في جميع المسارات في الحلّ

تعكس التكاليف المحدّدة في routeCosts وcosts قيود التكلفة التي تحدّدها في طلبك. لمزيد من المعلومات، يُرجى الاطّلاع على مستند المفهوم الأساسي لنموذج التكلفة.

بالنسبة إلى سيناريو رعاية الكلاب هذا، نظرًا لأن لديك شحنة تم تخطيها، فإن التكلفة لكل مسار والتكلفة الإجمالية المجمعة مختلفة. تشمل تكلفة المسار فقط التكاليف المرتبطة بهذا المسار المحدّد (أجر السائق)، بينما تشمل التكلفة الإجمالية المجمّعة أيضًا غرامة الشحنة التي تم تخطّيها. توضح عينة التعليمات البرمجية التالية مكان العثور على هذه القيم في الاستجابة:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      ...
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22
    }
  ],
  "metrics": {
    "totalCost": 147.22,
    "costs": {
      "model.shipments.penalty_cost": 100,
      "model.vehicles.cost_per_hour": 47.22
    },
    ...
  }
}

وفقًا لخطة المسار، يشغّل السائق الشاحنة من الساعة 7:55 صباحًا إلى الساعة 9:40 صباحًا، أي لمدة ساعة و45 دقيقة تقريبًا (6296 ثانية). وبمعدّل 27 دولار أمريكي في الساعة الذي حدّدته، تبلغ تكلفة المسار 47.22 دولار أمريكي. بما أنّ المحسِّن تخطّى شحنة الراعي الألماني، يضيف تكلفة جزائية بقيمة 100 دولار أمريكي، ما يجعل إجمالي التكلفة المجمّعة 147.22 دولار أمريكي.

لماذا تم تخطّي شحنة؟

تُدرج أداة التحسين أي شحنة لا تنفّذها في مصفوفة skippedShipments. ويعتمد سبب تخطّي الشحنة على ما إذا كنت قد ضبطت penaltyCost:

  • عمليات الشحن الإلزامية (بدون penaltyCost): لا يتخطّى المحسِّن هذه العمليات أبدًا لمجرد أنّ تنفيذها مكلف. ويتخطّى شحنة واحدة فقط إذا لم يتمكّن من إدراجها في أي مسار، على سبيل المثال، بسبب تعارض نافذتها الزمنية مع شحنات أخرى.
  • الشحنات الاختيارية (مع penaltyCost): يمكن للمحسِّن أيضًا تخطّي هذه الشحنات عندما تكون تكلفة تنفيذها أعلى من الغرامة. يمكنك ضبط تكاليف غرامات مختلفة لإعطاء الأولوية لبعض الشحنات على غيرها.

بالنسبة لهذا السيناريو، تتعارض نافذة التقاط الراعي الألماني مع نافذة كلب جبل بيرنيز. يقع "برج كويت" على بُعد 25 دقيقة من "لاندز إند"، لذلك لا يمكن للسائق إجراء عمليتَي الاستلام خلال فترة الـ 20 دقيقة. يجب أن يتخطّى المحسِّن أحدهما. بما أنّ تكلفة غرامة الراعي الألماني أقل (100 دولار أمريكي مقابل 1,000 دولار أمريكي للعميل العادي)، يتخطّى المحسِّن هذا الموعد ويتحمّل غرامة قدرها 100 دولار أمريكي.

تعرض عيّنة التعليمات البرمجية التالية عنصر skippedShipments في الردّ:

{
  ...
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  ...
}

يحتوي عنصر skippedShipments في الاستجابة على الحقول التالية:

  • ‫index: فهرس الشحنة المستند إلى الصفر في طلبك (2 للشحنة الثالثة)
  • label: التصنيف الذي حدّدته في الطلب ("كلب الراعي الألماني").
  • penaltyCost: تكلفة الغرامة التي حدّدتها في الطلب، والتي تضيفها واجهة برمجة التطبيقات إلى التكلفة الإجمالية.

لمنع المحسِّن من تخطّي شحنة، يمكنك تخفيف القيود التي تؤدي إلى حدوث التعارض. على سبيل المثال، اطلب من مالك كلب الراعي الألماني تحديد فترة زمنية أكثر مرونة لاستلام الكلب، ثم عدِّل timeWindows لعملية الاستلام هذه في طلبك.

حقول الردّ في المثال

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

يمكنك فلترة المحتوى حسب العنصر الرئيسي أو البحث النصي.

أحد الوالدين المَعلمة نوع الموقع الوصف
OptimizeToursResponse routes مصفوفة من العناصر (ShipmentRoute) يحتوي هذا على قائمة المسارات المحسوبة لكل مركبة (مسار واحد لكل مركبة). بالنسبة إلى سيناريو مركز رعاية الكلاب، يحتوي هذا على خطة المسار التفصيلية لشاحنتك الواحدة.
metrics العنصر (Metrics) يحتوي هذا الحقل على المقاييس الإجمالية للحلّ، والتي يتم تجميعها على مستوى جميع المسارات. بالنسبة لسيناريو رعاية الكلاب هذا، هذا هو ملخص التكاليف والمدد التشغيلية لليوم.
skippedShipments مصفوفة من العناصر (SkippedShipment) يحتوي هذا على قائمة الشحنات التي تم تخطيها في الحل. في هذا السيناريو، يتم تخطّي الكلب الثالث (الراعي الألماني).
ShipmentRoute vehicleStartTime الطابع الزمني هذا هو الوقت الذي تبدأ فيه المركبة مسارها. بالنسبة إلى سيناريو رعاية الكلاب هذا، يبدأ السائق في قيادة الشاحنة في الساعة 7:55 صباحًا.
vehicleEndTime الطابع الزمني هذا هو الوقت الذي تنتهي فيه المركبة من مسارها. بالنسبة لسيناريو رعاية الكلاب هذا، ينتهي السائق من قيادة الشاحنة في الساعة 9:40 صباحًا.
visits مصفوفة من العناصر (Visit) هذه هي القائمة المرتبة لعمليات الاستلام والتسليم على المسار. بالنسبة إلى سيناريو الرعاية اليومية للكلاب، هذا هو تسلسل اصطحاب الكلبين وإعادتهما.
transitions مصفوفة من العناصر (Transition) هذه هي القائمة المرتبة للمسافة ووقت السفر والانتظار بين الزيارات. بالنسبة لسيناريو رعاية الكلاب هذا، يوضح هذا مسافة القيادة والوقت بين برج كويت، ومتنزه ساوث صن سيت بلاي جراوند، ومركز الرعاية النهارية.
metrics العنصر (AggregatedMetrics) هذه هي المقاييس الخاصة بهذا المسار الفردي. بالنسبة لسيناريو رعاية الكلاب، هذه هي الإحصائيات الخاصة بهذه الشاحنة المحددة. تستند هذه المقاييس إلى التكاليف التي حدّدتها في طلبك. لمزيد من التفاصيل، يُرجى الاطّلاع على مستند المفهوم الأساسي لنموذج التكلفة.
routeCosts عنصر (خريطة) في ما يلي تفاصيل التكاليف المحدّدة لهذا المسار. بالنسبة لسيناريو رعاية الكلاب هذا، يوضح هذا التكلفة المحسوبة من أجر السائق البالغ 27 دولارًا في الساعة.
routeTotalCost العدد هذه هي التكلفة الإجمالية لهذا المسار المحدّد. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، تبلغ التكلفة الإجمالية 47.22 لمسار هذه الشاحنة.
vehicleFullness العنصر (VehicleFullness) هذا تفصيل لمدى اقتراب المركبة من حدودها التشغيلية، مثل الوقت والمسافة والحمولة. في سيناريو مركز رعاية الكلاب هذا، يقتصر السائق على أوقات بدء المناوبة وانتهائها فقط، لذا تحتسب أداة التحسين vehicleFullness كجزء من مدة المسار الفعلية والحد الأقصى للوقت المتاح لمناوبة السائق.
Visit shipmentIndex عدد صحيح هذا هو الفهرس المستند إلى الصفر للشحنة في الطلب الأصلي. في سيناريو مركز رعاية الكلاب هذا، يمثّل الرقم 0 كلب جبل بيرنيز، ويمثّل الرقم 1 كلب تشيواوا.
isPickup منطقي يكون هذا الحقل صحيحًا إذا كانت هذه الزيارة مخصّصة للاستلام. بالنسبة إلى سيناريو مركز رعاية الكلاب، تكون القيمة "صحيح" عند اصطحاب الكلب و"خطأ" (أو غير متوفّرة) عند ترك الكلب في المركز.
startTime الطابع الزمني هذا هو وقت البدء المقدَّر للزيارة. بالنسبة لسيناريو رعاية الكلاب هذا، هذا هو الوقت الذي يطرق فيه السائق الباب.
detour المدة هذا هو الوقت الإضافي الذي يضيفه المحسِّن إلى رحلة هذه الشحنة المحددة. المسار البديل هو الفرق بين خطة المسار الفعلية والرحلة المباشرة المثالية إذا لم يكن لدى السائق شحنات أو مهام أخرى لإكمالها.

في سيناريو مركز رعاية الكلاب هذا، تكون الزيارة الأولى، وهي اصطحاب كلب جبل بيرنيز، ذات مسار بديل بقيمة 0 لأن السائق يذهب مباشرةً من مركز الرعاية إلى مكان اصطحاب الكلب. بالنسبة إلى عملية نقل كلب الشيواوا، يستغرق المسار البديل 43 دقيقة لأنّ السائق ينقل كلب جبل بيرنيز أولاً (ويستغرق 5 دقائق في تحميله).
shipmentLabel سلسلة هذا هو التصنيف من الطلب لكل شحنة. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، التصنيفات هي "شيواوا" أو "كلب جبل البرنيز".
visitType سلسلة (تعداد) يشير هذا الحقل إلى نوع الزيارة، والذي يمكن أن يكون PICKUP_SHIPMENT لعمليات الاستلام أو DELIVER_SHIPMENT لعمليات التسليم. في هذا السيناريو، تكون القيمة إما PICKUP_SHIPMENT أو DELIVER_SHIPMENT.
Transition travelDuration المدة هذا هو الوقت الذي تقضيه في السفر خلال هذا الانتقال بين الزيارات. على سبيل المثال، في سيناريو رعاية الكلاب هذا، يقضي السائق حوالي 25 دقيقة في القيادة من مركز الرعاية النهارية إلى برج كويت لاصطحاب كلب جبل بيرنيز.
travelDistanceMeters عدد صحيح هذه هي المسافة المقطوعة بالأمتار خلال هذه الفترة الانتقالية. على سبيل المثال، في سيناريو رعاية الكلاب هذا، يسافر السائق لمسافة 7 كيلومترات من مركز الرعاية إلى برج كويت لاصطحاب كلب جبل بيرنيز.
waitDuration المدة هذا هو الوقت الذي تقضيه في الانتظار قبل استلام الطلب التالي أو توصيله. في سيناريو مركز رعاية الكلاب هذا، تبلغ هذه القيمة 6 دقائق (356 ثانية) لعملية النقل الثالثة، لأنّ السائق يصل إلى مركز الرعاية قبل فتح نافذة التسليم في الساعة 9:30 صباحًا. بالنسبة إلى عمليات النقل الأخرى، تكون هذه القيمة 0.
totalDuration المدة هذه هي المدة الإجمالية للانتقال، بما في ذلك القيادة والانتظار. على سبيل المثال، يقضي السائق 25 دقيقة (25 دقيقة قيادة و0 دقيقة انتظار) في الانتقال الأول، و27 دقيقة (21 دقيقة قيادة و6 دقائق انتظار) في الانتقال الثالث للعودة إلى مركز الرعاية النهارية.
startTime الطابع الزمني هذا هو الوقت الذي تبدأ فيه الرحلة. ويتطابق مع وقت إكمال الزيارة السابقة (أو وقت بدء المركبة في عملية الانتقال الأولى). في سيناريو مركز رعاية الكلاب، تبدأ عملية الانتقال الأولى في الساعة 7:55 صباحًا عندما يغادر السائق مركز الرعاية، وتبدأ عملية الانتقال الثانية في الساعة 8:25 صباحًا عندما يغادر السائق برج كويت.
Metrics aggregatedRouteMetrics العنصر (AggregatedMetrics) هذا هو مجموع المقاييس في جميع المسارات. بالنسبة لسيناريو رعاية الكلاب هذا، هذه هي المقاييس الإجمالية لشاحنتك الواحدة.
usedVehicleCount عدد صحيح يشير ذلك إلى عدد المركبات المستخدَمة في الحلّ. بالنسبة إلى سيناريو رعاية الكلاب هذا، فأنت تستخدم شاحنة واحدة فقط.
earliestVehicleStartTime الطابع الزمني هذا هو أقرب وقت بدء بين جميع المركبات. بالنسبة لسيناريو رعاية الكلاب هذا، يبدأ مسار الشاحنة في الساعة 7:55 صباحًا.
latestVehicleEndTime الطابع الزمني هذا هو آخر وقت انتهاء بين جميع المركبات. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، ينتهي مسار الشاحنة في الساعة 9:40 صباحًا.
totalCost العدد هذه هي التكلفة الإجمالية للحلّ. في سيناريو مركز رعاية الكلاب هذا، تبلغ تكلفة خطة المسار بالكامل ‎147.22 لليوم (بما في ذلك أجر السائق البالغ ‎47.22 وغرامة الشحنة التي تم تخطّيها البالغة ‎100).
costs عنصر (خريطة) هذا تفصيل لإجمالي التكلفة حسب الفئة. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، احتسب المحسِّن تكلفة المسار استنادًا إلى التكلفة في الساعة وتكلفة الغرامة المترتبة على تخطّي كلب الراعي الألماني.
AggregatedMetrics performedShipmentCount عدد صحيح يشير هذا إلى عدد الشحنات التي تم توجيهها بنجاح. بالنسبة إلى سيناريو رعاية الكلاب هذا، ينقل السائق كلبَين.
travelDuration المدة هذا هو إجمالي الوقت الذي تم قضاؤه في السفر. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، يستغرق السائق 79 دقيقة.
waitDuration المدة هذا هو إجمالي الوقت الذي تم قضاؤه في الانتظار. في سيناريو مركز رعاية الكلاب هذا، ينتظر السائق لمدة 6 دقائق (356 ثانية) في مركز الرعاية حتى تفتح نافذة التسليم.
delayDuration المدة هذه هي المدة الإضافية التي تحدّدها باستخدام سمات الانتقال، مثل الوقت المحجوز لركن السيارة. في سيناريو مركز رعاية الكلاب هذا، لم تحدّد أي سمات انتقال في الطلب، لذا تكون هذه القيمة صفرًا.
breakDuration المدة هذا هو إجمالي الوقت الذي تم قضاؤه في فترات الاستراحة. بالنسبة لسيناريو رعاية الكلاب هذا، لا توجد فواصل.
visitDuration المدة يشير هذا إلى إجمالي الوقت المستغرَق في تقديم الخدمات أثناء الزيارات. بالنسبة إلى سيناريو مركز رعاية الكلاب، تبلغ هذه المدة 20 دقيقة (5 دقائق لكل زيارة من الزيارات الأربع).
totalDuration المدة هذا هو مجموع كل مكوّنات المدة. بالنسبة إلى سيناريو مركز رعاية الكلاب هذا، تبلغ المدة الإجمالية 105 دقائق (6296 ثانية).
travelDistanceMeters عدد صحيح هذا هو إجمالي مسافة السفر بالمتر. في سيناريو مركز رعاية الكلاب هذا، يقطع السائق مسافة إجمالية تبلغ 31.5 كيلومتر.
performedShipmentPenaltyCostSum مزدوجة هذا هو مجموع تكاليف الغرامات لجميع الشحنات التي تم تنفيذها. في هذا السيناريو، تبلغ التكلفة 2000 لأنّ السائق نقل كلب جبل برنيز وكلب شيواوا (تبلغ تكلفة الغرامة لكل منهما 1000).
VehicleFullness maxFullness العدد هذه هي أعلى نسبة استخدام في جميع حقول VehicleFullness. بالنسبة إلى سيناريو مركز رعاية الكلاب، تبلغ هذه القيمة 0.35 لأنّ السائق يشغّل الشاحنة لمدة 105 دقائق فقط من فترة العمل الصباحية بأكملها، والتي حدّدتها بـ 5 ساعات في الطلب.
activeSpan العدد هذه هي نسبة إجمالي مدة نوبة عمل السائق مقارنةً بساعات العمل في خطة المسار. ويعني الرقم الأقل أنّ السائق يقضي وقتًا أقل من يوم العمل في تشغيل المركبة. بالنسبة إلى سيناريو مركز رعاية الكلاب، تبلغ هذه النسبة ‎0.35 لأنّ السائق يشغّل الشاحنة لمدة 105 دقائق خلال نوبة العمل التي تبلغ 5 ساعات.
SkippedShipment index عدد صحيح هذا هو الفهرس المستند إلى الصفر للشحنة في الطلب الأصلي. في هذا السيناريو، يمثل الرقم 2 الراعي الألماني.
label سلسلة هذا هو التصنيف الذي حدّدته للشحنة في الطلب.
penaltyCost العدد هذه هي تكلفة الغرامة التي تتكبّدها عندما يتخطّى المحسِّن هذه الشحنة. ويتطابق مع penaltyCost الذي حدّدته في الطلب.