המטרה של Route Optimization API היא לתכנן מסלולים לצי של כלי רכב כדי לבקר בקבוצה של מיקומים. אובייקט OptimizeToursRequest מתאר את המאפיינים של כלי הרכב והמיקומים האלה, והוא המבנה העיקרי של גוף הבקשה של כל נקודת קצה.
המבנה הבסיסי של האובייקט OptimizeToursRequest הוא:
- השדה
modelמכיל הודעתShipmentModelשכוללת שני שדות מפתח:
במסמך הזה מתוארים סוגי ההודעות הבאים:
-
ShipmentModel: מכיל את רשימת המשלוחים, כלי הרכב הזמינים ואובייקטים אחרים שמתארים את הקשרים ביניהם. -
Shipment: מתאר את המיקומים שבהם הרכב צריך לבקר. הן יכולות לייצג חבילות אמיתיות שצריך לאסוף ולמסור, או מקומות שבהם הנהג מספק שירות. -
Vehicle: תיאור של אמצעי התחבורה בין מיקומי המשלוח. כל רכב תואם לרכב בפועל או לאדם שנע ברגל.
ShipmentModel
השדה ShipmentModel מכיל את הרכיבים של בעיית האופטימיזציה של המסלולים. הוא מכיל קבוצה של משלוחים שאפשר לבצע באמצעות קבוצה של כלי רכב, תוך התחשבות באילוצים וצמצום העלות הכוללת.
בטבלה הבאה מתוארים כמה מאפיינים רלוונטיים של ShipmentModel:
| מאפיינים | תיאור |
|---|---|
shipments וגם vehicles |
אובייקטים נדרשים שמכילים את הפרטים של משלוח אחד או יותר ושל כלי רכב אחד או יותר. |
globalStartTime וגם globalEndTime |
מציין את ההתחלה והסיום של חלון הזמן שבו כל הרכבים צריכים להשלים את כל המשלוחים. המאפיינים האלה לא נדרשים, אבל מומלץ לכלול אותם כי הכלי לאופטימיזציה פועל בצורה הטובה ביותר כשהוא פועל לפי מגבלות זמן. |
רשימה מלאה של המאפיינים ב-ShipmentModel זמינה במאמרי העזרה.
ShipmentModel דוגמה
בדוגמה הזו, יש לכם שירות של מעון יום לכלבים ואתם מתחילים ליצור את הבקשה. אתם מגדירים את המשלוחים וכלי הרכב בהמשך, אבל אתם רוצים להתחיל בהגדרת שעות הפעילות ועלות התפעול השעתית.
בדוגמה הזו, ערכי המאפיינים של ShipmentModel בבקשה הם:
| נכס | ערך | תיאור |
|---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | התאריך והשעה שבהם מתחילים שעות הפעילות. |
globalEndTime |
2024-02-14T06:00:00.000Z | התאריך והשעה של סיום שעות הפעילות. |
הקוד הבא הוא דוגמה להודעת ShipmentModel שמשלבת את הערכים של התרחיש לדוגמה.
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
סוג ההודעה Shipment מגדיר את מבנה המאפיינים של משלוח שאפשר למסור או של שירות שאפשר לבצע במסלול.
כפי שמוצג בתרשים:
- הודעת
Shipmentכוללת את כל המידע על משלוח או שירות אמיתי. - כל ההודעות של
Shipmentמצוינות בשדהshipments. - השדה
shipmentsמכיל הודעה אחת או יותר מסוגShipment.
הודעת Shipment צריכה לכלול לפחות אובייקט pickups או deliveries.
ההגדרה של האובייקטים האלה היא:
pickupsמגדיר את מיקום האיסוף של המשלוח.- התג
deliveriesמגדיר את יעד המשלוח של חבילה. - גם
pickupsוגםdeliveriesמכילים סוג הודעהVisitRequestשמגדיר מיקומים ופרטים אחרים.
בטבלה הבאה מתוארים תרחישים שונים בהתאם להגדרות של pickups ו-deliveries בהודעה מסוג Shipment.
| תרחיש | תיאור |
|---|---|
pickups בלבד |
ההנחה היא שאתם רק אוספים את המשלוח. |
deliveries בלבד |
אנחנו מניחים שהמשלוח כבר נטען או שאתם מספקים שירות. |
גם pickups וגם deliveries |
הרכב שהוקצה צריך להשלים קודם את האיסוף ואז את המסירה. רק הרכב שאסף את החבילה יכול למסור אותה. |
כמה pickups או deliveries |
אם במשלוח מופיעות כמה אפשרויות ל-pickups או ל-deliveries, כלי האופטימיזציה בוחר אפשרות איסוף אחת ואפשרות מסירה אחת, על סמך צמצום העלות ועמידה באילוצים. |
רשימה מלאה של המאפיינים ב-Shipment זמינה במאמרי העזרה.
Shipment דוגמה
בדוגמה הזו, יש לכם עסק של מעון יום לכלבים שבו אתם אוספים את הכלבים מהבית שלהם ומביאים אותם למעון. אתם רוצים להגדיר את מיקום האיסוף של שני כלבים, ולהגדיר את מיקום המסירה שלהם לעסק שלכם:
- הבית של הכלב הראשון נמצא במגדל קויט בסן פרנסיסקו. הקואורדינטות של המיקום הזה הן קו רוחב 37.8024 וקו אורך -122.4058.
- הבית של הכלב השני נמצא בפארק South Sunset Playground בסן פרנסיסקו. הקואורדינטות של המיקום הזה הן קו רוחב 37.7359 וקו אורך -122.5011.
- הגן לכלבים שלך נמצא בפארק מיסיון דולורס בסן פרנסיסקו. הקואורדינטות של המיקום הזה הן קו רוחב 37.759773 וקו אורך -122.427063.
הדוגמה הבאה היא קוד של הודעת Shipment, שבה האובייקט shipments מכיל שני סוגי הודעות Shipment עם הקואורדינטות לדוגמה.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
סוג ההודעה Vehicle מגדיר את מבנה המאפיינים של כלי רכב שיכול לבצע משלוח במסלול.
כפי שמוצג בתרשים:
- הודעת
Vehicleמכילה את כל המידע על רכב אמיתי. - כל ההודעות של
Vehicleמצוינות בשדהvehicles. - השדה
vehiclesמכיל כמה הודעותVehicle.
בטבלה הבאה מתוארים כמה מאפיינים רלוונטיים של Vehicle.
| מאפיינים | תיאור |
|---|---|
startLocation וגם endLocation |
נקודות ההתחלה והסיום של כלי הרכב, שהם חלק מהמסלול הסופי שעבר אופטימיזציה. אם לא תגדירו אותם, ברירת המחדל תהיה מיקומי האיסוף של המשלוח הראשון והמסירה של המשלוח האחרון. |
costPerHour, costPerKilometer, costPerTraveledHour |
פרמטרים של עלות ספציפיים לרכב. מומלץ לכלול לפחות פרמטר עלות אחד בבקשה כדי שממשק ה-API יחזיר מסלול אופטימלי. מידע נוסף על עלויות זמין במושג המפתח מודל עלויות. |
startTimeWindows וגם endTimeWindows |
הגדרת תקופות הזמן שבהן רכב יכול לפעול במסלול. התאריכים האלה צריכים להיות בטווח של חלון הזמן globalStartTime עד globalEndTime שהוגדר ב-ShipmentModel. המאפיין הזה לא חובה, אבל מומלץ לכלול אותו כי כלי האופטימיזציה פועל בצורה הכי טובה כשהוא עומד במגבלות הזמן. |
Vehicle דוגמה
בדוגמה הזו, יש לכם עסק של פנסיון לכלבים ואתם רוצים להגדיר את המיקום של הרכב בתחילת היום ובסופו, ואת כמות הדלק שהוא צורך. אין צורך לציין את שעות הפעילות של הרכב כי הן זהות לשעות שהגדרתם במאפיינים globalStartTime וglobalEndTime באובייקט ShipmentModel.
בדוגמה הזו, ערכי המאפיינים של Vehicle בבקשה הם:
| נכס | ערך | תיאור |
|---|---|---|
startLocation |
latitude: 37.759773, longitude: -122.427063 |
הקואורדינטות של נקודת ההתחלה של המסלול של הרכב. המיקומים האלה תואמים למיקום של המעון לכלבים שלכם, שנמצא בפארק מישן דולורס בסן פרנסיסקו. |
endLocation |
latitude: 37.759773, longitude: -122.427063 |
הקואורדינטות של נקודת הסיום של המסלול של הרכב. המיקומים האלה תואמים למיקום של המעון לכלבים שלכם, שנמצא בפארק מישן דולורס בסן פרנסיסקו. |
costPerHour |
27 | כמה אתם משלמים לנהג על נהיגה ברכב שלכם במעון לכלבים. אתם משלמים לנהג 27 דולר לשעה. |
בדוגמה הבאה מוצג קוד של הודעת Vehicle שמשלבת את הערכים של תרחיש לדוגמה.
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
הרשימה המלאה של המאפיינים ב-Vehicle מופיעה במאמרי העזרה.
דוגמה לבקשה מלאה
דוגמת הקוד הבאה מספקת דוגמה לבקשה מלאה, שמשלבת את הדוגמאות של ShipmentModel, Shipment ו-Vehicle שמוצגות במסמך הזה.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }