مسیر یک وسیله نقلیه را می توان در امتداد محور زمانی تجزیه کرد (فرض می کنیم 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 | زمانی که وسیله نقلیه مسیر خود را شروع می کند. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
vehicleEndTime | زمانی که وسیله نقلیه مسیر خود را به پایان می رساند. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
visits[] | دنباله ای از بازدیدها که نشان دهنده یک مسیر است. visits[i] i امین بازدید در مسیر است. اگر این قسمت خالی باشد، وسیله نقلیه بلااستفاده محسوب می شود. |
transitions[] | لیست مرتب شده انتقالات مسیر. |
hasTrafficInfeasibilities | وقتی
رسیدن به next_visit به دلیل افزایش تخمین زمان سفر |
routePolyline | نمایش چند خطی رمزگذاری شده مسیر. این فیلد فقط در صورتی پر می شود که |
breaks[] | استراحت های برنامه ریزی شده برای وسیله نقلیه ای که این مسیر را انجام می دهد. توالی |
metrics | معیارهای مدت، مسافت و بار برای این مسیر. فیلدهای |
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 | زمانی که بازدید از آن شروع می شود. توجه داشته باشید که خودرو ممکن است زودتر از این به محل بازدید برسد. زمان ها با مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
loadDemands | کل تقاضای بار بازدید به عنوان مجموع محموله و درخواست بازدید |
detour | زمان انحراف اضافی به دلیل محموله های بازدید شده در مسیر قبل از بازدید و زمان انتظار احتمالی ناشی از پنجره های زمانی. اگر بازدید به صورت تحویلی باشد، انحراف از بازدید پیکاپ مربوطه محاسبه می شود و برابر است با:
در غیر این صورت، از
مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
shipmentLabel | کپی مربوطه |
visitLabel | کپی از |
انتقال
انتقال بین دو رویداد در مسیر. توضیحات 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 | زمان شروع این انتقال مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
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 | زمان شروع استراحت مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
duration | مدت زمان استراحت. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |