InjectedSolutionConstraint

Giải pháp được chèn vào yêu cầu bao gồm thông tin về những lượt truy cập nào phải được hạn chế và cách các lượt truy cập đó phải được hạn chế.

Biểu diễn dưới dạng JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
Trường
routes[]

object (ShipmentRoute)

Tuyến đường của giải pháp cần chèn. Một số tuyến có thể bị loại khỏi giải pháp ban đầu. Các tuyến đường và lô hàng bị bỏ qua phải đáp ứng các giả định cơ bản về tính hợp lệ được liệt kê cho injectedFirstSolutionRoutes.

skippedShipments[]

object (SkippedShipment)

Bỏ qua các khâu vận chuyển giải pháp cần đưa vào. Một số giá trị có thể bị loại khỏi giải pháp ban đầu. Xem trường routes.

constraintRelaxations[]

object (ConstraintRelaxation)

Đối với không có hoặc nhiều nhóm phương tiện, hãy chỉ định thời điểm và mức độ nới lỏng các hạn chế. Nếu trường này trống, thì mọi tuyến đường của xe không trống đều bị hạn chế hoàn toàn.

ConstraintRelaxation

Đối với một nhóm phương tiện, hãy xác định giới hạn ở(các) ngưỡng nào đối với lượt ghé thăm sẽ được nới lỏng và ở mức nào. Các lô hàng được liệt kê trong trường skipped_shipment bị hạn chế không được bỏ qua; tức là không thể thực hiện những lô hàng này.

Biểu diễn dưới dạng JSON
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
Trường
relaxations[]

object (Relaxation)

Tất cả các biện pháp nới lỏng phạm vi ghé thăm sẽ áp dụng cho các lượt ghé thăm trên các tuyến đường có phương tiện ở vehicleIndices.

vehicleIndices[]

integer

Chỉ định các chỉ mục xe mà quy tắc ràng buộc lượt truy cập relaxations áp dụng. Nếu trống, đây sẽ được coi là giá trị mặc định và relaxations áp dụng cho mọi xe không được chỉ định trong constraintRelaxations khác. Có thể có tối đa một trường mặc định, tức là tối đa một trường nới lỏng quy tắc được phép để trống vehicleIndices. Bạn chỉ có thể liệt kê chỉ mục xe một lần, kể cả trong vài constraintRelaxations.

Chỉ mục xe được liên kết giống như ShipmentRoute.vehicle_index, nếu interpretInjectedSolutionsUsingLabels là đúng (xem nhận xét trên fields).

Thư giãn

Nếu bạn trống relaxations, thời gian bắt đầu và trình tự của tất cả lượt ghé thăm trên routes sẽ bị hạn chế hoàn toàn và bạn không thể chèn hoặc thêm lượt ghé thăm mới vào những tuyến đường đó. Ngoài ra, thời gian bắt đầu và kết thúc của xe trong routes bị ràng buộc hoàn toàn, trừ phi xe đó trống (tức là không có lượt ghé thăm và đã đặt usedIfRouteIsEmpty thành false trong mô hình).

relaxations(i).level chỉ định mức nới lỏng quy tắc ràng buộc áp dụng cho lượt truy cập #j thoả mãn:

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

Tương tự, thời gian khởi động xe sẽ được nới lỏng thành relaxations(i).level nếu đáp ứng:

  • vehicleStartTime >= relaxations(i).threshold_time
  • relaxations(i).threshold_visit_count == 0 và phần cuối xe được nới lỏng thành relaxations(i).level nếu đáp ứng:
  • vehicleEndTime >= relaxations(i).threshold_time
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Để áp dụng mức độ thư giãn nếu một lượt truy cập đáp ứng thresholdVisitCount HOẶC thresholdTime hãy thêm 2 relaxations với cùng một level: một trong hai trường hợp chỉ có thresholdVisitCount và giá trị còn lại chỉ có thresholdTime. Nếu một lượt truy cập đáp ứng các điều kiện của nhiều relaxations, thì mức thoải mái nhất sẽ được áp dụng. Do đó, từ khi xe bắt đầu qua các lượt ghé qua tuyến đường để đến cuối xe, mức độ thư giãn sẽ trở nên thoải mái hơn, tức là mức độ thư giãn sẽ không giảm khi tuyến đường đang đi.

Thời gian và trình tự của các lượt ghé thăm tuyến đường không đáp ứng các điều kiện ngưỡng của relaxations bất kỳ sẽ bị hạn chế hoàn toàn và bạn không thể chèn lượt ghé thăm vào những trình tự này. Ngoài ra, nếu điểm khởi động hoặc kết thúc của phương tiện không đáp ứng các điều kiện về thời gian nới lỏng, thì thời gian sẽ được cố định, trừ phi xe không có người.

Biểu diễn dưới dạng JSON
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
Trường
level

enum (Level)

Mức độ nới lỏng quy tắc ràng buộc áp dụng khi các điều kiện tại hoặc sau thresholdTime VÀ ít nhất thresholdVisitCount được đáp ứng.

thresholdTime

string (Timestamp format)

Khoảng thời gian có thể áp dụng biện pháp nới lỏng hoặc sau đó level.

Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, với độ phân giải nano giây và tối đa 9 chữ số phân số. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

thresholdVisitCount

integer

Số lượt truy cập tại hoặc sau thời điểm level nới lỏng có thể được áp dụng. Nếu thresholdVisitCount bằng 0 (hoặc không được đặt), level có thể được áp dụng trực tiếp khi khởi động xe.

Nếu giá trị là route.visits_size() + 1, thì level chỉ có thể áp dụng cho phần đầu xe. Nếu giá trị lớn hơn route.visits_size() + 1, thì level sẽ không được áp dụng cho tuyến đó.

Cấp

Thể hiện các mức nới lỏng khác nhau, áp dụng cho một lượt truy cập và những mức độ tuân theo khi nó đáp ứng các điều kiện ngưỡng.

Bảng liệt kê dưới đây là để tăng mức độ thư giãn.

Enum
LEVEL_UNSPECIFIED

Mức thư giãn mặc định ngầm ẩn: không có ràng buộc nào được nới lỏng, tức là tất cả lượt truy cập đều bị ràng buộc hoàn toàn.

Không được dùng giá trị này trong level một cách rõ ràng.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Thời gian bắt đầu tham quan và thời gian bắt đầu/kết thúc của phương tiện sẽ được thay đổi, nhưng mỗi lượt ghé thăm vẫn bị ràng buộc với cùng một xe, đồng thời phải tuân thủ trình tự ghé thăm: không thể chèn lượt ghé thăm giữa hoặc trước thời gian ghé thăm đó.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD Giống như RELAX_VISIT_TIMES_AFTER_THRESHOLD, nhưng trình tự lượt truy cập cũng thoải mái: lượt truy cập vẫn chỉ được ràng buộc với xe của họ.
RELAX_ALL_AFTER_THRESHOLD Giống như RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, nhưng xe cũng thoải mái: lượt truy cập hoàn toàn miễn phí tại hoặc sau thời gian của ngưỡng và có thể không hoạt động hiệu quả.