به طور پیشفرض، وسایل نقلیه میتوانند از هر جهتی به محل تحویل یا تحویل بار برسند و سپس در هر جهتی آنجا را ترک کنند. در برخی موارد، این امر وسیله نقلیه را مجبور به دور زدن در محل بازدید میکند که ممکن است به دلیل اندازه وسیله نقلیه، علائم راهنمایی و رانندگی در محل یا شرایط ترافیکی معمول، دشوار یا غیرممکن باشد.
برای جلوگیری از تغییر جهت وسایل نقلیه بین زمان ورود و خروج به یک مکان تحویل یا تحویل مشخص، میتوانید avoid_u_turns برای این مکان روی true تنظیم کنید. تحت این تنظیم، وسیله نقلیه با همان جهت به محل مورد نظر میرسد و از آن خارج میشود، بنابراین از دور زدن اجتناب میکند. در جادههای دو طرفه، حلکننده هر دو جهت را در نظر میگیرد و یکی را به عنوان بخشی از بهینهسازی مسیر انتخاب میکند.
همچنین میتوانید side_of_road را روی true تنظیم کنید تا مسیری را بدست آورید که در آن وسیله نقلیه در سمت جادهای که نزدیکترین فاصله را به نقطه مسیر دارد، وارد و خارج میشود. در این حالت، وسیله نقلیه نیز بین ورود و خروج، جهت خود را تغییر نمیدهد. میتوان هر دو side_of_road و avoid_u_turns را روی true تنظیم کرد تا به نتیجه یکسانی دست یافت. برای جزئیات بیشتر، به بخش تعامل با سایر ویژگیها مراجعه کنید.
در عمل، زمانی که عبور از جاده برای رسیدن به نقطهی بینراهی ایمن است، باید از avoid_u_turns استفاده شود. زمانی که عبور از جاده توصیه نمیشود یا امکانپذیر نیست، side_of_road استفاده کنید.
مثال: یک درخواست OptimizeTours با avoid_u_turns ایجاد کنید
درخواستهای OptimizeTours را میتوان با استفاده از REST یا gRPC انجام داد.
قبل از ارسال درخواست، پارامترهای زیر را با مقادیر مناسب برای محیط خود جایگزین کنید:
- مطمئن شوید که اعتبارنامههای پیشفرض برنامه را همانطور که در بخش «استفاده از OAuth» توضیح داده شده است، پیکربندی کردهاید.
PROJECT_NUMBER_OR_ID روی شماره یا شناسه پروژه ابری خود تنظیم کنید.
دستور زیر یک درخواست
OptimizeToursرا به Route Optimization API ارسال میکند و به صورت همزمان پاسخی دریافت میکند.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ], } } EOM
پس از تکمیل درخواست، یک پیام پاسخ دریافت خواهید کرد.
تعامل با سایر ویژگیها
- میتوان
avoid_u_turnsهمراه باside_of_road = trueاستفاده کرد. در این حالت، از دور زدن اجتناب میشود، اما حلکننده مسیری را انتخاب میکند که وسیله نقلیه در همان سمت جاده و محل عبور باشد، مشابه تنظیمside_of_road = trueبه تنهایی. - وقتی برای یک درخواست بازدید خاص،
avoid_u_turns = trueباشد، آنگاهShipmentRoute.Visitدر پاسخ مربوطه، فیلدinjected_solution_location_tokenتنظیم میکند. معنای دقیق مقدار آن، یک جزئیات پیادهسازی است، اما اطلاعات مربوط به سمت جاده انتخاب شده توسط حلکننده را رمزگذاری میکند. - وقتی از
ShipmentRoute.Visitبه عنوان بخشی از درخواست ورودی استفاده میکنید، اگرShipmentRoute.Visitمربوط بهVisitRequestباشد که در آنavoid_u_turns = trueاست، آنگاهShipmentRoute.Visitباید حاوی یکinjected_solution_location_tokenباشد که قبلاً توسط حلکننده برگردانده شده است.
محدودیتها
اجتناب از دور زدن بهترین تلاش است. در شرایط خاص، مسیر ممکن است همچنان شامل دور زدن باشد:
-
avoid_u_turnsفقط با حالتهای سفری کهside_of_roadپشتیبانی میکنند، کار میکند. به طور خاص، این تابع برای حالت سفرWALKINGپشتیبانی نمیشود. -
avoid_u_turnsنمیتوان برای تحویل و برداشت کالا در جایی که زمان ورود و خروج یکسان نیست، استفاده کرد. - وقتی یک وانت یا تحویل بار در یک جاده بنبست قرار دارد، برای خروج از جاده لازم است دور بزنید.
- هدف از این ویژگی، جلوگیری از دور زدن در محلهای تحویل و دریافت کالا است. دور زدن بین نقاط مسیر اجتنابناپذیر است.
- پیچهای خیلی تند به جادههای دیگر، دوربرگردان محسوب نمیشوند و معمولاً از آنها اجتناب نمیشود.
در حالی که این ویژگی در حال توسعه است، محدودیتهای دیگری نیز وجود دارد. ما انتظار داریم که با تکامل این ویژگی، این محدودیتها نیز برطرف شوند.
-
avoid_u_turnsنمیتوان همراه باinterpret_injected_solutions_using_labelsاستفاده کرد.