עומסים ומגבלות

המאפיין loadDemands מוגדר בקטע ShipmentModel.shipments.Shipment והמאפיין loadLimits מוגדר בקטע ShipmentModel.vehicles.Vehicle.

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

מגבלות ועומס עבודה יכולים לתמוך ביעדים כמו:

  • למנוע עומס יתר על כלי רכב.
  • מעקב אחר השינויים בעומסי כלי הרכב במהלך האיסוף וההעברה של המשלוחים.
  • הגבלת מספר הפעמים שכלי רכב יכול לבקר במיקום ספציפי.

הדרישות והמגבלות של העומסים מצוינות במאפיינים הבאים:

  • loadDemands מציין את נפח האחסון הנדרש למשלוח מסוים.
  • loadLimits מציין את הקיבולת המקסימלית של רכב נתון.

מבנה

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

מאפיינים

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

  • סוג עומס: מאפיין משותף בין דרישות העומס לבין המגבלות.
  • Load ו-LoadLimit: מאפיינים ייחודיים שמופיעים בבקשות העומס ובמגבלות העומס, בהתאמה.

סוג העומס

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

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

מפתחות המחרוזות שמייצגים את סוגי העומסים משתמשים בתחביר של סוג המפה של Protocol Buffers. כדי למנוע בעיות, אסור שהמפתחות של המחרוזות יהיו null. כשנותנים שם לסוג עומס, מומלץ להשתמש במזהים שמתארים את סוג העומס ואת היחידות שלו. לדוגמה: weightKg,‏ volume_gallons,‏ palletcount או frequencyDaily.

Load וגם LoadLimit

האובייקטים Load ו-LoadLimit מכילים מאפיינים ספציפיים להגדרת דרישות הקיבולת של משלוחים וכלי רכב. המאפיינים האלה מתוארים בטבלה הבאה:

אובייקט הורה נכס סוג הנכס תיאור הנכס
Load loadDemands amount מחרוזת (בפורמט int64) הגדרת דרישת הקיבולת של המשלוח בסוג שצוין.
LoadLimit loadLimits maxLoad מחרוזת (בפורמט int64) הגדרת קיבולת העומס המקסימלית של הרכב בסוג שצוין.

דוגמאות

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

"loadDemands": {
  "MATCHING_LOAD_TYPE": {
    "amount": "YOUR_LOAD_AMOUNT"
  }
}

בדוגמה הבאה מוצג המבנה הבסיסי ביותר של מגבלת עומס, שבו אפשר להגדיר את הסוג loadLimits כמחרוזת, ואת המאפיין maxLoad כמחרוזת בפורמט int64:

"loadLimits": {
  "MATCHING_LOAD_TYPE": {
    "maxLoad": "YOUR_MAX_LOAD"
  }
}

רוצה לנסות?

אפשר להשתמש בדוגמאות הקוד שלמעלה כדי ליצור תרחיש בדיוני. בתרחיש הזה, יש לכם משלוח במשקל 10 ק"ג ויש לכם רכב שיכול לשאת 100 ק"ג:

  1. בדוגמה loadDemands, מגדירים את סוג העומס כ-weightKg.

    לאחר מכן, גם סוג העומס בדוגמה loadLimits יאוכלס, וישתף את סוג העומס. חשוב לזכור שהסוגים של loadDemands ו-loadLimits צריכים להתאים כדי שהמשלוח יעמוד במגבלות של הרכב.

  2. באותה דוגמה של loadDemands, מגדירים את המאפיין amount לערך 10.

    כלומר, משקל המשלוח הוא 10 קילוגרמים.

  3. בדוגמה loadLimits, מגדירים את המאפיין maxLoad לערך 100.

    המשמעות היא שהרכב יכול לשאת עד 100 קילוגרם.

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

דוגמה לבקשה

בדוגמה הבאה מוצג המבנה של בקשת optimizeTours בסיסית עם loadDemands בשליחה ו-loadLimits ברכב:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "endLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "costPerKilometer": 1.0,
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

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