זוהי גרסה של השיטה locations.optimizeTours שמיועדת לאופטימיזציות עם ערכי זמן קצוב לתפוגה גדולים. מומלץ להשתמש בה במקום בשיטה locations.optimizeTours לאופטימיזציות שנמשכות יותר מכמה דקות.
ה-long-running operation (LRO) שיוחזר יכלול שם בפורמט <parent>/operations/<operation_id>, ואפשר יהיה להשתמש בו כדי לעקוב אחרי התקדמות החישוב. סוג השדה metadata הוא OptimizeToursLongRunningMetadata. אם הפעולה תצליח, סוג השדה response יהיה OptimizeToursResponse.
בקשת HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeToursLongRunning
כתובת ה-URL כתובה בתחביר של gRPC Transcoding.
פרמטרים של הנתיב
| פרמטרים | |
|---|---|
parent |
חובה. פרויקט או מיקום יעד לביצוע שיחה. פורמט:
אין תמיכה בערכים אזוריים של |
גוף הבקשה
גוף הבקשה מכיל נתונים במבנה הבא:
| ייצוג ב-JSON |
|---|
{ "timeout": string, "model": { object ( |
| שדות | |
|---|---|
timeout |
אם מגדירים את הזמן הקצוב לתפוגה, השרת מחזיר תשובה לפני שפרק הזמן הקצוב לתפוגה חולף או לפני שמגיע המועד האחרון של השרת לבקשות סנכרוניות, המוקדם מביניהם. בבקשות לא סנכרוניות, השרת ייצור פתרון (אם אפשר) לפני שזמן הקצוב לתפוגה יחלוף. |
model |
מודל המשלוח שצריך לפתור. |
solvingMode |
כברירת מחדל, מצב הפתרון הוא |
searchMode |
מצב החיפוש ששימש לפתרון הבקשה. |
injectedFirstSolutionRoutes[] |
הנחיית אלגוריתם האופטימיזציה למציאת פתרון ראשון שדומה לפתרון קודם. המודל מוגבל כשהפתרון הראשון נוצר. כל המשלוחים שלא בוצעו במסלול מסוים נדלגים באופן משתמע בפתרון הראשון, אבל יכול להיות שהם יבוצעו בפתרונות הבאים. הפתרון צריך לעמוד בכמה הנחות בסיסיות לגבי תוקף:
אם הפתרון שהוזרק לא אפשרי, לא בהכרח תוחזר שגיאת אימות, ויכול להיות שתוחזר שגיאה שמציינת שהפתרון לא אפשרי. |
injectedSolutionConstraint |
להגביל את אלגוריתם האופטימיזציה כדי למצוא פתרון סופי שדומה לפתרון קודם. לדוגמה, אפשר להשתמש בזה כדי להקפיא חלקים ממסלולים שכבר הושלמו או שצריך להשלים אבל אסור לשנות. אם הפתרון שהוזרק לא אפשרי, לא בהכרח תוחזר שגיאת אימות, ויכול להיות שתוחזר שגיאה שמציינת שהפתרון לא אפשרי. |
refreshDetailsRoutes[] |
אם השדה לא ריק, המסלולים שצוינו ירועננו בלי לשנות את רצף הביקורים או זמני הנסיעה שלהם: רק פרטים אחרים יעודכנו. הפעולה הזו לא פותרת את המודל. החל מנובמבר 2020, השדה הזה מאכלס רק את הקווים הפוליגוניים של מסלולים לא ריקים, ודורש שהערך של יכול להיות שהשדות אסור להשתמש בשדה הזה יחד עם ל- |
interpretInjectedSolutionsUsingLabels |
אם הערך הוא True:
הפרשנות הזו חלה על השדות אם הערך הוא 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)), אלא אם solvingMode=VALIDATE_ONLY: ראו את השדה |
גוף התשובה
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Operation.
היקפי הרשאות
נדרש היקף ההרשאות הבא של OAuth:
https://www.googleapis.com/auth/cloud-platform
הרשאות IAM
נדרשת הרשאת IAM הבאה במשאב parent:
routeoptimization.operations.create
מידע נוסף מופיע במאמרי העזרה בנושא IAM.