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 آن عبارتاند از:
vehicleIndexنمایه صفرپایه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، به
چندخطیهای انتقال و توکنهای مسیر مراجعه کنید.
خصوصیات سنجهها
پیام Metrics (REST، gRPC) کل راهحل را خلاصه میکند.
برخیاز داراییهای مهم Metrics عبارتاند از:
-
totalCostهزینه کل متحملشده برای تکمیل مسیرها است. درباره هزینهها در پارامترهای مدل هزینه بیشتر بخوانید. -
usedVehicleCountتعداد کل خودروهای استفادهشده در راهحل است. وقتی بهینهساز تشخیص دهد که استفاده از وسایل نقلیه غیرضروری است، ممکن است وسایل نقلیه مسیرهای خالی داشته باشند. -
skippedMandatoryShipmentCountتعداد محمولههایی است که از آنها صرفنظر شده است و «الزامی» هستند. ارسال اجباریpenaltyCostرا که درصورت رد کردن ارسال کالا متحمل میشوید مشخص نمیکند. محمولههای اجباری همچنان میتوانند درصورت عدم امکان عملکرد تحت محدودیتهای مشخصشده، نادیده گرفته شوند. درباره هزینهها در پارامترهای مدل هزینه بیشتر بخوانید.
سنجههای اضافی بهصورت AggregatedMetrics پیام (REST،
gRPC) گزارش میشود. از نوع پیام AggregatedMetrics برای دارایی
Metrics.aggregatedRouteMetrics استفاده میشود و دارایی ShipmentRoute.metrics
Metrics.aggregatedRouteMetrics حاوی سنجههای تجمیعشده در همه
ShipmentRouteها در OptimizeToursResponse است. هر 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
}
}
}