Giải pháp được chèn vào yêu cầu, bao gồm cả thông tin về những lượt truy cập phải bị hạn chế và cách hạn chế những 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 cơ bản về tính hợp lệ được liệt kê cho |
skippedShipments[] |
Các lô hàng bị bỏ qua 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 |
constraintRelaxations[] |
Đối với 0 hoặc nhiều nhóm xe, hãy chỉ định thời điểm và mức độ nới lỏng các ràng buộc. Nếu trường này trống, thì tất cả các tuyến đường không trống của xe đều bị hạn chế hoàn toàn. |
ConstraintRelaxation
Đối với một nhóm xe, hãy chỉ định(các) ngưỡng mà tại đó các ràng buộc đố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 thực hiện; tức là không thể thực hiện.
| Biểu diễn dưới dạng JSON |
|---|
{
"relaxations": [
{
object ( |
| Trường | |
|---|---|
relaxations[] |
Tất cả các quy tắc nới lỏng về lượt ghé thăm sẽ áp dụng cho các lượt ghé thăm trên những tuyến đường có phương tiện trong |
vehicleIndices[] |
Chỉ định chỉ mục xe mà quy tắc ràng buộc 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ì thời gian bắt đầu và trình tự của tất cả các lượt ghé thăm trên routes sẽ bị hạn chế hoàn toàn và 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 một chiếc xe trong routes bị hạn chế hoàn toàn, trừ phi chiếc xe đó không có người (tức là không có lượt ghé thăm và có usedIfRouteIsEmpty được đặt thành false trong mô hình).
relaxations(i).level chỉ định cấp độ nới lỏng điều kiện ràng buộc được áp dụng cho lượt truy cập #j thoả mãn:
route.visits(j).start_time >= relaxations(i).threshold_timeVÀj + 1 >= relaxations(i).threshold_visit_count
Tương tự, quá trình khởi động xe được nới lỏng thành relaxations(i).level nếu đáp ứng các điều kiện sau:
vehicleStartTime >= relaxations(i).threshold_timeVÀrelaxations(i).threshold_visit_count == 0và đầu xe được nới lỏng thànhrelaxations(i).levelnếu đáp ứng các điều kiện sau:vehicleEndTime >= relaxations(i).threshold_timeVÀ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 điều kiện thresholdVisitCount HOẶC thresholdTime, hãy thêm hai relaxations có cùng level: một chỉ có thresholdVisitCount và một 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ì cấp độ ít hạn chế nhất sẽ được áp dụng. Do đó, từ khi xe bắt đầu đến khi xe kết thúc, mức độ thư giãn sẽ tăng lên: tức là mức độ thư giãn sẽ không giảm khi tuyến đường tiến triển.
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 bất kỳ relaxations nào đều bị hạn chế hoàn toàn và không thể chèn lượt ghé thăm nào vào các trình tự này. Ngoài ra, nếu thời gian bắt đầu hoặc kết thúc của một chuyến xe không đáp ứng các đ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 không có người.
| 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 |
Thời gian mà bạn có thể áp dụng quy tắc nới lỏng Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: |
thresholdVisitCount |
Số lượt truy cập mà sau đó có thể áp dụng quy tắc nới lỏng Nếu là |
Cấp độ
Thể hiện các cấp độ nới lỏng ràng buộc khác nhau, được áp dụng cho một lượt truy cập và những lượt truy cập tiếp theo khi lượt truy cập đó đáp ứng các điều kiện về ngưỡng.
Phần liệt kê dưới đây được sắp xếp theo thứ tự tăng dần mức độ thư giãn.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Cấp độ nới lỏng 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ả 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 lượt ghé thăm và 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 ghé thăm vẫn phải gắn với cùng một chiếc xe và bạn phải tuân thủ trình tự ghé thăm: không được chèn lượt ghé thăm giữa hoặc trước các lượt ghé thăm. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AFTER_THRESHOLD, nhưng trình tự ghé thăm cũng được nới lỏng: chỉ có xe này mới có thể thực hiện các lượt ghé thăm, nhưng có thể không thực hiện được. |
RELAX_ALL_AFTER_THRESHOLD |
Tương tự như RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, nhưng xe cũng được thả lỏng: các 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. |