הפונקציה שולחת OptimizeToursRequest
שמכיל ShipmentModel
ומחזירה OptimizeToursResponse
שמכיל ShipmentRoute
, שהם קבוצה של מסלולים שכלי רכב צריכים לבצע כדי למזער את העלות הכוללת.
מודל ShipmentModel
מורכב בעיקר מאובייקטים של Shipment
שצריך לבצע ו-Vehicle
s שאפשר להשתמש בהם כדי להעביר את אובייקטי Shipment
. ShipmentRoute
מקצים Shipment
ל-Vehicle
. ליתר דיוק, הם מקצים סדרה של Visit
לכל רכב, ו-Visit
מייצג סדרה של VisitRequest
, שמשמעותה איסוף או משלוח עבור Shipment
.
המטרה היא לספק הקצאה של ShipmentRoute
ל-Vehicle
שמקטינה את העלות הכוללת, כאשר העלות כוללת הרבה רכיבים שמוגדרים ב-ShipmentModel
.
בקשת HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
כתובת ה-URL משתמשת בתחביר של Transcoding של gRPC.
פרמטרים של נתיב
פרמטרים | |
---|---|
parent |
חובה. בוחרים את הפרויקט או המיקום שאליהם רוצים להתקשר. פורמט: * אם לא מציינים מיקום, המערכת בוחרת אזור באופן אוטומטי. |
גוף הבקשה
גוף הבקשה מכיל נתונים במבנה הבא:
ייצוג ב-JSON |
---|
{ "timeout": string, "model": { object ( |
שדות | |
---|---|
timeout |
אם מגדירים את הזמן הקצוב הזה, השרת מחזיר תשובה לפני שחלפו פרק הזמן הקצוב או לפני שחלף מועד היעד של השרת לבקשות סינכרוניות, המוקדם מביניהם. עבור בקשות אסינכרוניות, השרת ייצור פתרון (אם אפשר) לפני שיסתיים הזמן הקצוב לתפוגה. משך הזמן בשניות, עם עד תשע ספרות עשרוניות, שמסתיימים ב-' |
model |
מודל המשלוח לפתרון. |
solvingMode |
כברירת מחדל, מצב הפתרון הוא |
searchMode |
מצב החיפוש ששימש לפתרון הבקשה. |
injectedFirstSolutionRoutes[] |
הנחיה של אלגוריתם האופטימיזציה למצוא פתרון ראשון שדומה לפתרון קודם. המודל מוגבל כשהפתרון הראשון נוצר. כל משלוחים שלא בוצעו במסלול מסוים יועברו אוטומטית לשלב הבא בפתרון, אבל יכול להיות שהם יבוצעו בפתרון הבא. הפתרון צריך לעמוד בהנחות בסיסיות לגבי תקינות:
אם הפתרון שהוזן לא מתאים, לא בהכרח תוחזר שגיאת אימות. יכול להיות שתוחזר שגיאה שמציינת את חוסר ההתאמה. |
injectedSolutionConstraint |
להגביל את אלגוריתם האופטימיזציה כדי למצוא פתרון סופי שדומה לפתרון קודם. לדוגמה, אפשר להקפיא חלקים במסלולים שכבר הושלמו או שצריך להשלים אבל לא לשנות. אם הפתרון שהוזן לא מתאים, לא בהכרח תוחזר שגיאת אימות. יכול להיות שתוחזר שגיאה שמציינת את חוסר ההתאמה. |
refreshDetailsRoutes[] |
אם המסלולים הנתונים לא ריקים, המערכת תרענן את המסלולים שלהם בלי לשנות את רצף הביקורים או את זמני הנסיעה הבסיסיים שלהם: רק פרטים אחרים יעודכנו. הפעולה הזו לא פותרת את הבעיה במודל. נכון ל-11 בנובמבר 2020, הפונקציה מאכלסת רק את הקווים הפוליגונליים של מסלולים שאינם ריקים, וצריך שהערך של יכול להיות ששדות אסור להשתמש בשדה הזה יחד עם ל- |
interpretInjectedSolutionsUsingLabels |
אם הערך הוא True:
הפרשנות הזו חלה על השדות אם True, התוויות בקטגוריות הבאות חייבות להופיע פעם אחת לכל היותר בקטגוריה שלהן:
אם הערך של הסרה של ביקורים במסלול או מסלולים שלמים מפתרון שהוחדר יכולה להיות השפעה על המגבלות המשתמעות. כתוצאה מכך, עשויים להיות שינויים בפתרון, בשגיאות אימות או בחוסר היתכנות. הערה: המתקשר חייב לוודא שכל |
considerRoadTraffic |
כדאי להביא בחשבון אומדן תנועה בחישוב השדות |
populatePolylines |
אם הערך הוא True, הקווים הפוליטיים יאוכלסו בתשובה |
populateTransitionPolylines |
אם הערך הוא True, הקווים הפוליטיים יאוכלסו בתשובה |
allowLargeDeadlineDespiteInterruptionRisk |
אם היא מוגדרת, ייתכן שתאריך היעד של הבקשה יהיה עד 60 דקות (מידע נוסף זמין בכתובת https://grpc.io/blog/deadlines). אחרת, מועד ההגשה האחרון הוא 30 דקות בלבד. חשוב לזכור שבקשות לטווח ארוך נמצאות בסיכון גבוה יותר (אבל עדיין קטן) להפרעה. |
useGeodesicDistances |
אם הערך הוא true, מרחקי הנסיעה יחושבו לפי מרחקים גיאודזיים במקום מרחקים במפות Google, וזמני הנסיעה יחושבו לפי מרחקים גיאודזיים עם מהירות שמוגדרת על ידי |
label |
תווית שעשויה לשמש לזיהוי הבקשה הזו, שתדווח ב- |
geodesicMetersPerSecond |
כשהערך של |
maxValidationErrors |
מקצר את מספר שגיאות האימות שהוחזרו. בדרך כלל השגיאות האלה מצורפות לעומס הנתונים של שגיאת INVALID_ARGUMENT כפרטי שגיאה של BadRequest (https://cloud.google.com/apis/design/errors#error_details), אלא אם solvingMode=VALIDATE_ONLY: ראו את השדה |
גוף התשובה
אם הפעולה מצליחה, גוף התגובה מכיל מופע של OptimizeToursResponse
.
היקפי ההרשאות
נדרש היקף הרשאות OAuth הבא:
https://www.googleapis.com/auth/cloud-platform
הרשאות IAM
נדרשת ההרשאה הבאה של IAM במשאב parent
:
routeoptimization.locations.use
מידע נוסף זמין במאמרי העזרה של IAM.