Như mô tả ngắn gọn trong phần Tổng quan về tính năng tối ưu hoá tuyến đường, một yêu cầu cơ bản bao gồm Mẫu xe, Lô hàng và Xe dưới dạng các thực thể 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 đại diện cho các tác vụ hoặc lô hàng thực tế bao gồm cả
VisitRequest
lấy hàng và giao hàng. Lô hàng có các chế độ cài đặt và hạn chế cục bộ. - Xe đại diện cho xe, tài xế hoặc nhân viên. Xe cũng có các chế độ cài đặt và quy tắc 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.
Để biết tài liệu đầy đủ về từng loại thông báo, hãy xem tài liệu tham khảo cho thông báo 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ó định tuyến hình nhiều đường và mã thông báo tuyến đườ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
biểu thị thời gian bắt đầu sớm nhất của các tuyến trên tất cả xe và lô hàng. 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 và quá trình chuyển đổi được chỉ định 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[]
thể hiện nơi có thể nhận hoặc giao hàng. Cả thuộc tínhpickups[]
vàdeliveries[]
đều sử dụng thông báoVisitRequest
(REST, gRPC).loadDemands
biểu thị tải cần thiết để một xe hoàn tất một lô hàng. Thuộc tínhload_limits
(REST, gRPC) tương ứng của xe cho biết lượng tải mà một xe có thể chứa cùng một lúc. Đọ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. Thuộc tính này là không bắt buộc. Nếu bạn không chỉ định, tuyến đường của xe sẽ kết thúc tại vị trí của lô hàng được chỉ định gần đây nhất.startTimeWindows[]
biểu thị thời điểm một phương tiện có thể bắt đầu tuyến đường. Thuộc tính này là không bắt buộc.endTimeWindows[]
biểu thị thời điểm một xe có thể bắt đầu và kết thúc tuyến đường. Cả hai thuộc tính này đều không bắt buộc.loadLimits
thể hiện sức chứa của xe để đáp ứng nhu cầu tải của các lô hàng. Đọ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.
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 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ạo yêu cầu Tối ưu hoá tuyến đường, bạn cần hiểu sự khác biệt giữa hai phương thức: