הפונקציה שולחת OptimizeToursRequest
עם ערך ShipmentModel
ומחזירה ערך של OptimizeToursResponse
שמכיל ShipmentRoute
s, שהם קבוצת מסלולים שכלי רכב יכולים לבצע כדי לצמצם את העלות הכוללת.
מודל ShipmentModel
מורכב בעיקר מ-Shipment
שצריך לבצע ומ-Vehicle
שאפשר להשתמש בהם כדי להעביר את ה-Shipment
. נכסי ShipmentRoute
מקצים Shipment
ל-Vehicle
שנ'. ליתר דיוק, הם מקצים סדרה של Visit
לכל רכב, ו-Visit
מייצג סדרה של VisitRequest
, שמשמעותה איסוף או משלוח עבור Shipment
.
המטרה היא להקצות הקצאות של ShipmentRoute
ל-Vehicle
כדי לצמצם את העלות הכוללת במקרים שבהם לעלות יש רכיבים רבים שמוגדרים בShipmentModel
.
בקשת HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}: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 |
אם ההגדרה הזו מוגדרת, לבקשה יכול להיות מועד יעד (מידע נוסף זמין בכתובת https://grpc.io/blog/deadlines) של עד 60 דקות. אחרת, מועד ההגשה האחרון הוא 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.