- نمایش JSON
- محموله
- VisitRequest
- LatLng
- Waypoint
- مکان
- TimeWindow
- خودرو
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- فاصله
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- هدف
- تایپ کردن
- DurationDistanceMatrix
- ردیف
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
مدل ارسال شامل مجموعهای از ارسالها است که باید توسط مجموعهای از وسایل نقلیه انجام شود، درحالیکه هزینه کلی که مجموع موارد زیر است به حداقل میرسد:
- هزینه مسیریابی وسایل نقلیه (مجموع هزینه بهازای کل زمان، هزینه بهازای مدت سفر، و هزینه ثابت برای همه وسایل نقلیه).
- جریمههای ارسال انجامنشده.
- هزینه مدت زمان جهانی ارسالها
| نمایش JSON |
|---|
{ "shipments": [ { object ( |
| فیلدها | |
|---|---|
shipments[] |
مجموعه محمولههایی که باید در مدل انجام شود. |
vehicles[] |
مجموعه وسایل نقلیهای که میتوانند برای انجام بازدیدها استفاده شوند. |
objectives[] |
مجموعه اهداف این مدل که آنها را به هزینه تبدیل خواهیم کرد. اگر خالی نباشد، مدل ورودی باید بدون هزینه باشد. برای دریافت درخواست اصلاحشده، لطفاً از آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request را ببینید. |
globalStartTime |
زمان شروع و پایان جهانی مدل: هیچ زمانی خارج از این محدوده معتبر درنظر گرفته نمیشود. بازه زمانی مدل باید کمتر از یک سال باشد، یعنی هنگام استفاده از فیلدهای از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
globalEndTime |
اگر تنظیم نشده باشد، ۰۰:۰۰:۰۰ ساعت هماهنگ جهانی، ۱ ژانویه ۱۹۷۱ (یعنی ثانیه: ۳۱۵۳۶۰۰۰، نانو: ۰) بهعنوان پیشفرض استفاده میشود. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
globalDurationCostPerHour |
«مدت زمان جهانی» طرح کلی عبارت است از تفاوت بین زودترین زمان شروع مؤثر و دیرترین زمان پایان مؤثر همه وسایل نقلیه. کاربران میتوانند برای مثال، برای آن مقدار، هزینه ساعتی تعیین کنند تا برای تکمیل زودهنگام کار بهینهسازی کنند. این هزینه باید در همان واحد |
durationDistanceMatrices[] |
ماتریسهای مدت و فاصله مورداستفاده در مدل را مشخص میکند. اگر این فیلد خالی باشد، بسته به مقدار فیلد نمونههایی از کاربرد:
|
durationDistanceMatrixSrcTags[] |
برچسبهایی که منابع ماتریسهای مدت و فاصله را تعریف میکنند؛ برچسبها با |
durationDistanceMatrixDstTags[] |
برچسبهایی که مقصد ماتریسهای مدت و فاصله را تعریف میکنند؛ برچسبها با |
transitionAttributes[] |
مشخصههای انتقال به مدل اضافه شد. |
shipmentTypeIncompatibilities[] |
مجموعههای shipment_types ناسازگار ( |
shipmentTypeRequirements[] |
مجموعههایی از شرایط لازم |
precedenceRules[] |
مجموعه قوانین تقدم که باید در مدل اعمال شود. مهم: استفاده از قوانین تقدم، اندازه مسئلهای را که میتوان بهینهسازی کرد محدود میکند. درخواستهایی که از قوانین تقدم استفاده میکنند و شامل محمولههای زیادی هستند ممکن است رد شوند. |
maxActiveVehicles |
حداکثر تعداد خودروهای فعال را محدود میکند. اگر مسیر خودرو حداقل یک محموله را تحویل دهد، خودرو فعال است. این میتواند برای محدود کردن تعداد مسیرها در مواردی که تعداد رانندگان کمتر از وسایل نقلیه است و ناوگان وسایل نقلیه ناهمگن است، استفاده شود. سپس بهینهسازی بهترین زیرمجموعه خودروها را برای استفاده انتخاب میکند. باید کاملاً مثبت باشد. |
ارسال کالا
ارسال یک کالا، از یکی از نقاط تحویل گرفتن آن به یکی از نقاط تحویل دادن آن. برای اینکه محموله بهعنوان انجامشده درنظر گرفته شود، یک وسیله نقلیه منحصربهفرد باید از یکی از مکانهای تحویل گرفتن آن بازدید کند (و ظرفیتهای اضافی خود را بهطور متناسب کاهش دهد)، سپس بعداً از یکی از مکانهای تحویل آن بازدید کند (و بنابراین ظرفیتهای اضافی خود را بهطور متناسب دوباره افزایش دهد).
| نمایش JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| فیلدها | |
|---|---|
displayName |
نام نمایشی محموله که کاربر تعریف کرده است. طول آن میتواند تا ۶۳ نویسه باشد و ممکن است از نویسههای UTF-8 استفاده کند. |
pickups[] |
مجموعه جایگزینهای تحویل مرتبط با محموله. اگر مشخص نشده باشد، خودرو فقط باید به مکان مربوط به تحویلها مراجعه کند. |
deliveries[] |
مجموعه جایگزینهای ارسال مرتبط با محموله. اگر مشخص نشده باشد، خودرو فقط باید به مکانی که مربوط به سوار کردن است مراجعه کند. |
loadDemands |
الزامات بارگیری محموله (برای مثال وزن، حجم، تعداد پالتها، و غیره). کلیدهای موجود در نقشه باید شناسههایی باشند که نوع بار مربوطه را توصیف میکنند، و در حالت ایدهآل باید شامل واحدها نیز باشند. برای مثال: «weight_kg»، «volume_gallons»، «pallet_count»، و غیره. اگر کلید دادهشده در نقشه نشان داده نشود، بار مربوطه تهی درنظر گرفته میشود. |
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 |
برچسبی برای این |
avoidUTurns |
مشخص میکند که آیا باید از دوربرگردانها در مسیرهای رانندگی در این مکان اجتناب شود یا نه. اجتناب از دوربرگردان در بهترین حالت انجام میشود و اجتناب کامل تضمین نمیشود. این ویژگی آزمایشی است و ممکن است عملکرد آن تغییر کند. آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request را ببینید. |
LatLng
شیئی که نشاندهنده جفت طول/عرض جغرافیایی است. این مقدار بهصورت جفت عدد اعشاری با دقت مضاعف بیان میشود تا درجه عرض جغرافیایی و درجه طول جغرافیایی را نشان دهد. مگر اینکه خلاف آن مشخص شده باشد، این شیء باید با استاندارد WGS84 مطابقت داشته باشد. مقادیر باید در محدودههای نرمالشده باشد.
| نمایش JSON |
|---|
{ "latitude": number, "longitude": number } |
| فیلدها | |
|---|---|
latitude |
عرض جغرافیایی به درجه. باید در محدوده [-90.0, +90.0] باشد. |
longitude |
طول جغرافیایی به درجه. باید در محدوده [-180.0, +180.0] باشد. |
نقطه مسیر
یک نقطهمسیر را کپسولهسازی میکند. نقطهمسیرها مکانهای ورود و خروج VisitRequests و مکانهای شروع و پایان Vehicles را علامتگذاری میکنند.
| نمایش JSON |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| فیلدها | |
|---|---|
sideOfRoad |
اختیاری. نشان میدهد که مکان این نقطهمسیر بهمعنای داشتن اولویت برای توقف خودرو در سمت خاصی از جاده است. وقتی این مقدار را تنظیم میکنید، مسیر از مکان عبور میکند تا خودرو بتواند در سمتی از جاده که مکان نسبتبه مرکز جاده به آن متمایل است توقف کند. این گزینه برای حالت سفر «پیادهروی» کار نمیکند. |
vehicleStopover |
نشان میدهد که نقطهمسیر برای توقف وسایل نقلیه درنظر گرفته شده است، جایی که هدف سوار کردن یا پیاده کردن است. این گزینه فقط برای حالت سفر «رانندگی» و زمانی که «locationType» از نوع «location» باشد کار میکند. آزمایشی: رفتار یا وجود این فیلد ممکن است در آینده تغییر کند. |
| روشهای مختلف برای نمایش مکان. در زیر فهرستی از فیلدهای متقابلاً انحصاری آمده است. حداکثر یکی از فیلدها در پاسخ تنظیم خواهد شد: | |
location |
نقطهای که بااستفاده از مختصات جغرافیایی مشخص شده است، ازجمله عنوان اختیاری. |
placeId |
شناسه جای نقطه موردعلاقه مرتبط با نقطهمسیر. هنگام استفاده از شناسه مکان برای مشخص کردن مکان ورود یا خروج VisitRequest، از شناسه مکانی استفاده کنید که بهاندازه کافی دقیق باشد تا بتواند مکان LatLng را برای پیمایش به آن مکان تعیین کند. برای مثال، شناسه مکانی که نشاندهنده ساختمان باشد مناسب است، اما شناسه مکانی که نشاندهنده جاده باشد توصیه نمیشود. |
| پایان فیلدهای متقابلاً انحصاری. | |
مکان
مکان (نقطه جغرافیایی و عنوان اختیاری) را کپسوله میکند.
| نمایش JSON |
|---|
{
"latLng": {
object ( |
| فیلدها | |
|---|---|
latLng |
مختصات جغرافیایی نقطهمسیر. |
heading |
جهت قطبنما مربوط به جهت جریان ترافیک. این مقدار برای مشخص کردن سمتی از جاده که باید برای سوار و پیاده کردن استفاده شود بهکار میرود. مقادیر جهت میتواند از ۰ تا ۳۶۰ باشد، که ۰ جهت شمال واقعی، ۹۰ جهت شرق واقعی، و غیره را مشخص میکند. |
TimeWindow
پنجرههای زمانی زمان رویداد را محدود میکنند، مانند زمان رسیدن به بازدید، یا زمان شروع و پایان خودرو.
محدودههای پنجره زمانی سخت، 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 |
زمان شروع بازه زمانی سخت. اگر مشخص نشده باشد، روی از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
endTime |
زمان پایان بازه زمانی سخت. اگر مشخص نشده باشد، روی از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
softStartTime |
زمان شروع نرم بازه زمانی. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
softEndTime |
زمان پایان نرم بازه زمانی. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
costPerHourBeforeSoftStartTime |
هزینه هر ساعت به هزینههای دیگر در مدل اضافه میشود اگر رویداد قبلاز softStartTime رخ دهد، که بهصورت زیر محاسبه میشود: این هزینه باید مثبت باشد و این فیلد فقط درصورتی میتواند تنظیم شود که softStartTime تنظیم شده باشد. |
costPerHourAfterSoftEndTime |
اگر رویداد بعداز این هزینه باید مثبت باشد و این فیلد فقط درصورتی میتواند تنظیم شود که |
خودرو
مدلسازی خودرو در مشکل ارسال. حل کردن مشکل ارسال، مسیری را برای این خودرو ایجاد میکند که از startLocation شروع میشود و در endLocation پایان مییابد. مسیر عبارت است از توالی بازدیدها (ShipmentRoute را ببینید).
| نمایش JSON |
|---|
{ "displayName": string, "travelMode": enum ( |
| فیلدها | |
|---|---|
displayName |
نام نمایشی خودرو که کاربر تعریف کرده است. طول آن میتواند تا ۶۳ نویسه باشد و ممکن است از نویسههای 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 |
عامل ضربی را مشخص میکند که میتواند برای افزایش یا کاهش زمان سفر این وسیله نقلیه استفاده شود. برای مثال، تنظیم این مقدار روی ۲٫۰ به این معنی است که این وسیله نقلیه کندتر است و مدت سفر آن دو برابر مدت سفر وسایل نقلیه استاندارد است. این ضریب بر مدت بازدید تأثیری ندارد. اگر هشدار: زمانهای سفر پساز اعمال این ضریب اما قبلاز انجام هرگونه عملیات عددی به نزدیکترین ثانیه گرد میشوند، بنابراین، ضریب کوچک ممکن است منجر به ازدست رفتن دقت شود. همچنین |
TravelMode
حالتهای سفر که خودروها میتوانند استفاده کنند.
اینها باید زیرمجموعهای از حالتهای سفر Google Maps Platform Routes API باشند، به این نشانی مراجعه کنید: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
توجه: مسیرهای WALKING در نسخه بتا هستند و ممکن است گاهی پیادهروها یا مسیرهای عابر پیاده را بهطور واضح نشان ندهند. باید این هشدار را برای همه مسیرهای پیادهروی که در برنامهتان نمایش میدهید به کاربر نشان دهید.
| شمارشیها | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
حالت سفر نامشخص، معادل DRIVING. |
DRIVING |
حالت سفر مربوط به مسیرهای رانندگی (خودرو، ...). |
WALKING |
حالت سفر مربوط به مسیرهای پیادهروی. |
TWO_WHEELER |
وسیله نقلیه موتوری دوچرخ. برای مثال، موتورسیکلت. توجه داشته باشید که این حالت با حالت سفر «دوچرخهسواری» که حالتهای با نیروی انسانی را پوشش میدهد متفاوت است. این حالت سفر فقط در کشورهایی که در کشورها و مناطق پشتیبانیشده برای وسایل نقلیه دوچرخ فهرست شدهاند پشتیبانی میشود. |
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
خطمشی مربوط به نحوه تخلیه بار خودرو. فقط برای محمولههایی اعمال میشود که هم تحویل و هم ارسال دارند.
سایر محمولهها میتوانند در هرجایی از مسیر مستقل از unloadingPolicy انجام شوند.
| شمارشیها | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
خطمشی تخلیه بار نامشخص؛ تحویلها باید فقط پساز تحویل گرفتنهای مربوطه انجام شوند. |
LAST_IN_FIRST_OUT |
تحویلها باید بهترتیب معکوس تحویل گرفتنها انجام شود |
FIRST_IN_FIRST_OUT |
تحویلها باید به همان ترتیبی که تحویل گرفته شدهاند انجام شوند |
LoadLimit
محدودیت بار اعمالشده بر وسیله نقلیه را تعریف میکند، مثلاً «این کامیون فقط میتواند تا ۳۵۰۰ کیلوگرم بار حمل کند». loadLimits را ببینید.
| نمایش JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| فیلدها | |
|---|---|
softMaxLoad |
حد نرم بار. |
costPerUnitAboveSoftMax |
اگر بار درطول مسیر این وسیله نقلیه از |
startLoadInterval |
بازه بار قابلقبول خودرو در شروع مسیر. |
endLoadInterval |
بازه بار قابلقبول خودرو در انتهای مسیر. |
maxLoad |
حداکثر مقدار قابلقبول بار. |
costPerKilometer |
هزینه جابهجایی یک واحد بار در یک کیلومتر برای این خودرو. این میتواند بهعنوان پراکسی برای مصرف سوخت استفاده شود: اگر بار وزنی (به نیوتن) باشد، بار*کیلومتر دارای بعد انرژی است. آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request را ببینید. |
costPerTraveledHour |
هزینه سفر با یک واحد بار درطول یک ساعت برای این خودرو. آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request را ببینید. |
فاصله
فاصله زمانی مقادیر بار قابلقبول.
| نمایش JSON |
|---|
{ "min": string, "max": string } |
| فیلدها | |
|---|---|
min |
حداقل بار قابلقبول. باید ≥ ۰ باشد. اگر هر دو مشخص شده باشند، |
max |
حداکثر بار قابلقبول. باید ≥ ۰ باشد. اگر مشخص نشده باشد، حداکثر بار توسط این پیام محدود نمیشود. اگر هر دو مشخص شده باشند، |
LoadCost
هزینه جابهجایی یک واحد بار درطول Transition. برای یک بار مشخص، هزینه مجموع دو بخش است:
- min(load,
loadThreshold) *costPerUnitBelowThreshold - max(0, load -
loadThreshold) *costPerUnitAboveThreshold
با این هزینه، راهحلها ترجیح میدهند ابتدا تقاضاهای بالا را تحویل دهند، یا بهطور معادل، تقاضاهای بالا را در آخر تحویل بگیرند. برای مثال، اگر خودرویی
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
و مسیر آن شروع، تحویل، تحویل، ارسال، ارسال، پایان با انتقالهای زیر است:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
سپس هزینه متحملشده توسط این LoadCost برابر است با (cost_below * load_below * kilometers + cost_above * load_above * kms)
- transition 0: 0.0
- گذار ۱: ۲٫۰ * ۱۰ * ۱٫۰ + ۱۰٫۰ * ۰ * ۱٫۰ = ۲۰٫۰
- گذار ۲: ۲٫۰ * ۱۵ * ۱٫۰ + ۱۰٫۰ * (۲۰ - ۱۵) * ۱٫۰ = ۸۰٫۰
- گذار ۳: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- گذار ۴: ۰.۰
بنابراین LoadCost درطول مسیر ۱۲۰.۰ است.
اما اگر مسیر شروع، تحویل گرفتن، ارسال، تحویل گرفتن، ارسال، پایان با انتقالها باشد:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
در این صورت، هزینه ایجادشده توسط این LoadCost عبارت است از
- transition 0: 0.0
- گذار ۱: ۲٫۰ * ۱۰ * ۱٫۰ + ۱۰٫۰ * ۰ * ۱٫۰ = ۲۰٫۰
- گذار ۲: ۰.۰
- گذار ۳: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- گذار ۴: ۰.۰
در اینجا LoadCost درطول مسیر ۴۰٫۰ است.
LoadCost راهحلهای دارای انتقالهای سنگین را گرانتر میکند.
آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request را ببینید.
| نمایش JSON |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| فیلدها | |
|---|---|
loadThreshold |
مقدار باری که بالاتر از آن، هزینه جابهجایی یک واحد بار از costPerUnitBelowThreshold به costPerUnitAboveThreshold تغییر میکند. باید >= ۰ باشد. |
costPerUnitBelowThreshold |
هزینه جابهجایی یک واحد بار، برای هر واحد بین ۰ و آستانه. باید مقداری محدود و بزرگتر یا مساوی ۰ باشد. |
costPerUnitAboveThreshold |
هزینه جابهجایی یک واحد بار، برای هر واحد بالاتر از آستانه. در مورد خاص آستانه = ۰، این هزینه ثابت بهازای هر واحد است. باید مقداری محدود و بزرگتر یا مساوی ۰ باشد. |
DurationLimit
محدودیتی که حداکثر مدت مسیر خودرو را تعریف میکند. میتواند سخت یا نرم باشد.
وقتی فیلد حد نرم تعریف میشود، هم آستانه حداکثر نرم و هم هزینه مرتبط با آن باید باهم تعریف شوند.
| نمایش JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| فیلدها | |
|---|---|
maxDuration |
محدودیت سختی که مدت را به حداکثر maxDuration محدود میکند. |
softMaxDuration |
محدودیت نرمی که حداکثر محدودیت مدت را اعمال نمیکند، اما درصورت نقض شدن، باعث میشود مسیر هزینه داشته باشد. این هزینه به هزینههای دیگری که در مدل تعریف شده است، با همان واحد، اضافه میشود. اگر تعریف شده باشد، |
quadraticSoftMaxDuration |
محدودیت نرمی که حداکثر محدودیت مدت را اعمال نمیکند، اما درصورت نقض شدن باعث میشود هزینه مسیر بهصورت درجه دوم در مدت افزایش یابد. این هزینه به هزینههای دیگری که در مدل تعریف شده است، با همان واحد، اضافه میشود. اگر
|
costPerHourAfterSoftMax |
هزینه بهازای هر ساعت درصورت نقض آستانه هزینه باید غیرمنفی باشد. |
costPerSquareHourAfterQuadraticSoftMax |
هزینه بهازای ساعت مربع درصورت نقض آستانه اگر مدتزمان کمتر از آستانه باشد، هزینه اضافی ۰ است، درغیراینصورت هزینه به مدتزمان بستگی دارد و بهصورت زیر است: هزینه باید غیرمنفی باشد. |
DistanceLimit
محدودیتی که حداکثر مسافتی را که میتوان طی کرد تعریف میکند. میتواند سخت یا نرم باشد.
اگر حد نرم تعریف شده باشد، هم softMaxMeters و هم costPerKilometerAboveSoftMax باید تعریف شده و غیرمنفی باشند.
| نمایش JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| فیلدها | |
|---|---|
maxMeters |
محدودیت سختی که فاصله را حداکثر به maxMeters محدود میکند. حد پاسخ باید غیرمنفی باشد. |
softMaxMeters |
محدودیت نرمی که حداکثر محدودیت فاصله را اعمال نمیکند، اما درصورت نقض، منجر به هزینهای میشود که به سایر هزینههای تعریفشده در مدل، با همان واحد، اضافه میشود. اگر softMaxMeters تعریف شده باشد، باید کمتر از maxMeters و غیرمنفی باشد. |
costPerKilometerBelowSoftMax |
هزینه هر کیلومتر طیشده، افزایش تا این هزینه در |
costPerKilometerAboveSoftMax |
هزینه هر کیلومتر درصورتیکه مسافت بیشتر از حد مجاز هزینه باید غیرمنفی باشد. |
BreakRule
قوانین تولید وقت استراحت برای خودرو (مثلاً وقت ناهار). استراحت یک دوره زمانی پیوسته است که درطول آن خودرو در موقعیت فعلی خود بیکار میماند و نمیتواند هیچ بازدیدی انجام دهد. ممکن است وقفه در شرایط زیر رخ دهد:
- درطول سفر بین دو بازدید (که شامل زمان درست قبل یا درست بعداز بازدید میشود، اما نه در اواسط بازدید)، که در این صورت زمان حملونقل مربوطه بین بازدیدها را تمدید میکند،
- یا قبلاز شروع حرکت خودرو (ممکن است خودرو در اواسط استراحت شروع به حرکت نکند)، که در این صورت بر زمان شروع حرکت خودرو تأثیری ندارد.
- یا بعداز پایان خودرو (همانند بالا، با زمان پایان خودرو).
| نمایش JSON |
|---|
{ "breakRequests": [ { object ( |
| فیلدها | |
|---|---|
breakRequests[] |
توالی وقتهای استراحت. پیام |
frequencyConstraints[] |
ممکن است چند |
BreakRequest
توالی وقفهها (یعنی تعداد و ترتیب آنها) که برای هر وسیله نقلیه اعمال میشود باید ازقبل مشخص باشد. BreakRequestهای تکراری آن توالی را بهترتیبی که باید رخ دهند تعریف میکنند. پنجرههای زمانی آنها (earliestStartTime / latestStartTime) ممکن است همپوشانی داشته باشند، اما باید با سفارش سازگار باشند (این مورد بررسی میشود).
| نمایش JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| فیلدها | |
|---|---|
earliestStartTime |
الزامی. کران پایین (شامل) در شروع وقفه. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
latestStartTime |
الزامی. کران بالا (شامل) در شروع وقفه. از RFC 3339 استفاده میکند، که در آن خروجی تولیدشده همیشه Z-نرمالسازی میشود و از ۰، ۳، ۶، یا ۹ رقم اعشاری استفاده میکند. انحرافهای غیراز «Z» نیز پذیرفته میشود. مثالها: |
minDuration |
الزامی. حداقل مدت وقفه. باید مثبت باشد. |
FrequencyConstraint
ممکن است با اعمال حداقل بسامد استراحت، مانند «باید حداقل ۱ ساعت استراحت در هر ۱۲ ساعت وجود داشته باشد»، بسامد و مدت استراحتهای مشخصشده در بالا را بیشتر محدود کند. با فرض اینکه این را بتوان بهصورت «در هر پنجره زمانی لغزشی ۱۲ ساعته، باید حداقل یک استراحت حداقل یک ساعته وجود داشته باشد» تفسیر کرد، آن مثال به FrequencyConstraint زیر ترجمه میشود:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
زمانبندی و مدت زمان وقفهها در راهحل، علاوهبر پنجرههای زمانی و حداقل مدت زمانهای مشخصشده در BreakRequest، از همه این محدودیتها پیروی خواهد کرد.
FrequencyConstraint ممکن است در عمل برای وقفههای غیرمتوالی اعمال شود. برای مثال، زمانبندی زیر از مثال «۱ ساعت هر ۱۲ ساعت» پیروی میکند:
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 |
الزامی. حداکثر بازه مجاز برای هر فاصله زمانی در مسیر که حداقل بخشیاز استراحت |
هدف اصلی
اهداف بهطور کامل جایگزین مدل هزینه میشوند و بنابراین با هزینههای ازپیش موجود ناسازگار هستند. هر هدف به تعدادی هزینه ازپیش تعریفشده برای مثال، وسایل نقلیه، محمولهها، یا ویژگیهای انتقال نگاشت میشود.
آزمایشی: برای جزئیات بیشتر، https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request را ببینید.
| نمایش JSON |
|---|
{
"type": enum ( |
| فیلدها | |
|---|---|
type |
نوع هدف. |
weight |
این هدف چقدر باید نسبتبه اهداف دیگر اهمیت داشته باشد. این مقدار میتواند هر عدد غیرمنفی باشد، مجموع وزنها نباید ۱ باشد. وزنها بهطور پیشفرض ۱٫۰ است. |
نوع
نوع هدفی که به مجموعهای از هزینهها نگاشت خواهد شد.
| شمارشیها | |
|---|---|
DEFAULT |
برای اطمینان از راهحل منطقی، از مجموعه پیشفرضی از هزینهها استفاده خواهد شد. توجه: این هدف میتواند بهتنهایی استفاده شود، اما همیشه با وزن ۱٫۰ بهعنوان خط مبنا به اهداف مشخصشده توسط کاربر اضافه میشود، اگر قبلاً وجود نداشته باشد. |
MIN_DISTANCE |
اهداف «MIN». کل مسافت طیشده را به حداقل برسانید. |
MIN_WORKING_TIME |
بهحداقل رساندن کل زمان کار، جمعشده برای همه وسایل نقلیه. |
MIN_TRAVEL_TIME |
همانند بالا اما فقط با تمرکز بر مدت سفر. |
MIN_NUM_VEHICLES |
تعداد خودروهای مورداستفاده را بهحداقل برسانید. |
DurationDistanceMatrix
ماتریس مدت و فاصله را از مکانهای شروع بازدید و خودرو تا مکانهای پایان بازدید و خودرو مشخص میکند.
| نمایش 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 |
محدودیتی برای مسافت طیشده هنگام انجام این انتقال مشخص میکند. از تاریخ ۲۰۲۱/۰۶، فقط محدودیتهای نرم پشتیبانی میشود. |
delay |
تأخیر ایجادشده هنگام اجرای این انتقال را مشخص میکند. این تأخیر همیشه پساز پایان بازدید مبدأ و پیشاز شروع بازدید مقصد رخ میدهد. |
ShipmentTypeIncompatibility
ناسازگاریهای بین محمولهها را براساس shipmentType آنها مشخص میکند. ظاهر شدن محمولههای ناسازگار در یک مسیر براساس حالت ناسازگاری محدود میشود.
| نمایش JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| فیلدها | |
|---|---|
types[] |
فهرست انواع ناسازگار. دو محموله که |
incompatibilityMode |
حالت اعمالشده برای ناسازگاری. |
IncompatibilityMode
حالتهایی که نحوه محدود شدن ظاهر محمولههای ناسازگار را در همان مسیر تعریف میکنند.
| شمارشیها | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
حالت ناسازگاری نامشخص. این مقدار هرگز نباید استفاده شود. |
NOT_PERFORMED_BY_SAME_VEHICLE |
در این حالت، دو محموله با انواع ناسازگار هرگز نمیتوانند از یک وسیله نقلیه مشترک استفاده کنند. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
در این حالت، دو محموله با انواع ناسازگار هرگز نمیتوانند همزمان در یک خودرو باشند:
|
ShipmentTypeRequirement
الزامات بین محمولهها را براساس shipmentType آنها مشخص میکند. جزئیات الزام توسط حالت الزام تعریف میشود.
| نمایش JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| فیلدها | |
|---|---|
requiredShipmentTypeAlternatives[] |
فهرست انواع ارسال جایگزین که |
dependentShipmentTypes[] |
همه محمولههایی که نوعی در فیلد توجه: زنجیرههای الزامات بهگونهای که |
requirementMode |
حالت روی شرط اعمال شد. |
RequirementMode
حالتهایی که ظاهر محمولههای وابسته را در مسیر تعریف میکنند.
| شمارشیها | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
حالت الزامی نامشخص. این مقدار هرگز نباید استفاده شود. |
PERFORMED_BY_SAME_VEHICLE |
در این حالت، همه محمولههای «وابسته» باید با حداقل یکی از محمولههای «موردنیاز» خود در یک وسیله نقلیه قرار بگیرند. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
با حالت بنابراین، تحویل محموله «وابسته» باید یکی از موارد زیر را داشته باشد:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
مانند قبل، با این تفاوت که محمولههای «وابسته» باید در زمان تحویل، محموله «موردنیاز» را در وسیله نقلیه خود داشته باشند. |
PrecedenceRule
قانون تقدم بین دو رویداد (هر رویداد عبارت است از تحویل گرفتن یا تحویل دادن محموله): رویداد «دوم» باید حداقل offsetDuration پساز شروع رویداد «اول» شروع شود.
چندین تقدم میتوانند به رویدادهای یکسان (یا مرتبط) اشاره کنند، برای مثال، «سوار کردن B پساز تحویل A اتفاق میافتد» و «سوار کردن C پساز سوار کردن B اتفاق میافتد».
علاوهبراین، تقدمها فقط زمانی اعمال میشوند که هر دو ارسال انجام شده باشند و درغیراینصورت نادیده گرفته میشوند.
| نمایش JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| فیلدها | |
|---|---|
firstIsDelivery |
نشان میدهد که آیا رویداد «اول» تحویل است یا نه. |
secondIsDelivery |
نشان میدهد که آیا رویداد «دوم» تحویل است یا نه. |
offsetDuration |
فاصله زمانی بین رویداد «اول» و «دوم». میتواند منفی باشد. |
firstIndex |
نمایه ارسال «اولین» رویداد. این فیلد باید مشخص شود. |
secondIndex |
شاخص ارسال رویداد «دوم». این فیلد باید مشخص شود. |