Questo esempio mostra come utilizzare i parametri di costo per ottenere un percorso conveniente.
Per una panoramica concettuale completa, consulta il documento Concetto chiave del modello di costo.
Esempio di richiesta
L'esempio seguente mostra uno scenario in cui un veicolo deve consegnare
tre spedizioni. Il veicolo ha costi associati per tempo e distanza e
ogni spedizione ha un penaltyCost che viene addebitato se la spedizione
viene saltata.
Questa richiesta di esempio contiene i seguenti parametri correlati ai costi:
shipments[0]con unpenaltyCostdi 100.0.shipments[1]con unpenaltyCostdi 5,0.shipments[2]con unpenaltyCostdi 50,00 $.vehicles[0]con unacostPerHourdi 40.0 e uncostPerKilometerdi 10.0.
Visualizza una richiesta di esempio con i costi
{ "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 } ] } }
Esempio di risposta
La risposta mostra che l'ottimizzatore crea un percorso che esegue due delle
tre spedizioni. La terza spedizione viene ignorata perché il suo penaltyCost è
inferiore ai costi del veicolo calcolati per il ritiro e la consegna.
Visualizza una risposta alla richiesta di esempio con i costi
{ "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 } } }
I seguenti campi mostrano come vengono calcolati i costi nella risposta:
routeCostssuddivide i costi operativi per un percorso specifico, che in questo caso sono:model.vehicles.cost_per_kilometer: 33.53.model.vehicles.cost_per_hour: 18.91.
routeTotalCost(52,44) è la somma dei costi elencati inrouteCosts.- Al livello superiore della risposta, l'oggetto
costsriepiloga ogni costo sostenuto nella soluzione. Ciò include i costi operativi di tutti gli itinerari del veicolo più eventuali sanzioni, ad esempio ilmodel.shipments.penalty_cost(5.0) per la spedizione saltata. - Il
totalCostfinale (57,44) rappresenta il totale complessivo della soluzione, ovvero la somma delrouteTotalCostdi tutti i veicoli e di tutti i costi delle sanzioni. In questo caso, è 52,44 + 5,0.