הפונקציה שולחת OptimizeToursRequest עם ערך ShipmentModel ומחזירה ערך של OptimizeToursResponse שמכיל ShipmentRoutes, שהם קבוצת מסלולים שכלי רכב יכולים לבצע כדי לצמצם את העלות הכוללת.
מודל 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.