כברירת מחדל, רכבים יכולים להגיע למיקום איסוף או למיקום משלוח מכל כיוון, ואז לצאת לכל כיוון. במקרים מסוימים, הפעולה הזו גורמת לרכב לבצע פניית פרסה במיקום הביקור, וזה עלול להיות קשה או בלתי אפשרי בגלל גודל הרכב, תמרורי התנועה במיקום או תנאי התנועה הרגילים.
כדי למנוע מכלי רכב לשנות כיוון בין ההגעה לבין היציאה במיקום מסוים של איסוף או משלוח, אפשר להגדיר את 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.
לפני ששולחים בקשה, מחליפים את הפרמטרים הבאים בערכים שמתאימים לסביבה שלכם:
- מוודאים שהגדרתם Application Default Credentials כמו שמתואר במאמר שימוש ב-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
.