هدف 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" } }