הפונקציה שולחת 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:
הפרשנות הזו חלה על השדות אם הערך הוא 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.