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 phải bị hạn chế và cách hạn chế các lượt truy cập đó.
Biểu diễn dưới dạng JSON |
---|
{ "routes": [ { object ( |
Trường | |
---|---|
routes[] |
Các tuyến đường của giải pháp cần chèn. Một số tuyến đường có thể bị bỏ qua trong 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 về tính hợp lệ cơ bản được liệt kê cho |
skipped |
Bỏ qua các lô hàng của giải pháp cần chèn. Một số có thể bị bỏ qua trong giải pháp ban đầu. Xem trường |
constraint |
Đối với không hoặc nhiều nhóm xe, hãy chỉ định thời điểm và mức độ nới lỏng các quy tắc ràng buộc. Nếu trường này trống, thì tất cả các tuyến xe không trống đều bị ràng buộc hoàn toàn. |
ConstraintRelaxation
Đối với một nhóm xe, hãy chỉ định(các) ngưỡng mà các quy tắc ràng buộc về lượt truy cập sẽ được nới lỏng và đến mức nào. Các lô hàng được liệt kê trong trường skipped_shipment
bị ràng buộc để bỏ qua; tức là không thể thực hiện các lô hàng đó.
Biểu diễn dưới dạng JSON |
---|
{
"relaxations": [
{
object ( |
Trường | |
---|---|
relaxations[] |
Tất cả các trường hợp nới lỏng quy tắc ràng buộc về lượt truy cập sẽ áp dụng cho các lượt truy cập trên tuyến đường có xe trong |
vehicle |
Chỉ định các chỉ mục xe mà quy tắc ràng buộc về lượt truy cập Chỉ mục xe được liên kết giống như |
Thư giãn
Nếu relaxations
trống, thời gian bắt đầu và trình tự của tất cả các lượt truy cập trên routes
sẽ bị ràng buộc hoàn toàn và bạn không thể chèn hoặc thêm lượt truy cập mới vào các 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 truy cập và usedIfRouteIsEmpty
được đặt 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 một lượt truy cập #j thỏa mãn:
route.visits(j).start_time >= relaxations(i).threshold_time
VÀj + 1 >= relaxations(i).threshold_visit_count
Tương tự, việc khởi động xe được nới lỏng thành relaxations(i).level
nếu đáp ứng:
vehicleStartTime >= relaxations(i).threshold_time
VÀrelaxations(i).threshold_visit_count == 0
và đầu xe được nới lỏng thànhrelaxations(i).level
nếu đáp ứng:vehicleEndTime >= relaxations(i).threshold_time
VÀ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 hai relaxations
có cùng level
: một chỉ đặt thresholdVisitCount
và một chỉ đặt thresholdTime
. Nếu một lượt truy cập đáp ứng điều kiện của nhiều relaxations
, thì cấp độ nới lỏng nhất sẽ được áp dụng. Do đó, từ khi xe bắt đầu đến khi kết thúc chuyến đi, mức độ thư giãn sẽ trở nên thoải mái hơn: tức là mức độ thư giãn không giảm khi tuyến đường diễn ra.
Thời gian và trình tự của các lượt truy cập tuyến không đáp ứng các điều kiện ngưỡng của bất kỳ relaxations
nào đều bị ràng buộc hoàn toàn và không thể chèn lượt truy cập nào vào các trình tự này. Ngoài ra, nếu thời điểm bắt đầu hoặc kết thúc của một xe không đáp ứng điều kiện của bất kỳ trường hợp nới lỏng nào, thì thời gian sẽ được cố định, trừ phi xe trống.
Biểu diễn dưới dạng JSON |
---|
{
"level": enum ( |
Trường | |
---|---|
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 |
threshold |
Thời gian tại hoặc sau đó có thể áp dụng Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: |
threshold |
Số lượt truy cập tại hoặc sau thời điểm có thể áp dụng Nếu là |
Cấp độ
Biểu thị các mức độ nới lỏng quy tắc ràng buộc khác nhau được áp dụng cho một lượt truy cập và các lượt truy cập tiếp theo khi lượt truy cập đó đáp ứng các điều kiện ngưỡng.
Dưới đây là danh sách liệt kê theo thứ tự tăng dần độ thư giãn.
Enum | |
---|---|
LEVEL_UNSPECIFIED |
Cấp độ nới lỏng mặc định ngầm ẩn: không có quy tắc ràng buộc nào được nới lỏng, tức là tất cả các lượt truy cập đều bị ràng buộc hoàn toàn. Bạn không được sử dụng giá trị này một cách rõ ràng trong |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Thời gian bắt đầu và kết thúc lượt truy cập cũng như thời gian bắt đầu/kết thúc của xe sẽ được nới lỏng, nhưng mỗi lượt truy cập vẫn liên kết với cùng một xe và bạn phải tuân thủ trình tự lượt truy cập: không được chèn lượt truy cập nào vào giữa hoặc trước các lượt truy cập đó. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AFTER_THRESHOLD , nhưng trình tự lượt truy cập cũng được nới lỏng: lượt truy cập chỉ có thể được thực hiện bằng xe này, nhưng có thể không được thực hiện. |
RELAX_ALL_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , nhưng xe cũng được nới lỏng: lượt truy cập hoàn toàn miễn phí tại hoặc sau thời gian ngưỡng và có thể không được thực hiện. |