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

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

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

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

עיינו במסמכי התיעוד המלאים של ההודעות ShipmentModel (REST, gRPC), Shipment (REST, gRPC) ו-Vehicle (REST, gRPC).

OptimzeToursRequest מלונות

חלק מהמאפיינים הנפוצים של הודעת 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 מייצג את העלות שנובעת מדילוג על משלוח. מידע נוסף על עלויות זמין במאמר Cost Model Parameters.

מאפייני הרכב

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

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

בקשה מלאה לדוגמה בפורמט 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