InjectedSolutionConstraint

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

نمایش JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
فیلدها
routes[]

object ( ShipmentRoute )

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

skippedShipments[]

object ( SkippedShipment )

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

constraintRelaxations[]

object ( ConstraintRelaxation )

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

محدودیت-آرامش

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

نمایش JSON
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
فیلدها
relaxations[]

object ( Relaxation )

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

vehicleIndices[]

integer

شاخص‌های وسیله نقلیه‌ای را مشخص می‌کند که relaxations بازدید برای آنها اعمال می‌شود. اگر خالی باشد، این پیش‌فرض در نظر گرفته می‌شود و relaxations اعمال شده برای همه وسایل نقلیه‌ای که در سایر constraintRelaxations مشخص نشده‌اند، اعمال می‌شود. حداکثر یک پیش‌فرض می‌تواند وجود داشته باشد، یعنی حداکثر یک فیلد محدودیت مجاز است. vehicleIndices خالی. یک شاخص وسیله نقلیه فقط می‌تواند یک بار فهرست شود، حتی در چندین constraintRelaxations .

اگر interpretInjectedSolutionsUsingLabels برابر با true باشد (به توضیحات fields مراجعه کنید)، یک شاخص وسیله نقلیه همانند ShipmentRoute.vehicle_index نگاشت می‌شود.

آرامش

اگر relaxations خالی باشد، زمان شروع و توالی تمام بازدیدها در routes کاملاً محدود شده و هیچ بازدید جدیدی نمی‌تواند به آن مسیرها اضافه یا ثبت شود. همچنین، زمان شروع و پایان یک وسیله نقلیه در routes کاملاً محدود شده است، مگر اینکه وسیله نقلیه خالی باشد (یعنی هیچ بازدیدی نداشته باشد و usedIfRouteIsEmpty در مدل روی false تنظیم شده باشد).

relaxations(i).level سطح آزادسازی محدودیت اعمال شده بر روی بازدید #j را که شرایط زیر را برآورده می‌کند، مشخص می‌کند:

  • route.visits(j).start_time >= relaxations(i).threshold_time AND
  • j + 1 >= relaxations(i).threshold_visit_count

به طور مشابه، اگر شرایط زیر را برآورده کند، استارت خودرو تا relaxations(i).level آرام می‌شود:

  • vehicleStartTime >= relaxations(i).threshold_time و
  • relaxations(i).threshold_visit_count == 0 و انتهای وسیله نقلیه در صورت برآورده شدن موارد زیر، به relaxations(i).level کاهش می‌یابد:
  • vehicleEndTime >= relaxations(i).threshold_time و
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

برای اعمال سطح آرامش در صورتی که یک بازدید به thresholdVisitCount یا thresholdTime برسد، دو relaxations با همان level را اضافه کنید: یکی فقط با thresholdVisitCount تنظیم شده و دیگری فقط با thresholdTime تنظیم شده. اگر یک بازدید شرایط چندین relaxations برآورده کند، سطح آرامش بیشتر اعمال می‌شود. در نتیجه، از شروع وسیله نقلیه تا بازدیدهای مسیر به سمت انتهای وسیله نقلیه، سطح آرامش آرام‌تر می‌شود: یعنی سطح آرامش با پیشرفت مسیر کاهش نمی‌یابد.

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

نمایش JSON
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
فیلدها
level

enum ( Level )

سطح آزادسازی محدودیت که زمانی اعمال می‌شود که شرایط در thresholdTime یا بعد از آن و حداقل thresholdVisitCount برقرار باشند.

thresholdTime

string ( Timestamp format)

زمانی که در آن یا پس از آن می‌توان level آرامش را اعمال کرد.

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

thresholdVisitCount

integer

تعداد بازدیدهایی که در زمان یا پس از آن level آرامش ممکن است اعمال شود. اگر thresholdVisitCount برابر با ۰ باشد (یا تنظیم نشده باشد)، level می‌تواند مستقیماً در زمان شروع وسیله نقلیه اعمال شود.

اگر route.visits_size() + 1 باشد، level فقط می‌تواند به انتهای وسیله نقلیه اعمال شود. اگر بیشتر از route.visits_size() + 1 باشد، level به هیچ وجه برای آن مسیر اعمال نمی‌شود.

سطح

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

فهرست زیر به ترتیب افزایش آرامش است.

انوم‌ها
LEVEL_UNSPECIFIED

سطح پیش‌فرض ضمنیِ آزادسازی: هیچ قیدی آزاد نمی‌شود، یعنی همه بازدیدها کاملاً محدود شده‌اند.

این مقدار نباید به صراحت در level استفاده شود.

RELAX_VISIT_TIMES_AFTER_THRESHOLD زمان شروع بازدید و زمان شروع/پایان وسیله نقلیه کاهش می‌یابد، اما هر بازدید محدود به همان وسیله نقلیه باقی می‌ماند و توالی بازدید باید رعایت شود: هیچ بازدیدی نمی‌تواند بین آنها یا قبل از آنها قرار گیرد.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD همانند RELAX_VISIT_TIMES_AFTER_THRESHOLD است، اما توالی بازدیدها نیز ساده‌تر شده است: بازدیدها فقط می‌توانند توسط این وسیله نقلیه انجام شوند، اما می‌توانند به طور بالقوه انجام نشوند.
RELAX_ALL_AFTER_THRESHOLD همانند RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD است، اما وسیله نقلیه نیز آرام می‌شود: بازدیدها در زمان آستانه یا بعد از آن کاملاً رایگان هستند و می‌توانند به طور بالقوه انجام نشوند.