Thông báo OptimizeToursRequest
(REST, gRPC) chứa một số thuộc tính liên quan đến chi phí. Đồng thời, các thông số chi phí này
thể hiện yêu cầu
mô hình chi phí. Mô hình chi phí ghi nhận nhiều
thông tin cấp cao của yêu cầu
mục tiêu tối ưu hoá, chẳng hạn như:
- Ưu tiên tuyến đường
Vehicle
nhanh hơn so với các tuyến đường ngắn hơn hoặc chiều ngược lại xung quanh - Quyết định xem chi phí để phân phối
Shipment
có xứng đáng với giá trị của Tỷ lệ hoàn thànhShipment
- Chỉ thực hiện việc đến lấy hàng và giao hàng trong khung thời gian giao hàng tiết kiệm chi phí
Xem ví dụ về yêu cầu có chi phí
{ "model": { "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00", "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 100.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 5.0 }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "pickups": [ { "arrivalLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "duration": "150s" } ], "penaltyCost": 50.0 } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0 } ] } }
Vehicle
thuộc tính chi phí
Thông báo Vehicle
(REST, gRPC) có một số thuộc tính chi phí:
Vehicle.cost_per_hour
: thể hiện chi phí vận hành một chiếc xe mỗi giờ bao gồm phương tiện công cộng, thời gian chờ, thời gian tham quan và thời gian nghỉ.Vehicle.cost_per_kilometer
: thể hiện chi phí mỗi km mà khách đi lại chiếc xe.Vehicle.cost_per_traveled_hour
: chỉ thể hiện chi phí vận hành xe trong khi đang vận chuyển, không bao gồm thời gian chờ, thời gian thăm và thời gian nghỉ.
Các thông số chi phí này cho phép trình tối ưu hoá tạo khoảng cách so với thời gian so với khoảng cách
đánh đổi. Chi phí phát sinh do tuyến đường được tối ưu hoá sẽ xuất hiện trong thông báo phản hồi dưới dạng metrics.costs
:
Khi costPerHour
tăng, trình tối ưu hoá sẽ cố gắng tìm các tuyến nhanh hơn
mà có thể không phải là tuyến đường ngắn nhất. Trong ví dụ này, tuyến đường nhanh nhất xảy ra
ngắn nhất, vì vậy, các thay đổi đối với thông số chi phí sẽ ít ảnh hưởng.
Shipment
thuộc tính chi phí
Thông báo Shipment
(REST, gRPC) cũng có một số tốn kém
thông số:
Shipment.penalty_cost
thể hiện chi phí phát sinh do bỏ qua chuyển hàng.Shipment.VisitRequest.cost
thể hiện chi phí của một hình thức đến lấy hàng cụ thể hoặc giao hàng, được sử dụng chủ yếu để cho phép đánh đổi chi phí giữa nhiều lần đến lấy hàng hoặc tùy chọn giao hàng cho một lô hàng duy nhất.
Các tham số chi phí Shipment
sử dụng cùng một đơn vị không thứ nguyên như các tham số chi phí Vehicle
. Chi phí phát sinh khi hoàn tất một Shipment
vượt quá chi phí phạt, thì Shipment
sẽ không được đưa vào tuyến đường của Vehicle
nào và thay vào đó sẽ xuất hiện trong danh sách skipped_shipments
trong thông báo phản hồi.
ShipmentModel
thuộc tính chi phí
Thông báo ShipmentModel
(REST, gRPC) bao gồm một chi phí duy nhất
thuộc tính globalDurationCostPerHour
. Chi phí này phát sinh dựa trên tổng số
thời gian cần thiết để tất cả các phương tiện hoàn thành ShipmentRoute
. Tăng
globalDurationCostPerHour
ưu tiên hoàn tất tất cả các gói hàng sớm hơn.
Thuộc tính chi phí phản hồi của tính năng Tối ưu hoá tuyến đường
Thông báo OptimizeToursResponse
(REST, gRPC) có các thuộc tính chi phí đại diện cho các chi phí phát sinh trong quá trình hoàn tất ShipmentRoute
.
Thuộc tính metrics.costs
và metrics.totalCost
biểu thị số lượng
đơn vị chi phí phát sinh trên tất cả lộ trình trong phản hồi. Mỗi mục routes
có
Các tài sản routeCosts
và routeTotalCosts
biểu thị chi phí cho loại tài sản đó
tuyến đường cụ thể.
Xem phản hồi cho yêu cầu mẫu kèm theo chi phí
{ "routes": [ { "vehicleStartTime": "2023-01-14T00:00:00Z", "vehicleEndTime": "2023-01-14T00:28:22Z", "visits": [ { "isPickup": true, "startTime": "2023-01-14T00:00:00Z", "detour": "0s" }, { "shipmentIndex": 2, "isPickup": true, "startTime": "2023-01-14T00:02:30Z", "detour": "150s" }, { "startTime": "2023-01-14T00:08:55Z", "detour": "150s" }, { "shipmentIndex": 2, "startTime": "2023-01-14T00:21:21Z", "detour": "572s" } ], "transitions": [ { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:00:00Z" }, { "travelDuration": "0s", "waitDuration": "0s", "totalDuration": "0s", "startTime": "2023-01-14T00:02:30Z" }, { "travelDuration": "235s", "travelDistanceMeters": 795, "waitDuration": "0s", "totalDuration": "235s", "startTime": "2023-01-14T00:05:00Z" }, { "travelDuration": "496s", "travelDistanceMeters": 1893, "waitDuration": "0s", "totalDuration": "496s", "startTime": "2023-01-14T00:13:05Z" }, { "travelDuration": "171s", "travelDistanceMeters": 665, "waitDuration": "0s", "totalDuration": "171s", "startTime": "2023-01-14T00:25:31Z" } ], "metrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "routeCosts": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111 }, "routeTotalCost": 52.441111111111113 } ], "skippedShipments": [ { "index": 1 } ], "metrics": { "aggregatedRouteMetrics": { "performedShipmentCount": 2, "travelDuration": "902s", "waitDuration": "0s", "delayDuration": "0s", "breakDuration": "0s", "visitDuration": "800s", "totalDuration": "1702s", "travelDistanceMeters": 3353 }, "usedVehicleCount": 1, "earliestVehicleStartTime": "2023-01-14T00:00:00Z", "latestVehicleEndTime": "2023-01-14T00:28:22Z", "totalCost": 57.441111111111113, "costs": { "model.vehicles.cost_per_kilometer": 33.53, "model.vehicles.cost_per_hour": 18.911111111111111, "model.shipments.penalty_cost": 5 } } }
Trong phản hồi mẫu, metrics.costs
cấp cao nhất là:
{
"metrics": {
...
"costs": {
"model.vehicles.cost_per_hour": 18.911111111111111,
"model.vehicles.cost_per_kilometer": 33.53,
"model.shipments.penalty_cost": 5
}
}
}
Giá trị model.shipments.penalty_cost
thể hiện chi phí phát sinh do
lô hàng đã bỏ qua. Thuộc tính skippedShipments
liệt kê các lô hàng đã vận chuyển
đã bỏ qua.
Trong ví dụ này, chỉ model.shipments[1]
trong yêu cầu mẫu bị bỏ qua.
model.shipments[1]
có chi phí phạt là 5 đơn vị, khớp với tổng chi phí
Khoá model.shipments.penalty_cost
trong phản hồi mẫu. Lô hàng sắp hết
penaltyCost
so với 40,0 costPerHour
và 10,0 của Vehicle
costPerKilometer
giúp tiết kiệm chi phí hơn là bỏ qua việc vận chuyển
để hoàn thành.
Chủ đề nâng cao: chi phí và quy tắc ràng buộc mềm
Một số thuộc tính OptimizeToursRequest
(REST, gRPC)
thể hiện những ràng buộc mềm. Đây là những ràng buộc phát sinh chi phí khi họ
không thể đáp ứng.
Ví dụ: các quy tắc ràng buộc của xe LoadLimit
(REST, gRPC) có
Thuộc tính softMaxLoad
và costPerUnitAboveSoftMax
. Tổng cộng, các chi phí này sẽ tăng lên theo tỷ lệ với các đơn vị tải vượt quá softMaxLoad
, cho phép vượt quá giới hạn chỉ khi việc này hợp lý về mặt chi phí.
Tương tự, các quy tắc ràng buộc của TimeWindow
(REST, gRPC) có
Thuộc tính soft_start_time
và soft_end_time
, tương ứng với
cost_per_hour_before_soft_start_time
và cost_per_hour_after_soft_end_time
phát sinh dựa trên việc sự kiện bị ràng buộc xảy ra sớm hay muộn với
đối với TimeWindow
.
Giống như tất cả các thông số mô hình chi phí, chi phí ràng buộc mềm được biểu thị bằng cùng một đơn vị không có kích thước như các thông số chi phí khác.
Các quy tắc ràng buộc đối với LoadLimit
được giải quyết chi tiết trong
Yêu cầu và giới hạn tải. Các điều kiện ràng buộc TimeWindow
được đề cập chi tiết trong phần Điều kiện ràng buộc về khung giờ lấy hàng và giao hàng.