InjectedSolutionConstraint

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

ייצוג JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
שדות
routes[]

object (ShipmentRoute)

נתיבי התמיסה להחדרה. יכול להיות שחלק מהמסלולים יוסרו מהפתרון המקורי. המסלולים והמשלוחים שעליהם דילגת חייבים לעמוד בהנחות הבסיסיות לגבי התוקף שמפורטות עבור injectedFirstSolutionRoutes.

skippedShipments[]

object (SkippedShipment)

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

constraintRelaxations[]

object (ConstraintRelaxation)

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

ConstraintRelaxation

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

ייצוג JSON
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
שדות
relaxations[]

object (Relaxation)

כל ההקלות במגבלות על ביקורים שיחולו על ביקורים במסלולים עם כלי רכב בvehicleIndices.

vehicleIndices[]

integer

מציינת את מדדי הרכב שעליהם חל אילוץ הביקורים relaxations. אם השדה ריק, הערך הזה נחשב לברירת המחדל והמדיניות relaxations חלה על כל כלי הרכב שלא צוינו בconstraintRelaxations. יכולה להיות לכל היותר שדה ברירת מחדל אחד, כלומר, מותר שדה vehicleIndices ריק עבור שדה הרגיעה של אילוץ. אפשר לפרסם אינדקס רכבים פעם אחת בלבד, גם בתוך כמה constraintRelaxations.

אינדקס רכבים ממופים באותו אופן כמו ShipmentRoute.vehicle_index, אם interpretInjectedSolutionsUsingLabels נכון (יש לעיין בתגובה fields).

הירגעות

אם השדה relaxations ריק, שעת ההתחלה והרצף של כל הביקורים ב-routes מוגבלים לחלוטין, ולא ניתן להוסיף או להוסיף ביקורים חדשים למסלולים האלה. בנוסף, יש הגבלה מלאה על זמני ההתחלה והסיום של הרכב בroutes, אלא אם הרכב ריק (כלומר, אין ביקורים באתר ובמודל usedIfRouteIsEmpty מוגדר הערך False).

relaxations(i).level מציין את רמת הרגיעה של האילוץ שחלה על ביקור #j שעומד בקריטריונים:

  • route.visits(j).start_time >= relaxations(i).threshold_time וגם
  • j + 1 >= relaxations(i).threshold_visit_count

באופן דומה, התנעה של הרכב תרד ל-relaxations(i).level אם היא עומדת בתנאים הבאים:

  • vehicleStartTime >= relaxations(i).threshold_time וגם
  • relaxations(i).threshold_visit_count == 0 וסיום הרכב תקפים לערך relaxations(i).level אם הוא עומד בתנאים:
  • vehicleEndTime >= relaxations(i).threshold_time וגם
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

כדי להחיל רמת הרגיעה אם ביקור עומד בקריטריונים של thresholdVisitCount או thresholdTime, מוסיפים שני relaxations עם אותו level: אחת עם הגדרות של thresholdVisitCount בלבד והשנייה עם הגדרה של thresholdTime בלבד. אם ביקור עומד בתנאים של כמה relaxations, תחול הרמה הרגועה ביותר. כתוצאה מכך, רמת הרגיעה לא פוחתת ככל שהמסלול מתקדם יותר, כך שרמת הרגיעה תהיה רגועה יותר, מהתחלת הרכב דרך הביקורים במסלול ועד לסיום הנסיעה.

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

ייצוג JSON
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
שדות
level

enum (Level)

רמת הרגיעה של האילוץ שחלה כשהתנאים בתנאים thresholdTime או לאחר מכן, וגם thresholdVisitCount לפחות.

thresholdTime

string (Timestamp format)

השעה שבה או אחריה ניתן להחיל את ההקלות level.

חותמת זמן ב-RFC3339 UTC 'Zulu' בפורמט של רזולוציה של ננו-שנייה ועד תשע ספרות עשרוניות. דוגמאות: "2014-10-02T15:01:23Z" ו-"2014-10-02T15:01:23.045123456Z".

thresholdVisitCount

integer

מספר הביקורים שבהם או אחריהם ניתן להחיל את ההקלות level. אם הערך של thresholdVisitCount הוא 0 (או לא מוגדר), אפשר להחיל את level ישירות בתחילת הרכב.

אם הערך הוא route.visits_size() + 1, אפשר להחיל את level רק על קצה הרכב. אם המספר גדול מ-route.visits_size() + 1, המערכת לא תחיל את הערך level בכלל במסלול הזה.

רמה

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

הספירה הבאה מסודרת לפי סדר הגברת הרגיעה.

טיפוסים בני מנייה (enum)
LEVEL_UNSPECIFIED

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

אי אפשר להשתמש בערך הזה באופן מפורש ב-level.

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