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

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

  • 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