مسیر یک وسیله نقلیه را می توان در امتداد محور زمانی تجزیه کرد (فرض می کنیم 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
توجه داشته باشید که ما بین:
- "رویدادهای وقت شناس"، مانند شروع و پایان وسیله نقلیه و شروع و پایان هر بازدید (معروف به ورود و خروج). آنها در یک ثانیه مشخص رخ می دهند.
- "فاصله های زمانی"، مانند خود بازدیدها، و انتقال بین بازدیدها. اگرچه فواصل زمانی گاهی اوقات میتوانند مدت زمان صفر داشته باشند، یعنی شروع و پایان در یک ثانیه یکسان باشند، اما اغلب دارای مدت زمان مثبت هستند.
متغیرها:
- اگر 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
در نهایت، در اینجا آمده است که چگونه می توان سفر، وقفه، تاخیر و انتظار را در طول یک انتقال مرتب کرد.
- آنها با هم تداخل ندارند.
- تأخیر منحصر به فرد است و باید یک دوره زمانی پیوسته درست قبل از بازدید بعدی (یا پایان وسیله نقلیه) باشد. بنابراین، دانستن مدت زمان تاخیر برای دانستن زمان شروع و پایان آن کافی است.
- 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 | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
نمایندگی JSON |
---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
فیلدها | |
---|---|
vehicleIndex | وسیله نقلیه ای که مسیر را انجام می دهد، با شاخص آن در مبدا |
vehicleLabel | برچسب وسیله نقلیه ای که این مسیر را انجام می دهد، در صورت مشخص شدن، برابر با |
vehicleStartTime | زمانی که وسیله نقلیه مسیر خود را شروع می کند. از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثالها: |
vehicleEndTime | زمانی که وسیله نقلیه مسیر خود را به پایان می رساند. از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثالها: |
visits[] | دنباله ای از بازدیدها که نشان دهنده یک مسیر است. visits[i] i امین بازدید در مسیر است. اگر این قسمت خالی باشد، وسیله نقلیه بلااستفاده محسوب می شود. |
transitions[] | لیست مرتب شده انتقالات مسیر. |
hasTrafficInfeasibilities | وقتی
رسیدن به next_visit به دلیل افزایش تخمین زمان سفر |
routePolyline | نمایش چند خطی رمزگذاری شده مسیر. این فیلد فقط در صورتی پر می شود که |
breaks[] | استراحت های برنامه ریزی شده برای وسیله نقلیه ای که این مسیر را انجام می دهد. توالی |
metrics | معیارهای مدت، مسافت و بار برای این مسیر. فیلدهای |
vehicleFullness | فیلد تجربی: رفتار یا وجود این رشته ممکن است در آینده تغییر کند. |
routeCosts | هزینه مسیر، تفکیک شده بر اساس فیلدهای درخواست مربوط به هزینه. کلیدها مسیرهای اولیه هستند، نسبت به ورودی OptimizeToursRequest، به عنوان مثال "model.shipments.pickups.cost"، و مقادیر کل هزینه تولید شده توسط فیلد هزینه مربوطه هستند که در کل مسیر جمع می شوند. به عبارت دیگر، هزینهها ["model.shipments.picups.cost"] مجموع تمام هزینههای دریافت در طول مسیر است. تمام هزینههای تعریفشده در مدل در اینجا بهجز هزینههای مربوط به TransitionAttributes که فقط به صورت تجمیع شده از سال 2022/01 گزارش شدهاند، در اینجا گزارش میشوند. |
routeTotalCost | هزینه کل مسیر مجموع تمام هزینه ها در نقشه هزینه. |
بازدید کنید
بازدیدی که در طول یک مسیر انجام شد. این بازدید مربوط به تحویل یا تحویل یک Shipment
است.
نمایندگی JSON |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
فیلدها | |
---|---|
shipmentIndex | فهرست فیلد |
isPickup | اگر درست باشد، بازدید مربوط به تحویل یک |
visitRequestIndex | نمایه |
startTime | زمانی که بازدید از آن شروع می شود. توجه داشته باشید که خودرو ممکن است زودتر از این به محل بازدید برسد. زمان ها با از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثالها: |
loadDemands | کل تقاضای بار بازدید به عنوان مجموع محموله و درخواست بازدید |
detour | زمان انحراف اضافی به دلیل محموله های بازدید شده در مسیر قبل از بازدید و زمان انتظار احتمالی ناشی از پنجره های زمانی. اگر بازدید به صورت تحویلی باشد، انحراف از بازدید پیکاپ مربوطه محاسبه می شود و برابر است با:
در غیر این صورت، از
مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
shipmentLabel | کپی مربوطه |
visitLabel | کپی از |
injectedSolutionLocationToken | یک نشانه مات که نشان دهنده اطلاعات مربوط به مکان بازدید است. زمانی که آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request مراجعه کنید. |
انتقال
انتقال بین دو رویداد در مسیر. توضیحات ShipmentRoute
را ببینید.
اگر وسیله نقلیه دارای startLocation
و/یا endLocation
نباشد، معیارهای سفر مربوطه 0 است.
نمایندگی JSON |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
فیلدها | |
---|---|
travelDuration | مدت زمان سفر در این انتقال. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
travelDistanceMeters | مسافت طی شده در طول انتقال. |
trafficInfoUnavailable | هنگامی که ترافیک از طریق |
delayDuration | مجموع مدت زمان تاخیر اعمال شده برای این انتقال. در صورت وجود، تأخیر دقیقاً مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
breakDuration | مجموع مدت وقفه های رخ داده در طول این انتقال، در صورت وجود. جزئیات مربوط به زمان شروع و مدت زمان هر استراحت در مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
waitDuration | زمان صرف شده در انتظار در طول این انتقال. مدت زمان انتظار مربوط به زمان بیکاری است و زمان استراحت را شامل نمی شود. همچنین توجه داشته باشید که این زمان انتظار ممکن است به چندین بازه غیر پیوسته تقسیم شود. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
totalDuration | مدت زمان کل انتقال، برای راحتی ارائه شده است. برابر است با:
مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
startTime | زمان شروع این انتقال از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثالها: |
routePolyline | نمایش چند خطی کدگذاری شده مسیری که در طول انتقال دنبال شد. این فیلد فقط در صورتی پر می شود که |
routeToken | فقط خروجی یک نشانه مات که می تواند به Navigation SDK منتقل شود تا مسیر را در حین ناوبری بازسازی کند و در صورت تغییر مسیر، به هدف اصلی هنگام ایجاد مسیر احترام بگذارد. با این نشانه به عنوان یک لکه مات رفتار کنید. مقدار آن را در بین درخواستها مقایسه نکنید زیرا ممکن است ارزش آن تغییر کند حتی اگر سرویس دقیقاً همان مسیر را برگرداند. این فیلد فقط در صورتی پر می شود که |
vehicleLoads | بارهای وسیله نقلیه در طول این انتقال، برای هر نوع که در بارها در اولین انتقال بارهای شروع مسیر وسیله نقلیه هستند. سپس، پس از هر بازدید، |
کدگذاری پلی لاین
نمایش کدگذاری شده یک چند خط. اطلاعات بیشتر در مورد کدگذاری چند خطی را میتوانید در اینجا بیابید: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding .
نمایندگی JSON |
---|
{ "points": string } |
فیلدها | |
---|---|
points | رشته ای که نقاط رمزگذاری شده چند خط را نشان می دهد. |
شکستن
داده هایی که اجرای یک شکست را نشان می دهد.
نمایندگی JSON |
---|
{ "startTime": string, "duration": string } |
فیلدها | |
---|---|
startTime | زمان شروع استراحت از RFC 3339 استفاده می کند، که در آن خروجی تولید شده همیشه با Z نرمال می شود و از 0، 3، 6 یا 9 رقم کسری استفاده می کند. افست های غیر از "Z" نیز پذیرفته می شود. مثالها: |
duration | مدت زمان استراحت. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
کامل بودن وسیله نقلیه
VehicleFullness
معیاری است که میزان پر بودن یک وسیله نقلیه را محاسبه می کند. هر فیلد VehicleFullness
بین 0 و 1 است که به عنوان نسبت بین یک فیلد متریک محدود شده (مثلا AggregatedMetrics.travel_distance_meters
) و محدودیت وسیله نقلیه مربوط به آن (به عنوان مثال Vehicle.route_distance_limit
) در صورت وجود محاسبه می شود. در غیر این صورت نسبت پر بودن تنظیم نشده باقی می ماند. اگر حد 0 باشد، فیلد روی 1 تنظیم میشود. توجه: وقتی مسیری در معرض مشکلات ترافیکی است، برخی نسبتهای پر بودن خام ممکن است از 1.0 تجاوز کنند، به عنوان مثال، وسیله نقلیه ممکن است از حد مسافت خود فراتر رود. در این موارد، مقادیر پر بودن را روی 1.0 قرار می دهیم.
نمایندگی JSON |
---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
فیلدها | |
---|---|
maxFullness | حداکثر همه فیلدهای دیگر در این پیام. |
distance | نسبت بین |
travelDuration | نسبت بین [AggregatedMetrics.travel_duration_seconds][] و |
activeDuration | نسبت بین [AggregatedMetrics.total_duration_seconds][] و |
maxLoad | حداکثر نسبت بین همه انواع [AggregatedMetrics.max_load][] و |
activeSpan | نسبت (vehicleEndTime - VehicleStartTime) / (latestVehicleEndTime - EarliestVehicleStartTime) برای یک وسیله نقلیه معین. اگر مخرج وجود نداشته باشد، به جای آن از ( |