הימנעות מסיבובי 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 לא מסווג אותו כפניית פרסה.