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

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

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

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

  • למנוע העמסת יתר על כלי רכב.
  • מעקב אחר השינויים בעומס על הרכב כשמשלוחים נאספים ומסופקים.
  • תעדוף של התאמת כלי רכב כבדים למשלוחים של מטען כבד.

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

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

מבנה

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

רשימת משימות ל-Essentials

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

מאפיינים

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

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

סוג הטעינה

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

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

Load וגם LoadLimit

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

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

דוגמאות

בקטע הזה מופיעות שלוש דוגמאות:

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

דוגמאות קוד

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

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

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

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

תרחיש לדוגמה

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

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

בדוגמה הזו, ערכי הנכס בבקשה הם:

הורה נכס סוג ערך תרחיש
loadDemands סוג הטעינה מחרוזת dogUnit המאפיין מגדיר את סוג המטען של המשלוח. בדוגמה הזו נשתמש ב-dogUnit, כאשר כל dogUnit מייצג כלב אחד.
loadDemands amount number המשלוח הראשון: 1
המשלוח השני: 3
מציינת את הכמות של סוג העומס המוגדר. בדוגמה הזו מוגדרות שתי משלוחים. במשלוח הראשון אוספים כלב אחד, ובמשלוח השני אוספים 3 כלבים.
loadLimits סוג הטעינה מחרוזת dogUnit הגדרה של סוג מגבלת העומס שחלה על הרכב. כדי שהמגבלה תהיה רלוונטית, היא חייבת להתאים לסוג המטען של המשלוח.
loadLimits maxLoad number 6 מציין את הכמות המקסימלית של סוג המטען שהרכב יכול לשאת. בדוגמה הזו, יש לכם רק רכב אחד עם קיבולת מקסימלית של 6 dogUnit, כאשר כל dogUnit מייצג כלוב אחד לכלב.

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

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

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

  • לכלי האופטימיזציה לא תהיה בעיה ליצור מסלול לרכב להובלת הכלבים, כי הרכב יכול להוביל עד 6 כלבים, ואתם אוספים רק 4 כלבים.

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

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

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

דוגמה לבקשה

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

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

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