SkippedShipment

פרטים על משלוחים שלא בוצעו בפתרון. במקרים טריוויאליים ו/או אם אנחנו מצליחים לזהות את הסיבה לדילוג, אנחנו מדווחים עליה כאן.

ייצוג ב-JSON
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
שדות
index

integer

האינדקס תואם לאינדקס של המשלוח במקור ShipmentModel.

label

string

עותק של Shipment.label התואם, אם הוא צוין ב-Shipment.

reasons[]

object (Reason)

רשימה של סיבות שמסבירות למה המשלוח נדחה. עיינו בתגובה שלמעלה של Reason. אם לא נוכל להבין למה משלוח עבר על פני סטטוס מסוים, לא נגדיר סיבות.

penaltyCost

number

זוהי עותק של Shipment.penalty_cost, שכלול כאן כדי שיהיה קל יותר לראות את מידת החומרה של משלוח שהוחמץ.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

estimatedIncompatibleVehicleRatio

number

היחס המשוער של כלי הרכב שלא יכולים לבצע את המשלוח הזה בגלל אחת לפחות מהסיבות הבאות. הערה: השדה הזה מתמלא רק אם הסיבות קשורות לרכב.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

סיבה

אם נוכל להסביר למה ההזמנה לא נשלחה, הסיבות יופיעו כאן. אם הסיבה לא זהה לכל כלי הרכב, ל-reason יהיה יותר מרכיב אחד. לא ניתן לציין סיבות כפולות למשלוח שעבר דילוג, כלומר, שכל השדות זהים מלבד השדה exampleVehicleIndex. דוגמה:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 1
  exampleExceededCapacityType: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 3
  exampleExceededCapacityType: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  exampleVehicleIndex: 1
}

המשלוח שהושמט לא תואם לכל הרכבים. הסיבות עשויות להיות שונות בכל רכב, אבל תהיה חריגה ממכסת ה'תפוזים' לפחות ברכב אחד (כולל רכב 1), תהיה חריגה ממכסת ה'אגסים' לפחות ברכב אחד (כולל רכב 3) ותהיה חריגה ממגבלת המרחק לפחות ברכב אחד (כולל רכב 1).

ייצוג ב-JSON
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
שדות
code

enum (Code)

אפשר לעיין בהערות של Code.

exampleVehicleIndices[]

integer

זהה ל-exampleVehicleIndex, מלבד העובדה שאנחנו מספקים רשימה של כמה כלי רכב מזוהים. הרשימה הזו לא בהכרח מקיפה. השדה הזה מתמלא רק אם הערך של [fill_example_vehicle_indices_in_skipped_reasons][] הוא True.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

exampleExceededCapacityType

string

אם קוד הסיבה הוא DEMAND_EXCEEDS_VEHICLE_CAPACITY, המסמך מתעד סוג אחד של קיבולת שחורגת מהמכסה.

exampleVehicleIndex

integer

אם הסיבה קשורה לכך שהרכב לא מתאים לשליחה, בשדה הזה יצוין המדד של רכב רלוונטי אחד.

קוד

קוד שמזהה את סוג הסיבה. הסדר כאן לא רלוונטי. באופן ספציפי, אין אינדיקציה אם סיבה מסוימת תופיע לפני סיבה אחרת בפתרון, אם שתיהן רלוונטיות.

טיפוסים בני מנייה (enum)
CODE_UNSPECIFIED אין להשתמש באפשרות הזו אף פעם.
NO_VEHICLE אין כלי רכב במודל, ולכן אי אפשר לבצע את כל המשלוחים.
DEMAND_EXCEEDS_VEHICLE_CAPACITY הביקוש להובלה חורג מהקיבולת של הרכב בחלק מסוגי הקיבולת, אחד מהם הוא exampleExceededCapacityType.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

המרחק המינימלי הנדרש לביצוע המשלוח הזה, כלומר מה-startLocation של הרכב למיקומי האיסוף ו/או המסירה של המשלוח ולמיקום הסופי של הרכב, חורג מ-routeDistanceLimit של הרכב.

שימו לב שבחישוב הזה אנחנו משתמשים במרחקים הגיאודזיים.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

הזמן המינימלי הנדרש לביצוע המשלוח הזה, כולל זמן הנסיעה, זמן ההמתנה וזמן הטיפול, חורג מ-routeDurationLimit של הרכב.

הערה: זמן הנסיעה מחושב לפי התרחיש הטוב ביותר, כלומר המרחק הגיאודטי x 36 מ' לשנייה (כ-130 קמ' לשעה).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT כמו למעלה, אבל אנחנו משווים רק את זמן הנסיעה המינימלי ל-travelDurationLimit של הרכב.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS הרכב לא יכול לבצע את המשלוח הזה בתרחיש הטוב ביותר (לחישוב הזמן, אפשר לעיין בקטע CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT) אם הוא יתחיל בשעת ההתחלה המוקדמת ביותר שלו: הזמן הכולל יגרום לרכב לסיים את המסירה אחרי שעת הסיום המאוחרת ביותר שלו.
VEHICLE_NOT_ALLOWED השדה allowedVehicleIndices של המשלוח לא ריק והרכב הזה לא שייך אליו.
VEHICLE_IGNORED

השדה ignore של הרכב הוא true.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

SHIPMENT_IGNORED

השדה ignore של המשלוח מוגדר כ-true.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

המשלוח ינווט לחודש injectedSolutionConstraint.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

ההקלה על מסלול הרכב שצוינה ב-injectedSolutionConstraint לא מאפשרת להוסיף ביקור.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.

ZERO_PENALTY_COST

עלות העונש על המשלוח היא אפס. האפשרות הזו יכולה להיות שימושית כבחירה מתקדמת בבניית מודל, אבל היא גם יכולה להסביר למה משלוח עבר על פני משלוח אחר.

ניסיוני: ההתנהגות או הקיום של השדה הזה עשויים להשתנות בעתיד.