هدف Route Optimization API برنامه ریزی مسیرهایی برای ناوگان وسایل نقلیه برای بازدید از مجموعه ای از مکان ها است. شی OptimizeToursRequest ویژگی های این وسایل نقلیه و مکان ها را توصیف می کند و ساختار اولیه بدنه درخواست هر نقطه پایانی است.
ساختار پایه شی OptimizeToursRequest به شرح زیر است:
- فیلد
modelدارای یک پیامShipmentModelاست که حاوی دو فیلد کلیدی است:
این سند انواع پیام های زیر را شرح می دهد:
-
ShipmentModel: فهرستی از محموله ها، وسایل نقلیه موجود و سایر اشیاء را که روابط آنها را توصیف می کند، نگه می دارد. -
Shipment: مکان هایی را که باید توسط یک وسیله نقلیه بازدید شود را توصیف می کند. آنها می توانند بسته های واقعی را برای تحویل گرفتن و تحویل یا مکان هایی که راننده وسیله نقلیه خدماتی را انجام می دهد را نشان دهند. -
Vehicle: وسیله حمل و نقل بین مکان های حمل و نقل را توصیف می کند. هر وسیله نقلیه مربوط به یک وسیله نقلیه واقعی یا شخصی است که با پای پیاده در حال حرکت است.
ShipmentModel
ShipmentModel عناصر مسئله بهینه سازی مسیر را نگه می دارد. این شامل مجموعه ای از محموله ها است که ممکن است توسط مجموعه ای از وسایل نقلیه انجام شود، در حالی که محدودیت ها را در نظر گرفته و هزینه کلی را به حداقل می رساند.
جدول زیر برخی از ویژگی های مرتبط ShipmentModel را توضیح می دهد:
| خواص | توضیحات |
|---|---|
shipments و vehicles | اشیاء مورد نیاز که حاوی جزئیات یک یا چند محموله و وسیله نقلیه باشد. |
globalStartTime و globalEndTime | شروع و پایان پنجره زمانی را نشان می دهد که در آن همه وسایل نقلیه باید تمام محموله ها را تکمیل کنند. در حالی که این ویژگیها مورد نیاز نیستند، توصیه میشود آنها را درج کنید زیرا بهینهساز هنگام رعایت محدودیتهای زمانی بهترین عملکرد را دارد. |
برای لیست کامل املاک در ShipmentModel به مستندات مرجع مراجعه کنید.
نمونه ShipmentModel
در این مثال، شما یک سرویس مهدکودک سگ دارید و شروع به ایجاد درخواست خود می کنید. شما بعداً محمولهها و وسایل نقلیه را تعریف میکنید، اما میخواهید با تنظیم ساعات کاری و هزینه عملیات ساعتی خود شروع کنید.
برای این مثال، مقادیر ویژگی ShipmentModel در درخواست شما به شرح زیر است:
| اموال | ارزش | توضیحات |
|---|---|---|
globalStartTime | 2024-02-13T00:00:00.000Z | تاریخ شروع و ساعت کاری. |
globalEndTime | 2024-02-14T06:00:00.000Z | تاریخ و زمان پایان ساعت کاری. |
در زیر یک نمونه کد از یک پیام ShipmentModel است که مقادیر نمونه سناریو را در خود جای داده است.
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
نوع پیام Shipment ، ساختار ویژگی یک محموله قابل تحویل یا خدماتی را که می توان در یک مسیر انجام داد، تعریف می کند.
همانطور که در نمودار نشان داده شده است:
- پیام
Shipmentدارای تمام اطلاعات یک محموله یا خدمات واقعی است. - تمام پیام های
Shipmentدر قسمتshipmentsمشخص شده است. - فیلد
shipmentsحاوی یک یا چند پیامShipmentاست.
یک پیام Shipment حداقل به یک شی pickups یا deliveries نیاز دارد. تعریف این اشیا به شرح زیر است:
-
pickupsمکان تحویل یک محموله را مشخص می کند. -
deliveriesمحل تحویل یک محموله را مشخص می کند. - هر دو
pickupsوdeliveriesحاوی یک نوع پیامVisitRequestهستند که مکان ها و جزئیات دیگر را مشخص می کند.
جدول زیر سناریوهای مختلف را بر اساس پیکربندی pickups و deliveries در پیام Shipment توضیح می دهد.
| سناریو | توضیحات |
|---|---|
فقط pickups | فرض بر این است که شما فقط محموله را جمع آوری می کنید . |
فقط deliveries | فرض بر این است که شما محموله را از قبل بارگیری کرده اید یا در حال ارائه خدمات هستید. |
هم pickups و deliveries | وسیله نقلیه تعیین شده باید ابتدا پیکاپ و سپس تحویل را تکمیل کند. فقط خودرویی که پیکاپ را انجام داده است می تواند تحویل را انجام دهد. |
pickups یا deliveries چندگانه | اگر یک محموله چندین احتمال را برای pickups یا deliveries فهرست کند، بهینهساز یک گزینه تحویل و یک گزینه تحویل را برای استفاده انتخاب میکند ، بر اساس به حداقل رساندن هزینه و محدودیتها. |
برای لیست کامل املاک در Shipment به اسناد مرجع مراجعه کنید.
نمونه Shipment
در این مثال، شما یک سرویس مهدکودک سگ دارید که در آن سگها را از خانهشان میگیرید و به مهد کودک خود تحویل میدهید. میخواهید مکان تحویل دو سگ را تنظیم کنید و مکان تحویل آنها را برای کسب و کار خود تنظیم کنید:
- خانه اولین سگ در برج کویت، سانفرانسیسکو است. مختصات این مکان عبارتند از: عرض جغرافیایی 37.8024 و طول جغرافیایی -122.4058.
- خانه سگ دوم در پارک زمین بازی South Sunset در سانفرانسیسکو است. مختصات این مکان عرض جغرافیایی 37.7359 و طول جغرافیایی -122.5011 است.
- مهد کودک سگ شما در پارک Mission Dolores، سانفرانسیسکو است. مختصات این مکان عبارتند از: عرض جغرافیایی 37.759773 و طول جغرافیایی -122.427063.
در زیر یک نمونه کد از یک پیام Shipment است که در آن شیء shipments شامل دو نوع پیام Shipment با مختصات مثال است.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
نوع پیام Vehicle ، ساختار ویژگی وسیله نقلیه ای را که می تواند حمل و نقل را در یک مسیر انجام دهد، تعریف می کند.
همانطور که در نمودار نشان داده شده است:
- پیام
Vehicleتمام اطلاعات یک وسیله نقلیه واقعی را دارد. - تمام پیام های
Vehicleدر قسمتvehiclesمشخص شده است. - فیلد
vehiclesحاوی چندین پیامVehicleاست.
جدول زیر برخی از ویژگی های مربوط به یک Vehicle را شرح می دهد.
| خواص | توضیحات |
|---|---|
startLocation و endLocation | محل شروع و پایان وسایل نقلیه که بخشی از مسیر نهایی بهینه شده است. اگر تعریف نشده باشد، آنها به طور پیش فرض به اولین تحویل محموله و آخرین مکان تحویل محموله می پردازند. |
costPerHour ، costPerKilometer ، costPerTraveledHour | پارامترهای هزینه خاص خودرو توصیه می شود حداقل یک پارامتر هزینه در درخواست خود برای API برای بازگشت یک مسیر بهینه شده داشته باشید. برای اطلاعات بیشتر در مورد هزینه ها، مفهوم کلید مدل هزینه را ببینید. |
startTimeWindows و endTimeWindows | دوره های زمانی که یک وسیله نقلیه می تواند در یک مسیر حرکت کند را تعریف کنید. اینها باید در پنجره زمانی globalStartTime و globalEndTime تنظیم شده در ShipmentModel قرار گیرند. در حالی که این ویژگی مورد نیاز نیست، توصیه می شود آن را درج کنید زیرا بهینه ساز هنگام رعایت محدودیت های زمانی بهترین عملکرد را دارد. |
نمونه Vehicle
در این مثال، شما یک سرویس مهدکودک سگ دارید و میخواهید مکان وسیله نقلیه خود را در شروع و پایان روز مشخص کنید و میزان بنزین مصرفی آن را مشخص کنید. نیازی نیست ساعت کاری خودرو را مشخص کنید زیرا با ساعاتی که در ویژگی های globalStartTime و globalEndTime در شی ShipmentModel تعریف کرده اید مطابقت دارد.
برای این مثال، مقادیر ویژگی Vehicle در درخواست شما به شرح زیر است:
| اموال | ارزش | توضیحات |
|---|---|---|
startLocation | latitude : 37.759773، longitude : -122.427063 | مختصات شروع مسیر برای وسیله نقلیه شما. اینها با مکان مهد کودک سگ شما که در پارک Mission Dolores، سانفرانسیسکو قرار دارد، مطابقت دارند. |
endLocation | latitude : 37.759773، longitude : -122.427063 | مختصات پایانی مسیر برای وسیله نقلیه شما. اینها با مکان مهد کودک سگ شما که در پارک Mission Dolores، سانفرانسیسکو قرار دارد، مطابقت دارند. |
costPerHour | 27 | چقدر به راننده برای رانندگی وسیله نقلیه مهد کودک سگ خود پرداخت می کنید. شما ساعتی 27 دلار به راننده می پردازید. |
در زیر نمونه کدی از پیام Vehicle است که مقادیر نمونه سناریو را در خود جای داده است.
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
برای لیست کامل املاک در Vehicle به مستندات مرجع مراجعه کنید.
نمونه درخواست کامل
نمونه کد زیر یک مثال درخواست کامل را ارائه میکند که نمونههای ShipmentModel ، Shipment و Vehicle را که در این سند نشان داده شدهاند، ترکیب میکند.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }