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