בנייה של הודעת בקשה

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

  • Model מתעד הגדרות ומגבלות לכל הבקשה, כולל Shipments וגם Vehicles.
  • משלוחים מייצגים משימות או משלוחים בפועל שכוללים איסוף ו משלוח בשעה VisitRequest. להזמנות יש הגדרות ומגבלות מקומיות.
  • כלי רכב מייצגים כלי רכב, נהגים או אנשי צוות. יש גם כלי רכב הגדרות ומגבלות מקומיות.

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

למסמכי עזר מלאים לגבי כל סוג הודעה, אפשר לעיין במסמכי העזר של ShipmentModel (REST,‏ gRPC), Shipment (REST,‏ gRPC) ו-Vehicle (REST,‏ gRPC).

OptimizeToursRequest מלונות

אלה כמה מהמאפיינים הנפוצים של הודעת OptimizeToursRequest ברמה העליונה (REST,‏ gRPC):

  • searchMode מציין אם להחזיר את הפתרון הראשון שמספק מגבלות ספציפיות או למצוא את הפתרון הטוב ביותר האפשרי בתוך קבוצה האחרון.
  • considerRoadTraffic קובע אם נעשה שימוש בנתוני תנועה בזמן אמת לצורך חישוב מסלולים וזמן הגעה משוער.
  • populateTransitionPolylines קובע אם לנתב קווים פוליגוניים וגם אסימוני הניתוב מוחזרים בתגובה.

מאפייני מודל

מאפיינים נפוצים של ההודעה ShipmentModel (REST, gRPC) כוללים:

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

מאפייני המשלוח

כמה מאפיינים נפוצים של ההודעה Shipment (REST, gRPC) כוללים:

  • השדות pickups[] ו-deliveries[] מייצגים את המיקום שבו אפשר לאסוף או להעביר את המשלוח. בשני המאפיינים pickups[] ו-deliveries[] נעשה שימוש בהודעה VisitRequest (REST,‏ gRPC).
  • loadDemands מייצג את העומס הנדרש לרכב כדי להשלים את המשלוח. כלי רכב load_limits תואם (REST, gRPC) מייצג את העומס שרכב יכול להכיל ברגע אחד. מידע נוסף על הטעינה זמין במאמר עומסים ומגבלות.
  • penalty_cost מייצג את העלות שאתם גובים אם מדלגים על משלוח. נקראו מידע נוסף על עלויות זמין במאמר פרמטרים של מודל עלות.

מאפייני הרכב

אלה כמה מהמאפיינים הנפוצים של ההודעה Vehicle (REST,‏ gRPC):

  • startLocation מייצג את הנקודה שבה הרכב חייב להתחיל את המסלול. המאפיין הזה הוא אופציונלי. אם לא צוין אחרת, המסלול של הרכב יתחיל במיקום של המשלוח הראשון שהוקצה לו.
  • endLocation מייצג את המקומות שבהם רכב חייב לסיים את המסלול שלו. הנכס הזה הוא אופציונלי. אם לא מציינים את המיקום, המסלול של הרכב מסתיים במיקום של המשלוח האחרון שהוקצה לו.
  • השדה startTimeWindows[] מייצג את המועד שבו הרכב יכול להתחיל את המסלול שלו. הזה הוא אופציונלי.
  • endTimeWindows[] מייצג את השעות שבהן כלי רכב יכול להתחיל ולסיים את המסלול. שני המאפיינים הם אופציונליים.
  • loadLimits מייצג את קיבולת הרכב שזמינה כדי לעמוד בדרישות העומס של המשלוחים. מידע נוסף על הדרישות והמגבלות של העומס זמין במאמר דרישות עומס מגבלות.

בקשה לדוגמה מלאה בפורמט JSON נראית כך:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

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

השוואה בין OptimizeTours לבין BatchOptimizeTours