הימנעות מסיבובי U

הימנעות מסיבוב פרסה מופיעה ב-`ShipmentModel.Shipment` באובייקטים של איסופים ומשלוחים.

הימנעות מפרסה היא תכונה של אופטימיזציה של מסלולים שמונעת מכלי רכב לבצע פניית פרסה במיקום איסוף או מסירה ספציפי של ביקור. כשמגדירים הימנעות מפרסה, מציינים שכלי הרכב צריך להיות פונה לאותו כיוון כשהוא מגיע למיקום ביקור וכשהוא יוצא ממנו.

מניעת פניות פרסה פועלת באופן הבא:

  1. אתם מגדירים את המאפיין u-turn avoidance (מניעת פניית פרסה) לביקור ספציפי.
  2. ה-API מתחשב בשני כיווני הנסיעה בכבישים דו-סטריים ובוחר את המסלול האופטימלי ביותר.
  3. ממשק ה-API יוצר מסלול שבו הרכב מגיע ועוזב בלי לבצע פניית פרסה במיקום הביקור. יכול להיות שהנהג יצטרך לחצות את הכביש כדי להגיע למיקום הזה.

המאפיין הזה מתאים למצבים שבהם קשה או בלתי אפשרי לבצע פניית פרסה בגלל גודל הרכב, תמרורים או תנאי תנועה רגילים.

מאפיינים

מאפיין הימנעות מפרסה מוגדר באובייקט VisitRequest. האובייקט הזה נמצא בשימוש במערכים pickups ו-deliveries של משלוח.

נכס סוג תיאור
avoidUTurns בוליאני אם הערך הוא true, ה-API מונע מהרכב לבצע פניית פרסה במיקום הביקור הזה. הרכב יגיע ויצא באותו כיוון.

דוגמאות

בקטע הזה יש שני סוגים של דוגמאות:

  • דוגמאות קוד שממחישות את המבנה של מניעת פניות פרסה.
  • דוגמה לבקשה שכוללת את התכונה.

דוגמאות קוד

בדוגמה הבאה אפשר לראות את המבנה שלavoidUTurns בתוך איסוף ומשלוח:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

דוגמה לבקשה

בדוגמה הבאה מוצגת בקשת optimizeTours בסיסית שכוללת הימנעות מביצוע פניית פרסה. הבקשה הזו כוללת את הרכיבים הבאים:

  • משלוח עם איסוף ומסירה בתוך אובייקט model.
  • המאפיין avoidUTurns מוגדר לערך true במיקומי האיסוף והמסירה כדי למנוע מכלי הרכב לשנות כיוון בעצירות האלה.
  {
    "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
        }
      ]
    }
  }

הימנעות מפניות פרסה באמצעות sideOfRoad

התכונה sideOfRoad היא תכונה נפרדת, אבל היא קשורה קשר הדוק להימנעות מסיבוב פרסה, כי היא מונעת הרבה סיבובי פרסה על ידי ניתוב הרכב לצד הכביש הקרוב ביותר ליעד. הפעולה הזו מאלצת את הרכב להתקרב למיקום הביקור מכיוון ספציפי, וכך לא צריך לבצע פניית פרסה.

בפועל, כדאי להשתמש בהימנעות מביצוע פניית פרסה כשבטוח לחצות את הכביש ברגל כדי להגיע למיקום הביקור. אם לא מומלץ לחצות את הכביש או שאי אפשר לעשות את זה, כדאי להגדיר את sideOfRoad לערך true.

המאפיין sideOfRoad מוגדר באובייקט Waypoint.

אינטראקציה עם תכונות אחרות

התכונה 'מניעת פניית פרסה' פועלת בשילוב עם תכונות אחרות של ניתוב בדרכים הבאות:

  • בצד הדרך: אם מגדירים את avoidUTurns ואת sideOfRoad לערך true, הסיכויים להימנע מפרסה גדלים מעט, והמערכת מתכננת מסלול לרכב לצד הדרך הקרוב ביותר למיקום הביקור. עם זאת, פעולה כזו יוצרת מורכבויות נוספות שקשורות להגבלות של הימנעות מביצוע פניית פרסה. ברוב המיקומים של הביקורים, מספיק להגדיר רק אחד מהמאפיינים האלה כדי להימנע מביצוע פניית פרסה.
  • פתרונות מוזרקים: כשמשתמשים ב-u-turn avoidance, התגובה של ה-API כוללת injectedSolutionLocationToken בתוך ShipmentRoute.Visit שנוצר כדי לתעד את הצד של הכביש שנבחר. אם תשתמשו שוב בביקור הזה כפתרון מוזרק בבקשה עתידית, תצטרכו להעביר את הטוקן הזה בחזרה אל ה-API.

מגבלות

התכונה 'הימנעות מפרסה' פועלת על בסיס האפשרות הטובה ביותר. יכול להיות שה-API עדיין יכלול פניות פרסה במסלול שנוצר בתנאים הבאים:

  • אמצעי התחבורה מוגדר למצב שאינו DRIVING.
  • מיקומי ההגעה והיציאה למיקום ביקור ספציפי שונים. במקרה כזה, ה-API מחזיר שגיאה.
  • הביקור מתרחש ברחוב ללא מוצא, ולכן צריך לבצע פניית פרסה כדי לצאת ממנו.
  • הפנייה הפרסה מתרחשת לאורך המסלול, ולא במיקום הביקור בפועל.
  • התמרון הוא פנייה חדה מאוד לכביש אחר, וה-API לא מסווג אותו כפניית פרסה.