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