تفسیر پاسخ Route Optimization API… با سگ‌ها

توسعه‌دهندگان منطقه اقتصادی اروپا (EEA)

یادداشت برای تولید

برای سادگی، این راهنما از REST و JSON استفاده می‌کند. بااین‌حال، برای محیط تولید، توصیه کلی این است که برای عملکرد بهتر از gRPC و کتابخانه‌های کارخواه استفاده کنید. برای اطلاعات بیشتر، کتابخانه‌های کارخواه Route Optimization API را ببینید.

پس‌از ارسال درخواست در اولین درخواستتان را ایجاد کنید، بهینه‌ساز OptimizeToursResponse را برمی‌گرداند. این پاسخ طرح مسیر است که راننده شما باید دنبال کند. این راهنما به شما نشان می‌دهد چگونه آن را بخوانید.

خلاصه طرح مسیر

برای سناریو مهدکودک سگ‌ها، بهینه‌ساز سگ کوهستانی برنی و سگ شی‌واوا را به ون شما اختصاص می‌دهد و سگ ژرمن شپرد را رد می‌کند. برنامه مسیر راننده شما به‌صورت زیر است:

  • شیفت را ساعت ۷:۵۵ صبح در مهدکودک شروع کن.
  • سگ کوهستانی برنیز را ساعت ۸:۲۰ صبح نزدیک برج کویت بردارید.
  • ساعت ۸:۵۸ صبح، سگ نژاد چی‌واوا را از «پارک زمین بازی ساوت سانست» بردارید.
  • ساعت ۹:۲۴ صبح به مهدکودک برگردید و تا باز شدن پنجره تحویل در ساعت ۹:۳۰ صبح صبر کنید.
  • سگ کوهستانی برن را ساعت ۹:۳۰ صبح پیاده کن.
  • ساعت ۹:۳۵ صبح، Chihuahua را پیاده کن.
  • پایان نوبت کاری در ساعت ۹:۴۰ صبح.

هزینه طرح مسیر ۱۴۷٫۲۲ دلار است، شامل ۱۰۰ دلار جریمه برای رد شدن از ژرمن شپرد.

برای بررسی نتایج، پاسخ خود را با پاسخ کامل نمونه مقایسه کنید. نتایج شما ممکن است کمی متفاوت باشد زیرا زمان و مسافت سفر به داده‌های فعلی جاده بستگی دارد.

پاسخ نمونه کامل

{
  "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 با نوع پیام بازدیدها و یک شیء Metrics با aggregatedRouteMetrics و totalCost است.

OptimizeToursResponse شامل دو مؤلفه اصلی است:

  • routes: طرح مسیر برای هر خودرو در ناوگان شما، ازجمله ترتیب و زمان هر تحویل گرفتن و تحویل دادن. یک ون دارید، بنابراین یک طرح مسیر وجود دارد.
  • metrics: خلاصه‌ای از کل برنامه مسیر، ازجمله هزینه کل، مدت، و مسافت.

چون بهینه‌ساز از ژرمن شپرد رد می‌شود، پاسخ همچنین شامل skippedShipments است.

بخش‌های زیر نشان می‌دهند که هر جزئیات خلاصه طرح مسیر را در پاسخ کجا پیدا کنید.

کدام وسیله نقلیه در کدام مسیر حرکت می‌کند؟

بهینه‌ساز طرح مسیری (آرایه routes) تولید می‌کند که با ترتیب vehicles در درخواست شما مطابقت دارد.

فیلد vehicleIndex هر خودرو را براساس موقعیت صفرپایه آن شناسایی می‌کند که برای ون شما ۰ است. فیلدهای vehicleStartTime و vehicleEndTime به راننده دستور می‌دهند که چه زمانی نوبت کاری خود را شروع و پایان دهد.

Route Optimization API مُهرهای زمان را در ساعت هماهنگ جهانی (UTC) برمی‌گرداند که با پسوند Z مشخص می‌شود، صرف‌نظر از انحراف در درخواست شما. برای دریافت زمان سانفرانسیسکو، ۸ ساعت کم کنید. برای ون شما، نوبت کاری از ساعت ۷:۵۵ صبح تا ۹:۴۰ صبح است، همان‌طور که در نمونه کد زیر نشان داده شده است.

{
"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 (به‌وقت ساعت هماهنگ جهانی) کنش
نخستین بازدید ۰ (در JSON حذف شده است) درست یا PICKUP_SHIPMENT 2024-02-13T16:20:00Z سگ کوهستانی برن را ساعت ۸:۲۰ صبح بردارید.
بازدید دوم 1 درست یا PICKUP_SHIPMENT 2024-02-13T16:58:12Z چی‌واوا را ساعت ۸:۵۸ صبح بردارید.
سومین بازدید ۰ (در JSON حذف شده است) نادرست (حذف‌شده) یا DELIVER_SHIPMENT 2024-02-13T17:30:00Z سگ کوهستانی برنیز را ساعت ۹:۳۰ صبح به مرکز نگهداری سگ‌ها ببر.
بازدید چهارم 1 نادرست (حذف‌شده) یا DELIVER_SHIPMENT 2024-02-13T17:35:00Z ساعت ۹:۳۵ صبح، سگ شی‌واوا را به مهد سگ‌ها ببر.

نمونه کد زیر نشان می‌دهد که چگونه پاسخ این توالی را ارائه می‌دهد:

{
  "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
برای تحویل گرفتن سگ کوهستانی برنیس، ۷ کیلومتر به‌مدت ۲۵ دقیقه از مهدکودک رانندگی کنید. نوبت کاری ساعت ۷:۵۵ صبح شروع می‌شود.
نخستین بازدید visits[0] 2024-02-13T16:20:00Z shipmentIndex: 0 (omitted in JSON)
isPickup: True
سگ کوهستانی برن را از ساعت ۸:۲۰ صبح بردارید. بازدید ۵ دقیقه طول می‌کشد.
گذار دوم transitions[1] 2024-02-13T16:25:00Z travelDuration: 1992s
travelDistanceMeters: 16589
برای گرفتن چی‌واوا، از ساعت ۸:۲۵ صبح ۱۷ کیلومتر را در ۳۳ دقیقه از برج کویت رانندگی کنید.
بازدید دوم visits[1] 2024-02-13T16:58:12Z shipmentIndex: 1
isPickup: True
ساعت ۸:۵۸ صبح، چی‌واوا را بردارید. بازدید ۵ دقیقه طول می‌کشد.
گذار سوم transitions[2] 2024-02-13T17:03:12Z ‫travelDuration: ۱۲۵۲ ثانیه
travelDistanceMeters: ۷۸۶۰
waitDuration: ۳۵۶ ثانیه
از ساعت ۹:۰۳ صبح، ۸ کیلومتر را در ۲۱ دقیقه از «زمین بازی ساوت سانست» به‌سمت مهدکودک رانندگی می‌کند. ساعت ۹:۲۴ صبح می‌رسد و ۶ دقیقه منتظر می‌ماند تا پنجره تحویل باز شود.
بازدید سوم visits[2] 2024-02-13T17:30:00Z shipmentIndex: 0 (در JSON حذف شده است)
isPickup: False (در JSON حذف شده است)
سگ کوهستانی برنی را ساعت ۹:۳۰ صبح به مرکز نگهداری روزانه سگ‌ها ببر. بازدید ۵ دقیقه طول می‌کشد.
گذار چهارم transitions[3] 2024-02-13T17:35:00Z travelDuration: 0s
travelDistanceMeters: 0 (omitted in JSON)
رانندگی نکنید. آماده برای رساندن سگ شی‌واوا به مهدکودک در ساعت ۹:۳۵ صبح.
بازدید چهارم visits[3] 2024-02-13T17:35:00Z shipmentIndex: 1
isPickup: False (omitted in JSON)
سگ شی‌واوا را ساعت ۹:۳۵ صبح به مهدکودک سگ‌ها ببرید. بازدید ۵ دقیقه طول می‌کشد.
انتقال پنجم transitions[4] 2024-02-13T17:40:00Z travelDuration: 0s
travelDistanceMeters: 0 (omitted in JSON)
رانندگی نکنید. راننده نوبت کاری را در ساعت ۹:۴۰ ق.ظ. تمام می‌کند.

نمونه کد زیر نشان می‌دهد که چگونه پاسخ این توالی را برای 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
    },
    ...
  }
}

طبق برنامه مسیر، راننده ون را از ساعت ۷:۵۵ صبح تا ۹:۴۰ صبح می‌راند که تقریباً ۱ ساعت و ۴۵ دقیقه (۶۲۹۶ ثانیه) است. با نرخ تعریف‌شده شما که ۲۷ دلار در ساعت است، هزینه مسیر ۴۷٫۲۲ دلار است. چون بهینه‌ساز از محموله ژرمن شپرد صرف‌نظر کرد، هزینه جریمه‌ای معادل ۱۰۰ دلار اضافه می‌کند، که مجموع هزینه کل را به ۱۴۷٫۲۲ دلار می‌رساند.

چرا ارسال رد شده است؟

بهینه‌ساز هر محموله‌ای را که انجام نمی‌دهد در آرایه skippedShipments فهرست می‌کند. دلیل رد شدن ارسال به این بستگی دارد که آیا penaltyCost تنظیم کرده‌اید یا نه:

  • محموله‌های اجباری (بدون penaltyCost): بهینه‌ساز هرگز این محموله‌ها را فقط به‌دلیل هزینه بالای انجام آن‌ها نادیده نمی‌گیرد. فقط درصورتی از یک محموله صرف‌نظر می‌کند که نتواند آن را در هیچ مسیری قرار دهد، مثلاً به‌دلیل اینکه پنجره زمانی آن با محموله‌های دیگر تداخل دارد.
  • محموله‌های اختیاری (با penaltyCost): بهینه‌ساز همچنین می‌تواند این محموله‌ها را نادیده بگیرد اگر هزینه انجام آن‌ها بیشتر از جریمه باشد. می‌توانید هزینه‌های جریمه متفاوتی را برای اولویت‌بندی برخی محموله‌ها نسبت‌به محموله‌های دیگر تنظیم کنید.

برای این سناریو، پنجره تحویل سگ ژرمن شپرد با پنجره سگ کوهستانی برن تداخل دارد. فاصله بین برج کویت و لندز اند ۲۵ دقیقه است، بنابراین راننده نمی‌تواند هر دو مسافر را در بازه زمانی ۲۰ دقیقه‌ای سوار کند. بهینه‌ساز باید یکی از آن‌ها را رد کند. چون سگ ژرمن شپرد هزینه جریمه کمتری دارد (۱۰۰ دلار درمقابل ۱۰۰۰ دلار برای مشتری معمولی)، بهینه‌ساز از آن صرف‌نظر می‌کند و جریمه ۱۰۰ دلاری را متحمل می‌شود.

نمونه کد زیر شیء skippedShipments را در پاسخ نشان می‌دهد:

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

شیء skippedShipments در پاسخ حاوی فیلدهای زیر است:

  • index: نمایه صفرپایه محموله در درخواست شما (۲ برای محموله سوم).
  • label: برچسبی که در درخواست مشخص کرده‌اید («ژرمن شپرد»).
  • penaltyCost: هزینه جریمه‌ای که در درخواست مشخص کرده‌اید و میانای برنامه‌سازی کاربردی آن را به هزینه کل اضافه می‌کند.

برای جلوگیری از رد شدن محموله توسط بهینه‌ساز، محدودیت ایجادکننده تداخل را کاهش دهید. برای مثال، از صاحب سگ ژرمن شپرد بخواهید بازه زمانی تحویل را منعطف‌تر کند، سپس timeWindows را برای آن تحویل در درخواستتان به‌روز کنید.

فیلدهای پاسخ در مثال

جدول زیر همه فیلدهای پاسخ را که در OptimizeToursResponse سناریو نمونه برگردانده شده است شرح می‌دهد. اگرچه برای درک طرح مسیر نیازی به استفاده از همه فیلدها ندارید، می‌توانید این فیلدها را تجزیه‌وتحلیل کنید تا نحوه تنظیم OptimizeToursRequest را برای مطابقت با نیازهای کسب‌وکارتان تعیین کنید. برای اطلاعات بیشتر، چرخه حیات طرح مسیر را ببینید.

می‌توانید محتوا را براساس والد یا جستجوی نوشتاری فیلتر کنید.

والدین پارامتر نوع خصوصیت شرح
OptimizeToursResponse routes آرایه اشیاء (ShipmentRoute) این شامل فهرست مسیرهای محاسبه‌شده برای هر خودرو است (یک مسیر برای هر خودرو). برای این سناریو مهدکودک سگ، این شامل طرح مسیر دقیق برای ون تکی شما است.
metrics شیء (Metrics) این شامل سنجه‌های کلی برای راه‌حل است که در همه مسیرها انبوهش شده است. برای این سناریوی مهد سگ‌ها، این خلاصه هزینه‌ها و مدت زمان عملیاتی برای روز است.
skippedShipments آرایه اشیاء (SkippedShipment) این شامل فهرست محموله‌هایی است که در راه‌حل نادیده گرفته شده‌اند. برای این سناریو، سگ سوم (ژرمن شپرد) رد می‌شود.
ShipmentRoute vehicleStartTime مُهر زمان این زمانی است که خودرو مسیرش را شروع می‌کند. برای این سناریو مهدکودک سگ‌ها، راننده ساعت ۷:۵۵ صبح شروع به رانندگی ون می‌کند.
vehicleEndTime مُهر زمان این زمانی است که خودرو مسیرش را به‌پایان می‌رساند. برای این سناریو مهد سگ، راننده رانندگی ون را در ساعت ۹:۴۰ صبح به‌پایان می‌رساند.
visits آرایه اشیاء (Visit) این فهرست مرتب‌شده‌ای از تحویل گرفتن‌ها و تحویل دادن‌ها در مسیر است. برای این سناریو نگهداری روزانه سگ، این توالی سوار کردن و پیاده کردن دو سگ است.
transitions آرایه اشیاء (Transition) این فهرست مرتب‌شده‌ای از مسافت، و زمان سفر و انتظار بین بازدیدها است. برای این سناریوی مهدکودک سگ‌ها، این جزئیات فاصله و زمان رانندگی بین برج کویت، پارک زمین بازی ساوت سانست، و مهدکودک را نشان می‌دهد.
metrics شیء (AggregatedMetrics) این سنجه‌ها مختص این مسیر هستند. برای این سناریوی مهدکودک سگ‌ها، این‌ها آمار این ون خاص هستند. این سنجه‌ها براساس هزینه‌هایی است که در درخواستتان مشخص کرده‌اید. برای جزئیات بیشتر، سند مفهوم کلیدی مدل هزینه را ببینید.
routeCosts شیء (نقشه) این تفکیک هزینه‌های خاص برای این مسیر است. برای این سناریو مهدکودک سگ، این هزینه محاسبه‌شده از دستمزد راننده ۲۷ دلار در ساعت را نشان می‌دهد.
routeTotalCost عدد این هزینه کل برای این مسیر خاص است. برای این سناریو مهدکودک سگ‌ها، هزینه کل برای مسیر این ون 47.22 است.
vehicleFullness شیء (VehicleFullness) این تفکیکی است از اینکه خودرو چقدر به محدودیت‌های عملیاتی خود، مانند زمان، مسافت، و بار نزدیک می‌شود. برای این سناریو مهد سگ، فقط زمان شروع و پایان نوبت کاری راننده را محدود می‌کند، بنابراین بهینه‌ساز vehicleFullness را به‌عنوان کسری از مدت واقعی مسیر و حداکثر زمان دردسترس برای نوبت کاری راننده محاسبه می‌کند.
Visit shipmentIndex عدد صحیح این نمایه صفرپایه محموله در درخواست اصلی است. برای این سناریوی مهدکودک سگ‌ها، 0 نشان‌دهنده سگ کوهستانی برنی و 1 نشان‌دهنده چی‌واوا است.
isPickup بولی اگر این بازدید از نوع تحویل گرفتن باشد، این فیلد درست است. برای این سناریو مهدکودک سگ‌ها، این مقدار هنگام تحویل گرفتن سگ درست و هنگام تحویل دادن سگ به مهدکودک نادرست (یا ناموجود) است.
startTime مُهر زمان این زمان شروع تخمینی بازدید است. برای این سناریو مهدکودک سگ‌ها، این زمانی است که راننده در می‌زند.
detour مدت این زمان اضافه‌ای است که بهینه‌ساز به سفر این محموله خاص اضافه می‌کند. مسیر انحرافی تفاوت بین طرح مسیر واقعی و سفر مستقیم ایده‌آل است، درصورتی‌که راننده محموله یا وظیفه دیگری برای تکمیل نداشته باشد.

برای این سناریو مهدکودک سگ، اولین بازدید که برای سوار کردن سگ کوهستانی برنی است، انحراف ۰ دارد زیرا راننده مستقیماً از مرکز مهدکودک به این محل سوار کردن می‌رود. برای سوار کردن سگ شی‌واوا، مسیر انحرافی ۴۳ دقیقه است زیرا راننده ابتدا سگ کوهستانی برنی را سوار می‌کند (و ۵ دقیقه صرف سوار کردن او می‌کند).
shipmentLabel رشته این برچسب مربوط به درخواست هر محموله است. برای این سناریو مهدکودک سگ‌ها، برچسب‌ها «چی‌واوا» یا «سگ کوهستانی برن» هستند.
visitType رشته (شمارشی) این نشان‌دهنده نوع بازدید است که می‌تواند PICKUP_SHIPMENT برای تحویل گرفتن یا DELIVER_SHIPMENT برای ارسال باشد. برای این سناریو، یا PICKUP_SHIPMENT است یا DELIVER_SHIPMENT.
Transition travelDuration مدت این مدت زمانی است که درطول این انتقال بین بازدیدها صرف سفر شده است. برای مثال، در این سناریو مهد سگ، راننده تقریباً ۲۵ دقیقه رانندگی می‌کند تا از مهد سگ به برج کویت برسد و سگ کوهستانی برن را سوار کند.
travelDistanceMeters عدد صحیح این مسافت طی‌شده به متر درطول این انتقال است. برای مثال، در این سناریو مهدکودک سگ‌ها، راننده ۷ کیلومتر از مهدکودک تا «برج کویت» رانندگی می‌کند تا سگ کوهستانی برنی را سوار کند.
waitDuration مدت این مدت زمانی است که قبل‌از تحویل گرفتن یا تحویل دادن بعدی صرف انتظار می‌شود. برای این سناریو مهدکودک سگ، این مقدار برای انتقال سوم ۶ دقیقه (۳۵۶ ثانیه) است، زیرا راننده قبل‌از باز شدن پنجره تحویل در ساعت ۹:۳۰ صبح به مرکز مهدکودک می‌رسد. برای انتقال‌های دیگر، این مقدار ۰ است.
totalDuration مدت این مدت کل انتقال است، شامل رانندگی و انتظار. برای مثال، راننده ۲۵ دقیقه (۲۵ دقیقه رانندگی و ۰ دقیقه انتظار) را در انتقال اول و ۲۷ دقیقه (۲۱ دقیقه رانندگی و ۶ دقیقه انتظار) را در انتقال سوم برای بازگشت به مهدکودک صرف می‌کند.
startTime مُهر زمان این زمانی است که سفر شروع می‌شود. این زمان با زمان تکمیل بازدید قبلی (یا برای اولین انتقال، با زمان شروع خودرو) مطابقت دارد. برای سناریو مهدکودک سگ، اولین انتقال در ساعت ۷:۵۵ صبح وقتی راننده مهدکودک را ترک می‌کند شروع می‌شود، و دومین انتقال در ساعت ۸:۲۵ صبح وقتی راننده برج کویت را ترک می‌کند شروع می‌شود.
Metrics aggregatedRouteMetrics شیء (AggregatedMetrics) این مقدار مجموع سنجه‌ها در همه مسیرها است. برای این سناریوی مهد سگ، این‌ها سنجه‌های کلی برای یک ون شما است.
usedVehicleCount عدد صحیح این تعداد وسایل نقلیه استفاده‌شده در راه‌حل است. برای این سناریوی مهدکودک سگ، فقط از یک ون استفاده می‌کنید.
earliestVehicleStartTime مُهر زمان این زودترین زمان شروع در بین همه وسایل نقلیه است. برای این سناریوی مهدکودک سگ‌ها، مسیر ون از ساعت ۷:۵۵ صبح شروع می‌شود.
latestVehicleEndTime مُهر زمان این آخرین زمان پایان در بین همه وسایل نقلیه است. برای این سناریو مهدکودک سگ، مسیر ون در ساعت ۹:۴۰ صبح به پایان می‌رسد.
totalCost عدد این هزینه کل راه‌حل است. برای این سناریو مهدکودک سگ، کل طرح مسیر 147.22 برای روز هزینه دارد (شامل 47.22 دستمزد راننده و 100 جریمه ارسال نادیده‌گرفته‌شده).
costs شیء (نقشه) این تفکیک هزینه کل براساس دسته است. برای این سناریو مهد سگ، بهینه‌ساز هزینه مسیر را براساس هزینه ساعتی و هزینه جریمه برای سگ ژرمن شپرد نادیده‌گرفته‌شده محاسبه کرد.
AggregatedMetrics performedShipmentCount عدد صحیح این تعداد محموله‌هایی است که باموفقیت مسیریابی شده‌اند. برای این سناریو مهدکودک سگ‌ها، راننده دو سگ را جابه‌جا می‌کند.
travelDuration مدت این کل زمان صرف‌شده برای سفر است. برای این سناریو مهد سگ، راننده ۷۹ دقیقه سفر می‌کند.
waitDuration مدت این کل زمان صرف‌شده برای انتظار است. برای این سناریو مهدکودک سگ، راننده ۶ دقیقه (۳۵۶ ثانیه) در مرکز مهدکودک منتظر می‌ماند تا پنجره تحویل باز شود.
delayDuration مدت این مدت‌زمان اضافه‌ای است که بااستفاده از مشخصه‌های انتقال تعریف می‌کنید، مانند زمان رزروشده برای پارک کردن. برای این سناریو مهد سگ، هیچ مشخصه انتقالی در درخواست تعریف نکرده‌اید، بنابراین این مقدار صفر است.
breakDuration مدت این کل زمان صرف‌شده برای استراحت است. برای این سناریو مهدکودک سگ، هیچ وقفه‌ای وجود ندارد.
visitDuration مدت این کل زمان صرف‌شده برای ارائه خدمات در بازدیدها است. برای این سناریوی مهد سگ، این زمان ۲۰ دقیقه است (۵ دقیقه برای هر بازدید برای ۴ بازدید).
totalDuration مدت این مجموع همه مؤلفه‌های مدت است. برای این سناریوی مهد سگ، مدت کل ۱۰۵ دقیقه (۶۲۹۶ ثانیه) است.
travelDistanceMeters عدد صحیح این کل مسافت سفر به متر است. برای این سناریو مهدکودک سگ، راننده درمجموع ۳۱٫۵ کیلومتر مسافت طی می‌کند.
performedShipmentPenaltyCostSum دوتایی این مبلغ مجموع هزینه‌های جریمه همه محموله‌های انجام‌شده است. برای این سناریو، این مقدار 2000 است زیرا راننده سگ کوهستانی برنی و چی‌واوا را سوار کرده است (هرکدام با هزینه جریمه 1000).
VehicleFullness maxFullness عدد این بالاترین نسبت استفاده در بین همه فیلدهای VehicleFullness است. برای این سناریو مهد سگ‌ها، این مقدار ۰٫۳۵ است زیرا راننده فقط ۱۰۵ دقیقه از کل شیفت صبح را که در درخواست ۵ ساعت تعریف کرده‌اید، با ون رانندگی می‌کند.
activeSpan عدد این نسبت کل طول شیفت راننده درمقایسه با ساعت‌های کاری طرح مسیر است. عدد کمتر یعنی راننده زمان کمتری از روز کاری را صرف راندن خودرو می‌کند. برای این سناریو مهد سگ‌ها، این مقدار ۰٫۳۵ است زیرا راننده ون را به‌مدت ۱۰۵ دقیقه درطول شیفت ۵ ساعته می‌راند.
SkippedShipment index عدد صحیح این نمایه صفرپایه محموله در درخواست اصلی است. در این سناریو، ۲ نشان‌دهنده ژرمن شپرد است.
label رشته این برچسبی است که برای محموله در درخواست مشخص کرده‌اید.
penaltyCost عدد این هزینه جریمه‌ای است که وقتی بهینه‌ساز این محموله را نادیده می‌گیرد متحمل می‌شوید. این با penaltyCost که در درخواست مشخص کرده‌اید مطابقت دارد.