הפונקציה שולחת 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/*}:optimizeTours
כתובת ה-URL משתמשת בתחביר של Transcoding של gRPC.
פרמטרים של נתיב
פרמטרים | |
---|---|
parent |
חובה. בוחרים את הפרויקט או המיקום שאליהם רוצים להתקשר. פורמט: * אם לא מציינים מיקום, המערכת בוחרת אזור באופן אוטומטי. |
גוף הבקשה
גוף הבקשה מכיל נתונים במבנה הבא:
ייצוג ב-JSON |
---|
{ "timeout": string, "model": { object ( |
שדות | |
---|---|
timeout |
אם מגדירים את הזמן הקצוב הזה, השרת מחזיר תשובה לפני שחלפו פרק הזמן הקצוב או לפני שחלף מועד היעד של השרת לבקשות סינכרוניות, המוקדם מביניהם. בבקשות אסינכררוניות, השרת ייצור פתרון (אם אפשר) לפני שפג תוקף הזמן הקצוב. משך הזמן בשניות, עם עד תשע ספרות עשרוניות, שמסתיימים ב-' |
model |
מודל המשלוח לפתרון. |
solving |
כברירת מחדל, מצב הפתרון הוא |
search |
מצב החיפוש ששימש לפתרון הבקשה. |
injected |
הנחיה של אלגוריתם האופטימיזציה למצוא פתרון ראשון שדומה לפתרון קודם. המודל מוגבל כשיוצרים את הפתרון הראשון. כל משלוחים שלא בוצעו במסלול מסוים יועברו אוטומטית לשלב הבא בפתרון, אבל יכול להיות שהם יבוצעו בפתרון הבא. הפתרון צריך לעמוד בהנחות בסיסיות לגבי תקינות:
אם הפתרון שהוזן לא מתאים, לא בהכרח תוחזר שגיאת אימות. יכול להיות שתוחזר שגיאה שמציינת את חוסר ההתאמה. |
injected |
להגביל את אלגוריתם האופטימיזציה כדי למצוא פתרון סופי שדומה לפתרון קודם. לדוגמה, אפשר להשתמש באפשרות הזו כדי להקפיא חלקים של מסלולים שכבר הושלמו או שעוד צריך להשלים, אבל אסור לשנות אותם. אם הפתרון שהוזן לא מתאים, לא בהכרח תוחזר שגיאת אימות. יכול להיות שתוחזר שגיאה שמציינת את חוסר ההתאמה. |
refresh |
אם הערך לא ריק, המסלולים הנתונים יתרעננו בלי לשנות את הרצף הבסיסי של הביקורים או זמני הנסיעה שלהם: רק פרטים אחרים יעודכנו. הפעולה הזו לא פותרת את הבעיה במודל. נכון ל-11 בנובמבר 2020, הפונקציה מאכלסת רק את הקווים הפוליגונליים של מסלולים שאינם ריקים, וצריך שהערך של יכול להיות שהשדות אסור להשתמש בשדה הזה יחד עם ל- |
interpret |
אם הערך הוא true:
הפרשנות הזו חלה על השדות אם הערך הוא True, תוויות בקטגוריות הבאות חייבות להופיע לכל היותר פעם אחת בקטגוריה שלהן:
אם הערך של הסרה של ביקורים במסלולים או של מסלולים שלמים מהפתרון שהוזן יכולה להשפיע על האילוצים המשתמעים, וכתוצאה מכך לגרום לשינוי בפתרון, לשגיאות אימות או לכך שהפתרון לא יהיה ריאלי. הערה: מבצע הקריאה החוזרת צריך לוודא שכל |
consider |
כדאי להביא בחשבון את אומדן התנועה בזמן החישוב של השדות |
populate |
אם הערך הוא true, קווים פוליגונליים יאוכלסו בתשובות |
populate |
אם הערך הוא True, קווים פוליגונליים ואסימונים של מסלולים יאוכלסו בתגובה |
allow |
אם ההגדרה הזו מוגדרת, לבקשה יכול להיות מועד יעד (מידע נוסף זמין בכתובת https://grpc.io/blog/deadlines) של עד 60 דקות. אחרת, מועד ההגשה האחרון הוא 30 דקות בלבד. חשוב לזכור שלבקשות לטווח ארוך יש סיכון גבוה יותר (אבל עדיין קטן) להפרעה. |
use |
אם הערך הוא true, מרחקי הנסיעה יחושבו לפי מרחקים גיאודזיים במקום מרחקים במפות Google, וזמני הנסיעה יחושבו לפי מרחקים גיאודזיים עם מהירות שמוגדרת על ידי |
label |
תווית שעשויה לשמש לזיהוי הבקשה הזו, שתדווח ב- |
geodesic |
כשהערך של |
max |
חיתוך מספר שגיאות האימות שמוחזרות. בדרך כלל השגיאות האלה מצורפות לעומס הנתונים של שגיאת 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.