אפשר לשלוח בקשה עם עלויות טעינה כדי שהכלי לאופטימיזציה יביא בחשבון את המטען שהרכבים נושאים בין הביקורים. העלות תלויה בכמות הנתונים ShipmentRoute.VehicleLoad
שמועברים ובמרחק או במשך ההעברה (באמצעות cost_per_kilometer
או cost_per_traveled_hour
בהתאמה).
דוגמה מינימלית לבקשה עם עלויות טעינה
זוהי דוגמה חלקית לבקשה עם עלות טעינה. בדוגמה הזו, הרכב היחיד יכול לשאת עד 1,000 ק"ג של weightKg
מטען כולל, וכשweightKg
המטען שמועבר עולה על 500 ק"ג, יש עלות של יחידה אחת לקילומטר.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
כך נראה חישוב עלות הטעינה בדוגמה הזו:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
לכן, אם הרכב נושא weightKg
מטען של 600 ק"ג למרחק של 10 ק"מ, החישוב יהיה:
(600 - 500) * 10 * 1 = 1000 cost units
אפשר להשתמש בעלויות העמסה כדי ליצור מודלים של מגוון רחב של מושגים, כמו עלייה בצריכת האנרגיה של הרכב כשמובילים משאות כבדים או בלאי של הרכב שנגרם כתוצאה מהעמסה מוגזמת של הרכב.
דוגמה נוספת לבקשה עם עלויות טעינה
עוד דוגמה לעלויות משלוח שבהן יש עלות לכל זמן נסיעה, גם מעל סף וגם מתחת לסף:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
כך נראה חישוב עלות הטעינה בדוגמה הזו:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
לכן, אם הרכב נושא weightLbs
מטען של 950 במשך 5 שעות, החישוב יהיה:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
בדוגמה הזו, הערך load_threshold
של עלות הטעינה weightLbs
קרוב ל-max_load
. cost_per_unit_above_threshold
מחיל עלות גבוהה לשעה של נסיעה כשהרכב נוסע עם מטען כבד במיוחד, וכך מעניש מסלולים שעלולים להגביר את הבלאי של הרכב או לצרוך עודף דלק.
הערך cost_per_unit_below_threshold
מוסיף עלות לכל יחידת משקל שמועברת על ידי הרכב עד לסף, ומייצג את העלייה בצריכת הדלק ככל שהרכב נושא יותר מטען.
שאלות נפוצות
ריכזנו כאן כמה שאלות נפוצות בנושא עלויות טעינה:
שאלה | תשובה |
---|---|
איפה מציינים את עלויות הטעינה? | מציינים את עלויות הטעינה ב-Vehicle.LoadLimit . |
איך מתבצעת התאמה בין עלויות משלוח לעלויות הובלה? | עלות העמסה חלה על משלוחים שהסוג של דרישת העמסה שלהם תואם לסוג של מגבלת העמסה של הרכב, כמו משקל או נפח. סוגי הטעינה הם מחרוזות שרירותיות, כפי שמתואר בדרישות ומגבלות של טעינה. |
איך מוצגות עלויות הטעינה? | עלויות הטעינה מבוטאות במונחים של מרחק או משך המעבר. משתמשים ב-cost_per_kilometer כדי לציין עלויות לפי מרחק וב-cost_per_traveled_hour כדי לציין עלויות לפי משך.
|
מתי חלים עלויות טעינה? | המשקל של המטען ברכב מושווה לload_threshold של עלות המטען. אם מציינים את cost_per_unit_above_threshold , העלות מתווספת באופן יחסי למטען של הרכב מעל load_threshold באמצעות הנוסחה max(0, load - load_threshold) . אם מציינים את הערך cost_per_unit_below_threshold , העלות מתווספת באופן יחסי לעומס של הרכב מתחת לערך load_threshold , לפי הנוסחה min(load, load_threshold) .
|
מהם ערכי ברירת המחדל של פרמטרים של עלות טעינה? | load_threshold , cost_per_unit_above_threshold ו-cost_per_unit_below_threshold הם אפס כברירת מחדל.
|
באיזו יחידה מבוטאות עלויות הטעינה? | עלויות הטעינה מבוטאות באותן יחידות חסרות ממד כמו כל פרמטרי העלות האחרים, כמו global_duration_cost_per_hour או Shipment.penalty_cost .
|
איפה אפשר למצוא את עלויות הטעינה בתגובה? | עלויות הטעינה שנוצרו מופיעות במאפיינים metrics ו-route_metrics של הודעות התגובה. לדוגמה, סכום של cost_per_kilometer יופיע כ-model.vehicles.load_limits.cost_per_kilometer .
|
הסבר מפורט על עלויות הטעינה מופיע במסמכי העזר (REST, gRPC).
דוגמה: יצירת בקשת OptimizeTours
אפשר גם לשלוח בקשות OptimizeTours
באמצעות REST או gRPC.
לפני ששולחים בקשה, מחליפים את הפרמטרים הבאים בערכים שמתאימים לסביבה שלכם:
- מוודאים שהגדרתם Application Default Credentials כמו שמתואר במאמר שימוש ב-OAuth.
מגדירים את PROJECT_NUMBER_OR_ID למספר או למזהה של הפרויקט ב-Cloud.
הפקודה הבאה שולחת בקשת
OptimizeTours
ל-Route Optimization API ומקבלת תגובה באופן סינכרוני.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
בסיום הטיפול בבקשה, תקבלו הודעת תשובה.