Như được mô tả ngắn gọn trong bài viết Tổng quan về tối ưu hoá tuyến đường, một yêu cầu cơ bản bao gồm Mẫu, Lô hàng và Xe là pháp nhân bắt buộc:
- Mô hình ghi lại các chế độ cài đặt và hạn chế cho toàn bộ yêu cầu,
bao gồm cả
Shipments
vàVehicles
. - Lô hàng thể hiện các nhiệm vụ hoặc lô hàng thực tế bao gồm cả việc đến lấy hàng và
giao hàng vào
VisitRequest
giây. Lô hàng có các chế độ cài đặt và hạn chế cục bộ. - Xe đại diện cho phương tiện vận chuyển, người lái xe hoặc nhân viên. Xe cũng có các cài đặt và ràng buộc cục bộ.
Các thuộc tính của mỗi thực thể mô tả một phần của bài toán tối ưu hoá tại một mức độ chi tiết cụ thể. Các điều kiện ràng buộc trên toàn mô hình được áp dụng cho tất cả lô hàng và phương tiện vận chuyển, trong khi những ràng buộc và tài sản được quy định trên lô hàng hoặc phương tiện vận chuyển dành riêng cho một lô hàng hoặc chiếc xe.
Để xem tài liệu đầy đủ về từng loại thông báo, hãy xem tài liệu tham khảo
dành cho ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC),
và Vehicle
(REST, gRPC).
OptimizeToursRequest
cơ sở lưu trú
Một số thuộc tính thường dùng của thông báo OptimizeToursRequest
cấp cao nhất
(REST, gRPC) bao gồm:
searchMode
cho biết liệu có trả về đáp án đầu tiên đáp ứng hay không các điều kiện ràng buộc đã chỉ định hoặc tìm giải pháp tốt nhất có thể trong một tập hợp hạn cuối.considerRoadTraffic
xác định liệu lưu lượng truy cập trực tiếp có được sử dụng hay không để định tuyến và ước tính thời gian đến dự kiến.populateTransitionPolylines
xác định liệu các hình nhiều đường có tuyến đường hay không được trả về trong phản hồi.
Thuộc tính mô hình
Một số thuộc tính thường dùng của thông báo ShipmentModel
(REST,
gRPC) bao gồm:
globalStartTime
là thời gian bắt đầu sớm nhất của các tuyến đường trên tất cả phương tiện vận chuyển và quá trình vận chuyển. Không chiếc xe nào có thể bắt đầu quá trình chuyển đổi đầu tiên và các gói hàng trước thời điểm này.globalEndTime
biểu thị thời gian kết thúc muộn nhất của tuyến đường trên tất cả phương tiện và vận chuyển. Tất cả các lô hàng được giao và quá trình chuyển đổi phải hoàn tất trước thời điểm này.
Thuộc tính vận chuyển
Một số thuộc tính thường dùng của thông báo Shipment
(REST, gRPC)
bao gồm:
pickups[]
vàdeliveries[]
đại diện cho nơi bạn có thể đến lấy hàng hoặc đã bỏ ngang. Cả hai thuộc tínhpickups[]
vàdeliveries[]
đều sử dụng phương thức Thông báoVisitRequest
(REST, gRPC).loadDemands
thể hiện tải trọng cần thiết để một chiếc xe hoàn thành một chuyển hàng. Phương tiện di chuyểnload_limits
tương ứng (REST, gRPC) thuộc tính thể hiện tải trọng một chiếc xe có thể chứa được tại một thời điểm. Đọc thêm về tải trong Nhu cầu và giới hạn tải.penalty_cost
là chi phí phát sinh nếu việc vận chuyển bị bỏ qua. Đã đọc các thông tin khác về chi phí trong Thông số mô hình chi phí.
Thuộc tính xe
Một số thuộc tính thường dùng của thông báo Vehicle
(REST, gRPC)
bao gồm:
startLocation
biểu thị vị trí mà một phương tiện phải bắt đầu tuyến đường. Chiến dịch này là không bắt buộc. Nếu không được chỉ định, tuyến đường của xe bắt đầu tại vị trí của lô hàng được giao đầu tiên.endLocation
thể hiện nơi xe phải kết thúc tuyến đường. Cơ sở lưu trú này là tuỳ chọn. Nếu không được chỉ định, tuyến đường của xe sẽ kết thúc tại vị trí của chuyến hàng cuối cùng được giao.startTimeWindows[]
biểu thị thời điểm một phương tiện có thể bắt đầu tuyến đường. Chiến dịch này là không bắt buộc.endTimeWindows[]
thể hiện thời điểm một phương tiện có thể bắt đầu và kết thúc tuyến đường. Bạn không bắt buộc phải sử dụng cả hai thuộc tính này.loadLimits
thể hiện sức chứa của xe để đáp ứng yêu cầu vận chuyển tải. Đọc thêm về nhu cầu và giới hạn tải trong bài viết Nhu cầu tải và Giới hạn.
Một yêu cầu mẫu hoàn chỉnh ở định dạng JSON sẽ có dạng như sau:
{
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
OptimizeTours
và BatchOptimizeTours
đều sử dụng các thông báo yêu cầu như
ví dụ trên, nhưng theo những cách khác nhau. Trước khi tối ưu hoá tuyến đường
yêu cầu, điều quan trọng là phải hiểu sự khác biệt giữa hai phương thức: