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
Index شاخص مبتنی بر صفر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_time
Visit
زیر رخ دهد. -
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 ). Metrics.aggregatedRouteMetrics
پیام AggregatedMetrics
برای ویژگی Metrics.aggregatedRouteMetrics
و برای OptimizeToursResponse
ShipmentRoute.metrics
استفاده ShipmentRoute
. هر ویژگی 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
}
}
}
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
Index شاخص مبتنی بر صفر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_time
Visit
زیر رخ دهد. -
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 ). Metrics.aggregatedRouteMetrics
پیام AggregatedMetrics
برای ویژگی Metrics.aggregatedRouteMetrics
و برای OptimizeToursResponse
ShipmentRoute.metrics
استفاده ShipmentRoute
. هر ویژگی 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
}
}
}
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
Index شاخص مبتنی بر صفر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_time
Visit
زیر رخ دهد. -
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 ). Metrics.aggregatedRouteMetrics
پیام AggregatedMetrics
برای ویژگی Metrics.aggregatedRouteMetrics
و برای OptimizeToursResponse
ShipmentRoute.metrics
استفاده ShipmentRoute
. هر ویژگی 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
}
}
}
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
Index شاخص مبتنی بر صفر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_time
Visit
زیر رخ دهد. -
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 ). Metrics.aggregatedRouteMetrics
پیام AggregatedMetrics
برای ویژگی Metrics.aggregatedRouteMetrics
و برای OptimizeToursResponse
ShipmentRoute.metrics
استفاده ShipmentRoute
. هر ویژگی 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
}
}
}