תשובה אחרי פתרון בעיה של אופטימיזציה של מסלולים, שמכילה את המסלולים שכל כלי רכב עבר, את המשלוחים שדילגו עליהם ואת העלות הכוללת של הפתרון.
| ייצוג ב-JSON |
|---|
{ "routes": [ { object ( |
| שדות | |
|---|---|
routes[] |
מסלולים שמחושבים לכל רכב. המסלול ה-i מתאים לרכב ה-i במודל. |
requestLabel |
עותק של |
skippedShipments[] |
רשימת כל המשלוחים שדילגתם עליהם. |
validationErrors[] |
רשימה של כל שגיאות האימות שהצלחנו לזהות באופן עצמאי. הסבר על ההודעה |
processedRequest |
במקרים מסוימים אנחנו משנים את הבקשה הנכנסת לפני שאנחנו פותרים אותה, למשל מוסיפים עלויות. אם solvingMode == TRANSFORM_AND_RETURN_REQUEST, הבקשה ששונתה מוחזרת כאן. ניסיוני: פרטים נוספים זמינים בכתובת https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
metrics |
משך השימוש, המרחק ומדדי השימוש בפתרון הזה. |
OptimizeToursValidationError
מתאר שגיאה או אזהרה שנתקלו בהן במהלך אימות של OptimizeToursRequest.
| ייצוג ב-JSON |
|---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
| שדות | |
|---|---|
code |
שגיאת אימות מוגדרת על ידי הצמד ( השדות שמופיעים אחרי הקטע הזה מספקים הקשר נוסף לגבי השגיאה. שגיאות מרובות: אם יש כמה שגיאות, תהליך האימות ינסה להציג כמה מהן. בדומה לתהליך של קומפילציה, התהליך הזה לא מושלם. חלק משגיאות האימות יהיו 'חמורות', כלומר הן יגרמו להפסקת כל תהליך האימות. לדוגמה, שגיאות יציבות: הגרסאות |
displayName |
השם לתצוגה של השגיאה. |
fields[] |
הקשר של שגיאה יכול לכלול 0, 1 (ברוב המקרים) או יותר שדות. לדוגמה, כדי להתייחס לאיסוף הראשון של משלוח מספר 2 באמצעות כלי רכב מספר 4, אפשר להשתמש בפורמט הבא: עם זאת, שימו לב שהקרדינליות של |
errorMessage |
מחרוזת שמתארת את השגיאה, שאנשים יכולים לקרוא. יש מיפוי של 1:1 בין יציבות: לא יציב: הודעת השגיאה שמשויכת ל- |
offendingValues |
יכול להכיל את הערכים של השדות. האפשרות הזו לא תמיד זמינה. בשום אופן אל תסתמכו על התכונה הזו, ותשתמשו בה רק לניפוי באגים ידני במודלים. |
FieldReference
מציין הקשר לשגיאת האימות. FieldReference תמיד מתייחס לשדה נתון בקובץ הזה, והוא בנוי לפי אותו מבנה היררכי. לדוגמה, אפשר לציין את רכיב מספר 2 של startTimeWindows של רכב מספר 5 באמצעות:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
עם זאת, אנחנו משמיטים ישויות ברמה העליונה כמו OptimizeToursRequest או ShipmentModel כדי שההודעה לא תהיה עמוסה מדי.
| ייצוג ב-JSON |
|---|
{ "name": string, "subField": { object ( |
| שדות | |
|---|---|
name |
שם השדה, למשל "vehicles". |
subField |
שדה משנה מקונן באופן רקורסיבי, אם צריך. |
שדה איחוד הערך |
|
index |
האינדקס של השדה אם הוא חוזר. |
key |
מפתח אם השדה הוא מפה. |
מדדים
מדדים כלליים, מצטברים בכל המסלולים.
| ייצוג ב-JSON |
|---|
{
"aggregatedRouteMetrics": {
object ( |
| שדות | |
|---|---|
aggregatedRouteMetrics |
הנתון הוא נתון מצטבר של כל המסלולים. כל מדד הוא הסכום (או הערך המקסימלי, במקרה של טעינות) של כל השדות |
skippedMandatoryShipmentCount |
מספר המשלוחים שהמערכת דילגה עליהם. |
usedVehicleCount |
מספר כלי הרכב שהיו בשימוש. הערה: אם מסלול הרכב ריק והערך של |
earliestVehicleStartTime |
השעה המוקדמת ביותר להתחלת השימוש ברכב משומש, שמחושבת כערך המינימלי מבין כל הרכבים המשומשים של הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים חוץ מ-Z. דוגמאות: |
latestVehicleEndTime |
השעה המאוחרת ביותר שבה רכב משומש יכול להיות זמין, שמחושבת כערך המקסימלי מבין כל הרכבים המשומשים של הפלט שנוצר תמיד יהיה בפורמט RFC 3339, עם נורמליזציה של Z ושימוש ב-0, 3, 6 או 9 ספרות אחרי הנקודה. אפשר להשתמש גם בהיסטים אחרים חוץ מ-Z. דוגמאות: |
costs |
עלות הפתרון, מחולקת לפי שדות בקשה שקשורים לעלויות. המפתחות הם נתיבי פרוטו, ביחס לקלט OptimizeToursRequest, למשל 'model.shipments.pickups.cost', והערכים הם העלות הכוללת שנוצרה על ידי שדה העלות המתאים, שנצברת על פני הפתרון כולו. במילים אחרות, costs["model.shipments.pickups.cost"] הוא סכום כל העלויות של איסוף המשלוחים בפתרון. כל העלויות שמוגדרות במודל מדווחות כאן בפירוט, למעט עלויות שקשורות ל-TransitionAttributes, שמדווחות רק באופן מצטבר החל מ-2022/01. |
totalCost |
העלות הכוללת של הפתרון. סכום כל הערכים במפת העלויות. |