דרישות ומגבלות עומס הן סוג של אילוץ שאפשר להשתמש בו כדי לנהל את הקיבולת. האילוץ הזה מציין את הקיבולת הנדרשת של משלוח ואת הקיבולת המקסימלית של רכב, ומאפשר לבצע אופטימיזציה של הקצאות המסלולים על סמך האילוצים האלה.
דרישות ומגבלות עומס יכולות לתמוך ביעדים כמו:
- למנוע עומס יתר על כלי הרכב.
- מעקב אחרי השינויים בעומס על הרכב ככל שהמשלוחים נאספים ונמסרים.
- תנו עדיפות לשיוך של רכבים כבדים למשלוחים כבדים.
הדרישות והמגבלות של העומס מפורטות במאפיינים הבאים:
loadDemandsמציין את הקיבולת שנדרשת למשלוח מסוים.loadLimitsמציין את הקיבולת המקסימלית של רכב מסוים.
מבנה
כפי שמוצג בתרשים, דרישות העומס והמגבלות בנויות באופן הבא:
-
loadDemandsהוא נכס שלShipment. לShipmentיכולות להיות כמה דרישות עומס. -
loadLimitsהוא נכס שלVehicle. לVehicleיכולות להיות כמה מגבלות עומס.
רשימת משימות חיוניות
ברשימת המשימות הבאה מתואר ידע חיוני שמונע טעויות פוטנציאליות שקשורות לעומס. הרשימה הזו יכולה לעזור לכם לאמת את הבקשה ולפתור בעיות בתגובה.
מאפיינים
בקטע הזה מתוארים המאפיינים של דרישות העומס והמגבלות:
- סוג העומס: מאפיין משותף בין דרישות העומס לבין המגבלות.
-
Loadו-LoadLimit: מאפיינים ייחודיים שמופיעים בדרישות העומס ובמגבלות העומס, בהתאמה.
מיקום הדלת
סוג מטען הוא מפתח מחרוזת שאתם מחילים באופן שווה על משלוחים ועל כלי רכב. סוג מטען יחיד חל על דרישת המטען של המשלוח וגם על מגבלת המטען של הרכב.
סוגי העומסים משתמשים בתחביר של סוג המפה של מאגרי האחסון לפרוטוקולים. כשנותנים שם לסוג עומס, צריך להשתמש במזהים שמתארים את סוג העומס ואת היחידה שלו. לדוגמה: 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 } } }