Như được 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 Model, Shipments và Vehicles dưới dạng các thực thể bắt buộc:
- Model ghi lại các chế độ cài đặt và ràng buộc 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ả
VisitRequest
nhận và giao hàng. Lô hàng có các chế độ cài đặt và quy tắc hạn chế tại địa phương. - Phương tiện đại diện cho phương tiện, người lái xe hoặc nhân viên. Xe cũng có các chế độ cài đặt và hạn chế tại địa phương.
Các thuộc tính của mỗi thực thể mô tả một phần của vấn đề tối ưu hoá ở một mức độ chi tiết cụ thể. Các ràng buộc trên toàn mô hình được áp dụng cho tất cả các lô hàng và xe, trong khi các ràng buộc và thuộc tính được chỉ định trên lô hàng hoặc xe chỉ áp dụng cho một lô hàng hoặc xe duy nhất.
Để 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 cho thông báo ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC) và Vehicle
(REST, gRPC).
OptimizeToursRequest
cơ sở lưu trú
Sau đây là 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):
searchMode
cho biết có nên trả về giải pháp đầu tiên đáp ứng các ràng buộc đã chỉ định hay tìm giải pháp tốt nhất có thể trong một thời hạn nhất định.considerRoadTraffic
xác định xem có sử dụng tình hình giao thông trực tiếp để định tuyến và ước tính thời gian đến hay không.populateTransitionPolylines
xác định xem các đường nhiều đoạn của tuyến đường và mã thông báo tuyến đường có được trả về trong phản hồi hay không.
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 đường trên tất cả các phương tiện và lô hàng. Không có phương tiện nào được phép bắt đầu quá trình chuyển đổi và vận chuyển đầu tiên trước thời gian này.globalEndTime
thể hiện thời gian kết thúc mới nhất của các tuyến đường trên tất cả các phương tiện và lô hàng. 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 gian này.
Thuộc tính thông tin 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[]
biểu thị nơi bạn có thể đến lấy hoặc gửi một lô hàng. Cả hai thuộc tínhpickups[]
vàdeliveries[]
đều sử dụng thông báoVisitRequest
(REST, gRPC).loadDemands
biểu thị tải trọng cần thiết để một chiếc xe hoàn tất việc vận chuyển. Thuộc tínhload_limits
(REST, gRPC) tương ứng của xe biểu thị lượng tải mà xe có thể chứa tại một thời điểm. Đọc thêm về tải trong phần Yêu cầu và giới hạn về tải.penalty_cost
biểu thị chi phí phát sinh nếu một lô hàng bị bỏ qua. Đọc thêm về chi phí trong Tham 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à xe phải bắt đầu tuyến đường. Thuộc tính này là không bắt buộc. Nếu không được chỉ định, tuyến đường của xe sẽ bắt đầu tại vị trí của lô hàng được giao đầu tiên.endLocation
biểu thị 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 giao gần đây nhất.startTimeWindows[]
biểu thị thời điểm xe có thể bắt đầu hành trình. 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 đều không bắt buộc.loadLimits
thể hiện sức chứa của xe để đáp ứng nhu cầu về tải trọng của các lô hàng. Đọc thêm về nhu cầu và giới hạn tải trong phần Nhu cầu và giới hạn tải.
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"
}
}
Cả 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 đưa ra yêu cầu Tối ưu hoá tuyến đường, bạn cần hiểu rõ sự khác biệt giữa hai phương thức này:
So sánh OptimizeTours và BatchOptimizeTours