- نمایندگی JSON
- حمل و نقل
- VisitRequest
- LatLng
- نقطه راه
- مکان
- پنجره زمانی
- وسیله نقلیه
- حالت سفر
- RouteModifiers
- سیاست تخلیه
- LoadLimit
- فاصله
- محدودیت مدت
- محدودیت فاصله
- BreakRule
- Break Request
- محدودیت فرکانس
- Duration DistanceMatrix
- ردیف
- TransitionAttributes
- ناسازگاری نوع حمل و نقل
- حالت ناسازگاری
- نیاز نوع ارسال
- RequirementMode
- قانون تقدم
یک مدل حمل و نقل شامل مجموعهای از محمولهها است که باید توسط مجموعهای از وسایل نقلیه انجام شود، در حالی که هزینه کلی را به حداقل میرساند که مجموع موارد زیر است:
- هزینه مسیریابی وسایل نقلیه (مجموع هزینه در کل زمان، هزینه در هر زمان سفر و هزینه ثابت برای همه وسایل نقلیه).
- جریمه های حمل و نقل انجام نشده
- هزینه مدت زمان جهانی محموله ها
نمایندگی JSON |
---|
{ "shipments": [ { object ( |
فیلدها | |
---|---|
shipments[] | مجموعه ای از محموله هایی که باید در مدل انجام شود. |
vehicles[] | مجموعه ای از وسایل نقلیه که می توان از آنها برای انجام بازدید استفاده کرد. |
globalStartTime | زمان شروع و پایان جهانی مدل: هیچ زمان خارج از این محدوده را نمی توان معتبر در نظر گرفت. بازه زمانی مدل باید کمتر از یک سال باشد، یعنی هنگام استفاده از فیلدهای مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
globalEndTime | اگر تنظیم نشود، 00:00:00 UTC، 1 ژانویه 1971 (یعنی ثانیه: 31536000، نانو: 0) به عنوان پیش فرض استفاده می شود. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
globalDurationCostPerHour | "مدت زمان جهانی" طرح کلی، تفاوت بین اولین زمان شروع موثر و آخرین زمان پایان موثر همه وسایل نقلیه است. به عنوان مثال، کاربران می توانند برای هر ساعت هزینه ای را به آن مقدار اختصاص دهند تا تلاش کنند و برای اولین کار تکمیل کنند. این هزینه باید برابر با |
durationDistanceMatrices[] | ماتریس های مدت و فاصله مورد استفاده در مدل را مشخص می کند. اگر این فیلد خالی باشد، بسته به مقدار فیلد نمونه های استفاده:
|
durationDistanceMatrixSrcTags[] | برچسب هایی که منابع ماتریس های مدت و فاصله را تعریف می کنند. برچسب ها با |
durationDistanceMatrixDstTags[] | برچسب هایی که مقصد ماتریس های مدت و فاصله را مشخص می کنند. برچسب ها با |
transitionAttributes[] | ویژگی های انتقال به مدل اضافه شده است. |
shipmentTypeIncompatibilities[] | مجموعهای از shipment_types ناسازگار (به |
shipmentTypeRequirements[] | مجموعهای از الزامات |
precedenceRules[] | مجموعه ای از قوانین تقدم که باید در مدل اجرا شود. |
maxActiveVehicles | حداکثر تعداد وسایل نقلیه فعال را محدود می کند. یک وسیله نقلیه در صورتی فعال است که مسیر آن حداقل یک بار را انجام دهد. در مواردی که تعداد رانندگان کمتر از وسایل نقلیه وجود دارد و ناوگان وسایل نقلیه ناهمگن است، می توان از این برای محدود کردن تعداد مسیرها استفاده کرد. سپس بهینه سازی بهترین زیرمجموعه وسایل نقلیه را برای استفاده انتخاب می کند. باید به شدت مثبت باشد. |
حمل و نقل
حمل و نقل یک کالا، از یکی از وانت های آن تا یکی از تحویل های آن. برای اینکه حمل و نقل انجام شده در نظر گرفته شود، یک وسیله نقلیه منحصربهفرد باید از یکی از مکانهای وانت خود بازدید کند (و ظرفیت یدکی خود را بر این اساس کاهش دهد)، سپس بعداً از یکی از مکانهای تحویل آن بازدید کند (و بنابراین ظرفیتهای یدکی خود را مجدداً افزایش دهد).
نمایندگی JSON |
---|
{ "displayName": string, "pickups": [ { object ( |
فیلدها | |
---|---|
displayName | نام نمایشی تعریف شده توسط کاربر برای محموله. می تواند حداکثر 63 کاراکتر باشد و ممکن است از نویسه های UTF-8 استفاده کند. |
pickups[] | مجموعه ای از جایگزین های پیکاپ مرتبط با محموله. اگر مشخص نشده باشد، وسیله نقلیه فقط باید از مکان مربوط به تحویل بازدید کند. |
deliveries[] | مجموعه ای از جایگزین های تحویل مرتبط با حمل و نقل. اگر مشخص نشده باشد، وسیله نقلیه فقط باید از مکان مربوط به پیکاپ بازدید کند. |
loadDemands | نیازهای بار حمل و نقل (به عنوان مثال وزن، حجم، تعداد پالت ها و غیره). کلیدهای نقشه باید شناسههایی باشند که نوع بار مربوطه را توصیف میکنند و در حالت ایدهآل، واحدها را نیز شامل میشوند. به عنوان مثال: "weight_kg"، "volume_gallons"، "pallet_count"، و غیره. اگر کلید داده شده در نقشه ظاهر نشود، بار مربوطه به عنوان null در نظر گرفته می شود. یک شی حاوی لیستی از |
allowedVehicleIndices[] | مجموعه وسایل نقلیه ای که ممکن است این حمل و نقل را انجام دهند. اگر خالی باشد، همه وسایل نقلیه می توانند آن را انجام دهند. وسایل نقلیه با شاخص آنها در لیست |
costsPerVehicle[] | هزینه ای را که هنگام تحویل این محموله توسط هر وسیله نقلیه متحمل می شود را مشخص می کند. در صورت مشخص شدن، باید یکی از این موارد را داشته باشد:
این هزینه ها باید در واحد |
costsPerVehicleIndices[] | شاخص های وسایل نقلیه که |
pickupToDeliveryAbsoluteDetourLimit | حداکثر زمان انحراف مطلق را در مقایسه با کوتاه ترین مسیر از تحویل گرفتن تا تحویل مشخص می کند. اگر مشخص شده باشد، باید غیرمنفی باشد و محموله باید حداقل شامل یک تحویل و یک تحویل باشد. برای مثال، اجازه دهید t کوتاهترین زمان برای رفتن مستقیم از جایگزین انتخابشده به جایگزین تحویل انتخابشده باشد. سپس تنظیم
اگر هر دو محدودیت نسبی و مطلق در یک محموله مشخص شده باشند، از حد محدودتر برای هر جفت تحویل/تحویل ممکن استفاده می شود. از سال ۲۰۱۷/۲۰۱۰، انحرافها فقط زمانی پشتیبانی میشوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
pickupToDeliveryTimeLimit | حداکثر مدت زمان از شروع تحویل تا شروع تحویل یک محموله را مشخص می کند. اگر مشخص شده باشد، باید غیرمنفی باشد و محموله باید حداقل شامل یک تحویل و یک تحویل باشد. این بستگی به این ندارد که کدام گزینه برای تحویل و تحویل انتخاب شده است و نه به سرعت خودرو. این را می توان در کنار حداکثر محدودیت های انحرافی مشخص کرد: راه حل هر دو مشخصات را رعایت می کند. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
shipmentType | رشته غیر خالی که یک "نوع" را برای این محموله مشخص می کند. از این ویژگی می توان برای تعریف ناسازگاری ها یا الزامات بین با |
label | یک برچسب برای این محموله مشخص می کند. این برچسب در پاسخ در |
ignore | اگر درست است، از این ارسال صرف نظر کنید، اما نادیده گرفتن یک محموله منجر به خطای اعتبار سنجی زمانی می شود که در مدل هر گونه نادیده گرفتن محموله ای که در |
penaltyCost | در صورت عدم تکمیل ارسال، این جریمه به هزینه کلی مسیرها اضافه می شود. در صورت بازدید از یکی از گزینه های تحویل و تحویل، یک محموله تکمیل شده تلقی می شود. هزینه ممکن است در همان واحد مورد استفاده برای سایر زمینه های مربوط به هزینه در مدل بیان شود و باید مثبت باشد. مهم : اگر این جریمه مشخص نشده باشد، بی نهایت در نظر گرفته می شود، یعنی حمل و نقل باید تکمیل شود. |
pickupToDeliveryRelativeDetourLimit | حداکثر زمان انحراف نسبی را در مقایسه با کوتاه ترین مسیر از تحویل گرفتن تا تحویل مشخص می کند. اگر مشخص شده باشد، باید غیرمنفی باشد و محموله باید حداقل شامل یک تحویل و یک تحویل باشد. برای مثال، اجازه دهید t کوتاهترین زمان برای رفتن مستقیم از جایگزین انتخابشده به جایگزین تحویل انتخابشده باشد. سپس تنظیم
اگر هر دو محدودیت نسبی و مطلق در یک محموله مشخص شده باشند، از حد محدودتر برای هر جفت تحویل/تحویل ممکن استفاده می شود. از سال ۲۰۱۷/۲۰۱۰، انحرافها فقط زمانی پشتیبانی میشوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد. |
VisitRequest
درخواست بازدید که می تواند توسط یک وسیله نقلیه انجام شود: دارای یک موقعیت جغرافیایی (یا دو مورد، در زیر)، زمان باز و بسته شدن که توسط پنجره های زمانی نشان داده شده است، و مدت زمان سرویس (زمان صرف شده توسط وسیله نقلیه پس از رسیدن آن) برای تحویل گرفتن یا تحویل کالا).
نمایندگی JSON |
---|
{ "arrivalLocation": { object ( |
فیلدها | |
---|---|
arrivalLocation | مکان جغرافیایی که وسیله نقلیه هنگام انجام این |
arrivalWaypoint | نقطه ای که وسیله نقلیه هنگام انجام این |
departureLocation | موقعیت جغرافیایی که وسیله نقلیه پس از تکمیل این |
departureWaypoint | نقطه ای که وسیله نقلیه پس از تکمیل این |
tags[] | برچسب های پیوست شده به درخواست بازدید را مشخص می کند. رشته های خالی یا تکراری مجاز نیستند. |
timeWindows[] | پنجره های زمانی که زمان ورود را در یک بازدید محدود می کند. توجه داشته باشید که یک وسیله نقلیه ممکن است خارج از پنجره زمان رسیدن حرکت کند، یعنی زمان ورود + مدت زمان لازم نیست در یک پنجره زمانی باشد. اگر وسیله نقلیه قبل از عدم وجود پنجره های زمانی باید از هم گسسته باشند، یعنی هیچ پنجره زمانی نباید با دیگری همپوشانی داشته باشد یا در مجاورت آن قرار گیرد و باید به ترتیب افزایشی باشند. |
duration | مدت زمان بازدید، یعنی زمانی که وسیله نقلیه بین ورود و خروج سپری کرده است (به زمان انتظار احتمالی اضافه می شود؛ مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
cost | هزینه سرویس این درخواست بازدید در مسیر وسیله نقلیه. این می تواند برای پرداخت هزینه های مختلف برای هر بار تحویل یا تحویل یک محموله استفاده شود. این هزینه باید همان واحد |
loadDemands | بارگیری تقاضاهای این درخواست بازدید. این درست مانند فیلد یک شی حاوی لیستی از |
visitTypes[] | انواع بازدید را مشخص می کند. این ممکن است برای اختصاص زمان اضافی مورد نیاز برای یک وسیله نقلیه برای تکمیل این بازدید استفاده شود (به یک نوع فقط یک بار می تواند ظاهر شود. |
label | یک برچسب برای این |
LatLng
شیئی که نشان دهنده یک جفت طول و عرض جغرافیایی است. این به صورت یک جفت دوتایی برای نشان دادن درجه عرض جغرافیایی و درجه طول جغرافیایی بیان می شود. مگر اینکه طور دیگری مشخص شده باشد، این شی باید با استاندارد WGS84 مطابقت داشته باشد. مقادیر باید در محدوده نرمال شده باشند.
نمایندگی JSON |
---|
{ "latitude": number, "longitude": number } |
فیلدها | |
---|---|
latitude | عرض جغرافیایی بر حسب درجه باید در محدوده [-90.0، +90.0] باشد. |
longitude | طول جغرافیایی بر حسب درجه باید در محدوده [-180.0، +180.0] باشد. |
نقطه راه
یک نقطه بین راه را در بر می گیرد. نقاط راه، مکان ورود و خروج VisitRequests، و مکان شروع و پایان وسایل نقلیه را مشخص می کنند.
نمایندگی JSON |
---|
{ "sideOfRoad": boolean, // Union field |
فیلدها | |
---|---|
sideOfRoad | اختیاری. نشان می دهد که مکان این ایستگاه بین راهی برای این است که وسیله نقلیه در سمت خاصی از جاده توقف کند. هنگامی که این مقدار را تنظیم می کنید، مسیر از محل عبور می کند تا وسیله نقلیه بتواند در کنار جاده ای که مکان از مرکز جاده به سمت آن سوگیری دارد، توقف کند. این گزینه برای حالت سفر "WALKING" کار نمی کند. |
location_type فیلد اتحادیه روش های مختلف برای نشان دادن یک مکان location_type تنها می تواند یکی از موارد زیر باشد: | |
location | نقطه ای که با استفاده از مختصات جغرافیایی، از جمله عنوان اختیاری مشخص شده است. |
placeId | شناسه مکان POI مرتبط با ایستگاه بین راه. |
مکان
یک مکان (نقطه جغرافیایی و عنوان اختیاری) را در بر می گیرد.
نمایندگی JSON |
---|
{
"latLng": {
object ( |
فیلدها | |
---|---|
latLng | مختصات جغرافیایی نقطه راه. |
heading | عنوان قطب نما با جهت جریان ترافیک مرتبط است. این مقدار برای تعیین سمت جاده مورد استفاده برای حمل و نقل استفاده می شود. مقادیر سرفصل می تواند از 0 تا 360 باشد، جایی که 0 یک عنوان شمال را مشخص می کند، 90 عنوان یک عنوان شرق و غیره را مشخص می کند. |
پنجره زمانی
پنجره های زمانی زمان یک رویداد را محدود می کند، مانند زمان رسیدن به یک بازدید، یا زمان شروع و پایان یک وسیله نقلیه.
محدودیتهای پنجره زمان سخت، startTime
و endTime
، اولین و آخرین زمان رویداد را اعمال میکنند، به طوری که startTime <= event_time <= endTime
. کران پایین پنجره زمانی نرم، softStartTime
، ترجیح می دهد که رویداد در softStartTime
یا بعد از آن اتفاق بیفتد و هزینه ای متناسب با مدت زمان قبل از softStartTime رخ می دهد. کران بالای پنجره زمانی نرم، softEndTime
، ترجیح می دهد که رویداد در یا قبل از softEndTime
اتفاق بیفتد، با متحمل شدن هزینه ای متناسب با مدت زمانی که رویداد softEndTime
رخ می دهد. startTime
، endTime
، softStartTime
و softEndTime
باید در محدوده زمانی جهانی باشند (به ShipmentModel.global_start_time
و ShipmentModel.global_end_time
مراجعه کنید) و باید رعایت کنند:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
نمایندگی JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
فیلدها | |
---|---|
startTime | زمان شروع پنجره زمان سخت. اگر مشخص نباشد روی مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
endTime | زمان پایان پنجره زمان سخت. اگر مشخص نشده باشد، روی مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
softStartTime | زمان شروع نرم پنجره زمان. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
softEndTime | زمان پایان نرم پنجره زمانی. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
costPerHourBeforeSoftStartTime | اگر رویداد قبل از softStartTime رخ دهد، یک هزینه در ساعت به سایر هزینههای مدل اضافه میشود، که به صورت زیر محاسبه میشود:
این هزینه باید مثبت باشد و فقط در صورتی می توان فیلد را تنظیم کرد که softStartTime تنظیم شده باشد. |
costPerHourAfterSoftEndTime | اگر رویداد پس از
این هزینه باید مثبت باشد و فقط در صورتی می توان فیلد را تنظیم کرد که |
وسیله نقلیه
یک وسیله نقلیه را در یک مشکل حمل و نقل مدل می کند. حل مشکل حمل و نقل، مسیری را برای این وسیله نقلیه ایجاد می کند که از startLocation
شروع می شود و به endLocation
ختم می شود. یک مسیر دنباله ای از بازدیدها است (به ShipmentRoute
مراجعه کنید).
نمایندگی JSON |
---|
{ "displayName": string, "travelMode": enum ( |
فیلدها | |
---|---|
displayName | نام نمایشی تعریف شده توسط کاربر برای وسیله نقلیه. می تواند حداکثر 63 کاراکتر باشد و ممکن است از نویسه های UTF-8 استفاده کند. |
travelMode | حالت سفر که بر جاده های قابل استفاده وسیله نقلیه و سرعت آن تأثیر می گذارد. همچنین |
routeModifiers | مجموعه ای از شرایط برای برآوردن که بر نحوه محاسبه مسیرها برای وسیله نقلیه معین تأثیر می گذارد. |
startLocation | موقعیت جغرافیایی که وسیله نقلیه قبل از تحویل گرفتن محموله از آنجا شروع می شود. اگر مشخص نشده باشد، وسیله نقلیه در اولین پیکاپ خود استارت می خورد. اگر مدل حمل و نقل دارای ماتریس های مدت و فاصله باشد، |
startWaypoint | نقطه راه نشان دهنده یک موقعیت جغرافیایی است که وسیله نقلیه قبل از تحویل گرفتن محموله از آنجا شروع می شود. اگر نه |
endLocation | موقعیت جغرافیایی جایی که وسیله نقلیه پس از تکمیل آخرین |
endWaypoint | نقطه راه نشان دهنده یک مکان جغرافیایی است که خودرو پس از تکمیل آخرین |
startTags[] | برچسب های متصل به شروع مسیر وسیله نقلیه را مشخص می کند. رشته های خالی یا تکراری مجاز نیستند. |
endTags[] | برچسب های متصل به انتهای مسیر وسیله نقلیه را مشخص می کند. رشته های خالی یا تکراری مجاز نیستند. |
startTimeWindows[] | پنجره های زمانی که در طی آن وسیله نقلیه ممکن است محل شروع خود را ترک کند. آنها باید در محدوده زمانی جهانی باشند (به فیلدهای پنجرههای زمانی متعلق به یک فیلد تکراری باید جدا باشند، یعنی هیچ پنجره زمانی نمیتواند با دیگری همپوشانی داشته باشد یا مجاور آن باشد و باید به ترتیب زمانی باشند. |
endTimeWindows[] | پنجره های زمانی که در طی آن وسیله نقلیه ممکن است به مکان پایانی خود برسد. آنها باید در محدوده زمانی جهانی باشند (به فیلدهای پنجرههای زمانی متعلق به یک فیلد تکراری باید جدا باشند، یعنی هیچ پنجره زمانی نمیتواند با دیگری همپوشانی داشته باشد یا مجاور آن باشد و باید به ترتیب زمانی باشند. |
unloadingPolicy | سیاست تخلیه بار در خودرو اعمال شده است. |
loadLimits | ظرفیت های وسیله نقلیه (به عنوان مثال وزن، حجم، # پالت). کلیدهای موجود در نقشه، شناسههای نوع بار هستند که با کلیدهای فیلد یک شی حاوی لیستی از |
costPerHour | هزینه های خودرو: همه هزینه ها جمع می شوند و باید در همان واحد هزینه هر ساعت مسیر وسیله نقلیه این هزینه برای کل زمان طی شده توسط مسیر اعمال می شود و شامل زمان سفر، زمان انتظار و زمان بازدید می شود. استفاده از |
costPerTraveledHour | هزینه هر ساعت پیموده شده مسیر وسیله نقلیه. این هزینه فقط برای زمان سفر طی مسیر اعمال می شود (یعنی آنچه در |
costPerKilometer | هزینه هر کیلومتر مسیر وسیله نقلیه این هزینه برای مسافت گزارش شده در |
fixedCost | اگر از این وسیله نقلیه برای حمل و نقل استفاده شود، هزینه ثابت اعمال می شود. |
usedIfRouteIsEmpty | این فیلد فقط برای وسایل نقلیه زمانی اعمال می شود که مسیر آنها به هیچ محموله ای خدمات ندهد. این نشان می دهد که آیا خودرو باید در این مورد استفاده شده در نظر گرفته شود یا خیر. اگر درست باشد، وسیله نقلیه از شروع به مکان پایانی خود میرود، حتی اگر هیچ محمولهای را ارائه ندهد، و هزینههای زمان و مسافت ناشی از سفر شروع --> پایان آن در نظر گرفته میشود. در غیر این صورت، از ابتدا تا مکان پایانی خود حرکت نمی کند و هیچ |
routeDurationLimit | محدودیت برای کل مدت مسیر وسیله نقلیه اعمال می شود. در |
travelDurationLimit | محدودیت برای مدت سفر در مسیر وسیله نقلیه اعمال می شود. در |
routeDistanceLimit | محدودیت در کل مسافت مسیر وسیله نقلیه اعمال می شود. در |
extraVisitDurationForVisitType | یک نقشه از رشته های visitTypes تا مدت زمان را مشخص می کند. مدت زمانی است که علاوه بر اگر درخواست بازدید چندین نوع داشته باشد، مدت زمان برای هر نوع در نقشه اضافه می شود. یک شی حاوی لیستی از |
breakRule | برنامه استراحتی که باید در این وسیله نقلیه اعمال شود را شرح می دهد. در صورت خالی بودن، هیچ استراحتی برای این وسیله نقلیه در نظر گرفته نمی شود. |
label | یک برچسب برای این وسیله نقلیه مشخص می کند. این برچسب در پاسخ به عنوان |
ignore | اگر درست باشد، اگر یک محموله توسط وسیله نقلیه نادیده گرفته شده در اگر یک محموله توسط یک وسیله نقلیه نادیده گرفته شده در |
travelDurationMultiple | یک عامل ضربی را مشخص می کند که می تواند برای افزایش یا کاهش زمان سفر این وسیله نقلیه استفاده شود. به عنوان مثال، تنظیم این مورد روی 2.0 به این معنی است که این وسیله نقلیه کندتر است و زمان سفر دو برابر بیشتر از خودروهای استاندارد است. این چند برابر بر مدت زمان بازدید تأثیری ندارد. اگر هشدار: زمانهای سفر پس از اعمال این مضرب، اما قبل از انجام هر گونه عملیات عددی، به نزدیکترین ثانیه گرد میشوند، بنابراین، یک مضرب کوچک ممکن است منجر به از دست دادن دقت شود. همچنین |
حالت سفر
حالت های سفر که می تواند توسط وسایل نقلیه استفاده شود.
اینها باید زیرمجموعه ای از حالت های سفر API ترجیحی مسیرهای پلتفرم Google Maps باشند، به این آدرس مراجعه کنید: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode .
Enums | |
---|---|
TRAVEL_MODE_UNSPECIFIED | حالت سفر نامشخص، معادل DRIVING . |
DRIVING | حالت سفر مربوط به مسیرهای رانندگی (ماشین، ...). |
WALKING | حالت سفر مربوط به مسیرهای پیاده روی. |
RouteModifiers
مجموعه ای از شرایط اختیاری را در بر می گیرد تا هنگام محاسبه مسیرهای وسیله نقلیه برآورده شود. این شبیه به RouteModifiers
در Google Maps Platform Routes Preferred API است. ببینید: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers .
نمایندگی JSON |
---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
فیلدها | |
---|---|
avoidTolls | مشخص می کند که آیا در صورت معقول بودن از جاده های عوارضی اجتناب شود یا خیر. اولویت با مسیرهایی است که دارای عوارضی نیستند. فقط برای حالت های سفر موتوری اعمال می شود. |
avoidHighways | مشخص می کند که آیا در صورت لزوم از بزرگراه ها اجتناب شود یا خیر. اولویت با مسیرهای فاقد بزرگراه خواهد بود. فقط برای حالت های سفر موتوری اعمال می شود. |
avoidFerries | مشخص میکند که آیا در صورت لزوم از کشتیها اجتناب شود یا خیر. اولویت با مسیرهایی است که شامل سفر با کشتی نباشد. فقط برای حالت های سفر موتوری اعمال می شود. |
avoidIndoor | اختیاری. مشخص می کند که آیا از پیمایش در داخل خانه در صورت لزوم اجتناب شود. اولویت به مسیرهایی داده می شود که دارای ناوبری داخلی نیستند. فقط برای حالت سفر |
سیاست تخلیه
سیاست در مورد چگونگی تخلیه یک وسیله نقلیه فقط برای محموله هایی اعمال می شود که هم تحویل و هم تحویل دارند.
سایر محموله ها در هر نقطه از مسیر مستقل از unloadingPolicy
آزاد هستند.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED | سیاست تخلیه نامشخص؛ تحویل باید فقط پس از وانت مربوطه آنها انجام شود. |
LAST_IN_FIRST_OUT | تحویل باید به ترتیب معکوس وانت انجام شود |
FIRST_IN_FIRST_OUT | تحویل باید به همان ترتیبی که پیکاپ انجام می شود |
LoadLimit
محدودیت بار را برای یک وسیله نقلیه تعریف می کند، به عنوان مثال "این کامیون فقط می تواند تا 3500 کیلوگرم را حمل کند". loadLimits
ببینید.
نمایندگی JSON |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
فیلدها | |
---|---|
softMaxLoad | حد نرم از بار. به |
costPerUnitAboveSoftMax | اگر بار در طول مسیر این وسیله نقلیه از |
startLoadInterval | فاصله بار قابل قبول وسیله نقلیه در شروع مسیر. |
endLoadInterval | فاصله بار قابل قبول وسیله نقلیه در انتهای مسیر. |
maxLoad | حداکثر مقدار قابل قبول بار. |
فاصله
فاصله مقادیر بار قابل قبول
نمایندگی JSON |
---|
{ "min": string, "max": string } |
فیلدها | |
---|---|
min | حداقل بار قابل قبول باید ≥ 0 باشد. اگر هر دو مشخص شده اند، |
max | حداکثر بار قابل قبول باید ≥ 0 باشد. اگر مشخص نشده باشد، حداکثر بار توسط این پیام محدود نمی شود. اگر هر دو مشخص شده باشند، |
محدودیت مدت
محدودیتی که حداکثر مدت مسیر یک وسیله نقلیه را تعیین می کند. می تواند سخت یا نرم باشد.
هنگامی که یک فیلد حد نرم تعریف می شود، هم آستانه حداکثر نرم و هم هزینه مربوط به آن باید با هم تعریف شوند.
نمایندگی JSON |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
فیلدها | |
---|---|
maxDuration | یک محدودیت سخت که مدت زمان را حداکثر حداکثر مدت زمان محدود می کند. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
softMaxDuration | یک محدودیت نرم که حداکثر مدت زمان را اعمال نمی کند، اما در صورت نقض باعث می شود مسیر متحمل هزینه شود. این هزینه به سایر هزینه های تعریف شده در مدل، با همان واحد اضافه می شود. در صورت تعریف، مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
quadraticSoftMaxDuration | یک محدودیت نرم که حداکثر مدت زمان را اعمال نمی کند، اما در صورت نقض باعث می شود مسیر هزینه ای داشته باشد که طول مدت آن درجه دوم است. این هزینه به سایر هزینه های تعریف شده در مدل، با همان واحد اضافه می شود. اگر تعریف شده باشد، مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
costPerHourAfterSoftMax | هزینه هر ساعت در صورت نقض آستانه
هزینه باید غیرمنفی باشد. |
costPerSquareHourAfterQuadraticSoftMax | هزینه هر ساعت مربع در صورت نقض آستانه اگر مدت زمان زیر آستانه باشد، هزینه اضافی 0 است، در غیر این صورت هزینه به مدت زمان زیر بستگی دارد:
هزینه باید غیرمنفی باشد. |
محدودیت فاصله
حدی که حداکثر مسافت قابل پیمودن را تعیین می کند. می تواند سخت یا نرم باشد.
اگر یک حد نرم تعریف شده باشد، هم softMaxMeters
و هم costPerKilometerAboveSoftMax
باید تعریف شده و غیرمنفی باشند.
نمایندگی JSON |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
فیلدها | |
---|---|
maxMeters | یک محدودیت سخت که فاصله را حداکثر حداکثر حداکثر متر محدود می کند. حد باید غیرمنفی باشد. |
softMaxMeters | یک حد نرم محدودیت حداکثر فاصله را اعمال نمی کند، اما زمانی که نقض شود منجر به هزینه ای می شود که به هزینه های دیگر تعریف شده در مدل، با همان واحد اضافه می شود. اگر softMaxMeters تعریف شده باشد باید کمتر از maxMeters باشد و باید غیرمنفی باشد. |
costPerKilometerBelowSoftMax | هزینه هر کیلومتر متحمل شده، افزایش تا
این هزینه در |
costPerKilometerAboveSoftMax | اگر مسافت بالاتر از حد مجاز
هزینه باید غیرمنفی باشد. |
BreakRule
قوانینی برای ایجاد وقفه زمانی برای یک وسیله نقلیه (مثلاً استراحت ناهار). استراحت یک دوره زمانی پیوسته است که طی آن وسیله نقلیه در موقعیت فعلی خود بیکار می ماند و نمی تواند هیچ بازدیدی را انجام دهد. وقفه ممکن است رخ دهد:
- در طول سفر بین دو بازدید (که شامل زمان درست قبل یا بعد از بازدید می شود، اما نه در وسط یک بازدید)، در این صورت زمان حمل و نقل مربوطه بین بازدیدها را افزایش می دهد.
- یا قبل از شروع خودرو (ممکن است وسیله نقلیه در وسط یک استراحت استارت نخورد)، در این صورت بر زمان استارت خودرو تأثیری نمی گذارد.
- یا پس از پایان خودرو (همچنین، با زمان پایان خودرو).
نمایندگی JSON |
---|
{ "breakRequests": [ { object ( |
فیلدها | |
---|---|
breakRequests[] | توالی وقفه ها پیام |
frequencyConstraints[] | ممکن است چندین |
Break Request
توالی وقفه ها (یعنی تعداد و ترتیب آنها) که برای هر وسیله نقلیه اعمال می شود باید از قبل مشخص باشد. BreakRequest
های مکرر آن توالی را به ترتیبی که باید رخ دهند، تعریف می کنند. پنجره های زمانی آنها ( earliestStartTime
/ latestStartTime
) ممکن است همپوشانی داشته باشند، اما آنها باید با ترتیب سازگار باشند (این مورد بررسی شده است).
نمایندگی JSON |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
فیلدها | |
---|---|
earliestStartTime | مورد نیاز. کران پایین (شامل) در شروع استراحت. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
latestStartTime | مورد نیاز. کران بالا (شامل) در شروع استراحت. مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثالها: |
minDuration | مورد نیاز. حداقل مدت زمان استراحت. باید مثبت باشه مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
محدودیت فرکانس
ممکن است با اعمال یک حداقل فرکانس استراحت، مانند "هر 12 ساعت حداقل 1 ساعت وقفه وجود داشته باشد." با فرض اینکه این می تواند به عنوان "در هر پنجره زمانی کشویی 12 ساعته، حداقل یک وقفه حداقل یک ساعته وجود داشته باشد" تفسیر شود، این مثال به FrequencyConstraint
زیر ترجمه می شود:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
زمان و مدت وقفهها در راهحل، به همه این محدودیتها، علاوه بر پنجرههای زمانی و حداقل مدت زمانهایی که قبلاً در BreakRequest
مشخص شدهاند، احترام میگذارد.
یک FrequencyConstraint
ممکن است در عمل برای وقفه های غیر متوالی اعمال شود. به عنوان مثال، برنامه زیر به مثال "1 ساعت هر 12 ساعت" احترام می گذارد:
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
نمایندگی JSON |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
فیلدها | |
---|---|
minBreakDuration | مورد نیاز. حداقل مدت زمان استراحت برای این محدودیت. غیر منفی. به توضیحات مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
maxInterBreakDuration | مورد نیاز. حداکثر بازه مجاز هر بازه زمانی در مسیر که حداقل تا حدی شامل وقفه مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
Duration DistanceMatrix
ماتریس مدت و فاصله از مکانهای بازدید و شروع خودرو تا بازدید و مکانهای پایان خودرو را مشخص میکند.
نمایندگی JSON |
---|
{
"rows": [
{
object ( |
فیلدها | |
---|---|
rows[] | ردیف های ماتریس مدت و فاصله را مشخص می کند. باید به تعداد |
vehicleStartTag | برچسبی که این ماتریس مدت و مسافت برای کدام خودروها اعمال می شود. اگر خالی باشد، این برای همه وسایل نقلیه اعمال میشود و فقط یک ماتریس میتواند وجود داشته باشد. هر شروع وسیله نقلیه باید دقیقاً با یک ماتریس مطابقت داشته باشد، یعنی دقیقاً یکی از فیلدهای همه ماتریس ها باید دارای یک |
ردیف
یک ردیف از ماتریس مدت و فاصله را مشخص می کند.
نمایندگی JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
فیلدها | |
---|---|
durations[] | مقادیر مدت زمان برای یک ردیف معین. باید به تعداد مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
meters[] | مقادیر فاصله برای یک ردیف معین. اگر هیچ هزینه یا محدودیتی به فواصل در مدل اشاره نمی کند، می توان آن را خالی گذاشت. در غیر این صورت باید به اندازه |
TransitionAttributes
ویژگی های انتقال بین دو بازدید متوالی در یک مسیر را مشخص می کند. چندین TransitionAttributes
ممکن است برای یک انتقال اعمال شود: در آن صورت، تمام هزینههای اضافی جمع میشوند و سختترین محدودیت یا محدودیت اعمال میشود (به دنبال معنایی طبیعی "AND").
نمایندگی JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
فیلدها | |
---|---|
srcTag | برچسبهایی که مجموعه انتقالهای (src->dst) را تعریف میکنند، این ویژگیها برای آنها اعمال میشوند. بازدید منبع یا شروع خودرو با |
excludedSrcTag | |
dstTag | بازدید مقصد یا پایان وسیله نقلیه با |
excludedDstTag | |
cost | هزینه ای را برای انجام این انتقال مشخص می کند. این در همان واحد تمام هزینه های دیگر در مدل است و نباید منفی باشد. علاوه بر سایر هزینه های موجود اعمال می شود. |
costPerKilometer | هزینه ای را به ازای هر کیلومتر اعمال شده برای مسافت طی شده در حین انجام این انتقال مشخص می کند. به هر |
distanceLimit | محدودیتی را برای مسافت طی شده در حین انجام این انتقال مشخص می کند. از سال 2021/06، فقط محدودیت های نرم پشتیبانی می شوند. |
delay | تأخیر ایجاد شده در هنگام انجام این انتقال را مشخص می کند. این تاخیر همیشه پس از اتمام بازدید از مبدا و قبل از شروع بازدید از مقصد اتفاق می افتد. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
ناسازگاری نوع حمل و نقل
ناسازگاری های بین محموله ها را بسته به نوع ارسال آنها مشخص می کند. ظاهر محموله های ناسازگار در همان مسیر بر اساس حالت ناسازگاری محدود شده است.
نمایندگی JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
فیلدها | |
---|---|
types[] | فهرست انواع ناسازگار دو محموله با |
incompatibilityMode | حالت برای ناسازگاری اعمال شد. |
حالت ناسازگاری
حالت هایی که مشخص می کنند چگونه ظاهر محموله های ناسازگار در همان مسیر محدود می شوند.
Enums | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | حالت ناسازگاری نامشخص. این مقدار هرگز نباید استفاده شود. |
NOT_PERFORMED_BY_SAME_VEHICLE | در این حالت، دو محموله با انواع ناسازگار هرگز نمی توانند یک وسیله نقلیه را به اشتراک بگذارند. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | برای دو محموله با انواع ناسازگار با حالت ناسازگاری
|
نیاز نوع ارسال
الزامات بین محموله ها را بر اساس نوع ارسال آنها مشخص می کند. ویژگی های مورد نیاز توسط حالت نیازمندی تعریف می شود.
نمایندگی JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
فیلدها | |
---|---|
requiredShipmentTypeAlternatives[] | لیست انواع حمل و نقل جایگزین مورد نیاز توسط |
dependentShipmentTypes[] | همه محمولههای دارای یک نوع در قسمت توجه: زنجیره ای از الزامات به گونه ای که |
requirementMode | حالت اعمال شده به نیاز. |
RequirementMode
حالت هایی که ظاهر محموله های وابسته را در یک مسیر مشخص می کنند.
Enums | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED | حالت نیاز نامشخص این مقدار هرگز نباید استفاده شود. |
PERFORMED_BY_SAME_VEHICLE | در این حالت، همه محمولههای «وابسته» باید حداقل یکی از محمولههای «الزامی» خود، وسیله نقلیه مشابهی داشته باشند. |
IN_SAME_VEHICLE_AT_PICKUP_TIME | با حالت بنابراین یک حمل و نقل "وابسته" باید دارای یکی از موارد زیر باشد:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME | مانند قبل، به جز محموله های "وابسته" باید یک محموله "الزامی" در وسیله نقلیه خود در زمان تحویل داشته باشند. |
قانون تقدم
یک قانون تقدم بین دو رویداد (هر رویداد تحویل یا تحویل یک محموله است): رویداد "دوم" باید حداقل پس از شروع "اولین" offsetDuration
کند.
چندین اولویت می تواند به رویدادهای یکسان (یا مرتبط) اشاره داشته باشد، به عنوان مثال، "پیکاپ B پس از تحویل A اتفاق می افتد" و "انتخاب C پس از دریافت B اتفاق می افتد".
علاوه بر این، اولویت ها تنها زمانی اعمال می شوند که هر دو حمل و نقل انجام شده و در غیر این صورت نادیده گرفته شوند.
نمایندگی JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
فیلدها | |
---|---|
firstIsDelivery | نشان می دهد که آیا رویداد "اولین" یک تحویل است یا خیر. |
secondIsDelivery | نشان می دهد که آیا رویداد "دوم" یک تحویل است یا خیر. |
offsetDuration | افست بین رویداد "اولین" و "دوم". می تواند منفی باشد. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
firstIndex | شاخص حمل و نقل "اولین" رویداد. این فیلد باید مشخص شود. |
secondIndex | شاخص حمل و نقل رویداد "دوم". این فیلد باید مشخص شود. |