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 درست باشد، یک نمایه خودرو مانند ShipmentRoute.vehicle_index ترسیم می‌شود (به نظر fields مراجعه کنید).

آرامش

اگر 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 AND
  • relaxations(i).threshold_visit_count == 0 و انتهای وسیله نقلیه به relaxations(i).level رها می شود اگر برآورده شود:
  • vehicleEndTime >= relaxations(i).threshold_time AND
  • 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 آرامش ممکن است اعمال شود یا بعد از آن.

مهر زمانی در قالب RFC3339 UTC "Zulu"، با وضوح نانوثانیه و حداکثر نه رقم کسری. مثال‌ها: "2014-10-02T15:01:23Z" و "2014-10-02T15:01:23.045123456Z" .

thresholdVisitCount

integer

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

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

سطح

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

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

Enums
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 ، اما وسیله نقلیه نیز آرام است: بازدیدها در زمان آستانه یا بعد از آن کاملا رایگان هستند و ممکن است به طور بالقوه انجام نشوند.