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

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

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

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

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

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

מאפיינים

המאפיין u-turn avoidance (מניעת פניית פרסה) מוגדר באובייקט 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, הסיכוי להימנע מסיבוב פרסה גדל מעט, והמסלול של הרכב מתוכנן כך שיגיע לצד הדרך הקרוב ביותר למיקום הביקור. עם זאת, הפעולה הזו יוצרת מורכבויות נוספות שקשורות להגבלות של הימנעות מביצוע פניית פרסה. ברוב המיקומים שבהם המבקרים מגיעים, מספיק להגדיר רק אחד מהמאפיינים האלה כדי למנוע פניות פרסה.
  • פתרונות מוזרקים: כשמשתמשים בהימנעות מביצוע פניית פרסה, תגובת ה-API כוללת injectedSolutionLocationToken בתוך ShipmentRoute.Visit שנוצר כדי לתעד באיזה צד של הכביש נבחר. אם תשתמשו שוב בביקור הזה כפתרון מוזרק בבקשה עתידית, תצטרכו להעביר את הטוקן הזה בחזרה אל ה-API.

מגבלות

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

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