- نمایش JSON
- حمل و نقل
- درخواست بازدید
- لاتلنگ
- نقطه مسیر
- مکان
- پنجره زمانی
- وسیله نقلیه
- حالت سفر
- اصلاحکنندههای مسیر
- سیاست تخلیه
- محدودیت بار
- فاصله
- هزینه بار
- محدودیت مدت
- محدودیت فاصله
- شکستن قانون
- درخواست وقفه
- محدودیت فرکانس
- هدف
- نوع
- ماتریس مدت زمان-فاصله
- ردیف
- ویژگیهای انتقال
- ناسازگاری نوع حمل و نقل
- حالت ناسازگاری
- نوع حمل و نقل مورد نیاز
- حالت مورد نیاز
- قانون تقدم
یک مدل حمل و نقل شامل مجموعهای از محمولهها است که باید توسط مجموعهای از وسایل نقلیه انجام شوند، در حالی که هزینه کلی، که مجموع موارد زیر است، به حداقل میرسد:
- هزینه مسیریابی وسایل نقلیه (مجموع هزینه به ازای کل زمان، هزینه به ازای هر زمان سفر و هزینه ثابت روی همه وسایل نقلیه).
- جریمههای حمل و نقل انجام نشده
- هزینه مدت زمان جهانی حمل و نقل
| نمایش JSON |
|---|
{ "shipments": [ { object ( |
| فیلدها | |
|---|---|
shipments[] | مجموعه محمولههایی که باید در مدل انجام شوند. |
vehicles[] | مجموعهای از وسایل نقلیه که میتوانند برای انجام بازدیدها استفاده شوند. |
objectives[] | مجموعه اهداف این مدل که به هزینه تبدیل خواهیم کرد. اگر خالی نباشد، مدل ورودی باید بدون هزینه باشد. برای دریافت درخواست اصلاحشده، لطفاً آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request مراجعه کنید. |
globalStartTime | زمان شروع و پایان سراسری مدل: هیچ زمانی خارج از این محدوده نمیتواند معتبر در نظر گرفته شود. بازه زمانی مدل باید کمتر از یک سال باشد، یعنی هنگام استفاده از فیلدهای از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: |
globalEndTime | اگر تنظیم نشده باشد، ۰۰:۰۰:۰۰ UTC، ۱ ژانویه ۱۹۷۱ (یعنی ثانیه: ۳۱۵۳۶۰۰۰، نانوثانیه: ۰) به عنوان پیشفرض استفاده میشود. از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: |
globalDurationCostPerHour | «مدت زمان کلی» طرح کلی، تفاوت بین زودترین زمان شروع مؤثر و دیرترین زمان پایان مؤثر همه وسایل نقلیه است. کاربران میتوانند برای بهینه سازی، مثلاً برای زودترین زمان تکمیل کار، هزینهای در هر ساعت به آن مقدار اختصاص دهند. این هزینه باید در واحد مشابه |
durationDistanceMatrices[] | ماتریسهای مدت زمان و فاصله مورد استفاده در مدل را مشخص میکند. اگر این فیلد خالی باشد، بسته به مقدار فیلد مثالهای کاربرد:
|
durationDistanceMatrixSrcTags[] | تگهایی که منابع ماتریسهای مدت زمان و فاصله را تعریف میکنند؛ برچسبها با |
durationDistanceMatrixDstTags[] | تگهایی که مقاصد ماتریسهای مدت زمان و مسافت را تعریف میکنند؛ برچسبها با |
transitionAttributes[] | ویژگیهای انتقال به مدل اضافه شدند. |
shipmentTypeIncompatibilities[] | مجموعههایی از shipping_typeهای ناسازگار (به |
shipmentTypeRequirements[] | مجموعه الزامات |
precedenceRules[] | مجموعهای از قوانین تقدم که باید در مدل اجرا شوند. مهم : استفاده از قوانین تقدم، اندازه مسئلهای را که میتوان بهینهسازی کرد، محدود میکند. درخواستهایی که از قوانین تقدم استفاده میکنند و شامل محمولههای زیادی هستند، ممکن است رد شوند. |
maxActiveVehicles | حداکثر تعداد وسایل نقلیه فعال را محدود میکند. یک وسیله نقلیه در صورتی فعال است که مسیر آن حداقل یک محموله را حمل کند. این میتواند برای محدود کردن تعداد مسیرها در مواردی که تعداد رانندگان کمتر از وسایل نقلیه است و ناوگان وسایل نقلیه ناهمگن است، استفاده شود. سپس بهینهسازی بهترین زیرمجموعه از وسایل نقلیه را برای استفاده انتخاب میکند. باید کاملاً مثبت باشد. |
حمل و نقل
ارسال یک کالا، از یکی از محلهای دریافت به یکی از محلهای تحویل. برای اینکه ارسال، انجامشده تلقی شود، یک وسیله نقلیه منحصر به فرد باید به یکی از محلهای دریافت خود مراجعه کند (و ظرفیتهای اضافی خود را به ترتیب کاهش دهد)، سپس بعداً به یکی از محلهای تحویل خود مراجعه کند (و بنابراین ظرفیتهای اضافی خود را به ترتیب افزایش دهد).
| نمایش JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| فیلدها | |
|---|---|
displayName | نام نمایشی تعریفشده توسط کاربر برای محموله. میتواند تا ۶۳ کاراکتر داشته باشد و از کاراکترهای UTF-8 استفاده کند. |
pickups[] | مجموعهای از گزینههای تحویل مرتبط با محموله. در صورت عدم تعیین، وسیله نقلیه فقط باید به مکانی مربوط به تحویلها مراجعه کند. |
deliveries[] | مجموعهای از گزینههای تحویل مرتبط با محموله. در صورت عدم تعیین، وسیله نقلیه فقط باید به مکانی مربوط به محلهای تحویل مراجعه کند. |
loadDemands | تقاضای بار محموله (برای مثال وزن، حجم، تعداد پالت و غیره). کلیدهای موجود در نقشه باید شناسههایی باشند که نوع بار مربوطه را توصیف میکنند، و در حالت ایدهآل شامل واحدها نیز میشوند. به عنوان مثال: "وزن_کیلوگرم"، "حجم_گالن"، "تعداد پالت" و غیره. اگر یک کلید مشخص در نقشه ظاهر نشود، بار مربوطه تهی در نظر گرفته میشود. |
allowedVehicleIndices[] | مجموعه وسایل نقلیهای که ممکن است این محموله را حمل کنند. اگر خالی باشد، همه وسایل نقلیه میتوانند آن را انجام دهند. وسایل نقلیه با اندیس خود در لیست |
costsPerVehicle[] | هزینهای را که هنگام تحویل این محموله توسط هر وسیله نقلیه متحمل میشود، مشخص میکند. در صورت مشخص بودن، باید یکی از موارد زیر را داشته باشد:
این هزینهها باید با واحد |
costsPerVehicleIndices[] | شاخصهای وسایل نقلیهای که تابع |
pickupToDeliveryAbsoluteDetourLimit | حداکثر زمان مطلق انحراف از مسیر در مقایسه با کوتاهترین مسیر از برداشت تا تحویل را مشخص میکند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد. برای مثال، فرض کنید t کوتاهترین زمان لازم برای رفتن از گزینهی انتخابشده برای تحویل مستقیم به گزینهی انتخابشده برای تحویل باشد. سپس تنظیم اگر هر دو محدودیت نسبی و مطلق برای یک محموله مشخص شده باشد، محدودیت محدودکنندهتر برای هر جفت تحویل/تحویل ممکن استفاده میشود. از تاریخ 2017/10، مسیرهای انحرافی فقط زمانی پشتیبانی میشوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد. مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' |
pickupToDeliveryTimeLimit | حداکثر مدت زمان از شروع برداشت تا شروع تحویل یک محموله را مشخص میکند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد. این موضوع به گزینههای انتخاب شده برای برداشت و تحویل و همچنین سرعت وسیله نقلیه بستگی ندارد. این موضوع را میتوان در کنار محدودیتهای حداکثر انحراف از مسیر مشخص کرد: راهحل هر دو مشخصات را رعایت خواهد کرد. مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' |
shipmentType | رشتهای غیرتهی که یک "نوع" برای این محموله مشخص میکند. این ویژگی میتواند برای تعریف ناسازگاریها یا الزامات بین با |
label | یک برچسب برای این محموله مشخص میکند. این برچسب در پاسخ در |
ignore | اگر درست است، از این محموله صرف نظر کن، اما نادیده گرفتن یک shipping منجر به خطای اعتبارسنجی میشود، زمانی که نادیده گرفتن محمولهای که در |
penaltyCost | اگر محموله تکمیل نشود، این جریمه به هزینه کلی مسیرها اضافه میشود. یک محموله در صورتی تکمیل شده تلقی میشود که یکی از گزینههای دریافت و تحویل آن مورد بازدید قرار گیرد. هزینه را میتوان با همان واحدی که برای سایر فیلدهای مرتبط با هزینه در مدل استفاده میشود، بیان کرد و باید مثبت باشد. مهم : اگر این جریمه مشخص نشده باشد، بینهایت در نظر گرفته میشود، یعنی ارسال باید تکمیل شود. |
pickupToDeliveryRelativeDetourLimit | حداکثر زمان نسبی انحراف از مسیر را در مقایسه با کوتاهترین مسیر از برداشت تا تحویل مشخص میکند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد. برای مثال، فرض کنید t کوتاهترین زمان لازم برای رفتن از گزینهی انتخابشده برای تحویل مستقیم به گزینهی انتخابشده برای تحویل باشد. سپس تنظیم اگر هر دو محدودیت نسبی و مطلق برای یک محموله مشخص شده باشد، محدودیت محدودکنندهتر برای هر جفت تحویل/تحویل ممکن استفاده میشود. از تاریخ 2017/10، مسیرهای انحرافی فقط زمانی پشتیبانی میشوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد. |
درخواست بازدید
درخواست بازدید که میتواند توسط یک وسیله نقلیه انجام شود: دارای یک موقعیت جغرافیایی (یا دو مورد، به زیر مراجعه کنید)، زمانهای باز و بسته شدن که توسط پنجرههای زمانی نشان داده میشوند، و مدت زمان سرویس (زمان صرف شده توسط وسیله نقلیه پس از رسیدن برای تحویل گرفتن یا تحویل دادن کالا) است.
| نمایش 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 مراجعه کنید. |
لاتلنگ
شیءای که یک جفت عرض/طول جغرافیایی را نشان میدهد. این به صورت یک جفت دوتایی بیان میشود تا درجه عرض جغرافیایی و درجه طول جغرافیایی را نشان دهد. مگر اینکه خلاف آن مشخص شده باشد، این شیء باید با استاندارد WGS84 مطابقت داشته باشد. مقادیر باید در محدوده نرمال باشند.
| نمایش JSON |
|---|
{ "latitude": number, "longitude": number } |
| فیلدها | |
|---|---|
latitude | عرض جغرافیایی بر حسب درجه. باید در محدوده [-90.0، +90.0] باشد. |
longitude | طول جغرافیایی بر حسب درجه. باید در محدوده [-۱۸۰.۰، +۱۸۰.۰] باشد. |
نقطه مسیر
یک نقطه مسیر را محصور میکند. نقاط مسیر، مکانهای ورود و خروج VisitRequests و مکانهای شروع و پایان وسایل نقلیه را مشخص میکنند.
| نمایش JSON |
|---|
{ "sideOfRoad": boolean, "vehicleStopover": boolean, // Union field |
| فیلدها | |
|---|---|
sideOfRoad | اختیاری. نشان میدهد که موقعیت این نقطه مسیر طوری تنظیم شده است که وسیله نقلیه ترجیح میدهد در یک سمت خاص از جاده توقف کند. وقتی این مقدار را تنظیم میکنید، مسیر از این مکان عبور میکند تا وسیله نقلیه بتواند در سمتی از جاده که موقعیت آن نسبت به مرکز جاده به سمت آن متمایل است، توقف کند. این گزینه برای حالت سفر «پیادهروی» کار نمیکند. |
vehicleStopover | نشان میدهد که نقطهی مسیر برای توقف وسایل نقلیه در نظر گرفته شده است، جایی که قصد سوار یا پیاده کردن مسافر را دارند. این گزینه فقط برای حالت سفر «رانندگی» و زمانی که «نوع مکان» برابر با «مکان» باشد، کار میکند. تجربی: رفتار یا وجود این میدان ممکن است در آینده تغییر کند. |
فیلد واحد location_type . روشهای مختلف برای نمایش یک مکان. location_type فقط میتواند یکی از موارد زیر باشد: | |
location | نقطهای که با استفاده از مختصات جغرافیایی مشخص شده است، شامل یک عنوان اختیاری. |
placeId | شناسه مکان POI مرتبط با نقطه مسیر. هنگام استفاده از شناسه مکان برای مشخص کردن محل ورود یا خروج یک درخواست بازدید، از شناسه مکانی استفاده کنید که به اندازه کافی خاص باشد تا یک مکان LatLng را برای پیمایش به آن مکان تعیین کند. به عنوان مثال، شناسه مکانی که نشان دهنده یک ساختمان است مناسب است، اما شناسه مکانی که نشان دهنده یک جاده است توصیه نمیشود. |
مکان
یک مکان (یک نقطه جغرافیایی و یک عنوان اختیاری) را در بر میگیرد.
| نمایش JSON |
|---|
{
"latLng": {
object ( |
| فیلدها | |
|---|---|
latLng | مختصات جغرافیایی محل مورد نظر. |
heading | جهت قطبنما که با جهت جریان ترافیک مرتبط است. این مقدار برای مشخص کردن سمت جاده برای سوار و پیاده کردن استفاده میشود. مقادیر جهت میتوانند از ۰ تا ۳۶۰ باشند، که در آن ۰ جهت شمال، ۹۰ جهت شرق و غیره را مشخص میکند. |
پنجره زمانی
پنجرههای زمانی، زمان یک رویداد را محدود میکنند، مانند زمان رسیدن به یک بازدید یا زمان شروع و پایان یک وسیله نقلیه.
مرزهای پنجره زمان سخت، 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-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: |
endTime | زمان پایان پنجره زمان سخت. اگر مشخص نشود، روی از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: |
softStartTime | زمان شروع نرم پنجره زمانی. از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "Z" نیز پذیرفته میشوند. مثالها: |
softEndTime | زمان پایان نرم پنجره زمانی. از RFC 3339 استفاده میکند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده میکند. آفستهای غیر از "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 به durations را مشخص میکند. duration علاوه بر اگر یک درخواست بازدید چندین نوع داشته باشد، برای هر نوع در نقشه مدت زمان اضافه خواهد شد. |
breakRule | برنامهی استراحتی که باید برای این وسیله نقلیه اعمال شود را شرح میدهد. در صورت خالی بودن، هیچ استراحتی برای این وسیله نقلیه برنامهریزی نخواهد شد. |
label | یک برچسب برای این وسیله نقلیه مشخص میکند. این برچسب در پاسخ به عنوان |
ignore | اگر درست باشد، اگر یک ارسال توسط یک وسیله نقلیه نادیده گرفته شده در اگر یک محموله توسط یک وسیله نقلیه نادیده گرفته شده در |
travelDurationMultiple | یک ضریب ضرب را مشخص میکند که میتواند برای افزایش یا کاهش زمان سفر این وسیله نقلیه استفاده شود. به عنوان مثال، تنظیم این مقدار روی ۲.۰ به این معنی است که این وسیله نقلیه کندتر است و زمان سفر آن دو برابر زمان سفر برای وسایل نقلیه استاندارد است. این ضریب بر مدت زمان بازدید تأثیر نمیگذارد. در صورت مشخص بودن هشدار: زمانهای سفر پس از اعمال این ضریب اما قبل از انجام هرگونه عملیات عددی، به نزدیکترین ثانیه گرد میشوند، بنابراین، ضریب کوچک ممکن است منجر به از دست رفتن دقت شود. همچنین به |
حالت سفر
حالتهای سفری که میتوانند توسط وسایل نقلیه استفاده شوند.
این موارد باید زیرمجموعهای از حالتهای سفر API مسیرهای پلتفرم نقشههای گوگل باشند، به این آدرس مراجعه کنید: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
توجه: مسیرهای WALKING در نسخه بتا هستند و ممکن است گاهی اوقات فاقد پیادهروهای خالی یا مسیرهای عابر پیاده باشند. شما باید این هشدار را برای همه مسیرهای پیادهروی که در برنامه خود نمایش میدهید، به کاربر نمایش دهید.
| انومها | |
|---|---|
TRAVEL_MODE_UNSPECIFIED | حالت سفر نامشخص، معادل DRIVING . |
DRIVING | حالت سفر مربوط به مسیرهای رانندگی (ماشین، ...). |
WALKING | حالت سفر مربوط به مسیرهای پیادهروی. |
اصلاحکنندههای مسیر
مجموعهای از شرایط اختیاری را برای برآورده شدن هنگام محاسبه مسیرهای وسایل نقلیه، کپسولهسازی میکند. این مشابه RouteModifiers در 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 آزادانه حمل شوند.
| انومها | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED | سیاست تخلیه نامشخص؛ تحویلها باید درست پس از بارگیریهای مربوطه انجام شوند. |
LAST_IN_FIRST_OUT | تحویلها باید به ترتیب معکوس دریافتها انجام شوند |
FIRST_IN_FIRST_OUT | تحویلها باید به همان ترتیبی که تحویلها انجام میشوند، انجام شوند |
محدودیت بار
محدودیت بار اعمال شده بر یک وسیله نقلیه را تعریف میکند، مثلاً «این کامیون فقط میتواند تا ۳۵۰۰ کیلوگرم بار حمل کند». به 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 | حداقل بار قابل قبول. باید ≥ 0 باشد. اگر هر دو مشخص شده باشند، |
max | حداکثر بار قابل قبول. باید ≥ 0 باشد. اگر مشخص نشده باشد، حداکثر بار توسط این پیام محدود نمیشود. اگر هر دو مشخص شده باشند، |
هزینه بار
هزینه جابجایی یک واحد بار در طول یک Transition . برای یک بار مشخص، هزینه مجموع دو بخش است:
- حداقل (بار،
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 * kms + cost_above * load_above * kms)
- انتقال ۰: ۰.۰
- گذار ۱: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- گذار ۲: ۲.۰ * ۱۵ * ۱.۰ + ۱۰.۰ * (۲۰ - ۱۵) * ۱.۰ = ۸۰.۰
- گذار ۳: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- انتقال ۴: ۰.۰
بنابراین 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 برابر است با
- انتقال ۰: ۰.۰
- گذار ۱: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- انتقال ۲: ۰.۰
- گذار ۳: ۲.۰ * ۱۰ * ۱.۰ + ۱۰.۰ * ۰ * ۱.۰ = ۲۰.۰
- انتقال ۴: ۰.۰
در اینجا 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 تغییر میکند. باید >= 0 باشد. |
costPerUnitBelowThreshold | هزینه جابجایی یک واحد بار، برای هر واحد بین ۰ و آستانه. باید یک مقدار محدود و >= ۰ باشد. |
costPerUnitAboveThreshold | Cost of moving a unit of load, for each unit above threshold. In the special case threshold = 0, this is a fixed cost per unit. Must be a finite value, and >= 0. |
DurationLimit
A limit defining a maximum duration of the route of a vehicle. It can be either hard or soft.
When a soft limit field is defined, both the soft max threshold and its associated cost must be defined together.
| نمایش JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| فیلدها | |
|---|---|
maxDuration | A hard limit constraining the duration to be at most maxDuration. A duration in seconds with up to nine fractional digits, ending with ' |
softMaxDuration | A soft limit not enforcing a maximum duration limit, but when violated makes the route incur a cost. This cost adds up to other costs defined in the model, with the same unit. If defined, A duration in seconds with up to nine fractional digits, ending with ' |
quadraticSoftMaxDuration | A soft limit not enforcing a maximum duration limit, but when violated makes the route incur a cost, quadratic in the duration. This cost adds up to other costs defined in the model, with the same unit. If defined, A duration in seconds with up to nine fractional digits, ending with ' |
costPerHourAfterSoftMax | Cost per hour incurred if the The cost must be nonnegative. |
costPerSquareHourAfterQuadraticSoftMax | Cost per square hour incurred if the The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows: The cost must be nonnegative. |
DistanceLimit
A limit defining a maximum distance which can be traveled. It can be either hard or soft.
If a soft limit is defined, both softMaxMeters and costPerKilometerAboveSoftMax must be defined and be nonnegative.
| نمایش JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| فیلدها | |
|---|---|
maxMeters | A hard limit constraining the distance to be at most maxMeters. The limit must be nonnegative. |
softMaxMeters | A soft limit not enforcing a maximum distance limit, but when violated results in a cost which adds up to other costs defined in the model, with the same unit. If defined softMaxMeters must be less than maxMeters and must be nonnegative. |
costPerKilometerBelowSoftMax | Cost per kilometer incurred, increasing up to This cost is not supported in |
costPerKilometerAboveSoftMax | Cost per kilometer incurred if distance is above The cost must be nonnegative. |
BreakRule
Rules to generate time breaks for a vehicle (eg lunch breaks). A break is a contiguous period of time during which the vehicle remains idle at its current position and cannot perform any visit. A break may occur:
- during the travel between two visits (which includes the time right before or right after a visit, but not in the middle of a visit), in which case it extends the corresponding transit time between the visits,
- or before the vehicle start (the vehicle may not start in the middle of a break), in which case it does not affect the vehicle start time.
- or after the vehicle end (ditto, with the vehicle end time).
| نمایش JSON |
|---|
{ "breakRequests": [ { object ( |
| فیلدها | |
|---|---|
breakRequests[] | Sequence of breaks. See the |
frequencyConstraints[] | Several |
BreakRequest
The sequence of breaks (ie their number and order) that apply to each vehicle must be known beforehand. The repeated BreakRequest s define that sequence, in the order in which they must occur. Their time windows ( earliestStartTime / latestStartTime ) may overlap, but they must be compatible with the order (this is checked).
| نمایش JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| فیلدها | |
|---|---|
earliestStartTime | Required. Lower bound (inclusive) on the start of the break. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
latestStartTime | Required. Upper bound (inclusive) on the start of the break. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
minDuration | Required. Minimum duration of the break. Must be positive. A duration in seconds with up to nine fractional digits, ending with ' |
FrequencyConstraint
One may further constrain the frequency and duration of the breaks specified above, by enforcing a minimum break frequency, such as "There must be a break of at least 1 hour every 12 hours". Assuming that this can be interpreted as "Within any sliding time window of 12h, there must be at least one break of at least one hour", that example would translate to the following FrequencyConstraint :
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
The timing and duration of the breaks in the solution will respect all such constraints, in addition to the time windows and minimum durations already specified in the BreakRequest .
A FrequencyConstraint may in practice apply to non-consecutive breaks. For example, the following schedule honors the "1h every 12h" example:
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 | Required. Minimum break duration for this constraint. Nonnegative. See description of A duration in seconds with up to nine fractional digits, ending with ' |
maxInterBreakDuration | Required. Maximum allowed span of any interval of time in the route that does not include at least partially a break of A duration in seconds with up to nine fractional digits, ending with ' |
هدف
Objectives replace the cost model completely, and are therefore incompatible with pre-existing costs. Each objective maps to a number of pre-defined costs for, eg, vehicles, shipments or transition attributes.
Experimental: See https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request for more details.
| نمایش JSON |
|---|
{
"type": enum ( |
| فیلدها | |
|---|---|
type | The type of the objective. |
weight | How much this objective should count relatively to the others. This can be any non-negative number, weights do not have to sum to 1. Weights default to 1.0. |
نوع
The objective type that will be mapped to a set of costs.
| انومها | |
|---|---|
DEFAULT | A default set of costs will be used, to ensure a reasonable solution. Note: this objective can be used on its own, but will also always be added with weight 1.0, as a baseline, to the objectives specified by the user, if it's not already present. |
MIN_DISTANCE | "MIN" objectives. Minimize the total distance traveled. |
MIN_WORKING_TIME | Minimize the total working time, summed over all vehicles. |
MIN_TRAVEL_TIME | Same as above but focusing on travel time only. |
MIN_NUM_VEHICLES | Minimize the number of vehicles used. |
DurationDistanceMatrix
Specifies a duration and distance matrix from visit and vehicle start locations to visit and vehicle end locations.
| نمایش JSON |
|---|
{
"rows": [
{
object ( |
| فیلدها | |
|---|---|
rows[] | Specifies the rows of the duration and distance matrix. It must have as many elements as |
vehicleStartTag | Tag defining to which vehicles this duration and distance matrix applies. If empty, this applies to all vehicles, and there can only be a single matrix. Each vehicle start must match exactly one matrix, ie exactly one of their All matrices must have a different |
ردیف
Specifies a row of the duration and distance matrix.
| نمایش JSON |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| فیلدها | |
|---|---|
durations[] | Duration values for a given row. It must have as many elements as A duration in seconds with up to nine fractional digits, ending with ' |
meters[] | Distance values for a given row. If no costs or constraints refer to distances in the model, this can be left empty; otherwise it must have as many elements as |
TransitionAttributes
Specifies attributes of transitions between two consecutive visits on a route. Several TransitionAttributes may apply to the same transition: in that case, all extra costs add up and the strictest constraint or limit applies (following natural "AND" semantics).
| نمایش JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| فیلدها | |
|---|---|
srcTag | Tags defining the set of (src->dst) transitions these attributes apply to. A source visit or vehicle start matches iff its |
excludedSrcTag | See |
dstTag | A destination visit or vehicle end matches iff its |
excludedDstTag | See |
cost | Specifies a cost for performing this transition. This is in the same unit as all other costs in the model and must not be negative. It is applied on top of all other existing costs. |
costPerKilometer | Specifies a cost per kilometer applied to the distance traveled while performing this transition. It adds up to any |
distanceLimit | Specifies a limit on the distance traveled while performing this transition. As of 2021/06, only soft limits are supported. |
delay | Specifies a delay incurred when performing this transition. This delay always occurs after finishing the source visit and before starting the destination visit. A duration in seconds with up to nine fractional digits, ending with ' |
ShipmentTypeIncompatibility
Specifies incompatibilties between shipments depending on their shipmentType. The appearance of incompatible shipments on the same route is restricted based on the incompatibility mode.
| نمایش JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| فیلدها | |
|---|---|
types[] | List of incompatible types. Two shipments having different |
incompatibilityMode | Mode applied to the incompatibility. |
IncompatibilityMode
Modes defining how the appearance of incompatible shipments are restricted on the same route.
| انومها | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED | Unspecified incompatibility mode. This value should never be used. |
NOT_PERFORMED_BY_SAME_VEHICLE | In this mode, two shipments with incompatible types can never share the same vehicle. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY | In this mode, two shipments with incompatible types can never be on the same vehicle at the same time:
|
ShipmentTypeRequirement
Specifies requirements between shipments based on their shipmentType. The specifics of the requirement are defined by the requirement mode.
| نمایش JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| فیلدها | |
|---|---|
requiredShipmentTypeAlternatives[] | List of alternative shipment types required by the |
dependentShipmentTypes[] | All shipments with a type in the NOTE: Chains of requirements such that a |
requirementMode | Mode applied to the requirement. |
RequirementMode
Modes defining the appearance of dependent shipments on a route.
| انومها | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED | Unspecified requirement mode. This value should never be used. |
PERFORMED_BY_SAME_VEHICLE | In this mode, all "dependent" shipments must share the same vehicle as at least one of their "required" shipments. |
IN_SAME_VEHICLE_AT_PICKUP_TIME | With the A "dependent" shipment pickup must therefore have either:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME | Same as before, except the "dependent" shipments need to have a "required" shipment on their vehicle at the time of their delivery . |
PrecedenceRule
A precedence rule between two events (each event is the pickup or the delivery of a shipment): the "second" event has to start at least offsetDuration after "first" has started.
Several precedences can refer to the same (or related) events, eg, "pickup of B happens after delivery of A" and "pickup of C happens after pickup of B".
Furthermore, precedences only apply when both shipments are performed and are otherwise ignored.
| نمایش JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| فیلدها | |
|---|---|
firstIsDelivery | Indicates if the "first" event is a delivery. |
secondIsDelivery | Indicates if the "second" event is a delivery. |
offsetDuration | The offset between the "first" and "second" event. It can be negative. A duration in seconds with up to nine fractional digits, ending with ' |
firstIndex | Shipment index of the "first" event. This field must be specified. |
secondIndex | Shipment index of the "second" event. This field must be specified. |