Đưa ra yêu cầu về chi phí tải để trình tối ưu hoá xem xét tải trọng mà xe của bạn mang theo giữa các lần ghé thăm. Chi phí phát sinh phụ thuộc vào cả lượng ShipmentRoute.VehicleLoad
được mang theo và khoảng cách hoặc thời gian chuyển đổi (tương ứng là sử dụng cost_per_kilometer
hoặc cost_per_traveled_hour
).
Ví dụ tối thiểu về yêu cầu có chi phí tải
Sau đây là ví dụ một phần về yêu cầu có chi phí tải. Trong ví dụ này, một chiếc xe duy nhất có thể chở không quá 1.000 kg tổng trọng lượng weightKg
. Xe sẽ phải chịu 1 đơn vị chi phí cho mỗi km khi trọng lượng weightKg
được chở vượt quá 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Sau đây là cách tính chi phí tải cho ví dụ này:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Vì vậy, nếu xe chở weightKg
hàng hoá 600 kg trên 10 km, thì cách tính sẽ là:
(600 - 500) * 10 * 1 = 1000 cost units
Bạn có thể sử dụng chi phí tải để mô hình hoá nhiều khái niệm, chẳng hạn như mức tiêu thụ năng lượng của xe tăng lên khi vận chuyển hàng hoá nặng hoặc hao mòn xe do tải trọng quá mức.
Một yêu cầu ví dụ khác có chi phí tải
Sau đây là một ví dụ khác về chi phí tải áp dụng chi phí trên mỗi thời gian di chuyển cả trên và dưới ngưỡng:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
Sau đây là cách tính chi phí tải cho ví dụ này:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
Vì vậy, nếu xe chở tải trọng weightLbs
là 950 trong 5 giờ, thì cách tính sẽ là:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
Trong ví dụ này, load_threshold
cho chi phí tải weightLbs
gần bằng max_load
. cost_per_unit_above_threshold
áp dụng chi phí cao cho mỗi giờ di chuyển khi xe chở hàng đặc biệt nặng, phạt những tuyến đường có thể làm tăng hao mòn cho xe hoặc tiêu thụ quá nhiều nhiên liệu.
cost_per_unit_below_threshold
sẽ cộng thêm chi phí cho mỗi đơn vị trọng lượng mà xe chở cho đến ngưỡng, thể hiện mức tiêu thụ nhiên liệu tăng lên khi xe chở nhiều hàng hơn.
Câu hỏi thường gặp
Dưới đây là một số câu hỏi thường gặp về chi phí tải:
Câu hỏi | Trả lời |
---|---|
Tôi có thể chỉ định chi phí tải ở đâu? | Chỉ định chi phí tải trong Vehicle.LoadLimit . |
Chi phí tải được so khớp với các lô hàng như thế nào? | Chi phí tải áp dụng cho những lô hàng có loại nhu cầu tải trùng khớp với loại giới hạn tải của xe, chẳng hạn như trọng lượng hoặc khối lượng. Các loại tải là chuỗi tuỳ ý, như mô tả trong phần nhu cầu và giới hạn tải. |
Chi phí tải được thể hiện như thế nào? | Chi phí tải được thể hiện bằng khoảng cách hoặc thời lượng chuyển đổi. Sử dụng cost_per_kilometer để chỉ định chi phí theo khoảng cách và cost_per_traveled_hour để chỉ định chi phí theo thời lượng.
|
Khi nào áp dụng chi phí tải? | Tải trọng của xe được so sánh với load_threshold của chi phí tải. Nếu bạn chỉ định cost_per_unit_above_threshold , thì chi phí sẽ được cộng thêm tương ứng với tải trọng của xe trên load_threshold bằng công thức max(0, load - load_threshold) . Nếu cost_per_unit_below_threshold được chỉ định, chi phí sẽ được cộng thêm tương ứng với tải trọng của xe bên dưới load_threshold , theo công thức min(load, load_threshold) .
|
Giá trị mặc định cho các thông số chi phí tải là gì? | load_threshold , cost_per_unit_above_threshold và cost_per_unit_below_threshold đều bằng 0 theo mặc định.
|
Chi phí tải được biểu thị bằng đơn vị nào? | Chi phí tải được biểu thị bằng cùng một đơn vị không thứ nguyên như tất cả các thông số chi phí khác, chẳng hạn như global_duration_cost_per_hour hoặc Shipment.penalty_cost .
|
Tôi có thể tìm thấy chi phí tải trong phản hồi ở đâu? | Chi phí tải phát sinh sẽ xuất hiện trong các thuộc tính metrics và route_metrics của thông báo phản hồi. Ví dụ: cost_per_kilometer đã phát sinh sẽ xuất hiện dưới dạng model.vehicles.load_limits.cost_per_kilometer .
|
Để biết nội dung giải thích chi tiết về chi phí tải, hãy xem tài liệu tham khảo (REST, gRPC).
Ví dụ: Tạo yêu cầu OptimizeTours
Bạn cũng có thể đưa ra yêu cầu OptimizeTours
bằng REST hoặc gRPC.
Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:
- Đảm bảo bạn đã định cấu hình Thông tin xác thực mặc định của ứng dụng như mô tả trong phần Sử dụng OAuth.
Đặt PROJECT_NUMBER_OR_ID thành số hoặc mã dự án trên Cloud.
Lệnh sau đây sẽ gửi một yêu cầu
OptimizeTours
đến RouteOptimization API và nhận được phản hồi đồng bộ.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- << EOM { "model": { "shipments": [ { "deliveries": [ { "arrivalLocation": { "latitude": 37.789456, "longitude": -122.390192 }, "duration": "250s" } ], "penaltyCost": 100.0, "loadDemands": { "weightKg": { "amount": 50 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.789116, "longitude": -122.395080 }, "duration": "250s" } ], "penaltyCost": 30.0, "loadDemands": { "weightKg": { "amount": 10 } } }, { "deliveries": [ { "arrivalLocation": { "latitude": 37.795242, "longitude": -122.399347 }, "duration": "250s" } ], "penaltyCost": 50.0, "loadDemands": { "weightKg": { "amount": 80 } } } ], "vehicles": [ { "endLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "startLocation": { "latitude": 37.794465, "longitude": -122.394839 }, "costPerHour": 40.0, "costPerKilometer": 10.0, "loadLimits": { "weightKg": { "maxLoad": "100", "costPerKilometer": { "loadThreshold": "15", "costPerUnitAboveThreshold": 1 } } } } ] } } EOM
Sau khi yêu cầu hoàn tất, bạn sẽ nhận được một thông báo phản hồi.