Route Optimization API مسیرهایی را برای وسایل نقلیه در درخواست مربوطه برمی گرداند. محمولهها به وسایل نقلیه اختصاص داده میشوند یا بسته به ویژگیهای درخواست، ممکن است از آن صرفنظر شوند.
 یک پیام OptimizeToursResponse ( REST ، gRPC ) دارای دو ویژگی اصلی در سطح بالا است:
-  routes[]مسیرهایی برای هر وسیله نقلیه با محموله های اختصاص داده شده آن است. هرRouteشامل معیارهایی است که ویژگی های آن مسیر را منعکس می کند.
-  metricsمعیارهای جمع آوری شده برای کل پاسخ، در همه وسایل نقلیه و نقشه های مسیر هستند. سنجههای سطح بالا دارای همان ویژگیهای معیارهای هر مسیر هستند، با مقادیر جمعآوری شده در همه مسیرها.
بسته به نتایج بهینه سازی ممکن است برخی از ویژگی ها همیشه پر نشوند:
-  skippedShipments[]محموله هایی را فهرست می کند که توسط هیچ وسیله نقلیه ای انجام نمی شود. اگر حمل و نقل در محدودیتهای مشخصشده انجام نشود یا اگر هزینه انجام حملونقل از هزینه جریمه آن بیشتر باشد، میتوان از آن صرفنظر کرد. به عنوان مثال، اگر وانت یا تحویل یک محموله دارایtimeWindowبسیار محدودی باشد، ممکن است انجام بازدید در بازه زمانی مورد نیاز برای یک وسیله نقلیه مقرون به صرفه نباشد.
-  validationErrors[]خطاهایی را مشخص میکند که وقتیsolvingModeدرخواست رویVALIDATE_ONLYتنظیم شده باشد، درخواست نامعتبر یا غیرممکن میشود. در حالت عادیDEFAULT_SOLVE، خطاهای اعتبارسنجی به جای بدنه پاسخ در یک پیام خطا ظاهر میشوند. توجه داشته باشید که حالت حلVALIDATE_ONLYمی تواند چندین خطا را به طور همزمان گزارش کند، که برای اشکال زدایی سریع درخواست ها مفید است.
ویژگی های مسیر
 هر ورودی routes[] یک پیام ShipmentRoute ( REST ، gRPC ) است. هر ShipmentRoute نشان دهنده تعیین مسیر برای یک وسیله نقلیه خاص از درخواست است. ویژگی های مهم ShipmentRoute مربوط به Vehicle مربوطه آن عبارتند از:
-  vehicleIndexIndex شاخص مبتنی بر صفرVehicleدر پیام درخواست مربوطه است. پاسخ های REST وقتی مقدار صفر باشد این ویژگی را حذف می کنند.
-  vehicleStartTimeزمانی است که وسیله نقلیه باید مسیر خود را آغاز کند.
-  vehicleEndTimeزمانی است که انتظار می رود وسیله نقلیه مسیر خود را به پایان برساند.
 در پاسخ، routes به صورت زیر خواهند بود:
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}
 هر ShipmentRoute شامل فهرستی از visits است که خودرو انجام خواهد داد. هر Visit ( REST ، gRPC ) نشان دهنده یک VisitRequest ( REST ، gRPC ) از درخواست مربوطه است. ویژگی های مهم Visit عبارتند از:
-  shipmentIndexشاخص مبتنی بر صفر محموله ای است که این بازدید در درخواست مربوطه به آن تعلق دارد.
-  isPickupزمانی درست است که یک بازدید یک پیکاپ باشد و نادرست است زمانی که یک بازدید یک تحویل باشد. پاسخهای REST وقتی مقدار نادرست باشد، این ویژگی را حذف میکنند.
-  visitRequestIndexنمایه مبتنی بر صفرVisitRequestازShipment.pickupsیاShipment.deliveriesدر درخواست مربوطه است کهVisitنشان می دهد. پاسخ های REST وقتی مقدار صفر باشد این ویژگی را حذف می کنند.
-  startTimeزمانی است که انتظار می رود بازدید شروع شود.
-  loadDemandsنقشه های نوع بار را به مقدار بار مورد نیاز برای تکمیلVisitنشان می دهد. مقدار بار برای بازدیدهای تحویل منفی است که نشان دهنده بار برداشته شده از وسیله نقلیه است.
 یک نمونه Visit به نظر می رسد:
{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}
 هر ShipmentRoute شامل یک لیست مرتب شده از transitions است که نشان دهنده سفر بین visits برای یک وسیله نقلیه معین است. ویژگی های پیام Transition مهم ( REST ، gRPC ) عبارتند از:
-  startTimeزمانی است که وسیله نقلیه شروع به انجام انتقال می کند.
-  travelDurationمدتی است که وسیله نقلیه باید طی آن سفر کند تا انتقال را تکمیل کند.
-  travelDistanceMetersمسافتی است که وسیله نقلیه باید برای تکمیل انتقال طی کند.
-  trafficInfoUnavailableنشان می دهد که آیا داده های ترافیک برای انتقال در دسترس هستند یا خیر.
-  waitDurationنشاندهنده زمان بیکاری است که وسیله نقلیه قبل از اینکه بتواندVisitبعدی خود را شروع کند، منتظر است. این ممکن است به دلیلstart_timeVisitزیر رخ دهد.
-  totalDurationکل مدت زمان انتقال است، از جمله زمان های سفر، انتظار، استراحت و تاخیر.
-  vehicleLoadsنوع بار را به مقدار بار حمل شده توسط وسیله نقلیه در طول این انتقال نقشه میکشد.
 یک مثال Transition به نظر می رسد:
{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}
 برای اطلاعات بیشتر در مورد رابطه بین vists و transitions ، بهینه سازی سفارش توقف تحویل و تحویل و مستندات مرجع ShipmentRoute ( REST ، gRPC ) را ببینید. برای اطلاعات بیشتر در مورد خصوصیات routePolyline و routeToken پیام Transition ، به Transition Polylines and Route Tokens مراجعه کنید.
ویژگی های متریک
 پیام Metrics ( REST ، gRPC ) کل راه حل را خلاصه می کند. برخی از ویژگی های مهم Metrics عبارتند از:
-  totalCostکل هزینه ای است که برای تکمیل مسیرها انجام می شود. در مورد هزینه ها در پارامترهای مدل هزینه بیشتر بخوانید.
-  usedVehicleCountتعداد کل وسایل نقلیه استفاده شده در راه حل است. هنگامی که بهینه ساز تشخیص می دهد که استفاده از آنها غیر ضروری است، وسایل نقلیه ممکن است مسیرهای خالی داشته باشند.
-  skippedMandatoryShipmentCountتعداد محموله های نادیده گرفته شده است که "اجباری" هستند. یک حمل اجباریpenaltyCostمشخص نمی کند که در صورت نادیده گرفتن محموله متحمل می شود. اگر عملکرد آنها تحت محدودیت های مشخص شده امکان پذیر نباشد، همچنان می توان از محموله های اجباری صرف نظر کرد. در مورد هزینه ها در پارامترهای مدل هزینه بیشتر بخوانید.
 معیارهای اضافی بهعنوان پیامهای AggregatedMetrics گزارش میشوند ( REST ، gRPC ). نوع پیام AggregatedMetrics برای ویژگی Metrics.aggregatedRouteMetrics و برای ShipmentRoute ShipmentRoute.metrics استفاده OptimizeToursResponse Metrics.aggregatedRouteMetrics هر ویژگی ShipmentRoute.metrics حاوی معیارهایی برای آن ShipmentRoute خاص است.
 ویژگی های مهم AggregatedMetrics عبارتند از:
-  performedShipmentCountتعداد محموله هایی است که وسایل نقلیه در کل مسیرهای خود انجام می دهند.
-  travelDurationکل زمانی است که وسایل نقلیه در حین تکمیل مسیر خود در حمل و نقل می گذرانند.
-  waitDurationکل زمانی است که وسایل نقلیه در حین تکمیل مسیر خود در انتظار می گذرانند.
-  delayDurationکل زمان تاخیر برای وسایل نقلیه است. این معمولاً صفر است مگر اینکهTransitionAttributesدر درخواست استفاده شود.
-  breakDurationکل زمانی است که وسایل نقلیه در حین تکمیل مسیر خود در استراحت صرف می کنند.
-  visitDurationکل زمانی است که وسایل نقلیه برای انجام بازدیدها در حین تکمیل مسیر خود صرف می کنند. این عملاً مجموع تمام مقادیرVisitRequest.durationبرایVisitRequestمربوط بهVisitاختصاص داده شده به وسیله نقلیه مربوطه است.
-  totalDurationکل مدت زمان مورد نیاز برای تکمیل مسیرهای وسایل نقلیه است.
-  travelDistanceMetersکل مسافت طی شده توسط وسایل نقلیه در حین تکمیل مسیر خود است.
-  maxLoadsانواع بار را به حداکثر مقدار بار حمل شده توسط وسایل نقلیه در هر نقطه از مسیر خود ترسیم می کند.
 یک نمونه پیام Metrics به این صورت است:
{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}
مثال کامل
یک نمونه کامل پاسخ برای درخواست ساخت یک درخواست به این صورت است:
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}