פתרון שהוזרק לבקשה, כולל מידע על הביקורים שצריך להגביל ואיך צריך להגביל אותם.
ייצוג ב-JSON |
---|
{ "routes": [ { object ( |
שדות | |
---|---|
routes[] |
המסלולים של הפתרון להזרקה. יכול להיות שחלק מהמסלולים יוסרו מהפתרון המקורי. המסלולים והמשלוחים שהושמטו חייבים לעמוד בהנחות הבסיסיות לגבי תקינות שמפורטות עבור |
skipped |
משלוחים של הפתרון להזרקה שקודמו. יכול להיות שחלק מהם לא ייכללו בפתרון המקורי. מידע נוסף מפורט בשדה |
constraint |
לקבוצות אפס או יותר של כלי רכב, מציין מתי ואיך להקל על האילוצים. אם השדה הזה ריק, כל מסלולי כלי הרכב שאינם ריקים מוגבלים לחלוטין. |
ConstraintRelaxation
עבור קבוצה של כלי רכב, מציינים את ערכי הסף שבהם ההגבלות על הביקורים יתרופפו ואת רמת ההרפיה. משלוחים שמפורטים בשדה skipped_shipment
מוגבלים לדילוג, כלומר אי אפשר לבצע אותם.
ייצוג ב-JSON |
---|
{
"relaxations": [
{
object ( |
שדות | |
---|---|
relaxations[] |
כל ההקלות על אילוצים של ביקורים שחלות על ביקורים במסלולים עם כלי רכב ב- |
vehicle |
מציין את אינדקסי כלי הרכב שאליהם חל האילוץ אם הערך של |
הירגעות
אם השדה 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 |
רמת ההרפיה של האילוצים שחלה כאשר התנאים מתקיימים ב- |
threshold |
המועד שבו ניתן להחיל את ההרפיה חותמת זמן בפורמט UTC 'Zulu' של RFC3339, עם רזולוציה של ננו-שנייה ועד תשע ספרות עשרוניות. דוגמאות: |
threshold |
מספר הביקורים שבהם ניתן להחיל את ההקלה אם הערך הוא |
רמה
מייצג את רמות ההרפיה השונות של האילוצים, שחלות על ביקור ועל הביקורים הבאים אחריו אם הוא עומד בתנאי הסף.
הרשימה הבאה מסודרת לפי רמת הרפיה גוברת.
טיפוסים בני מנייה (enum) | |
---|---|
LEVEL_UNSPECIFIED |
רמת ההרפיה המשתמעת שמוגדרת כברירת מחדל: לא מתבצעת הרפיה של אף אחת מהמגבלות, כלומר כל הביקורים מוגבלים באופן מלא. אסור להשתמש בערך הזה באופן מפורש ב- |
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 , אבל הרכב גם משוחרר: הביקורים הם בחינם לחלוטין אחרי מועד הסף או במועד הסף, ויכול להיות שהם לא יבוצעו. |