התקבלה תשובה אחרי פתרון של בעיית אופטימיזציה של סיור, שכוללת את המסלולים ולאחר מכן כל רכב, את המשלוחים שדילגתם עליהם ואת העלות הכוללת של הפתרון.
ייצוג JSON |
---|
{ "routes": [ { object ( |
שדות | |
---|---|
routes[] |
נתיבים המחושבים עבור כל רכב. המסלול ה-i תואם לרכב ה-i שבמודל. |
requestLabel |
עותק של |
skippedShipments[] |
רשימת כל המשלוחים דילגה. |
validationErrors[] |
רשימה של כל שגיאות האימות שהצלחנו לזהות בנפרד. כדאי לעיין בהסבר 'מספר שגיאות' לגבי ההודעה |
metrics |
מדדי משך הזמן, המרחק והשימוש בפתרון הזה. |
OptimizeToursValidationError
מתאר שגיאה שאירעה במהלך אימות OptimizeToursRequest
.
ייצוג JSON |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
שדות | |
---|---|
code |
שגיאת אימות מוגדרת על ידי הצמד ( שדות אחרים (בהמשך) מספקים הקשר נוסף לגבי השגיאה. שגיאות מרובות: כשיש מספר שגיאות, תהליך האימות מנסה להפיק כמה מהן כפלט. תהליך זה, בדומה למהדר, אינו מושלם. חלק משגיאות האימות יהיו "קטלניות", כלומר, הן יפסיקו את תהליך האימות כולו. אותו הדבר נכון לגבי יציבות: הפניה: רשימה של כל הצמדים (קוד, שם):
|
displayName |
השם המוצג של השגיאה. |
fields[] |
הקשר של שגיאה עשוי לכלול שדות של 0, 1 (ברוב המקרים) או יותר. לדוגמה, אם מדובר ברכב מס' 4 ובאיסוף הראשון של משלוח מס' 2, אפשר לבצע את הפעולות הבאות:
עם זאת, חשוב לשים לב שהעוצמה של |
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 |
שם השדה, למשל 'כלי רכב'. |
subField |
שדה משנה מקונן באופן רקורסיבי, אם יש צורך. |
שדה איחוד
|
|
index |
אינדקס השדה, אם הוא חוזר. |
key |
מקש אם השדה הוא מפה. |
מדדים
המדדים הכוללים שנצברו מכל המסלולים.
ייצוג JSON |
---|
{
"aggregatedRouteMetrics": {
object ( |
שדות | |
---|---|
aggregatedRouteMetrics |
הנתון הזה נצבר במסלולים. כל מדד הוא הסכום (או המקסימלי, של טעינות) של כל השדות |
skippedMandatoryShipmentCount |
מספר המשלוחי החובה שדילגת עליהם. |
usedVehicleCount |
מספר כלי הרכב שהיו בשימוש. הערה: אם מסלול הרכב ריק והמאפיין |
earliestVehicleStartTime |
שעת ההתחלה המוקדמת ביותר של רכב משומש, מחושבת כמהירות המינימלית לכל כלי הרכב המשומשים ב- חותמת זמן בפורמט "זולו" RFC3339 UTC, עם רזולוציה של ננו-שנייה ועד תשע ספרות עשרוניות. דוגמאות: |
latestVehicleEndTime |
שעת הסיום העדכנית ביותר של רכב משומש, מחושבת כשעת הסיום המקסימלית בכל כלי הרכב המשומשים של חותמת זמן בפורמט "זולו" RFC3339 UTC, עם רזולוציה של ננו-שנייה ועד תשע ספרות עשרוניות. דוגמאות: |
costs |
עלות הפתרון, בחלוקה לפי שדות בקשה הקשורים לעלות. המפתחות הם נתיבים של תבניות אב, ביחס לקלט OptimizeToursRequest, למשל "model.shipments.pickups.cost". הערכים הם העלות הכוללת שנוצרה על-ידי שדה העלות המתאים, שנצברת על פני הפתרון כולו. במילים אחרות, העלויות ["model.shipments.pickups.cost"] הן הסכום של כל עלויות האיסוף ביחס לפתרון. כל העלויות שמוגדרות במודל מדווחות כאן בפירוט, חוץ מהעלויות שקשורות למאפייני מעבר, שמדווחות רק באופן מצטבר החל מ-1 בינואר 2022. אובייקט שמכיל רשימה של |
totalCost |
העלות הכוללת של הפתרון. סכום כל הערכים במפת העלויות. |