ShipmentModel

یک مدل حمل و نقل شامل مجموعه‌ای از محموله‌ها است که باید توسط مجموعه‌ای از وسایل نقلیه انجام شوند، در حالی که هزینه کلی، که مجموع موارد زیر است، به حداقل می‌رسد:

  • هزینه مسیریابی وسایل نقلیه (مجموع هزینه به ازای کل زمان، هزینه به ازای هر زمان سفر و هزینه ثابت روی همه وسایل نقلیه).
  • جریمه‌های حمل و نقل انجام نشده
  • هزینه مدت زمان جهانی حمل و نقل
نمایش JSON
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "objectives": [
    {
      object (Objective)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
فیلدها
shipments[]

object ( Shipment )

مجموعه محموله‌هایی که باید در مدل انجام شوند.

vehicles[]

object ( Vehicle )

مجموعه‌ای از وسایل نقلیه که می‌توانند برای انجام بازدیدها استفاده شوند.

objectives[]

object ( Objective )

مجموعه اهداف این مدل که به هزینه تبدیل خواهیم کرد. اگر خالی نباشد، مدل ورودی باید بدون هزینه باشد. برای دریافت درخواست اصلاح‌شده، لطفاً solvingMode = TRANSFORM_AND_RETURN_REQUEST استفاده کنید. توجه داشته باشید که در این حالت، درخواست حل نخواهد شد. به مستندات مربوطه مراجعه کنید.

آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request مراجعه کنید.

globalStartTime

string ( Timestamp format)

زمان شروع و پایان سراسری مدل: هیچ زمانی خارج از این محدوده نمی‌تواند معتبر در نظر گرفته شود.

بازه زمانی مدل باید کمتر از یک سال باشد، یعنی globalEndTime و globalStartTime باید در بازه زمانی ۳۱۵۳۶۰۰۰ ثانیه از یکدیگر فاصله داشته باشند.

هنگام استفاده از فیلدهای cost_per_*hour ، ممکن است بخواهید این پنجره را روی بازه کوچکتری تنظیم کنید تا عملکرد افزایش یابد (مثلاً اگر یک روز را مدل می‌کنید، باید محدودیت‌های زمانی جهانی را برای آن روز تنظیم کنید). اگر تنظیم نشده باشد، ۰۰:۰۰:۰۰ UTC، ۱ ژانویه ۱۹۷۰ (یعنی ثانیه: ۰، نانوثانیه: ۰) ​​به عنوان پیش‌فرض استفاده می‌شود.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

globalEndTime

string ( Timestamp format)

اگر تنظیم نشده باشد، ۰۰:۰۰:۰۰ UTC، ۱ ژانویه ۱۹۷۱ (یعنی ثانیه: ۳۱۵۳۶۰۰۰، نانوثانیه: ۰) ​​به عنوان پیش‌فرض استفاده می‌شود.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

globalDurationCostPerHour

number

«مدت زمان کلی» طرح کلی، تفاوت بین زودترین زمان شروع مؤثر و دیرترین زمان پایان مؤثر همه وسایل نقلیه است. کاربران می‌توانند برای بهینه سازی، مثلاً برای زودترین زمان تکمیل کار، هزینه‌ای در هر ساعت به آن مقدار اختصاص دهند. این هزینه باید در واحد مشابه Shipment.penalty_cost باشد.

durationDistanceMatrices[]

object ( DurationDistanceMatrix )

ماتریس‌های مدت زمان و فاصله مورد استفاده در مدل را مشخص می‌کند. اگر این فیلد خالی باشد، بسته به مقدار فیلد useGeodesicDistances ، از نقشه‌های گوگل یا فواصل ژئودزیک استفاده خواهد شد. اگر خالی نباشد، useGeodesicDistances نمی‌تواند مقدار true داشته باشد و نه durationDistanceMatrixSrcTags و نه durationDistanceMatrixDstTags نمی‌توانند خالی باشند.

مثال‌های کاربرد:

  • دو مکان وجود دارد: locA و locB.
  • ۱ وسیله نقلیه که مسیر خود را از locA شروع کرده و در locA به پایان می‌رساند.
  • ۱ درخواست بازدید حضوری در locB.
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • سه مکان وجود دارد: locA، locB و locC.
  • ۱ وسیله نقلیه که مسیر خود را از locA شروع می‌کند و در locB به پایان می‌رساند، با استفاده از ماتریس "fast".
  • ۱ وسیله نقلیه که مسیر خود را از locB شروع می‌کند و در locB به پایان می‌رساند، با استفاده از ماتریس "slow".
  • ۱ وسیله نقلیه که مسیر خود را از locB شروع می‌کند و در locB به پایان می‌رساند، با استفاده از ماتریس "fast".
  • ۱ درخواست بازدید حضوری در locC.
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
durationDistanceMatrixSrcTags[]

string

تگ‌هایی که منابع ماتریس‌های مدت زمان و فاصله را تعریف می‌کنند؛ durationDistanceMatrices(i).rows(j) مدت زمان و فاصله از بازدیدهایی با تگ durationDistanceMatrixSrcTags(j) تا سایر بازدیدها در ماتریس i را تعریف می‌کند.

برچسب‌ها با VisitRequest.tags یا Vehicle.start_tags مطابقت دارند. یک VisitRequest یا Vehicle مشخص باید دقیقاً با یک برچسب در این فیلد مطابقت داشته باشد. توجه داشته باشید که برچسب‌های منبع، مقصد و ماتریس Vehicle ممکن است یکسان باشند؛ به طور مشابه، برچسب‌های منبع و مقصد VisitRequest نیز ممکن است یکسان باشند. همه برچسب‌ها باید متفاوت باشند و نمی‌توانند رشته‌های خالی باشند. اگر این فیلد خالی نباشد، durationDistanceMatrices نیز نباید خالی باشد.

durationDistanceMatrixDstTags[]

string

تگ‌هایی که مقاصد ماتریس‌های مدت زمان و مسافت را تعریف می‌کنند؛ durationDistanceMatrices(i).rows(j).durations(k) (به جای durationDistanceMatrices(i).rows(j).meters(k)) مدت زمان (به جای مسافت) سفر را از بازدیدهایی با تگ durationDistanceMatrixSrcTags(j) تا بازدیدهایی با تگ durationDistanceMatrixDstTags(k) در ماتریس i تعریف می‌کند.

برچسب‌ها با VisitRequest.tags یا Vehicle.start_tags مطابقت دارند. یک VisitRequest یا Vehicle مشخص باید دقیقاً با یک برچسب در این فیلد مطابقت داشته باشد. توجه داشته باشید که برچسب‌های منبع، مقصد و ماتریس Vehicle ممکن است یکسان باشند؛ به طور مشابه، برچسب‌های منبع و مقصد VisitRequest نیز ممکن است یکسان باشند. همه برچسب‌ها باید متفاوت باشند و نمی‌توانند رشته‌های خالی باشند. اگر این فیلد خالی نباشد، durationDistanceMatrices نیز نباید خالی باشد.

transitionAttributes[]

object ( TransitionAttributes )

ویژگی‌های انتقال به مدل اضافه شدند.

shipmentTypeIncompatibilities[]

object ( ShipmentTypeIncompatibility )

مجموعه‌هایی از shipping_typeهای ناسازگار (به ShipmentTypeIncompatibility مراجعه کنید).

shipmentTypeRequirements[]

object ( ShipmentTypeRequirement )

مجموعه الزامات shipmentType (به ShipmentTypeRequirement مراجعه کنید).

precedenceRules[]

object ( PrecedenceRule )

مجموعه‌ای از قوانین تقدم که باید در مدل اجرا شوند.

مهم : استفاده از قوانین تقدم، اندازه مسئله‌ای را که می‌توان بهینه‌سازی کرد، محدود می‌کند. درخواست‌هایی که از قوانین تقدم استفاده می‌کنند و شامل محموله‌های زیادی هستند، ممکن است رد شوند.

maxActiveVehicles

integer

حداکثر تعداد وسایل نقلیه فعال را محدود می‌کند. یک وسیله نقلیه در صورتی فعال است که مسیر آن حداقل یک محموله را حمل کند. این می‌تواند برای محدود کردن تعداد مسیرها در مواردی که تعداد رانندگان کمتر از وسایل نقلیه است و ناوگان وسایل نقلیه ناهمگن است، استفاده شود. سپس بهینه‌سازی بهترین زیرمجموعه از وسایل نقلیه را برای استفاده انتخاب می‌کند. باید کاملاً مثبت باشد.

حمل و نقل

ارسال یک کالا، از یکی از محل‌های دریافت به یکی از محل‌های تحویل. برای اینکه ارسال، انجام‌شده تلقی شود، یک وسیله نقلیه منحصر به فرد باید به یکی از محل‌های دریافت خود مراجعه کند (و ظرفیت‌های اضافی خود را به ترتیب کاهش دهد)، سپس بعداً به یکی از محل‌های تحویل خود مراجعه کند (و بنابراین ظرفیت‌های اضافی خود را به ترتیب افزایش دهد).

نمایش JSON
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
فیلدها
displayName

string

نام نمایشی تعریف‌شده توسط کاربر برای محموله. می‌تواند تا ۶۳ کاراکتر داشته باشد و از کاراکترهای UTF-8 استفاده کند.

pickups[]

object ( VisitRequest )

مجموعه‌ای از گزینه‌های تحویل مرتبط با محموله. در صورت عدم تعیین، وسیله نقلیه فقط باید به مکانی مربوط به تحویل‌ها مراجعه کند.

deliveries[]

object ( VisitRequest )

مجموعه‌ای از گزینه‌های تحویل مرتبط با محموله. در صورت عدم تعیین، وسیله نقلیه فقط باید به مکانی مربوط به محل‌های تحویل مراجعه کند.

loadDemands

map (key: string, value: object ( Load ))

تقاضای بار محموله (برای مثال وزن، حجم، تعداد پالت و غیره). کلیدهای موجود در نقشه باید شناسه‌هایی باشند که نوع بار مربوطه را توصیف می‌کنند، و در حالت ایده‌آل شامل واحدها نیز می‌شوند. به عنوان مثال: "وزن_کیلوگرم"، "حجم_گالن"، "تعداد پالت" و غیره. اگر یک کلید مشخص در نقشه ظاهر نشود، بار مربوطه تهی در نظر گرفته می‌شود.

allowedVehicleIndices[]

integer

مجموعه وسایل نقلیه‌ای که ممکن است این محموله را حمل کنند. اگر خالی باشد، همه وسایل نقلیه می‌توانند آن را انجام دهند. وسایل نقلیه با اندیس خود در لیست vehicles ShipmentModel مشخص می‌شوند.

costsPerVehicle[]

number

هزینه‌ای را که هنگام تحویل این محموله توسط هر وسیله نقلیه متحمل می‌شود، مشخص می‌کند. در صورت مشخص بودن، باید یکی از موارد زیر را داشته باشد:

  • تعداد عناصر مشابه با costsPerVehicleIndices . costsPerVehicle[i] مربوط به costsPerVehicleIndices[i] مدل است.
  • به تعداد وسایل نقلیه موجود در مدل، المان iام مربوط به وسیله نقلیه شماره i مدل است.

این هزینه‌ها باید با واحد penaltyCost یکسان باشند و نباید منفی باشند. اگر چنین هزینه‌ای وجود ندارد، این فیلد را خالی بگذارید.

costsPerVehicleIndices[]

integer

شاخص‌های وسایل نقلیه‌ای که تابع costsPerVehicle برای آنها اعمال می‌شود. اگر خالی نباشد، باید تعداد عناصر آن با تعداد عناصر تابع costsPerVehicle برابر باشد. یک شاخص وسیله نقلیه نمی‌تواند بیش از یک بار مشخص شود. اگر وسیله نقلیه‌ای از costsPerVehicleIndices حذف شود، هزینه آن صفر است.

pickupToDeliveryAbsoluteDetourLimit

string ( Duration format)

حداکثر زمان مطلق انحراف از مسیر در مقایسه با کوتاه‌ترین مسیر از برداشت تا تحویل را مشخص می‌کند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد.

برای مثال، فرض کنید t کوتاه‌ترین زمان لازم برای رفتن از گزینه‌ی انتخاب‌شده برای تحویل مستقیم به گزینه‌ی انتخاب‌شده برای تحویل باشد. سپس تنظیم pickupToDeliveryAbsoluteDetourLimit موارد زیر را اعمال می‌کند:

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

اگر هر دو محدودیت نسبی و مطلق برای یک محموله مشخص شده باشد، محدودیت محدودکننده‌تر برای هر جفت تحویل/تحویل ممکن استفاده می‌شود. از تاریخ 2017/10، مسیرهای انحرافی فقط زمانی پشتیبانی می‌شوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد.

مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' s ' ختم می‌شود. مثال: "3.5s" .

pickupToDeliveryTimeLimit

string ( Duration format)

حداکثر مدت زمان از شروع برداشت تا شروع تحویل یک محموله را مشخص می‌کند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد. این موضوع به گزینه‌های انتخاب شده برای برداشت و تحویل و همچنین سرعت وسیله نقلیه بستگی ندارد. این موضوع را می‌توان در کنار محدودیت‌های حداکثر انحراف از مسیر مشخص کرد: راه‌حل هر دو مشخصات را رعایت خواهد کرد.

مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' s ' ختم می‌شود. مثال: "3.5s" .

shipmentType

string

رشته‌ای غیرتهی که یک "نوع" برای این محموله مشخص می‌کند. این ویژگی می‌تواند برای تعریف ناسازگاری‌ها یا الزامات بین shipment_types استفاده شود (به shipmentTypeIncompatibilities و shipmentTypeRequirements در ShipmentModel مراجعه کنید).

با visitTypes که برای یک بازدید مشخص شده است، متفاوت است: همه دریافت/تحویل‌های متعلق به یک محموله، shipmentType یکسانی دارند.

label

string

یک برچسب برای این محموله مشخص می‌کند. این برچسب در پاسخ در shipmentLabel مربوط به ShipmentRoute.Visit گزارش می‌شود.

ignore

boolean

اگر درست است، از این محموله صرف نظر کن، اما penaltyCost اعمال نکن.

نادیده گرفتن یک shipping منجر به خطای اعتبارسنجی می‌شود، زمانی که shipmentTypeRequirements در مدل وجود داشته باشد.

نادیده گرفتن محموله‌ای که در injectedFirstSolutionRoutes یا injectedSolutionConstraint انجام می‌شود، مجاز است؛ حل‌کننده، بازدیدهای مربوط به دریافت/تحویل را از مسیر در حال انجام حذف می‌کند. precedenceRules که به محموله‌های نادیده گرفته شده اشاره می‌کنند نیز نادیده گرفته خواهند شد.

penaltyCost

number

اگر محموله تکمیل نشود، این جریمه به هزینه کلی مسیرها اضافه می‌شود. یک محموله در صورتی تکمیل شده تلقی می‌شود که یکی از گزینه‌های دریافت و تحویل آن مورد بازدید قرار گیرد. هزینه را می‌توان با همان واحدی که برای سایر فیلدهای مرتبط با هزینه در مدل استفاده می‌شود، بیان کرد و باید مثبت باشد.

مهم : اگر این جریمه مشخص نشده باشد، بی‌نهایت در نظر گرفته می‌شود، یعنی ارسال باید تکمیل شود.

pickupToDeliveryRelativeDetourLimit

number

حداکثر زمان نسبی انحراف از مسیر را در مقایسه با کوتاه‌ترین مسیر از برداشت تا تحویل مشخص می‌کند. در صورت مشخص بودن، باید غیرمنفی باشد و محموله باید حداقل شامل یک برداشت و یک تحویل باشد.

برای مثال، فرض کنید t کوتاه‌ترین زمان لازم برای رفتن از گزینه‌ی انتخاب‌شده برای تحویل مستقیم به گزینه‌ی انتخاب‌شده برای تحویل باشد. سپس تنظیم pickupToDeliveryRelativeDetourLimit موارد زیر را اعمال می‌کند:

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

اگر هر دو محدودیت نسبی و مطلق برای یک محموله مشخص شده باشد، محدودیت محدودکننده‌تر برای هر جفت تحویل/تحویل ممکن استفاده می‌شود. از تاریخ 2017/10، مسیرهای انحرافی فقط زمانی پشتیبانی می‌شوند که مدت زمان سفر به وسایل نقلیه بستگی نداشته باشد.

درخواست بازدید

درخواست بازدید که می‌تواند توسط یک وسیله نقلیه انجام شود: دارای یک موقعیت جغرافیایی (یا دو مورد، به زیر مراجعه کنید)، زمان‌های باز و بسته شدن که توسط پنجره‌های زمانی نشان داده می‌شوند، و مدت زمان سرویس (زمان صرف شده توسط وسیله نقلیه پس از رسیدن برای تحویل گرفتن یا تحویل دادن کالا) است.

نمایش JSON
{
  "arrivalLocation": {
    object (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string,
  "avoidUTurns": boolean
}
فیلدها
arrivalLocation

object ( LatLng )

موقعیت جغرافیایی که وسیله نقلیه هنگام انجام این VisitRequest به آن می‌رسد. اگر مدل حمل و نقل دارای ماتریس‌های فاصله زمانی باشد، نباید arrivalLocation مشخص شود.

arrivalWaypoint

object ( Waypoint )

نقطه‌ی مسیری که وسیله‌ی نقلیه هنگام انجام این VisitRequest به آن می‌رسد. اگر مدل حمل و نقل دارای ماتریس‌های فاصله‌ی زمانی باشد، arrivalWaypoint نباید مشخص شود.

departureLocation

object ( LatLng )

موقعیت جغرافیایی که وسیله نقلیه پس از تکمیل این VisitRequest از آنجا حرکت می‌کند. در صورتی که با arrivalLocation یکسان باشد، می‌توان آن را حذف کرد. اگر مدل حمل و نقل دارای ماتریس‌های فاصله زمانی باشد، departureLocation نباید مشخص شود.

departureWaypoint

object ( Waypoint )

نقطه‌ی مسیری که وسیله‌ی نقلیه پس از تکمیل این VisitRequest ، از آن حرکت می‌کند. اگر با arrivalWaypoint یکسان باشد، می‌توان آن را حذف کرد. اگر مدل حمل و نقل دارای ماتریس‌های فاصله‌ی مدت زمان باشد، departureWaypoint نباید مشخص شود.

tags[]

string

برچسب‌های پیوست شده به درخواست بازدید را مشخص می‌کند. رشته‌های خالی یا تکراری مجاز نیستند.

timeWindows[]

object ( TimeWindow )

پنجره‌های زمانی که زمان رسیدن در یک بازدید را محدود می‌کنند. توجه داشته باشید که یک وسیله نقلیه ممکن است خارج از پنجره زمان رسیدن حرکت کند، یعنی زمان رسیدن + مدت زمان لازم نیست داخل یک پنجره زمانی باشد. اگر وسیله نقلیه قبل از TimeWindow.start_time برسد، می‌تواند منجر به زمان انتظار شود.

نبود TimeWindow به این معنی است که وسیله نقلیه می‌تواند این بازدید را در هر زمانی انجام دهد.

پنجره‌های زمانی باید از هم جدا باشند، یعنی هیچ پنجره زمانی نباید با پنجره زمانی دیگر همپوشانی یا مجاورت داشته باشد و باید به ترتیب صعودی باشند.

costPerHourAfterSoftEndTime و softEndTime فقط در صورتی قابل تنظیم هستند که یک پنجره زمانی واحد وجود داشته باشد.

duration

string ( Duration format)

مدت زمان بازدید، یعنی زمان صرف شده توسط وسیله نقلیه بین ورود و خروج (به زمان انتظار احتمالی اضافه می‌شود؛ به timeWindows مراجعه کنید).

مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' s ' ختم می‌شود. مثال: "3.5s" .

cost

number

هزینه سرویس‌دهی به این درخواست بازدید در یک مسیر وسیله نقلیه. این هزینه می‌تواند برای پرداخت هزینه‌های مختلف برای هر بار دریافت یا تحویل جایگزین محموله استفاده شود. این هزینه باید با واحد Shipment.penalty_cost یکسان باشد و نباید منفی باشد.

loadDemands

map (key: string, value: object ( Load ))

درخواست‌های این درخواست بازدید را بارگذاری کنید. این درست مانند فیلد Shipment.load_demands است، با این تفاوت که فقط به جای کل Shipment ، برای این VisitRequest اعمال می‌شود. درخواست‌های ذکر شده در اینجا به درخواست‌های ذکر شده در Shipment.load_demands اضافه می‌شوند.

visitTypes[]

string

انواع بازدید را مشخص می‌کند. این می‌تواند برای اختصاص زمان اضافی مورد نیاز برای تکمیل این بازدید توسط یک وسیله نقلیه استفاده شود (به Vehicle.extra_visit_duration_for_visit_type مراجعه کنید).

یک نوع فقط یک بار می‌تواند ظاهر شود.

label

string

یک برچسب برای این VisitRequest مشخص می‌کند. این برچسب در پاسخ به عنوان visitLabel در ShipmentRoute.Visit مربوطه گزارش می‌شود.

avoidUTurns

boolean

مشخص می‌کند که آیا باید از دور زدن در مسیرهای رانندگی در این مکان اجتناب شود یا خیر. اجتناب از دور زدن بهترین تلاش است و اجتناب کامل تضمین نمی‌شود. این یک ویژگی آزمایشی است و رفتار آن ممکن است تغییر کند.

آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request مراجعه کنید.

لات‌لنگ

شیء‌ای که یک جفت عرض/طول جغرافیایی را نشان می‌دهد. این به صورت یک جفت دوتایی بیان می‌شود تا درجه عرض جغرافیایی و درجه طول جغرافیایی را نشان دهد. مگر اینکه خلاف آن مشخص شده باشد، این شیء باید با استاندارد WGS84 مطابقت داشته باشد. مقادیر باید در محدوده نرمال باشند.

نمایش JSON
{
  "latitude": number,
  "longitude": number
}
فیلدها
latitude

number

عرض جغرافیایی بر حسب درجه. باید در محدوده [-90.0، +90.0] باشد.

longitude

number

طول جغرافیایی بر حسب درجه. باید در محدوده [-۱۸۰.۰، +۱۸۰.۰] باشد.

نقطه مسیر

یک نقطه مسیر را محصور می‌کند. نقاط مسیر، مکان‌های ورود و خروج VisitRequests و مکان‌های شروع و پایان وسایل نقلیه را مشخص می‌کنند.

نمایش JSON
{
  "sideOfRoad": boolean,
  "vehicleStopover": boolean,

  // Union field location_type can be only one of the following:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of list of possible types for union field location_type.
}
فیلدها
sideOfRoad

boolean

اختیاری. نشان می‌دهد که موقعیت این نقطه مسیر طوری تنظیم شده است که وسیله نقلیه ترجیح می‌دهد در یک سمت خاص از جاده توقف کند. وقتی این مقدار را تنظیم می‌کنید، مسیر از این مکان عبور می‌کند تا وسیله نقلیه بتواند در سمتی از جاده که موقعیت آن نسبت به مرکز جاده به سمت آن متمایل است، توقف کند. این گزینه برای حالت سفر «پیاده‌روی» کار نمی‌کند.

vehicleStopover

boolean

نشان می‌دهد که نقطه‌ی مسیر برای توقف وسایل نقلیه در نظر گرفته شده است، جایی که قصد سوار یا پیاده کردن مسافر را دارند. این گزینه فقط برای حالت سفر «رانندگی» و زمانی که «نوع مکان» برابر با «مکان» باشد، کار می‌کند.

تجربی: رفتار یا وجود این میدان ممکن است در آینده تغییر کند.

فیلد واحد location_type . روش‌های مختلف برای نمایش یک مکان. location_type فقط می‌تواند یکی از موارد زیر باشد:
location

object ( Location )

نقطه‌ای که با استفاده از مختصات جغرافیایی مشخص شده است، شامل یک عنوان اختیاری.

placeId

string

شناسه مکان POI مرتبط با نقطه مسیر.

هنگام استفاده از شناسه مکان برای مشخص کردن محل ورود یا خروج یک درخواست بازدید، از شناسه مکانی استفاده کنید که به اندازه کافی خاص باشد تا یک مکان LatLng را برای پیمایش به آن مکان تعیین کند. به عنوان مثال، شناسه مکانی که نشان دهنده یک ساختمان است مناسب است، اما شناسه مکانی که نشان دهنده یک جاده است توصیه نمی‌شود.

مکان

یک مکان (یک نقطه جغرافیایی و یک عنوان اختیاری) را در بر می‌گیرد.

نمایش JSON
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
فیلدها
latLng

object ( LatLng )

مختصات جغرافیایی محل مورد نظر.

heading

integer

جهت قطب‌نما که با جهت جریان ترافیک مرتبط است. این مقدار برای مشخص کردن سمت جاده برای سوار و پیاده کردن استفاده می‌شود. مقادیر جهت می‌توانند از ۰ تا ۳۶۰ باشند، که در آن ۰ جهت شمال، ۹۰ جهت شرق و غیره را مشخص می‌کند.

پنجره زمانی

پنجره‌های زمانی، زمان یک رویداد را محدود می‌کنند، مانند زمان رسیدن به یک بازدید یا زمان شروع و پایان یک وسیله نقلیه.

مرزهای پنجره زمان سخت، 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

string ( Timestamp format)

زمان شروع پنجره زمان سخت. اگر مشخص نشود، روی ShipmentModel.global_start_time تنظیم خواهد شد.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

endTime

string ( Timestamp format)

زمان پایان پنجره زمان سخت. اگر مشخص نشود، روی ShipmentModel.global_end_time تنظیم خواهد شد.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

softStartTime

string ( Timestamp format)

زمان شروع نرم پنجره زمانی.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

softEndTime

string ( Timestamp format)

زمان پایان نرم پنجره زمانی.

از RFC 3339 استفاده می‌کند، که در آن خروجی تولید شده همیشه به صورت Z-normalized خواهد بود و از ارقام کسری ۰، ۳، ۶ یا ۹ استفاده می‌کند. آفست‌های غیر از "Z" نیز پذیرفته می‌شوند. مثال‌ها: "2014-10-02T15:01:23Z" ، "2014-10-02T15:01:23.045123456Z" یا "2014-10-02T15:01:23+05:30" .

costPerHourBeforeSoftStartTime

number

هزینه‌ای به ازای هر ساعت که در صورت وقوع رویداد قبل از softStartTime به سایر هزینه‌های مدل اضافه می‌شود و به صورت زیر محاسبه می‌شود:

   max(0, softStartTime - t.seconds)
                          * costPerHourBeforeSoftStartTime / 3600,
t being the time of the event.

این هزینه باید مثبت باشد و این فیلد فقط در صورتی قابل تنظیم است که softStartTime تنظیم شده باشد.

costPerHourAfterSoftEndTime

number

هزینه‌ای به ازای هر ساعت که در صورت وقوع رویداد پس از softEndTime به سایر هزینه‌های مدل اضافه می‌شود، به صورت زیر محاسبه می‌شود:

   max(0, t.seconds - softEndTime.seconds)
                    * costPerHourAfterSoftEndTime / 3600,
t being the time of the event.

این هزینه باید مثبت باشد و این فیلد فقط در صورتی قابل تنظیم است که softEndTime تنظیم شده باشد.

وسیله نقلیه

یک وسیله نقلیه را در یک مسئله حمل و نقل مدل‌سازی می‌کند. حل یک مسئله حمل و نقل، مسیری را برای این وسیله نقلیه ایجاد می‌کند که از startLocation شروع شده و در endLocation پایان می‌یابد. یک مسیر، دنباله ای از بازدیدها است (به ShipmentRoute مراجعه کنید).

نمایش JSON
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "routeModifiers": {
    object (RouteModifiers)
  },
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
فیلدها
displayName

string

نام نمایشی تعریف‌شده توسط کاربر برای خودرو. می‌تواند تا ۶۳ کاراکتر داشته باشد و از کاراکترهای UTF-8 استفاده کند.

travelMode

enum ( TravelMode )

حالت سفر که بر جاده‌های قابل استفاده توسط وسیله نقلیه و سرعت آن تأثیر می‌گذارد. همچنین به travelDurationMultiple مراجعه کنید.

routeModifiers

object ( RouteModifiers )

مجموعه‌ای از شرایط که باید برآورده شوند و بر نحوه محاسبه مسیرها برای وسیله نقلیه معین تأثیر می‌گذارند.

startLocation

object ( LatLng )

موقعیت جغرافیایی که وسیله نقلیه قبل از دریافت هرگونه محموله از آنجا شروع به حرکت می‌کند. در صورت عدم مشخص شدن، وسیله نقلیه از اولین برداشت خود شروع به حرکت می‌کند. اگر مدل حمل و نقل دارای ماتریس‌های مدت زمان و مسافت باشد، startLocation نباید مشخص شود.

startWaypoint

object ( Waypoint )

نقطه مسیر نشان دهنده یک موقعیت جغرافیایی است که وسیله نقلیه قبل از دریافت هرگونه محموله، از آنجا شروع به حرکت می‌کند. اگر نه startWaypoint و نه startLocation مشخص نشده باشند، وسیله نقلیه از اولین برداشت خود شروع به حرکت می‌کند. اگر مدل حمل و نقل دارای ماتریس‌های مدت زمان و مسافت باشد، startWaypoint نباید مشخص شود.

endLocation

object ( LatLng )

موقعیت جغرافیایی که وسیله نقلیه پس از تکمیل آخرین VisitRequest خود در آن پایان می‌یابد. اگر مشخص نشود ShipmentRoute وسیله نقلیه بلافاصله پس از تکمیل آخرین VisitRequest خود پایان می‌یابد. اگر مدل حمل و نقل دارای ماتریس‌های مدت زمان و مسافت باشد، endLocation نباید مشخص شود.

endWaypoint

object ( Waypoint )

نقطه‌ی مسیر نشان‌دهنده‌ی یک موقعیت جغرافیایی است که وسیله‌ی نقلیه پس از تکمیل آخرین VisitRequest خود، در آنجا به پایان می‌رسد. اگر هیچ‌کدام از endWaypoint و endLocation مشخص نشده باشند، ShipmentRoute وسیله‌ی نقلیه بلافاصله پس از تکمیل آخرین VisitRequest خود به پایان می‌رسد. اگر مدل حمل و نقل دارای ماتریس‌های مدت زمان و مسافت باشد، endWaypoint نباید مشخص شود.

startTags[]

string

تگ‌های متصل به ابتدای مسیر وسیله نقلیه را مشخص می‌کند.

رشته‌های خالی یا تکراری مجاز نیستند.

endTags[]

string

برچسب‌های متصل به انتهای مسیر وسیله نقلیه را مشخص می‌کند.

رشته‌های خالی یا تکراری مجاز نیستند.

startTimeWindows[]

object ( TimeWindow )

بازه‌های زمانی که وسیله نقلیه می‌تواند در طول آنها از محل شروع خود حرکت کند. این بازه‌ها باید در محدوده زمانی جهانی باشند (به فیلدهای ShipmentModel.global_* مراجعه کنید). در صورت عدم تعیین، هیچ محدودیتی به جز آن محدودیت‌های زمانی جهانی وجود ندارد.

پنجره‌های زمانی متعلق به یک فیلد تکراری باید از هم جدا باشند، یعنی هیچ پنجره زمانی نمی‌تواند با پنجره زمانی دیگری همپوشانی داشته باشد یا در مجاورت آن باشد و باید به ترتیب زمانی باشند.

costPerHourAfterSoftEndTime و softEndTime فقط در صورتی قابل تنظیم هستند که یک پنجره زمانی واحد وجود داشته باشد.

endTimeWindows[]

object ( TimeWindow )

بازه‌های زمانی که طی آنها وسیله نقلیه ممکن است به محل پایان خود برسد. این بازه‌ها باید در محدوده زمانی جهانی باشند (به فیلدهای ShipmentModel.global_* مراجعه کنید). در صورت عدم تعیین، هیچ محدودیتی به جز آن محدودیت‌های زمانی جهانی وجود ندارد.

پنجره‌های زمانی متعلق به یک فیلد تکراری باید از هم جدا باشند، یعنی هیچ پنجره زمانی نمی‌تواند با پنجره زمانی دیگری همپوشانی داشته باشد یا در مجاورت آن باشد و باید به ترتیب زمانی باشند.

costPerHourAfterSoftEndTime و softEndTime فقط در صورتی قابل تنظیم هستند که یک پنجره زمانی واحد وجود داشته باشد.

unloadingPolicy

enum ( UnloadingPolicy )

سیاست تخلیه بار بر روی وسیله نقلیه اعمال می‌شود.

loadLimits

map (key: string, value: object ( LoadLimit ))

ظرفیت‌های وسیله نقلیه (به عنوان مثال وزن، حجم، تعداد پالت). کلیدهای موجود در نقشه، شناسه‌های نوع بار هستند که با کلیدهای فیلد Shipment.load_demands مطابقت دارند. اگر یک کلید مشخص در این نقشه وجود نداشته باشد، ظرفیت مربوطه نامحدود در نظر گرفته می‌شود.

costPerHour

number

هزینه‌های وسیله نقلیه: تمام هزینه‌ها با هم جمع می‌شوند و باید در واحد یکسانی با Shipment.penalty_cost باشند.

هزینه هر ساعت از مسیر وسیله نقلیه. این هزینه بر کل زمان طی شده توسط مسیر اعمال می‌شود و شامل زمان سفر، زمان انتظار و زمان بازدید می‌شود. استفاده از costPerHour به جای costPerTraveledHour ممکن است منجر به تأخیر اضافی شود.

costPerTraveledHour

number

هزینه به ازای هر ساعت سفر در مسیر وسیله نقلیه. این هزینه فقط برای زمان سفر طی شده توسط مسیر (یعنی آنچه در ShipmentRoute.transitions گزارش شده است) اعمال می‌شود و زمان انتظار و زمان بازدید را شامل نمی‌شود.

costPerKilometer

number

هزینه به ازای هر کیلومتر از مسیر وسیله نقلیه. این هزینه بر روی مسافت گزارش شده در ShipmentRoute.transitions اعمال می‌شود و بر روی هیچ مسافتی که به طور ضمنی از arrivalLocation تا departureLocation یک VisitRequest طی شده باشد، اعمال نمی‌شود.

fixedCost

number

در صورت استفاده از این وسیله نقلیه برای حمل محموله، هزینه ثابت اعمال می‌شود.

usedIfRouteIsEmpty

boolean

این فیلد فقط برای وسایل نقلیه‌ای اعمال می‌شود که مسیر آنها هیچ محموله‌ای را سرویس نمی‌دهد. این فیلد نشان می‌دهد که آیا در این حالت وسیله نقلیه باید به عنوان دست دوم در نظر گرفته شود یا خیر.

اگر درست باشد، وسیله نقلیه از نقطه شروع به نقطه پایان خود می‌رود، حتی اگر هیچ محموله‌ای را حمل نکند، و هزینه‌های زمانی و مسافتی ناشی از سفر از نقطه شروع به پایان در نظر گرفته می‌شوند.

در غیر این صورت، از نقطه شروع به نقطه پایان خود حرکت نمی‌کند و هیچ breakRule یا delay (از TransitionAttributes ) برای این وسیله نقلیه برنامه‌ریزی نشده است. در این حالت، ShipmentRoute وسیله نقلیه هیچ اطلاعاتی به جز شاخص و برچسب وسیله نقلیه ندارد.

routeDurationLimit

object ( DurationLimit )

محدودیتی که برای کل مدت زمان مسیر وسیله نقلیه اعمال می‌شود. در یک OptimizeToursResponse داده شده، مدت زمان مسیر یک وسیله نقلیه، تفاوت بین vehicleEndTime و vehicleStartTime آن است.

travelDurationLimit

object ( DurationLimit )

محدودیتی که برای مدت زمان سفر مسیر وسیله نقلیه اعمال می‌شود. در یک OptimizeToursResponse داده شده، مدت زمان سفر مسیر مجموع تمام transitions.travel_duration های آن است.

routeDistanceLimit

object ( DistanceLimit )

محدودیتی که برای کل مسافت مسیر وسیله نقلیه اعمال می‌شود. در یک OptimizeToursResponse داده شده، مسافت مسیر مجموع تمام transitions.travel_distance_meters آن است.

extraVisitDurationForVisitType

map (key: string, value: string ( Duration format))

یک نگاشت از رشته‌های visitTypes به durations را مشخص می‌کند. duration علاوه بر VisitRequest.duration زمانی است که در بازدیدهایی با visitTypes مشخص شده گرفته می‌شود. این مدت زمان بازدید اضافی در صورت مشخص شدن costPerHour ، هزینه را اضافه می‌کند. کلیدها (یعنی visitTypes ) نمی‌توانند رشته‌های خالی باشند.

اگر یک درخواست بازدید چندین نوع داشته باشد، برای هر نوع در نقشه مدت زمان اضافه خواهد شد.

breakRule

object ( BreakRule )

برنامه‌ی استراحتی که باید برای این وسیله نقلیه اعمال شود را شرح می‌دهد. در صورت خالی بودن، هیچ استراحتی برای این وسیله نقلیه برنامه‌ریزی نخواهد شد.

label

string

یک برچسب برای این وسیله نقلیه مشخص می‌کند. این برچسب در پاسخ به عنوان vehicleLabel مربوط به ShipmentRoute گزارش می‌شود.

ignore

boolean

اگر درست باشد، usedIfRouteIsEmpty باید نادرست باشد و این وسیله نقلیه بدون استفاده باقی خواهد ماند.

اگر یک ارسال توسط یک وسیله نقلیه نادیده گرفته شده در injectedFirstSolutionRoutes انجام شود، در اولین راه حل نادیده گرفته می‌شود اما در پاسخ می‌تواند انجام شود.

اگر یک محموله توسط یک وسیله نقلیه نادیده گرفته شده در injectedSolutionConstraint انجام شود و هرگونه برداشت/تحویل مرتبط محدود به ماندن در وسیله نقلیه باشد (یعنی به سطح RELAX_ALL_AFTER_THRESHOLD نرسد)، در پاسخ نادیده گرفته می‌شود. اگر یک محموله دارای فیلد allowedVehicleIndices غیر خالی باشد و همه وسایل نقلیه مجاز نادیده گرفته شوند، در پاسخ نادیده گرفته می‌شود.

travelDurationMultiple

number

یک ضریب ضرب را مشخص می‌کند که می‌تواند برای افزایش یا کاهش زمان سفر این وسیله نقلیه استفاده شود. به عنوان مثال، تنظیم این مقدار روی ۲.۰ به این معنی است که این وسیله نقلیه کندتر است و زمان سفر آن دو برابر زمان سفر برای وسایل نقلیه استاندارد است. این ضریب بر مدت زمان بازدید تأثیر نمی‌گذارد. در صورت مشخص بودن costPerHour یا costPerTraveledHour ، بر هزینه تأثیر می‌گذارد. این باید در محدوده [۰.۰۰۱، ۱۰۰۰.۰] باشد. در صورت عدم تنظیم، وسیله نقلیه استاندارد است و این ضریب ۱.۰ در نظر گرفته می‌شود.

هشدار: زمان‌های سفر پس از اعمال این ضریب اما قبل از انجام هرگونه عملیات عددی، به نزدیکترین ثانیه گرد می‌شوند، بنابراین، ضریب کوچک ممکن است منجر به از دست رفتن دقت شود.

همچنین به extraVisitDurationForVisitType در زیر مراجعه کنید.

حالت سفر

حالت‌های سفری که می‌توانند توسط وسایل نقلیه استفاده شوند.

این موارد باید زیرمجموعه‌ای از حالت‌های سفر 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

boolean

مشخص می‌کند که آیا در صورت امکان از جاده‌های عوارض‌دار اجتناب شود یا خیر. اولویت با مسیرهایی است که شامل جاده‌های عوارض‌دار نیستند. فقط برای حالت‌های سفر با وسایل نقلیه موتوری اعمال می‌شود.

avoidHighways

boolean

مشخص می‌کند که آیا در صورت لزوم از بزرگراه‌ها اجتناب شود یا خیر. اولویت با مسیرهایی است که بزرگراه ندارند. فقط برای حالت‌های سفر با وسایل نقلیه موتوری اعمال می‌شود.

avoidFerries

boolean

مشخص می‌کند که آیا در صورت لزوم از کشتی‌ها اجتناب شود یا خیر. اولویت با مسیرهایی است که شامل سفر با کشتی نمی‌شوند. فقط برای حالت‌های سفر موتوری اعمال می‌شود.

avoidIndoor

boolean

اختیاری. مشخص می‌کند که آیا در صورت امکان از پیمایش در فضای داخلی خودداری شود یا خیر. اولویت با مسیرهایی است که شامل پیمایش در فضای داخلی نیستند. فقط در حالت سفر WALKING اعمال می‌شود.

سیاست تخلیه

سیاست نحوه تخلیه بار وسیله نقلیه. فقط برای محموله‌هایی که هم تحویل و هم بارگیری دارند، اعمال می‌شود.

سایر محموله‌ها می‌توانند در هر کجای مسیر، مستقل از unloadingPolicy آزادانه حمل شوند.

انوم‌ها
UNLOADING_POLICY_UNSPECIFIED سیاست تخلیه نامشخص؛ تحویل‌ها باید درست پس از بارگیری‌های مربوطه انجام شوند.
LAST_IN_FIRST_OUT تحویل‌ها باید به ترتیب معکوس دریافت‌ها انجام شوند
FIRST_IN_FIRST_OUT تحویل‌ها باید به همان ترتیبی که تحویل‌ها انجام می‌شوند، انجام شوند

محدودیت بار

محدودیت بار اعمال شده بر یک وسیله نقلیه را تعریف می‌کند، مثلاً «این کامیون فقط می‌تواند تا ۳۵۰۰ کیلوگرم بار حمل کند». به loadLimits مراجعه کنید.

نمایش JSON
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string,
  "costPerKilometer": {
    object (LoadCost)
  },
  "costPerTraveledHour": {
    object (LoadCost)
  }
}
فیلدها
softMaxLoad

string ( int64 format)

یک محدودیت نرم برای بار. به costPerUnitAboveSoftMax مراجعه کنید.

costPerUnitAboveSoftMax

number

اگر بار در طول مسیر این وسیله نقلیه از softMaxLoad بیشتر شود، جریمه هزینه زیر اعمال می‌شود (فقط یک بار برای هر وسیله نقلیه): (load - softMaxLoad ) * costPerUnitAboveSoftMax . همه هزینه‌ها با هم جمع می‌شوند و باید در واحد مشابه Shipment.penalty_cost باشند. محدودیت‌های نرم فقط می‌توانند روی انواعی تعریف شوند که فقط برای برداشت یا فقط برای تحویل در کل مدل اعمال می‌شوند.

startLoadInterval

object ( Interval )

فاصله زمانی مجاز برای بارگیری وسیله نقلیه در ابتدای مسیر.

endLoadInterval

object ( Interval )

فاصله زمانی مجاز برای بارگیری وسیله نقلیه در انتهای مسیر.

maxLoad

string ( int64 format)

حداکثر میزان بار قابل قبول.

costPerKilometer

object ( LoadCost )

هزینه جابجایی یک واحد بار در طول یک کیلومتر برای این وسیله نقلیه. این می‌تواند به عنوان معیاری برای مصرف سوخت استفاده شود: اگر بار یک وزن (بر حسب نیوتن) باشد، آنگاه بار*کیلومتر بُعد انرژی دارد.

آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request مراجعه کنید.

costPerTraveledHour

object ( LoadCost )

هزینه سفر با یک واحد بار در طول یک ساعت برای این وسیله نقلیه.

آزمایشی: برای جزئیات بیشتر به https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request مراجعه کنید.

فاصله

فاصله زمانی مقادیر بار قابل قبول.

نمایش JSON
{
  "min": string,
  "max": string
}
فیلدها
min

string ( int64 format)

حداقل بار قابل قبول. باید ≥ 0 باشد. اگر هر دو مشخص شده باشند، min باید ≤ max باشد.

max

string ( int64 format)

حداکثر بار قابل قبول. باید ≥ 0 باشد. اگر مشخص نشده باشد، حداکثر بار توسط این پیام محدود نمی‌شود. اگر هر دو مشخص شده باشند، min باید ≤ max باشد.

هزینه بار

هزینه جابجایی یک واحد بار در طول یک 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

string ( int64 format)

مقدار باری که بالاتر از آن، هزینه جابجایی یک واحد بار از costPerUnitBelowThreshold به costPerUnitAboveThreshold تغییر می‌کند. باید >= 0 باشد.

costPerUnitBelowThreshold

number

هزینه جابجایی یک واحد بار، برای هر واحد بین ۰ و آستانه. باید یک مقدار محدود و >= ۰ باشد.

costPerUnitAboveThreshold

number

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

string ( Duration format)

A hard limit constraining the duration to be at most maxDuration.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

softMaxDuration

string ( Duration format)

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, softMaxDuration must be nonnegative. If maxDuration is also defined, softMaxDuration must be less than maxDuration.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

quadraticSoftMaxDuration

string ( Duration format)

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, quadraticSoftMaxDuration must be nonnegative. If maxDuration is also defined, quadraticSoftMaxDuration must be less than maxDuration , and the difference must be no larger than one day:

maxDuration - quadraticSoftMaxDuration <= 86400 seconds

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

costPerHourAfterSoftMax

number

Cost per hour incurred if the softMaxDuration threshold is violated. The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows:

  costPerHourAfterSoftMax * (duration - softMaxDuration)

The cost must be nonnegative.

costPerSquareHourAfterQuadraticSoftMax

number

Cost per square hour incurred if the quadraticSoftMaxDuration threshold is violated.

The additional cost is 0 if the duration is under the threshold, otherwise the cost depends on the duration as follows:

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

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

string ( int64 format)

A hard limit constraining the distance to be at most maxMeters. The limit must be nonnegative.

softMaxMeters

string ( int64 format)

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

number

Cost per kilometer incurred, increasing up to softMaxMeters , with formula:

  min(distanceMeters, softMaxMeters) / 1000.0 *
  costPerKilometerBelowSoftMax.

This cost is not supported in routeDistanceLimit .

costPerKilometerAboveSoftMax

number

Cost per kilometer incurred if distance is above softMaxMeters limit. The additional cost is 0 if the distance is under the limit, otherwise the formula used to compute the cost is the following:

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

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 (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
فیلدها
breakRequests[]

object ( BreakRequest )

Sequence of breaks. See the BreakRequest message.

frequencyConstraints[]

object ( FrequencyConstraint )

Several FrequencyConstraint may apply. They must all be satisfied by the BreakRequest s of this BreakRule . See FrequencyConstraint .

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

string ( Timestamp format)

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: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30" .

latestStartTime

string ( Timestamp format)

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: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" or "2014-10-02T15:01:23+05:30" .

minDuration

string ( Duration format)

Required. Minimum duration of the break. Must be positive.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

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

string ( Duration format)

Required. Minimum break duration for this constraint. Nonnegative. See description of FrequencyConstraint .

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

maxInterBreakDuration

string ( Duration format)

Required. Maximum allowed span of any interval of time in the route that does not include at least partially a break of duration >= minBreakDuration . Must be positive.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

هدف

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),
  "weight": number
}
فیلدها
type

enum ( Type )

The type of the objective.

weight

number

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 (Row)
    }
  ],
  "vehicleStartTag": string
}
فیلدها
rows[]

object ( Row )

Specifies the rows of the duration and distance matrix. It must have as many elements as ShipmentModel.duration_distance_matrix_src_tags .

vehicleStartTag

string

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 startTags field must match the vehicleStartTag of a matrix (and of that matrix only).

All matrices must have a different vehicleStartTag .

ردیف

Specifies a row of the duration and distance matrix.

نمایش JSON
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
فیلدها
durations[]

string ( Duration format)

Duration values for a given row. It must have as many elements as ShipmentModel.duration_distance_matrix_dst_tags .

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

meters[]

number

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 durations .

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 (DistanceLimit)
  },
  "delay": string
}
فیلدها
srcTag

string

Tags defining the set of (src->dst) transitions these attributes apply to.

A source visit or vehicle start matches iff its VisitRequest.tags or Vehicle.start_tags either contains srcTag or does not contain excludedSrcTag (depending on which of these two fields is non-empty).

excludedSrcTag

string

See srcTag . Exactly one of srcTag and excludedSrcTag must be non-empty.

dstTag

string

A destination visit or vehicle end matches iff its VisitRequest.tags or Vehicle.end_tags either contains dstTag or does not contain excludedDstTag (depending on which of these two fields is non-empty).

excludedDstTag

string

See dstTag . Exactly one of dstTag and excludedDstTag must be non-empty.

cost

number

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

number

Specifies a cost per kilometer applied to the distance traveled while performing this transition. It adds up to any Vehicle.cost_per_kilometer specified on vehicles.

distanceLimit

object ( DistanceLimit )

Specifies a limit on the distance traveled while performing this transition.

As of 2021/06, only soft limits are supported.

delay

string ( Duration format)

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 ' s '. Example: "3.5s" .

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 (IncompatibilityMode)
}
فیلدها
types[]

string

List of incompatible types. Two shipments having different shipment_types among those listed are "incompatible".

incompatibilityMode

enum ( 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:

  • They can share the same vehicle only if one is delivered before the other is picked up.
  • When both shipments are pickups-only (no deliveries) or deliveries-only (no pickups), they can't share the same vehicle at all.

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 (RequirementMode)
}
فیلدها
requiredShipmentTypeAlternatives[]

string

List of alternative shipment types required by the dependentShipmentTypes .

dependentShipmentTypes[]

string

All shipments with a type in the dependentShipmentTypes field require at least one shipment of type requiredShipmentTypeAlternatives to be visited on the same route.

NOTE: Chains of requirements such that a shipmentType depends on itself are not allowed.

requirementMode

enum ( 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 IN_SAME_VEHICLE_AT_PICKUP_TIME mode, all "dependent" shipments need to have at least one "required" shipment on their vehicle at the time of their pickup.

A "dependent" shipment pickup must therefore have either:

  • A delivery-only "required" shipment delivered on the route after, or
  • A "required" shipment picked up on the route before it, and if the "required" shipment has a delivery, this delivery must be performed after the "dependent" shipment's pickup.
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

boolean

Indicates if the "first" event is a delivery.

secondIsDelivery

boolean

Indicates if the "second" event is a delivery.

offsetDuration

string ( Duration format)

The offset between the "first" and "second" event. It can be negative.

A duration in seconds with up to nine fractional digits, ending with ' s '. Example: "3.5s" .

firstIndex

integer

Shipment index of the "first" event. This field must be specified.

secondIndex

integer

Shipment index of the "second" event. This field must be specified.