Ví dụ này cho thấy cách sử dụng các tham số chi phí để có được tuyến đường tiết kiệm chi phí.
Để biết thông tin tổng quan đầy đủ về khái niệm, hãy xem tài liệu Khái niệm chính về mô hình chi phí.
Yêu cầu mẫu
Ví dụ sau đây minh hoạ một trường hợp trong đó một xe phải giao 3 lô hàng. Xe có các chi phí liên quan đến thời gian và quãng đường, đồng thời mỗi lô hàng đều có một penaltyCost phát sinh nếu lô hàng đó bị bỏ qua.
Yêu cầu mẫu này chứa các tham số liên quan đến chi phí sau đây:
shipments[0]cópenaltyCostlà 100.shipments[1]vớipenaltyCostlà 5.0.shipments[2]vớipenaltyCostlà 50.0.vehicles[0]cócostPerHourlà 40 vàcostPerKilometerlà 10.
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 } ] } }
Ví dụ về phản hồi
Phản hồi cho thấy trình tối ưu hoá tạo một tuyến đường thực hiện hai trong số ba lô hàng. Lô hàng thứ ba bị bỏ qua vì penaltyCost thấp hơn chi phí đã tính của xe để nhận và giao hàng.
Xem phản hồi cho yêu cầu mẫu có 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 } } }
Các trường sau đây cho biết cách tính chi phí trong phản hồi:
routeCostsphân tích chi phí vận hành cho một tuyến đường cụ thể, trong trường hợp này là:model.vehicles.cost_per_kilometer: 33.53.model.vehicles.cost_per_hour: 18,91.
routeTotalCost(52,44) là tổng chi phí được liệt kê trongrouteCosts.- Ở cấp cao nhất của phản hồi, đối tượng
costssẽ tóm tắt mọi chi phí phát sinh trong giải pháp. Điều này bao gồm chi phí vận hành của tất cả các tuyến đường của xe cộng với mọi khoản phạt, chẳng hạn nhưmodel.shipments.penalty_cost(5.0) cho lô hàng bị bỏ qua. totalCostcuối cùng (57,44) đại diện cho tổng số tiền của giải pháp, tức là tổng củarouteTotalCosttừ tất cả các xe và tất cả chi phí phạt. Trong trường hợp này, giá trị là 52,44 + 5.