Nhu cầu và giới hạn về tải là một loại quy tắc ràng buộc mà bạn có thể dùng để quản lý sức chứa. Quy tắc ràng buộc này chỉ định sức chứa bắt buộc của lô hàng và sức chứa tối đa của phương tiện, cho phép bạn tối ưu hoá việc chỉ định tuyến đường dựa trên các quy tắc ràng buộc này.
Nhu cầu và giới hạn về tải có thể hỗ trợ các mục tiêu như:
- Ngăn phương tiện bị quá tải.
- Theo dõi cách tải trọng của phương tiện thay đổi khi lô hàng được nhận và giao.
- Ưu tiên việc ghép nối phương tiện hạng nặng với các lô hàng có tải trọng lớn.
Nhu cầu và giới hạn về tải được chỉ định trong các thuộc tính sau:
loadDemandschỉ định lượng sức chứa mà một lô hàng cụ thể yêu cầu.loadLimitschỉ định sức chứa tối đa cho một phương tiện nhất định.
Cấu trúc
Như minh hoạ trong sơ đồ, nhu cầu và giới hạn về tải được cấu trúc như sau:
loadDemandslà một thuộc tính củaShipment. MộtShipmentcó thể có nhiều nhu cầu về tải.loadLimitslà một thuộc tính củaVehicle. MộtVehiclecó thể có nhiều giới hạn về tải.
Danh sách kiểm tra các yếu tố cần thiết
Danh sách kiểm tra sau đây mô tả những kiến thức cần thiết giúp ngăn ngừa các lỗi tiềm ẩn liên quan đến tải. Danh sách này có thể giúp bạn xác thực yêu cầu và khắc phục sự cố về phản hồi.
Thuộc tính
Phần này mô tả các thuộc tính cho nhu cầu và giới hạn về tải, bao gồm:
- Loại tải: Một thuộc tính được chia sẻ giữa nhu cầu và giới hạn về tải.
LoadvàLoadLimit: Các thuộc tính duy nhất có trong nhu cầu và giới hạn về tải tương ứng.
Loại tải
Loại tải là một khoá chuỗi mà bạn áp dụng đồng đều cho các lô hàng và phương tiện. Một loại tải duy nhất áp dụng cho nhu cầu về tải của lô hàng cũng như giới hạn về tải của phương tiện.
Các loại tải sử dụng cú pháp loại bản đồ Protocol Buffers. Khi đặt tên cho một loại tải, hãy sử dụng các mã nhận dạng mô tả loại tải và đơn vị của loại tải đó. Ví dụ: weightKg, volume_gallons, palletcount hoặc frequencyDaily.
Load và LoadLimit
Các đối tượng Load và LoadLimit chứa các thuộc tính cụ thể để
xác định các yêu cầu về sức chứa cho lô hàng và phương tiện. Bảng sau đây
mô tả các thuộc tính này:
| Đối tượng | Cha mẹ | Thuộc tính | Loại khách sạn | Mô tả thuộc tính |
|---|---|---|---|---|
Load |
loadDemands |
amount |
chuỗi (định dạng int64) | Xác định yêu cầu về sức chứa của lô hàng theo loại được chỉ định. |
LoadLimit |
loadLimits |
maxLoad |
chuỗi (định dạng int64) | Xác định sức chứa tải tối đa của phương tiện theo loại được chỉ định. |
Ví dụ
Phần này trình bày 3 loại ví dụ:
- Mã mẫu minh hoạ cấu trúc của các thuộc tính nhu cầu và giới hạn về tải.
- Một tình huống ví dụ cho thấy một cách sử dụng nhu cầu và giới hạn về tải trong yêu cầu API.
- Một ví dụ về yêu cầu bao gồm các giá trị được đặt trong tình huống ví dụ.
Mã mẫu
Ví dụ sau đây cho thấy cấu trúc của nhu cầu về tải, trong đó bạn có thể đặt loại
loadDemands thành chuỗi và thuộc tính amount thành chuỗi
ở định dạng int64:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
Ví dụ sau đây cho thấy cấu trúc cơ bản nhất của giới hạn về tải, trong đó bạn
có thể đặt loại loadLimits thành chuỗi và thuộc tính maxLoad
thành chuỗi ở định dạng int64:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Tình huống ví dụ
Phần này mô tả một tình huống trong đó bạn có một doanh nghiệp trông giữ chó và bạn đang tối ưu hoá một tuyến đường để vận chuyển một vài chú chó trên một phương tiện có số lượng lồng hạn chế.
Mỗi lô hàng đại diện cho một điểm dừng, nơi bạn đến lấy một số lượng chó nhất định. Trong ví dụ này, mỗi lô hàng có một địa điểm nhận khác nhau (là nhà của những chú chó mà bạn chăm sóc) và tất cả các lô hàng đều có cùng một địa điểm giao hàng (toà nhà trông giữ chó của bạn).
Đối với ví dụ này, các giá trị thuộc tính trong yêu cầu của bạn là như sau:
| Cha mẹ | Thuộc tính | Loại | Giá trị | Trường hợp |
|---|---|---|---|---|
loadDemands |
loại tải | chuỗi | dogUnit |
Xác định loại tải cho lô hàng. Ví dụ này sử dụng dogUnit, trong đó mỗi dogUnit đại diện cho một chú chó. |
loadDemands |
amount |
số | Lô hàng đầu tiên: 1Lô hàng thứ hai: 3 |
Chỉ định số lượng của loại tải đã xác định. Trong ví dụ này, bạn đang xác định 2 lô hàng, trong đó lô hàng đầu tiên là nhận một chú chó và lô hàng thứ hai là nhận 3 chú chó. |
loadLimits |
loại tải | chuỗi | dogUnit |
Xác định loại giới hạn về tải được áp dụng cho phương tiện. Loại này phải khớp với loại tải của lô hàng để giới hạn có liên quan. |
loadLimits |
maxLoad |
số | 6 |
Chỉ định số lượng tối đa của loại tải mà phương tiện có thể chở. Trong ví dụ này, bạn chỉ có một phương tiện có sức chứa tối đa là 6 dogUnit, trong đó mỗi dogUnit đại diện cho một lồng chó. |
Sơ đồ sau đây minh hoạ giới hạn về tải của phương tiện, nhu cầu về tải của mỗi lô hàng và cách mỗi lô hàng tiêu thụ giới hạn về tải của phương tiện:

Trong ví dụ này, nhu cầu về tải của mỗi lô hàng và giới hạn về tải của phương tiện có các tác động sau:
Trình tối ưu hoá sẽ không gặp vấn đề khi tạo tuyến đường để phương tiện vận chuyển chó, vì phương tiện có thể chở tối đa 6 chú chó và bạn chỉ nhận 4 chú chó.
Việc có giới hạn về tải là 6
dogUnittrên phương tiện cũng có nghĩa là bạn chỉ có thể chở thêm 2 chú chó trên phương tiện cụ thể này.Nếu số lượng chó lớn hơn giới hạn về tải, thì trình tối ưu hoá sẽ bỏ qua một trong các lần nhận hoặc chỉ định cho một phương tiện phù hợp.
Hãy nhớ rằng không có tập hợp các loại được xác định trước. Trong ví dụ này, bạn có thể thay đổi loại tải từ đơn vị chó thành đơn vị trọng lượng để giới hạn trọng lượng của chó hoặc thay đổi thành số đo tuyến tính để giới hạn chiều rộng hoặc chiều cao của chúng. Tính linh hoạt này cho phép bạn điều chỉnh nhu cầu và giới hạn về tải theo nhu cầu cụ thể của mình.
Ví dụ về yêu cầu
Ví dụ sau đây cho thấy cấu trúc của một yêu cầu optimizeTours cơ bản kết hợp các giá trị tình huống ví dụ:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "One bernese mountain dog", "loadDemands": { "dogUnit": { "amount": "1" } } }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ], "label": "Three chihuahuas", "loadDemands": { "dogUnit": { "amount": "3" } } } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "loadLimits": { "dogUnit": { "maxLoad": "6" } }, "costPerKilometer": 1.0 } ] } }
Hãy nhớ rằng không giống như trường hợp của ví dụ này, một lô hàng có thể có nhiều nhu cầu về tải và một phương tiện có thể có nhiều giới hạn về tải, cho phép bạn cung cấp các quy tắc ràng buộc phức tạp để xem xét khi tối ưu hoá tuyến đường của đội xe.
Giới hạn linh hoạt về tải
Bạn có thể đặt giới hạn về tải làm quy tắc ràng buộc linh hoạt bằng cách thêm softMaxLoad và
costPerUnitAboveSoftMax vào loadLimits của phương tiện. Điều này cho phép trình tối ưu hoá vượt quá tải tối đa của phương tiện với một chi phí, ưu tiên hoàn thành tuyến đường hơn là tuân thủ nghiêm ngặt giới hạn về tải.
Bạn có thể sử dụng maxLoad và softMaxLoad cùng nhau để đặt cả giới hạn về tải cố định
và giới hạn về tải linh hoạt. Trong trường hợp này, softMaxLoad đặt tải có thể
vượt quá và maxLoad đặt giới hạn cố định không thể vượt quá. Khi
cả hai đều được sử dụng, maxLoad phải lớn hơn softMaxLoad.
Thuộc tính
Bảng sau đây mô tả các thuộc tính quy tắc ràng buộc linh hoạt cho nhu cầu và giới hạn về tải.
| Cha mẹ | Tên tài sản | Loại khách sạn | Mô tả thuộc tính |
|---|---|---|---|
loadLimits |
softMaxLoad |
chuỗi (định dạng int64) | Tải tối đa ưu tiên cho một phương tiện. Nếu tải của phương tiện vượt quá giá trị này, thì sẽ phát sinh chi phí. |
loadLimits |
costPerUnitAboveSoftMax |
số | Chi phí cho mỗi đơn vị tải vượt quá softMaxLoad. Bạn phải điền trường này khi sử dụng softMaxLoad. Hãy xem khái niệm chính về Mô hình chi phí để tìm hiểu thêm về chi phí. |
Mã mẫu
Ví dụ sau đây cho thấy cấu trúc của các thuộc tính quy tắc ràng buộc linh hoạt của loadLimits:
{ "loadLimits": { "LOAD_TYPE": { "softMaxLoad": "LOAD_AMOUNT", "costPerUnitAboveSoftMax": COST_PER_UNIT } } }