הפונקציה שולחת OptimizeToursRequest
עם ערך ShipmentModel
ומחזירה ערך של OptimizeToursResponse
שמכיל ShipmentRoute
s, שהם קבוצת מסלולים שכלי רכב יכולים לבצע כדי לצמצם את העלות הכוללת.
מודל ShipmentModel
מורכב בעיקר מאובייקטים של Shipment
שצריך לבצע ו-Vehicle
s שאפשר להשתמש בהם כדי להעביר את אובייקטי Shipment
. נכסי ShipmentRoute
מקצים Shipment
ל-Vehicle
שנ'. ליתר דיוק, הם מקצים סדרה של Visit
לכל רכב, ו-Visit
מייצג סדרה של VisitRequest
, שמשמעותה איסוף או משלוח עבור Shipment
.
המטרה היא להקצות הקצאות של ShipmentRoute
ל-Vehicle
כדי לצמצם את העלות הכוללת במקרים שבהם לעלות יש רכיבים רבים שמוגדרים בShipmentModel
.
בקשת HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
בכתובת ה-URL נעשה שימוש בתחביר המרת קידוד של 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 |
מקצר את מספר שגיאות האימות שהוחזרו. השגיאות האלה מצורפות בדרך כלל למטען ייעודי (payload) של שגיאה INVALID_ARGUMENT כפרטי שגיאה של BadRequest (https://cloud.google.com/apis/design/errors#error_details), אלא אם resolveMode=VALIDATE_ONLY: יש לעיין בשדה |
גוף התשובה
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכלול מופע של OptimizeToursResponse
.
היקפי ההרשאות
נדרש היקף ההרשאות הבא של OAuth:
https://www.googleapis.com/auth/cloud-platform
הרשאות IAM
נדרשת הרשאת ה-IAM הבאה במשאב parent
:
routeoptimization.locations.use
מידע נוסף זמין במאמרי העזרה של IAM.