יצירה של הודעת בקשה

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

  • 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