דרישות ומגבלות עומס הן סוג של אילוץ שבעזרתו אפשר לנהל את הקיבולת. המגבלה הזו מציינת את הקיבולת הנדרשת של משלוח ואת הקיבולת המקסימלית של רכב, וכך מאפשרת לכם לבצע אופטימיזציה של הקצאות המסלולים על סמך המגבלות האלה.
הגדרת עומסים ומגבלות יכולה לעזור לכם להשיג יעדים כמו:
- למנוע העמסת יתר על כלי רכב.
- מעקב אחר השינויים בעומס על הרכב כשהמשלוחים נאספים ומסופקים.
- חשוב לתת עדיפות לשימוש ברכבים כבדים למשלוחים של מטען כבד.
הדרישות והמגבלות לגבי טעינה מצוינות במאפיינים הבאים:
-
loadDemandsמציין את כמות הקיבולת שנדרשת למשלוח מסוים. -
loadLimitsמציין את הקיבולת המקסימלית של כלי רכב מסוים.
מבנה
כפי שמוצג בתרשים, דרישות העומס והמגבלות בנויות באופן הבא:
-
loadDemandsהוא נכס שלShipment. לShipmentיכולות להיות כמה דרישות טעינה. -
loadLimitsהוא נכס שלVehicle. לVehicleיכולות להיות כמה מגבלות טעינה.
רשימת משימות ב-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
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 } ] } }
חשוב לזכור שבניגוד למקרה בדוגמה הזו, למשלוח יכולים להיות כמה דרישות עומס, ולכלי רכב יכולות להיות כמה מגבלות עומס. כך אפשר לספק אילוצים מורכבים שצריך לקחת בחשבון כשמבצעים אופטימיזציה של המסלולים של צי הרכב.
מגבלות טעינה רכות
אפשר להגדיר מגבלות עומס כמגבלות גמישות על ידי הוספת softMaxLoad ו-costPerUnitAboveSoftMax ל-loadLimits של כלי רכב. כך האופטימיזציה יכולה לחרוג מהעומס המקסימלי של הרכב בעלות מסוימת, ולתעדף את השלמת המסלול על פני הקפדה על מגבלת העומס.
אפשר להשתמש ב-maxLoad וב-softMaxLoad יחד כדי להגדיר גם מגבלת טעינה קשיחה וגם מגבלת טעינה רכה. במקרה הזה, softMaxLoad מגדיר את העומס שאפשר לחרוג ממנו, ו-maxLoad מגדיר מגבלה קשיחה שאסור לחרוג ממנה. אם משתמשים בשניהם, הערך של maxLoad חייב להיות גדול מהערך של softMaxLoad.
מאפיינים
בטבלה הבאה מפורטים המאפיינים של אילוצים רכים לגבי דרישות ומגבלות של עומס.
| הורה | שם הנכס | סוג הנכס | תיאור הנכס |
|---|---|---|---|
loadLimits |
softMaxLoad |
מחרוזת (בפורמט int64) | המטען המקסימלי המועדף לרכב. אם המטען של הרכב חורג מהערך הזה, תתווסף עלות. |
loadLimits |
costPerUnitAboveSoftMax |
number | העלות ליחידת עומס מעל softMaxLoad. חובה למלא את השדה הזה כשמשתמשים ב-softMaxLoad. מידע נוסף על עלויות זמין במושג המרכזי מודל עלויות. |
דוגמת קוד
בדוגמה הבאה מוצג המבנה של מאפייני האילוץ הרך של loadLimits:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }