אינדקס
RouteOptimization
(ממשק)AggregatedMetrics
(הודעה)BatchOptimizeToursMetadata
(הודעה)BatchOptimizeToursRequest
(הודעה)BatchOptimizeToursRequest.AsyncModelConfig
(הודעה)BatchOptimizeToursResponse
(הודעה)BreakRule
(הודעה)BreakRule.BreakRequest
(הודעה)BreakRule.FrequencyConstraint
(הודעה)DataFormat
(טיפוס טיפוסים בני מנייה (enum))DistanceLimit
(הודעה)GcsDestination
(הודעה)GcsSource
(הודעה)InjectedSolutionConstraint
(הודעה)InjectedSolutionConstraint.ConstraintRelaxation
(הודעה)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(הודעה)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(טיפוס טיפוסים בני מנייה (enum))InputConfig
(הודעה)Location
(הודעה)OptimizeToursRequest
(הודעה)OptimizeToursRequest.SearchMode
(טיפוס טיפוסים בני מנייה (enum))OptimizeToursRequest.SolvingMode
(טיפוס טיפוסים בני מנייה (enum))OptimizeToursResponse
(הודעה)OptimizeToursResponse.Metrics
(הודעה)OptimizeToursValidationError
(הודעה)OptimizeToursValidationError.FieldReference
(הודעה)OutputConfig
(הודעה)RouteModifiers
(הודעה)Shipment
(הודעה)Shipment.Load
(הודעה)Shipment.VisitRequest
(הודעה)ShipmentModel
(הודעה)ShipmentModel.DurationDistanceMatrix
(הודעה)ShipmentModel.DurationDistanceMatrix.Row
(הודעה)ShipmentModel.PrecedenceRule
(הודעה)ShipmentRoute
(הודעה)ShipmentRoute.Break
(הודעה)ShipmentRoute.EncodedPolyline
(הודעה)ShipmentRoute.Transition
(הודעה)ShipmentRoute.VehicleLoad
(הודעה)ShipmentRoute.Visit
(הודעה)ShipmentTypeIncompatibility
(הודעה)ShipmentTypeIncompatibility.IncompatibilityMode
(enum)ShipmentTypeRequirement
(הודעה)ShipmentTypeRequirement.RequirementMode
(enum)SkippedShipment
(הודעה)SkippedShipment.Reason
(הודעה)SkippedShipment.Reason.Code
(טיפוס טיפוסים בני מנייה (enum))TimeWindow
(הודעה)TransitionAttributes
(הודעה)Vehicle
(הודעה)Vehicle.DurationLimit
(הודעה)Vehicle.LoadLimit
(הודעה)Vehicle.LoadLimit.Interval
(הודעה)Vehicle.TravelMode
(טיפוס טיפוסים בני מנייה (enum))Vehicle.UnloadingPolicy
(טיפוס טיפוסים בני מנייה (enum))Waypoint
(הודעה)
RouteOptimization
שירות לאופטימיזציה של סיורים ברכב.
תוקף של סוגי שדות מסוימים:
google.protobuf.Timestamp
- השעות הן לפי שעון יוניקס (Unix): שניות מ-1970-01-01T00:00:00+00:00.
- השניות חייבות להיות בטווח [0, 253402300799], כלומר בטווח [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- צריך לבטל את ההגדרה של nanos או להגדיר אותו כ-0.
google.protobuf.Duration
- שניות חייבות להיות בפורמט [0, 253402300799], כלומר ב-[1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- הערך של יחידות הננו צריך להיות לא מוגדר או מוגדר ל-0.
google.type.LatLng
- קו הרוחב חייב להיות ב- [-90.0, 90.0].
- קו האורך חייב להיות [-180.0, 180.0].
- לפחות אחד מהערכים של קו הרוחב או קו האורך חייב להיות שונה מאפס.
BatchOptimizeTours |
---|
אופטימיזציה של סיורים ברכב לפעולה אחת או יותר של השיטה הזו היא פעולה ממושכת (LRO). הקלט לצורך אופטימיזציה (הודעות המשתמש יכול לבצע דגימה של אם השדה אם השדה
|
OptimizeTours |
---|
הפונקציה שולחת מודל המטרה היא להקצות הקצאות של
|
AggregatedMetrics
מדדים נצברים של ShipmentRoute
(תגובה ל-OptimizeToursResponse
על כל רכיבי Transition
ו/או Visit
(resres, מעל כל ShipmentRoute
).
שדות | |
---|---|
performed_shipment_count |
מספר המשלוחים שבוצעו. לתשומת ליבכם: הצמדה של איסוף ומשלוח נספרת פעם אחת בלבד. |
travel_duration |
משך הנסיעה הכולל במסלול או בפתרון. |
wait_duration |
משך ההמתנה הכולל למסלול או לפתרון. |
delay_duration |
משך ההשהיה הכולל של מסלול או פתרון. |
break_duration |
משך ההפסקה הכולל במסלול או בפתרון. |
visit_duration |
משך הביקור הכולל במסלול או בפתרון. |
total_duration |
משך הזמן הכולל צריך להיות שווה לסכום של כל משכי הזמן שלמעלה. לגבי נתיבים, היא גם תואמת את:
|
travel_distance_meters |
המרחק הכולל של המסלול או הפתרון. |
max_loads |
העומס המקסימלי הושג לאורך המסלול כולו (פתרון רזולוציה), עבור כל אחת מהכמויות במסלול הזה (תמיסת תגובה), מחושב כמקסימום לכל |
BatchOptimizeToursMetadata
אין שדות בסוג הזה.
מטא-נתונים של פעולות עבור קריאות ל-BatchOptimizeToursRequest
.
BatchOptimizeToursRequest
בקשה לבצע אופטימיזציה באצווה של סיורים כפעולה אסינכרונית. כל קובץ קלט צריך להכיל OptimizeToursRequest
אחד, וכל קובץ פלט מכיל OptimizeToursResponse
אחד. הבקשה מכילה מידע לקריאה/כתיבה ולניתוח של הקבצים. כל קובצי הקלט והפלט צריכים להיות באותו פרויקט.
שדות | |
---|---|
parent |
חובה. צריך לטרגט את הפרויקט והמיקום כדי לבצע שיחה. פורמט: * אם לא תציינו מיקום, ייבחר אזור באופן אוטומטי. |
model_configs[] |
חובה. מידע על הקלט/פלט של כל מודל רכישה, כמו נתיבי קבצים ופורמטים של נתונים. |
AsyncModelConfig
מידע לפתרון של מודל אופטימיזציה אחד באופן אסינכרוני.
שדות | |
---|---|
display_name |
זה שינוי אופציונלי. שם מודל שהוגדר על ידי משתמש. המשתמשים יכולים להשתמש בו ככינוי כדי לעקוב אחרי מודלים. |
input_config |
חובה. מידע על מודל הקלט. |
output_config |
חובה. פרטי מיקום הפלט הרצוי. |
BatchOptimizeToursResponse
אין שדות בסוג הזה.
תשובה לBatchOptimizeToursRequest
. הערך הזה מוחזר בפעולה המתמשכת בסיום הפעולה.
BreakRule
כללים ליצירת הפסקות זמן לכלי רכב (למשל, הפסקות צהריים). הפסקה היא פרק זמן רציף, שבמהלכו הרכב לא פעיל במיקום הנוכחי ולא יכול לבצע ביקור באתר. הפסקה עשויה להתרחש:
- במהלך הנסיעה בין שני ביקורים (כולל את הזמן לפני או מיד אחרי הביקור, אבל לא באמצע הביקור), ובמקרה כזה הוא יאריך את זמן ההובלה התואם בין הביקורים.
- או לפני הפעלת הרכב (לא ניתן להפעיל את הרכב באמצע הפסקה), במקרה כזה הוא לא משפיע על מועד הפעלת הרכב.
- או אחרי סיום הנסיעה (כלומר, עם שעת הסיום של הרכב).
שדות | |
---|---|
break_requests[] |
רצף של הפסקות. הצגת ההודעה של |
frequency_constraints[] |
עשויים לחול כמה |
BreakRequest
צריך לדעת מראש את רצף ההפסקות (כלומר המספר והסדר שלהן) שחלות על כל רכב. הערכים החוזרים של BreakRequest
מגדירים את הרצף הזה, בסדר שבו הם חייבים להתרחש. חלונות הזמן שלהם (earliest_start_time
/ latest_start_time
) עשויים להיות חופפים, אבל הם צריכים להיות תואמים להזמנה (האפשרות הזו מסומנת).
שדות | |
---|---|
earliest_start_time |
חובה. הגבול התחתון (כולל) בתחילת ההפסקה. |
latest_start_time |
חובה. גבול עליון (כולל) בתחילת ההפסקה. |
min_duration |
חובה. משך זמן מינימלי להפסקה. חייב להיות חיובי. |
FrequencyConstraint
אפשר להגביל עוד יותר את התדירות ואת משך ההפסקות שצוינו למעלה, על ידי אכיפה של תדירות מינימלית של הפסקות, למשל "חייבת להיות הפסקה של שעה לפחות בכל 12 שעות". בהנחה שאפשר לפרש את המשפט הזה כ"בכל חלון זמן נע באורך 12 שעות, חייבת להיות הפסקה אחת לפחות באורך שעה אחת לפחות", הדוגמה הזו תועבר ל-FrequencyConstraint
הבא:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
התזמון ומשך הזמן של ההפסקות בפתרון יחולו על כל המגבלות האלה, בנוסף לחלונות הזמן ולמשכי הזמן המינימליים שצוינו ב-BreakRequest
.
בפועל, FrequencyConstraint
יכול לחול על הפסקות לא ברצף. לדוגמה, לוח הזמנים הבא חל על השעה 12:00 דוגמה:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
שדות | |
---|---|
min_break_duration |
חובה. משך ההפסקה המינימלי לאילוץ הזה. לא שלילי. הצגת התיאור של |
max_inter_break_duration |
חובה. פרק הזמן המקסימלי המותר בכל מרווח זמן במסלול שלא כולל לפחות הפסקה חלקית של |
DataFormat
פורמטים של נתונים לקובצי קלט ופלט.
טיפוסים בני מנייה (enum) | |
---|---|
DATA_FORMAT_UNSPECIFIED |
ערך לא חוקי. הפורמט לא יכול להיות UNSPECIFIED. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
פורמט טקסט של מאגרי פרוטוקולים. פרטים נוספים זמינים בכתובת https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
מגבלה שמגדירה מרחק מקסימלי שאפשר לעבור בו. היא יכולה להיות קשה או רכה.
אם מוגדרת מגבלת softmax, צריך להגדיר גם את soft_max_meters
וגם את cost_per_kilometer_above_soft_max
וגם לא להיות שליליים.
שדות | |
---|---|
max_meters |
מגבלה קשיחה שמגבילה את המרחק למקסימום_מטרים. המגבלה חייבת להיות לא שלילית. |
soft_max_meters |
הגבלה רכה שלא אוכפת מגבלה מרחק מקסימלית, אבל אם היא מופרת, היא גורמת לעלות שמתווספת לעלויות אחרות שהוגדרו במודל, באותה יחידה. אם ערך ה-soft_max_meters צריך להיות קטן מ-max_meters וחייב להיות לא שלילי. |
cost_per_kilometer_below_soft_max |
העלות לקילומטר במצטבר, עולה עד
עלות זו אינה נתמכת ב |
cost_per_kilometer_above_soft_max |
העלות לקילומטר תחויב אם המרחק חורג מהמגבלה
העלות חייבת להיות לא שלילית. |
GcsDestination
המיקום ב-Google Cloud Storage שאליו ייכתבו קובצי הפלט.
שדות | |
---|---|
uri |
חובה. URI של Google Cloud Storage. |
GcsSource
המיקום ב-Google Cloud Storage שממנו תתבצע הקראה של קובץ הקלט.
שדות | |
---|---|
uri |
חובה. URI של אובייקט Google Cloud Storage בפורמט |
InjectedSolutionConstraint
הפתרון שהוזן בבקשה, כולל מידע על הביקורים שחייבים להיות מוגבלים ועל האופן שבו צריך להגביל אותם.
שדות | |
---|---|
routes[] |
נתיבי התמיסה להחדרה. יכול להיות שחלק מהמסלולים יוסרו מהפתרון המקורי. המסלולים והמשלוחים שעליהם דילגת חייבים לעמוד בהנחות הבסיסיות לגבי התוקף שמפורטות עבור |
skipped_shipments[] |
משלוחים של הפתרון להזרקה שקודמו. יכול להיות שחלק מהפתרונות יושמטו מהפתרון המקורי. מידע נוסף מפורט בשדה |
constraint_relaxations[] |
עבור אפס קבוצות או יותר של כלי רכב, המאפיין הזה מציין מתי וכמה אפשר להנמיך את המגבלות. אם השדה הזה ריק, כל מסלולי כלי הרכב שאינם ריקים מוגבלים לחלוטין. |
ConstraintRelaxation
לגבי קבוצה של כלי רכב, המאפיין הזה מציין אם מגבלות הסף על הביקורים יהיו מחמירות יותר ובאיזו רמה. חובה לדלג על משלוחים שרשומים בשדה skipped_shipment
. כלומר, אי אפשר לבצע אותן.
שדות | |
---|---|
relaxations[] |
כל ההקלות במגבלות על ביקורים שיחולו על ביקורים במסלולים עם כלי רכב ב |
vehicle_indices[] |
מציין את אינדקסי כלי הרכב שאליהם חל האילוץ אינדקס רכבים ממופים באותו אופן כמו |
הירגעות
אם השדה relaxations
ריק, שעת ההתחלה והרצף של כל הביקורים ב-routes
מוגבלים לחלוטין, ולא ניתן להוסיף או להוסיף ביקורים חדשים למסלולים האלה. בנוסף, שעת ההתחלה ושעת הסיום של הרכב ב-routes
מוגבלות לחלוטין, אלא אם הרכב ריק (כלומר, אין לו ביקורים והערך של used_if_route_is_empty
מוגדר כ-false במודל).
relaxations(i).level
מציין את רמת ההרפיה של האילוצים שחלה על ביקור מס' j שעומד בדרישות הבאות:
route.visits(j).start_time >= relaxations(i).threshold_time
וגםj + 1 >= relaxations(i).threshold_visit_count
באופן דומה, התנעה של הרכב תרד ל-relaxations(i).level
אם היא עומדת בתנאים הבאים:
vehicle_start_time >= relaxations(i).threshold_time
וגםrelaxations(i).threshold_visit_count == 0
וסיום הרכב תקפים לערךrelaxations(i).level
אם הוא עומד בתנאים:vehicle_end_time >= relaxations(i).threshold_time
וגםroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
כדי להחיל רמת הרגיעה אם ביקור עומד בקריטריונים של threshold_visit_count
או threshold_time
, מוסיפים שני relaxations
עם אותו level
: אחת עם הגדרות של threshold_visit_count
בלבד והשנייה עם הגדרה של threshold_time
בלבד. אם ביקור עומד בתנאים של כמה relaxations
, תחול הרמה הרגועה ביותר. כתוצאה מכך, רמת הרגיעה לא פוחתת ככל שהמסלול מתקדם יותר, כך שרמת הרגיעה תהיה רגועה יותר, מהתחלת הרכב דרך הביקורים במסלול ועד לסיום הנסיעה.
התזמון והרצף של ביקורים במסלול שלא עומדים בתנאי הסף של אף relaxations
מוגבלים לחלוטין, ואי אפשר להוסיף ביקורים לרצפים האלה. כמו כן, אם הרכב מועד ההתנעה או הסיום של הרכב לא עומד בתנאים של הקלה כלשהי, משך הזמן קבוע, אלא אם הרכב ריק.
שדות | |
---|---|
level |
רמת הרגיעה של האילוץ שחלה כשהתנאים בתנאים |
threshold_time |
השעה שבה או אחריה ניתן להחיל את ההקלות |
threshold_visit_count |
מספר הביקורים שבהם ניתן להחיל את ההקלה אם הערך הוא |
רמה
העמודה הזו מגדירה את רמות ההקלות במגבלות השונות, שחלות על ביקור ואחר כך אחרי שהוא עומד בתנאי הסף.
הספירה הבאה מסודרת לפי סדר הגברת הרגיעה.
טיפוסים בני מנייה (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 , אבל הרכב גם משוחרר: הביקורים הם בחינם לחלוטין אחרי מועד הסף או במועד הסף, ויכול להיות שהם לא יבוצעו. |
InputConfig
מציינים קלט עבור [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
שדות | |
---|---|
data_format |
חובה. הפורמט של נתוני הקלט. |
שדה האיחוד source . חובה. source יכול להיות רק אחת מהאפשרויות הבאות: |
|
gcs_source |
מיקום ב-Google Cloud Storage. זה חייב להיות אובייקט (קובץ) יחיד. |
מיקום
עטיפה של מיקום (נקודה גיאוגרפית וכותרת אופציונלית).
שדות | |
---|---|
lat_lng |
הקואורדינטות הגיאוגרפיות של ציון הדרך. |
heading |
כותרת המצפן המשויכת לכיוון זרימת התנועה. הערך הזה משמש כדי לציין את צד הכביש שישמש לאיסוף ולהורדה. ערכי כותרות יכולים להיות בין 0 ל-360, כאשר 0 מציין את הכותרת לצפון, ו-90 מציין את הכותרת לצפון, וכן הלאה. |
OptimizeToursRequest
בקשה שניתנת לפתרון אופטימיזציה של סיורים, שמגדיר את מודל המשלוח שצריך לפתור, וגם פרמטרים של אופטימיזציה.
שדות | |
---|---|
parent |
חובה. צריך לטרגט את הפרויקט או את המיקום כדי להתקשר. פורמט: * אם לא תציינו מיקום, ייבחר אזור באופן אוטומטי. |
timeout |
אם מוגדר הזמן הקצוב הזה, השרת מחזיר תגובה לפני שחולף הזמן הקצוב לתפוגה או לפני המועד האחרון של השרת לבקשות סינכרוניות, המוקדם מביניהם. עבור בקשות אסינכרוניות, השרת ייצור פתרון (אם אפשר) לפני שיסתיים הזמן הקצוב לתפוגה. |
model |
מודל המשלוח שצריך לפתור. |
solving_mode |
כברירת מחדל, מצב הפתרון הוא |
search_mode |
מצב החיפוש ששימש לפתרון הבקשה. |
injected_first_solution_routes[] |
נדריך את אלגוריתם האופטימיזציה כדי למצוא פתרון ראשון שדומה לפתרון קודם. המודל מוגבל בזמן בניית הפתרון הראשון. בפתרון הראשון, המערכת תדלג באופן מרומז על משלוחים שלא מתבצעים במסלול מסוים, אבל אפשר לבצע אותם בפתרונות רצופים. הפתרון חייב לעמוד בכמה הנחות בסיסיות לגבי תוקף:
אם הפתרון שהוחדר לא בר-ביצוע, לא בהכרח תוחזר שגיאת אימות, וייתכן שתוחזר שגיאה שמציינת כי לא ניתן לבצע את הבדיקה. |
injected_solution_constraint |
להגביל את אלגוריתם האופטימיזציה כדי למצוא פתרון סופי שדומה לפתרון קודם. לדוגמה, אפשר להקפיא חלקים במסלולים שכבר הושלמו או שצריך להשלים אבל לא לשנות. אם הפתרון שהוחדר לא בר-ביצוע, לא בהכרח תוחזר שגיאת אימות, וייתכן שתוחזר שגיאה שמציינת כי לא ניתן לבצע את הבדיקה. |
refresh_details_routes[] |
אם הערך לא ריק, המסלולים הנתונים יעודכנו בלי לשנות את הרצף הבסיסי של הביקורים או זמני הנסיעה: רק פרטים אחרים יעודכנו. הפעולה הזו לא פותרת את המודל. החל מ-11/2020, השדה הזה משמש רק לאכלוס הקווים הפוליגוניים של מסלולים שאינם ריקים, ומחייב להזין את הערך יכול להיות ששדות אין להשתמש בשדה הזה יחד עם ל- |
interpret_injected_solutions_using_labels |
אם True:
הפרשנות הזו חלה על השדות אם True, התוויות בקטגוריות הבאות חייבות להופיע פעם אחת לכל היותר בקטגוריה שלהן:
אם הסרה של ביקורים במסלול או מסלולים שלמים מפתרון שהוחדר יכולה להיות השפעה על המגבלות המשתמעות. כתוצאה מכך, ייתכן שיהיו שינויים בפתרון, בשגיאות אימות או בחוסר היתכנות. הערה: מבצע הקריאה החוזרת צריך לוודא שכל |
consider_road_traffic |
כדאי להביא בחשבון אומדן תנועה בחישוב השדות של |
populate_polylines |
אם הערך הוא True, הקווים הפוליטיים יאוכלסו בתשובה |
populate_transition_polylines |
אם הערך הוא True, הקווים הפוליטיים יאוכלסו בתשובה |
allow_large_deadline_despite_interruption_risk |
אם היא מוגדרת, ייתכן שתאריך היעד של הבקשה יהיה עד 60 דקות (מידע נוסף זמין בכתובת https://grpc.io/blog/deadlines). אחרת, המועד האחרון המקסימלי הוא 30 דקות. חשוב לשים לב שלבקשות לטווח ארוך יש סיכון גבוה יותר באופן משמעותי (אבל עדיין קטן) להפרעה. |
use_geodesic_distances |
אם הערך הוא true, מרחקי הנסיעה יחושבו לפי מרחקים גיאודזיים במקום מרחקים במפות Google, וזמני הנסיעה יחושבו לפי מרחקים גיאודזיים עם מהירות שמוגדרת על ידי |
label |
תווית שיכולה לשמש לזיהוי הבקשה הזו, מדווחת ב- |
geodesic_meters_per_second |
אם הערך של |
max_validation_errors |
חיתוך מספר שגיאות האימות שמוחזרות. השגיאות האלה מצורפות בדרך כלל למטען ייעודי (payload) של שגיאה INVALID_ARGUMENT כפרטי שגיאה של BadRequest (https://cloud.google.com/apis/design/errors#error_details), אלא אם Solution_mode=VALIDATE_ONLY: יש לעיין בשדה |
SearchMode
מצב הקובע את התנהגות החיפוש, תוך השוואה בין זמן האחזור לבין איכות הפתרון. בכל המצבים, מועד ההגשה האחרון של הבקשה ברמת החשבון הארגוני נאכף.
טיפוסים בני מנייה (enum) | |
---|---|
SEARCH_MODE_UNSPECIFIED |
מצב חיפוש לא מוגדר, שווה ל-RETURN_FAST . |
RETURN_FAST |
מפסיקים את החיפוש אחרי שמוצאים את הפתרון הטוב הראשון. |
CONSUME_ALL_AVAILABLE_TIME |
כדאי להקדיש את כל הזמן הזמין לחיפוש פתרונות טובים יותר. |
SolvingMode
הגדרת האופן שבו הפתרון צריך לטפל בבקשה. בכל המצבים מלבד VALIDATE_ONLY
, אם הבקשה לא תקינה, תתקבל הודעת השגיאה INVALID_REQUEST
. אפשר להיעזר במאמר max_validation_errors
כדי להגביל את מספר השגיאות שיוחזרו.
טיפוסים בני מנייה (enum) | |
---|---|
DEFAULT_SOLVE |
פותרים את המודל. ייתכן שיהיו אזהרות בקטע [OptimizeToursResponse.Validation_errors][google.cloud.Optimization.v1.OptimizeToursResponse.Validation_errors]. |
VALIDATE_ONLY |
מאמת את המודל רק בלי לפתור את הבעיה: מתבצע אכלוס של כמה שיותר OptimizeToursResponse.validation_errors . |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
המערכת מאכלסת רק את חשוב: לא כל המשלוחים שאינם מעשיים מוחזרים כאן, אלא רק אלה שזוהו כלא מעשיים במהלך העיבוד מראש. |
OptimizeToursResponse
תגובה אחרי פתרון בעיה של אופטימיזציית סיור, שמכילה את המסלולים שאחריהם של כל רכב, את המשלוחים שדילגת עליהם והעלות הכוללת של הפתרון.
שדות | |
---|---|
routes[] |
מסלולים שחושבו לכל רכב. המסלול ה-i תואם לרכב ה-i במודל. |
request_label |
עותק של |
skipped_shipments[] |
רשימה של כל המשלוחים שנדחו. |
validation_errors[] |
רשימה של כל שגיאות האימות שהצלחנו לזהות באופן עצמאי. ראו 'שגיאות מרובות' הסבר להודעה ' |
metrics |
מדדי משך זמן, מרחק ושימוש של הפתרון הזה. |
מדדים
מדדים כלליים, שמצטברים מכל המסלולים.
שדות | |
---|---|
aggregated_route_metrics |
נתונים מצטברים לאורך המסלולים. כל מדד הוא הסכום (או המקסימלי, לטעינות) של כל |
skipped_mandatory_shipment_count |
מספר המשלוחים החובה שקודם להם עברה 'דילוג'. |
used_vehicle_count |
מספר כלי הרכב שבשימוש. הערה: אם מסלול הרכב ריק והערך של |
earliest_vehicle_start_time |
שעת ההתחלה המוקדמת ביותר של רכב משומש, מחושבת כערך המינימלי של |
latest_vehicle_end_time |
שעת הסיום האחרונה של כלי רכב משומש, מחושבת כמקסימום של |
costs |
עלות הפתרון, בחלוקה לפי שדות של בקשות שקשורים לעלויות. המפתחות הם נתיבי פרוטו, ביחס לקלט OptimizeToursRequest, למשל. model.shipments.pickups.cost (עלות). הערכים הם העלות הכוללת שנוצרה בשדה העלות התואם, שמצטברת בכל הפתרון. במילים אחרות, העלויות["model.shipments.pickups.cost"] הן הסכום של כל עלויות האיסוף במסגרת הפתרון. כל העלויות שמוגדרות במודל מדווחות כאן בפירוט, למעט עלויות שקשורות למאפייני מעבר, שמדווחות רק באופן מצטבר נכון ל-2022. |
total_cost |
העלות הכוללת של הפתרון. סכום כל הערכים במפת העלויות. |
OptimizeToursValidationError
מיועד לתיאור שגיאה או אזהרה שהתרחשה במהלך האימות של OptimizeToursRequest
.
שדות | |
---|---|
code |
שגיאת אימות מוגדרת על ידי הצמד ( שדות אחרים (בהמשך) מספקים הקשר נוסף לגבי השגיאה. מספר שגיאות: כשיש כמה שגיאות, תהליך האימות מנסה לייצר פלט של כמה מהן. בדומה למה שמתרחש במהלך הידור, זהו תהליך לא מושלם. חלק משגיאות האימות יהיו 'קריטיות', כלומר הן יעצרו את כל תהליך האימות. זה המצב, בין היתר, בשגיאות מסוג יציבות: קובץ עזר: רשימה של כל הצמדים (קוד, שם):
|
display_name |
השם המוצג של השגיאה. |
fields[] |
הקשר של שגיאה עשוי לכלול 0, 1 (ברוב המקרים) או יותר שדות. לדוגמה, אפשר להתייחס לרכב מס' 4 ולאיסוף הראשון של משלוח מס' 2 באופן הבא:
עם זאת, חשוב לזכור שהעוצמה של |
error_message |
מחרוזת לתיאור השגיאה, שאנשים יכולים לקרוא. יש מיפוי אחד-לאחד בין יציבות: לא יציבה: הודעת השגיאה שמשויכת ל- |
offending_values |
עשוי להכיל את הערכים של השדות. האפשרות הזו לא תמיד זמינה. בשום אופן לא כדאי להסתמך על התכונה הזו ולהשתמש בה רק לצורך ניפוי באגים באופן ידני. |
FieldReference
מציין את ההקשר לשגיאת האימות. השדה FieldReference
תמיד מתייחס לשדה נתון בקובץ הזה, והמבנה ההיררכי שלו זהה. לדוגמה, אפשר לציין את רכיב מס' 2 מתוך start_time_windows
של רכב 5 באמצעות:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
עם זאת, אנחנו משמיטים ישויות ברמה העליונה כמו OptimizeToursRequest
או ShipmentModel
כדי למנוע עומס בהודעה.
שדות | |
---|---|
name |
שם השדה, למשל "vehicles". |
sub_field |
שדה משנה בתצוגת עץ רפלקטיבית, אם יש צורך. |
שדה איחוד
|
|
index |
אינדקס השדה אם חוזר על עצמו. |
key |
מקישים אם השדה הוא מפה. |
OutputConfig
מציינים יעד לתוצאות של [BatchOptimizeTours][google.maps.route Optimize.v1.RouteOptimizationService.BatchOptimizeTours].
שדות | |
---|---|
data_format |
חובה. הפורמט של נתוני הפלט. |
שדה האיחוד destination . חובה. הערך של destination יכול להיות רק אחת מהאפשרויות הבאות: |
|
gcs_destination |
המיקום ב-Google Cloud Storage שבו צריך לכתוב את הפלט. |
RouteModifiers
כוללת קבוצה של תנאים אופציונליים שמתקיימים בחישוב מסלולים של רכבים. הערך הזה דומה ל-RouteModifiers
בממשק ה-API המועדף של Routes בפלטפורמה של מפות Google. מידע נוסף זמין בכתובת: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
שדות | |
---|---|
avoid_tolls |
ההגדרה קובעת אם להימנע מכבישי אגרה במקומות סבירים. תינתן עדיפות למסלולים שלא כוללים כבישי אגרה. רלוונטי רק למצבי נסיעה ממונעים. |
avoid_highways |
מציינת אם להימנע מכבישים מהירים במקרים סבירים. תינתן העדפה למסלולים שאינם מכילים כבישים מהירים. רלוונטי רק למצבי נסיעה ממונעים. |
avoid_ferries |
ההגדרה מציינת אם להימנע ממעבורות במקרים סבירים. תינתן עדיפות למסלולים שאינם כוללים נסיעות במעבורות. המאפיין הזה רלוונטי רק לאמצעי הגעה ממונעים. |
avoid_indoor |
זה שינוי אופציונלי. המדיניות מציינת אם להימנע מניווט בתוך מבנים במקרים סבירים. תינתן עדיפות למסלולים שאינם כוללים ניווט בתוך מבנים. רלוונטי רק למצב הנסיעה |
משלוח
המשלוח של פריט בודד, מאחד מהאיסוףים ועד לאחד מהמשלוחים. כדי שהמשלוח ייחשב כבוצע, הרכב הייחודי צריך לבקר באחד ממיקומי האיסוף שלו (ולצמצם את נפחי הקיבולת הפנויים שלו בהתאם) ולאחר מכן לבקר באחד ממיקומי המשלוח, וכך להגדיל מחדש את הקיבולת הפנויה שלו בהתאם.
שדות | |
---|---|
display_name |
השם המוצג של המשלוח כפי שהוגדר על ידי המשתמש. הוא יכול להכיל עד 63 תווים ויכול להשתמש בתווי UTF-8. |
pickups[] |
קבוצה של אפשרויות לאיסוף עצמיות שמשויכות למשלוח. אם לא מציינים זאת, הרכב צריך לבקר רק במיקום שתואם למסירה. |
deliveries[] |
קבוצה של אפשרויות משלוח חלופיות שקשורות למשלוח. אם לא מציינים זאת, הרכב צריך לבקר רק במיקום שתואם לאיסוף עצמי. |
load_demands |
דרישות הטעינה של המשלוח (למשל משקל, נפח, מספר משטחים וכו'). המפתחות במפה צריכים להיות מזהים שמתארים את סוג העומס המתאים, רצוי שגם יחד עם היחידות. לדוגמה: weight_kg, volume_gallons, pallet_count וכו'. אם מפתח נתון לא מופיע במפה, העומס התואם נחשב כ-null. |
allowed_vehicle_indices[] |
קבוצת כלי הרכב שיכולים לבצע את המשלוח הזה. אם היא ריקה, היא עשויה לפעול בכל כלי הרכב. הרכבים נכללים באינדקס שלהם ברשימה |
costs_per_vehicle[] |
העלות שנצברת כשהמשלוח הזה נמסר על ידי כל רכב. אם צוין, הוא צריך להכיל EITHER:
העלויות האלה חייבות להיות באותה יחידה של |
costs_per_vehicle_indices[] |
מדדים של כלי הרכב שעליהם חל |
pickup_to_delivery_absolute_detour_limit |
מציינת את זמן המעקף המוחלט המקסימלי בהשוואה לנתיב הקצר ביותר מהאיסוף ועד למשלוח. אם מציינים את הערך הזה, הערך לא יכול להיות שלילי, והמשלוח צריך לכלול לפחות אפשרויות איסוף ומשלוח. לדוגמה, צריך להזין את משך הזמן הקצר ביותר כדי לעבור מחלופה לאיסוף שנבחרה ישירות לחלופה שנבחרה. לאחר מכן, אם מגדירים אכיפה של
אם ציינתם מגבלות יחסיות ומגבלות מוחלטות על אותו משלוח, המערכת תשתמש במגבלה המגבילה יותר לכל צמד אפשרי של איסוף/מסירה. נכון ל-2017/10, אפשר להשתמש במעקפים רק כאשר משך הנסיעה לא תלוי בכלי רכב. |
pickup_to_delivery_time_limit |
מציינת את משך הזמן המקסימלי מתחילת האיסוף ועד תחילת המשלוח של משלוח. אם מציינים את הערך הזה, הערך לא יכול להיות שלילי, והמשלוח צריך לכלול לפחות אפשרויות איסוף ומשלוח. הזמן הזה לא תלוי בחלופות שנבחרו לאיסוף ולמשלוח, או במהירות הרכב. ניתן לציין זאת לצד מגבלות מקסימליות של עקיפה: הפתרון יתייחס לשני המפרטים. |
shipment_type |
מחרוזת שאינה ריקה שמציינת 'סוג' למשלוח הזה. אפשר להשתמש בתכונה הזו כדי להגדיר חוסר תאימות או דרישות בין שונה מ- |
label |
מציינת תווית למשלוח הזה. התווית הזו מדווחת בתשובה ב- |
ignore |
אם הערך הוא True, המערכת תדלג על המשלוח הזה, אבל לא תחיל אם מתעלמים ממשלוח, מוצגת שגיאת אימות אם יש במודל מותר להתעלם ממשלוח שמבוצע ב |
penalty_cost |
אם המשלוח לא הושלם, הקנס הזה יתווסף לעלות הכוללת של המסלולים. משלוח נחשב כבוצע אם מבקרים באחת מהחלופות שלו לאיסוף ולמשלוח. העלות עשויה לבוא לידי ביטוי באותה יחידה שמשמשת את כל השדות האחרים הקשורים לעלות במודל, והיא חייבת להיות חיובית. חשוב: אם העונש הזה לא צוין, הוא נחשב ללא הגבלה, כלומר חובה לסיים את המשלוח. |
pickup_to_delivery_relative_detour_limit |
מציינת את זמן המעקף היחסי המקסימלי בהשוואה לנתיב הקצר ביותר מהאיסוף ועד למשלוח. אם יצוין, הערך חייב להיות חיובי, והמשלוח חייב לכלול לפחות איסוף ומשלוח. לדוגמה, צריך להזין את משך הזמן הקצר ביותר כדי לעבור מחלופה לאיסוף שנבחרה ישירות לחלופה שנבחרה. לאחר מכן, אם מגדירים אכיפה של
אם ציינתם מגבלות יחסיות ומגבלות מוחלטות על אותו משלוח, המערכת תשתמש במגבלה המגבילה יותר לכל צמד אפשרי של איסוף/מסירה. החל מאוקטובר 2017, יש תמיכה במסלולי עקיפה רק כשמשך הנסיעה לא תלוי בסוג הרכב. |
טען
כשמבצעים ביקור, ייתכן שסכום מוגדר מראש יתווסף לעומס הרכב אם מדובר באיסוף, או בניכוי אם מדובר במסירה. בהודעה הזו מוגדר הסכום הזה. load_demands
.
שדות | |
---|---|
amount |
גובה העומס על הרכב שמבצע את הביקור התואם. מכיוון שזהו מספר שלם, אנחנו ממליצים למשתמשים לבחור יחידה מתאימה כדי למנוע אובדן דיוק. מספר זה חייב להיות 0 ומעלה. |
VisitRequest
בקשת ביקור יכולה להתבצע על ידי רכב: יש מיקום גיאוגרפי (או שניים, מידע נוסף, ראו בהמשך). שעות הפתיחה והסגירה מיוצגות על ידי חלונות זמן ומשך השירות (משך הזמן שהרכב צריך להגיע לאיסוף או להורדה).
שדות | |
---|---|
arrival_location |
המיקום הגיאוגרפי שאליו הרכב מגיע במהלך ביצוע |
arrival_waypoint |
ציון הדרך שאליו הרכב מגיע במהלך ביצוע |
departure_location |
המיקום הגיאוגרפי שבו הרכב יוצא אחרי השלמת ה |
departure_waypoint |
ציון הדרך שאליו הרכב יוצא אחרי השלמת |
tags[] |
מציינת תגים שמצורפים לבקשת הביקור. אסור להזין מחרוזות ריקות או כפולות. |
time_windows[] |
חלונות זמן שמגבילים את שעת ההגעה לביקור הערה: יכול להיות שהרכב ייצא מחוץ לחלון הזמן להגעה ליעד. כלומר שעת ההגעה ומשך הטיסה לא חייבים להיות בתוך חלון זמן. אם הרכב יגיע לפני כאשר חסר חלונות זמן חייבים להיות נפרדים, כלומר, חלון זמן לא יכול להיות חופף לחלון אחר או להיות סמוך אליו, וחלון הזמן צריך להופיע בסדר הולך וגדל. אפשר להגדיר את |
duration |
משך הביקור, כלומר, זמן השהייה ברכב בין ההגעה להמראה (המידע הזה יתווסף לזמן ההמתנה האפשרי; יש לעיין ב |
cost |
עלות השירות של בקשת הביקור הזו במסלול לרכב. כך אפשר לשלם עלויות שונות לכל אחת מהאפשרויות החלופיות לאיסוף או למשלוח של משלוח. העלות הזו חייבת להיות באותה יחידה של |
load_demands |
טעינת הדרישות של בקשת הביקור הזו. זה בדיוק כמו השדה |
visit_types[] |
מציין את סוגי הביקור. ייתכן שייעשה שימוש בהקצאת זמן נוסף שנדרש לרכב כדי להשלים את הביקור הזה (ראו סוג יכול להופיע רק פעם אחת. |
label |
מציינת תווית עבור |
ShipmentModel
מודל משלוח מכיל קבוצה של משלוחים שסט של כלי רכב צריכים לבצע, תוך צמצום העלות הכוללת, שהיא הסכום של:
- עלות הניתוב של כלי הרכב (סכום העלות הכוללת לזמן, העלות לזמן נסיעה ועלות קבועה של כל כלי הרכב).
- את הסנקציות על משלוח שלא בוצעו.
- העלות של משך הזמן הכולל של המשלוחים
שדות | |
---|---|
shipments[] |
קבוצת משלוחים שצריך לבצע במודל. |
vehicles[] |
קבוצת כלי רכב שיכולים לשמש לביצוע ביקורים. |
global_start_time |
זמני התחלה וסיום גלובליים של המודל: שעות מחוץ לטווח הזה לא יכולות להיחשב כחוקיות. טווח הזמן של המודל חייב להיות קצר משנה. כלומר, הטווח של כשמשתמשים בשדות |
global_end_time |
אם המדיניות לא מוגדרת, ייעשה שימוש ב-00:00:00 UTC , 1 בינואר 1971 (כלומר שניות: 31536000, ננו: 0) כברירת מחדל. |
global_duration_cost_per_hour |
את 'משך הזמן הגלובלי' של התוכנית הכוללת הוא ההבדל בין שעת ההתחלה המוקדמת ביותר לתוקף לבין שעת הסיום האחרונה האפקטיבית של כל כלי הרכב. לדוגמה, משתמשים יכולים להקצות עלות לשעה לכמות הזו, כדי לנסות לבצע אופטימיזציה להשגת היעד המוקדם ביותר. העלות הזו חייבת להיות באותה יחידה של |
duration_distance_matrices[] |
מציין את מטריצות משך הזמן והמרחקים שמשמשות במודל. אם השדה הזה ריק, המערכת תשתמש במרחקים גיאודזיים או במפות Google, בהתאם לערך בשדה דוגמאות לשימוש:
|
duration_distance_matrix_src_tags[] |
תגים המגדירים את המקורות של מטריצות משך הזמן והמרחק; התגים תואמים ל- |
duration_distance_matrix_dst_tags[] |
תגים המגדירים את היעדים של מטריצות משך הזמן והמרחק; התגים תואמים ל- |
transition_attributes[] |
מאפייני מעבר שנוספו למודל. |
shipment_type_incompatibilities[] |
קבוצות של סוגי משלוח לא תואמים (מידע נוסף זמין ב- |
shipment_type_requirements[] |
קבוצות של דרישות |
precedence_rules[] |
קבוצת כללים של קדימות שיש לאכיפה במודל. |
max_active_vehicles |
מגבילה את המספר המקסימלי של כלי רכב פעילים. רכב פעיל אם המסלול שלו מספק לפחות משלוח אחד. אפשר להשתמש באפשרות הזו כדי להגביל את מספר המסלולים במקרה שיש פחות נהגים מכלי רכב, ושצי כלי הרכב הם הטרוגני. לאחר מכן המערכת תבחר את קבוצת המשנה של כלי הרכב שהכי מתאימים. הערך חייב להיות חיובי באופן מוחלט. |
DurationDistanceMatrix
מציינת מטריצת משך הזמן והמרחק ממיקומי היעד ונקודות ההתחלה של הרכבים לביקור ובמיקומי היעד של הרכבים.
שדות | |
---|---|
rows[] |
מציינת את השורות של מטריצת משך הזמן והמרחק. הוא צריך לכלול מספר רכיבים כמו |
vehicle_start_tag |
תג שמגדיר לאילו כלי רכב חלה מטריצת משך הזמן והמרחק הזו. אם השדה ריק, הערך הזה חל על כל כלי הרכב, ויכול להיות שיש רק מטריצה אחת. כל התחלה של כלי רכב חייבת להתאים למטריצה אחת בלבד, כלומר, אחד מהשדות בכל המטריצות צריך להיות |
שורה
מציינת שורה של מטריצת משך הזמן והמרחק.
שדות | |
---|---|
durations[] |
ערכי משך הזמן של שורה נתונה. הוא צריך לכלול מספר רכיבים כמו |
meters[] |
ערכי מרחק בשורה נתונה. אם אין עלויות או מגבלות להתייחס למרחקים במודל, אפשר להשאיר את השדה הזה ריק. אחרת, הוא חייב לכלול כמה שיותר אלמנטים כמו |
PrecedenceRule
כלל קדימות בין שני אירועים (כל אירוע הוא איסוף או משלוח של משלוח): ה'שנייה' האירוע צריך להתחיל offset_duration
לפחות אחרי 'first' התחיל.
כמה קדימות יכולות להתייחס לאותם אירועים (או אירועים קשורים). למשל: "איסוף ב' מתבצע אחרי המסירה של" ו'איסוף C מתבצע אחרי איסוף של B'.
בנוסף, קדימות חלות רק כאשר מבצעים את שני המשלוחים ומתעלמים ממנה.
שדות | |
---|---|
first_is_delivery |
מציין אם האירוע הוא משלוח. |
second_is_delivery |
מציין אם האירוע הוא משלוח. |
offset_duration |
ההבדל בין ו'שנייה' אירוע. הערך יכול להיות שלילי. |
first_index |
אינדקס המשלוחים של הראשון אירוע. צריך לציין את השדה הזה. |
second_index |
אינדקס המשלוח של ה'שנייה' אירוע. צריך לציין את השדה הזה. |
ShipmentRoute
ניתן לפרק נתיב בכלי רכב, לאורך ציר הזמן, כך (אנחנו מניחים שיש n ביקורים):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
לתשומת ליבכם: אנחנו עושים הבדל בין:
- 'אירועים מדויקים', כמו תחילת הנסיעה וסיום הנסיעה ותחילת הביקור וסיום הביקור (כלומר הגעה ויציאה). הם מתרחשים בשנייה נתונה.
- 'מרווחי זמן', כמו הביקורים עצמם והמעבר בין הביקורים. לפעמים מרווחי הזמן יכולים להיות באורך אפס, כלומר להתחיל ולהסתיים באותה שנייה, אבל לרוב הם באורך חיובי.
Invariants:
- אם יש n ביקורים, יש n+1 מעברים.
- ביקור תמיד מוקף במעבר לפניו (באותו אינדקס) ובמעבר אחריו (האינדקס + 1).
- לאחר התנעת הרכב תמיד מופיע מעבר 0.
- תמיד מופיעה המעברה מס' n לפני סיום הרכב.
בהמשך, נסביר מה קורה במהלך Transition
ו-Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
לסיום, כך אפשר לארגן את TRAVEL, breakS, DELAY ו-WAIT במהלך מעבר.
- אין חפיפה ביניהם.
- משך העיכוב הוא ייחודי וחייב להיות פרק זמן רציף לפני הביקור הבא (או סיום הנסיעה). לכן, מספיק לדעת את משך העיכוב כדי לדעת את שעת ההתחלה והסיום שלו.
- קטעי ה-breakS הם רציפים ולא חופפים. התגובה מציינת את שעת ההתחלה ואת משך הזמן של כל הפסקה.
- TRAVEL ו-WAIT הם "ניתנים לחיזוי": אפשר להפריע להם כמה פעמים במהלך המעבר הזה. הלקוחות יכולים להניח שהנסיעות מתבצעות 'בהקדם האפשרי' ו"להמתין" ממלא את הזמן שנותר.
דוגמה (מורכב):
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
שדות | |
---|---|
vehicle_index |
הרכב שמבצע את המסלול, מזוהה לפי האינדקס שלו במקור |
vehicle_label |
תווית הרכב שמבצע את המסלול הזה, שווה ל- |
vehicle_start_time |
השעה שבה הרכב מתחיל את המסלול. |
vehicle_end_time |
השעה שבה הרכב מסיים את המסלול. |
visits[] |
רצף מסודר של ביקורים שמייצג מסלול. ביקורים[i] הוא הביקור ה-i במסלול. אם השדה הזה ריק, הרכב נחשב לא בשימוש. |
transitions[] |
רשימה ממוינת של מעברים במסלול. |
has_traffic_infeasibilities |
כשהערך של
ההגעה אל next_visit ככל הנראה תתרחש מאוחר יותר מחלון הזמן הנוכחי שלה, עקב אומדן זמן הנסיעה המוגדל |
route_polyline |
הייצוג המקודד של הנתיב באמצעות קו פוליגוני. השדה הזה יאוכלס רק אם המדיניות |
breaks[] |
נקבעו הפסקות זמניות בשירות של הרכב שמבצע את המסלול הזה. הרצף |
metrics |
מדדי משך הזמן, המרחק והעומס במסלול הזה. השדות של |
route_costs |
העלות של המסלול, לפי פירוט בשדות הבקשה שקשורים לעלויות. המפתחות הם נתיבי פרוטו, ביחס לקלט OptimizeToursRequest, למשל. 'model.shipments.pickups.cost', והערכים שם הם העלות הכוללת שנוצרה על ידי שדה העלות התואם, שמצטברת לאורך כל המסלול. במילים אחרות, העלויות["model.shipments.pickups.cost"] הן הסכום של כל עלויות האיסוף לאורך המסלול. כל העלויות שמוגדרות במודל מדווחות כאן בפירוט, למעט עלויות שקשורות למאפייני מעבר, שמדווחות רק באופן מצטבר נכון ל-2022. |
route_total_cost |
העלות הכוללת של המסלול. הסכום של כל העלויות במפת העלויות. |
הפסקה
נתונים שמייצגים הפעלה של הפסקה.
שדות | |
---|---|
start_time |
שעת ההתחלה של ההפסקה. |
duration |
משך ההפסקה. |
EncodedPolyline
הייצוג המקודד של קו פוליגוני. מידע נוסף על קידוד קו פוליגוני זמין כאן: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
שדות | |
---|---|
points |
מחרוזת שמייצגת נקודות מקודדות של הקו הפוליגוני. |
מעבר
מעבר בין שני אירועים במסלול. הצגת התיאור של ShipmentRoute
.
אם אין ברכב start_location
או end_location
, מדדי הנסיעה התואמים הם 0.
שדות | |
---|---|
travel_duration |
משך הנסיעה במהלך המעבר. |
travel_distance_meters |
המרחק שעברתם במהלך המעבר. |
traffic_info_unavailable |
כשמבקשים מידע על תנועה דרך |
delay_duration |
סיכום משך הזמן של ההשהיה שמוחל על המעבר הזה. אם בכלל, העיכוב יתחיל בדיוק |
break_duration |
סכום משך ההפסקות שהתרחשו במהלך המעבר הזה, אם היו כאלה. פרטים על שעת ההתחלה של כל הפסקה ועל משך הזמן שלה נשמרים ב |
wait_duration |
הזמן שהוקדש להמתנה במהלך המעבר. משך ההמתנה תואם לזמן ההמתנה ללא פעילות, ולא כולל את זמן ההפסקה. כמו כן, חשוב לזכור שזמן ההמתנה הזה עשוי להיות מפוצל לכמה פרקי זמן לא רציפים. |
total_duration |
משך הזמן הכולל של המעבר, מטעמי נוחות. הוא שווה ל-:
|
start_time |
שעת ההתחלה של המעבר. |
route_polyline |
הייצוג המקודד של המסלול המקודד במהלך המעבר. השדה הזה יאוכלס רק אם המדיניות |
vehicle_loads |
עומסי הרכב במהלך המעבר הזה, לכל סוג שמופיע ב- הטעינות במעבר הראשון הם הטעינות הראשוניות במסלול הרכב. לאחר כל ביקור, המערכת מוסיפה או מחסרת את ערך ה- |
VehicleLoad
מדווח על העומס בפועל של הרכב בשלב כלשהו לאורך המסלול, לסוג נתון (מידע נוסף זמין בTransition.vehicle_loads
).
שדות | |
---|---|
amount |
כמות העומס על הרכב, עבור הסוג הנתון. יחידת העומס מוצגת בדרך כלל לפי הסוג. |
כניסה
ביקור שבוצע במהלך מסלול. הביקור הזה תואם לאיסוף או למשלוח של Shipment
.
שדות | |
---|---|
shipment_index |
אינדקס השדה |
is_pickup |
אם הערך הוא True, הביקור תואם לאיסוף של |
visit_request_index |
אינדקס של |
start_time |
השעה שבה מתחיל הביקור. לתשומת ליבכם: יכול להיות שהרכב יגיע במועד מוקדם יותר במיקום הביקור. הזמנים תואמים ל- |
load_demands |
הביקוש הכולל לעומס על הביקורים כסכום המשלוח ובקשת הביקור |
detour |
זמן נוסף למעקף בגלל הביקורים במסלול לפני הביקור וזמני ההמתנה הפוטנציאליים כתוצאה מחלונות הזמן. אם הביקור הוא משלוח, המעקף מחושב מהביקור המתאים באיסוף עצמי והוא שווה ל:
אחרת, הוא מחושב מהרכב
|
shipment_label |
עותק של |
visit_label |
עותק של |
ShipmentTypeIncompatibility
מציינת חוסר תאימות בין משלוחים בהתאם לסוג המשלוח שלהם. ההצגה של משלוחים לא תואמים באותו מסלול מוגבלת בהתאם למצב חוסר התאימות.
שדות | |
---|---|
types[] |
רשימת סוגים לא תואמים. שני משלוחים עם |
incompatibility_mode |
המצב הוחל על חוסר התאימות. |
IncompatibilityMode
מצבים שמגדירים את האופן שבו משלוחים לא תואמים מוגבלים לאותו מסלול.
טיפוסים בני מנייה (enum) | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
מצב חוסר תאימות לא צוין. אין להשתמש בערך הזה אף פעם. |
NOT_PERFORMED_BY_SAME_VEHICLE |
במצב הזה, אף פעם לא ניתן לשתף את אותו רכב בין שתי משלוחים עם סוגים לא תואמים. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
לשני משלוחים שאינם תואמים למצב חוסר התאימות של
|
ShipmentTypeRequirement
מציינת את הדרישות בין משלוחים על סמך סוג המשלוח שלהם. הפרטים הספציפיים של הדרישה מוגדרים על ידי מצב הדרישה.
שדות | |
---|---|
required_shipment_type_alternatives[] |
רשימה של סוגי משלוחים חלופיים הנדרשים על ידי |
dependent_shipment_types[] |
לכל משלוחים מסוג מסוים בשדה הערה: אסור להשתמש בשרשראות של דרישות כמו |
requirement_mode |
המצב שחלה על הדרישה. |
RequirementMode
מצבים שמגדירים את המראה של משלוחים תלויים במסלול.
טיפוסים בני מנייה (enum) | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
מצב דרישה לא מוגדר. אין להשתמש בערך הזה אף פעם. |
PERFORMED_BY_SAME_VEHICLE |
במצב זה, כל הפריטים ה"תלויים" משלוחים צריכים לחלוק את אותו רכב כמו אחד לפחות מהשדות "חובה" משלוחים. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
במצב לכן, לאיסוף משלוח 'תלוי' צריך להיות:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
כמו קודם, מלבד העמודה "תלויה" משלוחים צריכים לכלול את הערך 'חובה' משלוח לרכב שלהם בזמן המסירה. |
SkippedShipment
מציינת פרטים של משלוחים שלא בוצעו בפתרון. במקרים טריוויאליים ו/או אם אנחנו יכולים לזהות את הסיבה לדילוג, אנחנו מדווחים על הסיבה כאן.
שדות | |
---|---|
index |
האינדקס תואם למדד המשלוח במקור |
label |
עותק של |
reasons[] |
רשימת סיבות שמסבירות למה בוצע דילוג על המשלוח. הצגת התגובה מעל |
סיבה
אם יש לך אפשרות להסביר למה המשלוח דילג על המשלוח, הסיבות לכך יפורטו כאן. אם הסיבה לא זהה בכל כלי הרכב, יוצג ברכיב reason
יותר מרכיב אחד. משלוח שדילגת עליו לא יכול לכלול סיבות כפולות, כלומר כאשר כל השדות זהים מלבד example_vehicle_index
. דוגמה:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
המשלוח שהושמט לא תואם לכל הרכבים. הסיבות עשויות להיות שונות בכל רכב, אבל תהיה חריגה ממכסת ה'תפוזים' לפחות ברכב אחד (כולל רכב 1), תהיה חריגה ממכסת ה'אגסים' לפחות ברכב אחד (כולל רכב 3) ותהיה חריגה ממגבלת המרחק לפחות ברכב אחד (כולל רכב 1).
שדות | |
---|---|
code |
יש לעיין בהערות של הקוד. |
example_exceeded_capacity_type |
אם קוד הסיבה הוא |
example_vehicle_index |
אם הסיבה קשורה לאי-תאימות של רכב למשלוח, בשדה הזה יופיע האינדקס של כלי רכב רלוונטי אחד. |
קוד
קוד לזיהוי סוג הסיבה. הסדר כאן הוא חסר משמעות. באופן ספציפי, לא מצוין אם סיבה מסוימת תופיע לפני סיבה אחרת בפתרון, אם שתיהן רלוונטיות.
טיפוסים בני מנייה (enum) | |
---|---|
CODE_UNSPECIFIED |
אין להשתמש באפשרות הזו. |
NO_VEHICLE |
אין רכב במודל שלא מאפשר משלוחים מעשיים. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
הביקוש להובלה חורג מהקיבולת של הרכב בחלק מסוגי הקיבולת, אחד מהם הוא example_exceeded_capacity_type . |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
המרחק המינימלי הדרוש לביצוע המשלוח הזה, כלומר, מ שימו לב שבחישוב הזה אנחנו משתמשים במרחקים הגאודזיים. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
הזמן המינימלי שדרוש לביצוע המשלוח הזה, כולל זמן הנסיעה, זמן ההמתנה וזמן השירות, חורג מ הערה: זמן ההגעה מחושב במקרה הטוב ביותר, כלומר המרחק הגאודזי x 36 מטר לשנייה (בערך 130 ק"מ לשעה). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
כמו שצוין למעלה, אבל אנחנו משווים רק בין זמן נסיעה מינימלי לבין travel_duration_limit של הרכב. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
במקרה הטוב ביותר, הרכב לא יכול לבצע את המשלוח הזה (צריך לעיין ב-CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT לחישוב הזמן) אם הוא מתחיל בשעת ההתחלה המוקדמת ביותר: הזמן הכולל יסתיים אחרי שעת הסיום האחרונה של הרכב. |
VEHICLE_NOT_ALLOWED |
השדה allowed_vehicle_indices במשלוח לא ריק והרכב הזה לא שייך אליו. |
TimeWindow
חלונות הזמן מגבילים את מועדי האירוע, כמו שעת ההגעה לביקור או שעות ההתחלה והסיום של הרכב.
גבולות קשיחים של חלון הזמן, start_time
ו-end_time
, אוכפים את השעה המוקדמת ביותר ואת השעה המאוחרת ביותר של האירוע, כך ש-start_time <= event_time <=
end_time
. הערך התחתון של חלון הזמן הרך, soft_start_time
, מבטא העדפה שהאירוע יתרחש ב-soft_start_time
או אחריו, על ידי חיוב בעלות שפרופורציונלית לזמן שחולף לפני soft_start_time עד שהאירוע מתרחש. הגבול העליון של חלון הזמן הרך, soft_end_time
, מבטא העדפה שהאירוע יתרחש בתאריך soft_end_time
או לפניו, על ידי צבירת עלות ביחס למשך הזמן אחרי האירוע soft_end_time
. start_time
, end_time
, soft_start_time
ו-soft_end_time
צריכים לעמוד במגבלות הזמן הגלובליות (ראו ShipmentModel.global_start_time
ו-ShipmentModel.global_end_time
) ועליהם לציית:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
שדות | |
---|---|
start_time |
שעת ההתחלה של החלון הקופץ. אם לא צוין ערך, הוא יוגדר כ- |
end_time |
שעת הסיום של החלון הקופץ. אם לא צוין אחרת, הערך יוגדר ל- |
soft_start_time |
שעת ההתחלה הרכה של חלון הזמן. |
soft_end_time |
שעת הסיום הרכה של חלון הזמן. |
cost_per_hour_before_soft_start_time |
עלות לשעה שתתווסף לעלויות אחרות במודל אם האירוע מתרחש לפני soft_start_time, שמחושבת כך:
העלות הזו חייבת להיות חיובית, וניתן להגדיר את השדה רק אם הגדרתם את soft_start_time. |
cost_per_hour_after_soft_end_time |
עלות לשעה שתתווסף לעלויות אחרות במודל אם האירוע מתרחש אחרי
העלות הזו חייבת להיות מספר חיובי, ואפשר להגדיר את השדה רק אם הוגדר הערך |
TransitionAttributes
מציין מאפיינים של מעברים בין שני ביקורים רצופים במסלול. כמה TransitionAttributes
עשויים לחול על אותו מעבר: במקרה כזה, כל העלויות הנוספות מצטברות, והאילוץ או המגבלה המחמירים ביותר חלים (לפי הסמנטיקה הטבעית "AND").
שדות | |
---|---|
src_tag |
תגים שמגדירים את קבוצת המעברים (src->dst) שעליהם המאפיינים האלה חלים. ביקור במקור או התחלת רכב תואמים אם ה- |
excluded_src_tag |
|
dst_tag |
ביקור ביעד או סיום רכב תואמים אם ה- |
excluded_dst_tag |
|
cost |
מציינת עלות לביצוע המעבר הזה. הערך הזה הוא באותה יחידה כמו כל העלויות האחרות במודל, והוא לא יכול להיות שלילי. הוא מוחל בנוסף לכל העלויות הקיימות. |
cost_per_kilometer |
מציינת עלות לקילומטר שחלה על מרחק הנסיעה בזמן ביצוע המעבר. הוא מסתכם בערך כל |
distance_limit |
מציין מגבלה על המרחק שנסע במהלך המעבר הזה. נכון ל-2021/06, אפשר להשתמש רק במגבלות רכות. |
delay |
הערך הזה מציין את העיכוב שנוצר במהלך המעבר הזה. העיכוב הזה מתרחש תמיד אחרי סיום הביקור במקור ולפני ההתחלה של הביקור ביעד. |
כלי רכב
מודל של רכב בבעיה במשלוח. כדי לפתור בעיית משלוח, המערכת תיצור מסלול החל מ-start_location
ומסתיים ב-end_location
לרכב הזה. מסלול הוא רצף של ביקורים (מידע נוסף זמין במאמר ShipmentRoute
).
שדות | |
---|---|
display_name |
השם המוצג של הרכב, כפי שהמשתמש הגדיר. הוא יכול להכיל עד 63 תווים ויכול להשתמש בתווי UTF-8. |
travel_mode |
מצב הנסיעה שמשפיע על הדרכים שבהן הרכב יכול להשתמש ועל המהירות שלו. מידע נוסף זמין במאמר |
route_modifiers |
קבוצה של תנאים שמשפיעים על אופן החישוב של המסלולים ברכב הנתון. |
start_location |
מיקום גיאוגרפי שבו הרכב מתחיל לפני איסוף משלוחים. אם לא מציינים זאת, הרכב יתחיל באיסוף הראשון. אם למודל המשלוח יש מטריצות של משך זמן ומרחק, אסור לציין את |
start_waypoint |
נקודת ציון שמייצגת מיקום גיאוגרפי שבו הרכב מתחיל לפעול לפני איסוף המשלוחים. אם לא ציינת |
end_location |
מיקום גיאוגרפי שבו הרכב מסתיים אחרי שהסתיים |
end_waypoint |
נקודת ציון שמייצגת מיקום גיאוגרפי שבו הרכב מסתיים אחרי שהסתיים |
start_tags[] |
מציינת תגים שמצורפים לתחילת המסלול של הרכב. אסור להזין מחרוזות ריקות או כפולות. |
end_tags[] |
מציינת תגים שמחוברים לסוף המסלול של הרכב. אסור להזין מחרוזות ריקות או כפולות. |
start_time_windows[] |
חלונות זמן שבהם הרכב עשוי לצאת ממיקום ההתחלה. הם חייבים להיות במסגרת מגבלות הזמן הגלובליות (עיינו בשדות חלונות זמן ששייכים לאותו שדה חוזר חייבים להיות נפרדים, כלומר אף חלון זמן לא יכול להיות חופף לחלון זמן אחר או להיות צמוד אליו, והם חייבים להיות בסדר כרונולוגי. אפשר להגדיר את |
end_time_windows[] |
חלונות זמן שבמהלכם הרכב עשוי להגיע למיקום הסיום שלו. הם חייבים להיות במסגרת מגבלות הזמן הגלובליות (עיינו בשדות חלונות זמן ששייכים לאותו שדה חוזר חייבים להיות נפרדים, כלומר אף חלון זמן לא יכול להיות חופף לחלון זמן אחר או להיות צמוד אליו, והם חייבים להיות בסדר כרונולוגי. אפשר להגדיר את |
unloading_policy |
מדיניות פריקה שחלה על הרכב. |
load_limits |
הקיבולת של הרכב (משקל, נפח, מספר המשטחים, למשל). המפתחות במפה הם המזהים של סוג הטעינה, בהתאם למפתחות בשדה |
cost_per_hour |
עלויות הרכב: כל העלויות מצטברות וחייבות להיות באותה יחידה של עלות לשעה של מסלול הרכב. העלות הזו חלה על הזמן הכולל במסלול, והיא כוללת את זמן הנסיעה, זמן ההמתנה וזמן הביקור. שימוש ב- |
cost_per_traveled_hour |
עלות לשעה של נסיעה במסלול הרכב. העלות הזו חלה רק על זמן הנסיעה במסלול (כלומר, הזמן שמדווח ב- |
cost_per_kilometer |
העלות לקילומטר במסלול הרכב. העלות הזו חלה על המרחק שדווח ב |
fixed_cost |
החלה של עלות קבועה אם הרכב הזה משמש לטיפול במשלוח. |
used_if_route_is_empty |
השדה הזה רלוונטי רק לכלי רכב כשהמסלול שלהם לא משמש למשלוח חבילות. במקרה הזה, המערכת מציינת אם הרכב נחשב כמשומש או לא. אם הערך הוא true, הרכב עובר ממיקום ההתחלה למיקום הסיום גם אם הוא לא משמש למשלוח חבילות, והעלויות של הזמן והמרחק שנובעות מהנסיעה מהתחלה לסיום נלקחות בחשבון. אחרת, היא לא נוסעת מנקודת ההתחלה ועד למיקום הסיום שלה, ולא תוזמנו |
route_duration_limit |
המגבלה חלה על משך הזמן הכולל של מסלול הרכב. ב |
travel_duration_limit |
המגבלה חלה על משך הנסיעה במסלול של הרכב. ב- |
route_distance_limit |
המגבלה חלה על המרחק הכולל של מסלול הרכב. ב |
extra_visit_duration_for_visit_type |
מציין מפה ממחרוזות מסוג visit_types ועד לטווחי הזמן. משך הזמן הוא זמן בנוסף ל- אם לבקשת ביקור יש כמה סוגים, יופיע משך זמן לכל סוג במפה. |
break_rule |
מיועד לתיאור לוח הזמנים של ההפסקות לאכיפה ברכב הזה. אם השדה ריק, לא ייקבעו הפסקות לרכב הזה. |
label |
מציינת תווית לרכב הזה. התווית הזו מדווחת בתשובה כ- |
ignore |
אם הערך הוא true, הערך של אם המשלוח מתבצע על ידי רכב שנדחה ב- אם משלוח מבוצע על ידי כלי רכב שהמערכת מתעלמת ממנו בתוך |
travel_duration_multiple |
מציינת גורם הכפלה שיכול להאריך או לקצר את זמני הנסיעה של הרכב הזה. לדוגמה, אם קובעים את הערך 2.0, הרכב הזה איטי יותר וזמני הנסיעה בו גדולים פי שניים מאשר ברכבים רגילים. המכפיל הזה לא משפיע על משכי הביקורים. זה משפיע על העלות אם מציינים אזהרה: זמני הנסיעה יעוגלו לשנייה הקרובה ביותר לאחר החלת הכפולה הזו, אבל לפני ביצוע פעולות מספריות. לכן, כפולה קטנה עלולה לפגוע בדיוק. מידע נוסף זמין בקטע |
DurationLimit
מגבלה שמגדירה את משך הזמן המקסימלי של מסלול של כלי רכב. היא יכולה להיות קשה או רכה.
כשמוגדר שדה של גבול רך, יש להגדיר יחד גם את סף המינימום למקסימום וגם העלות המשויכת.
שדות | |
---|---|
max_duration |
מגבלה קשיחה שמגבילה את משך הזמן למקסימום של max_duration. |
soft_max_duration |
מגבלה רכה שלא אוכפת מגבלת משך זמן מקסימלית, אבל אם מופרת אותה, החיוב על המסלול יהיה כרוך בתשלום. העלות הזו מצטברת לעלות של רכיבים אחרים שמוגדרים במודל, באותה יחידה. אם מוגדר, |
quadratic_soft_max_duration |
מגבלה רכה שלא אוכפת מגבלה על משך הזמן המקסימלי, אבל אם היא מופרת, חלה על המסלול עלות של משך זמן ממעלה שנייה. העלות הזו מסוכמת לעלויות אחרות שמוגדרות במודל, עם אותה יחידה. אם
|
cost_per_hour_after_soft_max |
העלות לשעה שקיימת במקרה של הפרת הסף של
העלות חייבת להיות לא שלילית. |
cost_per_square_hour_after_quadratic_soft_max |
העלות לשעה רבועה שנצברת אם מפר את הסף העלות הנוספת היא 0 אם משך הזמן נמצא מתחת לסף, אחרת העלות תלויה במשך הזמן באופן הבא:
העלות חייבת להיות לא שלילית. |
LoadLimit
הגדרת מגבלת עומס שחלה על כלי רכב, לדוגמה "משאית כזו יכולה לשאת עד 3500 ק"ג". load_limits
.
שדות | |
---|---|
soft_max_load |
מגבלת עומס רכה. |
cost_per_unit_above_soft_max |
אם העומס בכל זאת יחרוג מ- |
start_load_interval |
מרווח העומס הקביל של הרכב בתחילת המסלול. |
end_load_interval |
מרווח העומס הקביל של הרכב בסוף המסלול. |
max_load |
עומס מקסימלי מקובל. |
מרווח
מרווח בין סכומי העומסים הקבילים.
שדות | |
---|---|
min |
עומס קביל מינימלי. הערך חייב להיות ≥ 0. אם מציינים את שניהם, הערך של |
max |
טעינה קבילה מקסימלית. מספר זה חייב להיות 0 ומעלה. אם לא צוין, ההודעה הזו לא תוכל להגביל את הטעינה המקסימלית. אם מציינים את שניהם, הערך של |
TravelMode
מצבי נסיעה לשימוש בכלי רכב.
אלה צריכות להיות קבוצת משנה של מצבי הנסיעה המועדפים ב-API של המסלולים בפלטפורמה של מפות Google, מידע נוסף זמין בכתובת: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
טיפוסים בני מנייה (enum) | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
מצב נסיעה לא מוגדר, שווה ערך ל-DRIVING . |
DRIVING |
מצב נסיעה התואם למסלול הנסיעה (מכונית, ...). |
WALKING |
מצב נסיעה שתואם למסלול הליכה. |
UnloadingPolicy
מדיניות לגבי האופן שבו ניתן להוריד כלי רכב. המאפיין חל רק על משלוחים שכוללים גם איסוף עצמי וגם משלוח.
משלוחים אחרים יכולים להתרחש בכל מקום במסלול, ללא קשר ל-unloading_policy
.
טיפוסים בני מנייה (enum) | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
מדיניות הסרת הנתונים שנטענו לא צוינה. והמשלוחים צריכים להתרחש רק אחרי האיסוף. |
LAST_IN_FIRST_OUT |
משלוחים צריכים להתרחש בסדר הפוך. |
FIRST_IN_FIRST_OUT |
המשלוחים צריכים להיות באותה הזמנה כמו באיסוף עצמי |
נקודת ציון
עטיפה של ציון דרך. נקודות ציון מציינות את מיקומי ההגעה והיציאה של VisitRequests, ואת מיקומי ההתחלה והסיום של כלי הרכב.
שדות | |
---|---|
side_of_road |
זה שינוי אופציונלי. מציין שהמיקום של נקודת הציון הזו מיועד להעדפה של כלי הרכב לעצור בצד מסוים של הכביש. כשמגדירים את הערך הזה, המסלול עובר דרך המיקום כדי שהרכב יוכל לעצור בצד הכביש שאליו נוטה המיקום ממרכז הכביש. האפשרות הזו לא פועלת עבור 'הליכה' במצב נסיעה. |
שדה איחוד location_type . דרכים שונות לייצוג מיקום. location_type יכול להיות רק אחת מהאפשרויות הבאות: |
|
location |
נקודה שמצוינת באמצעות קואורדינטות גיאוגרפיות, כולל כותרת אופציונלית. |
place_id |
מזהה המקום של נקודת העניין המשויך לציון הדרך. |