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