بهطور پیشفرض، وسایل نقلیه میتوانند از هر جهت به یک وانت یا محل تحویل برسند و سپس در هر جهت حرکت کنند. در برخی موارد، این وسیله نقلیه را مجبور میکند تا در محل بازدید بپیچد، که ممکن است به دلیل اندازه وسیله نقلیه، علائم راهنمایی و رانندگی در محل یا شرایط معمول ترافیک دشوار یا غیرممکن باشد.
برای جلوگیری از تغییر جهت وسایل نقلیه بین ورود و خروج برای یک مکان تحویل یا تحویل خاص، می توانید 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 انجام داد.
قبل از درخواست، پارامترهای زیر را با مقادیر مناسب برای محیط خود جایگزین کنید:
- اطمینان حاصل کنید که اعتبارنامه پیشفرض برنامه را همانطور که در Use OAuth توضیح داده شده پیکربندی کردهاید.
PROJECT_NUMBER_OR_ID را روی شماره یا شناسه پروژه Cloud خود تنظیم کنید.
دستور زیر یک درخواست
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
استفاده کرد.