Prześlij żądanie z koszty transportu, aby optymalizator uwzględnił ładunek przewożony przez Twoje pojazdy między wizytami. poniesiony koszt zależy zarówno od ilości przeniesionych ShipmentRoute.VehicleLoad
, jak i od odległości lub czasu przenoszenia (odpowiednio cost_per_kilometer
lub cost_per_traveled_hour
).
Minimalny przykładowy żądania z kosztami wczytywania
Oto częściowy przykład żądania z kosztem wczytania. W tym przykładzie jeden pojazd może przewozić maksymalnie 1000 kg ładunku weightKg
, co powoduje powstanie 1 jednostki kosztu na kilometr, gdy przewożony ładunek weightKg
przekracza 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
W tym przykładzie koszt wczytania oblicza się w ten sposób:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Jeśli pojazd przewozi weightKg
o masie 600 kg na odcinku 10 km, obliczenia będą wyglądać tak:
(600 - 500) * 10 * 1 = 1000 cost units
Koszty ładunku mogą służyć do modelowania różnych pojęć, takich jak zwiększone zużycie energii przez pojazd podczas przewożenia ciężkich ładunków lub zużycie pojazdu spowodowane nadmiernym obciążeniem.
Kolejny przykład prośby z koszty dostawy
Oto kolejny przykład kosztów obciążenia, które nakładają koszt na czas przejazdu zarówno powyżej, jak i poniżej progu:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
W tym przykładzie koszt wczytania oblicza się w ten sposób:
cost = max(carried load - load threshold, 0) * time * cost per unit above threshold
+ min(carried load, load threshold) * time * cost per unit below threshold
Jeśli więc pojazd przewozi weightLbs
ładunek o wartości 950 przez 5 godzin, obliczenie będzie wyglądać tak:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
W tym przykładzie koszt wczytania weightLbs
jest zbliżony do max_load
.load_threshold
cost_per_unit_above_threshold
stosuje wysoki koszt za przejechaną godzinę, gdy pojazd przewozi szczególnie ciężki ładunek, penalizując trasy, które mogą zwiększać zużycie paliwa lub zużycie pojazdu.
Element cost_per_unit_below_threshold
dodaje koszt na jednostkę wagi przewożonej przez pojazd do progu, co oznacza zwiększone zużycie paliwa, gdy pojazd przewozi więcej ładunku.
Najczęstsze pytania
Oto kilka najczęstszych pytań dotyczących kosztów wczytywania:
Pytanie | Odpowiedź |
---|---|
Gdzie mogę określić koszty załadunku? | Określ koszty załadunku w Vehicle.LoadLimit . |
Jak koszty załadunku są dopasowywane do przesyłek? | Koszt ładunku dotyczy przesyłek, których typ zapotrzebowania na ładunek jest zgodny z typem limitu ładunku dla pojazdu, np. wagi lub objętości. Typy wczytywania to dowolne ciągi znaków, jak opisano w sekcji zapotrzebowania i limity dotyczące wczytywania. |
Jak wyraża się koszty ładowania? | Koszty ładowania są wyrażane w ujęciu odległości lub czasu. Użyj atrybutu cost_per_kilometer , aby określić koszty w zależności od odległości, oraz atrybutu cost_per_traveled_hour , aby określić koszty w zależności od czasu trwania.
|
Kiedy są stosowane koszty ładowania? | Ładunek pojazdu jest porównywany z load_threshold kosztu ładunku. Jeśli określono parametr cost_per_unit_above_threshold , koszt jest dodawany proporcjonalnie do ładunku pojazdu powyżej wartości load_threshold za pomocą formuły max(0, load - load_threshold) . Jeśli określono parametr cost_per_unit_below_threshold , koszt jest dodawany proporcjonalnie do ładunku pojazdu poniżej wartości load_threshold , zgodnie ze wzorem min(load, load_threshold) .
|
Jakie są wartości domyślne parametrów kosztu wczytania? | Wartości parametrów load_threshold , cost_per_unit_above_threshold i cost_per_unit_below_threshold są domyślnie ustawione na 0.
|
W jakich jednostkach wyrażane są koszty ładowania? | Koszty wczytania są wyrażane w tych samych jednostkach bezwymiarowych co wszystkie inne parametry kosztu, np. global_duration_cost_per_hour lub Shipment.penalty_cost .
|
Gdzie w odpowiedzi znajdę koszty załadowania? | poniesione koszty wczytywania występują w atrybutach metrics i route_metrics wiadomości zwrotnych. Na przykład cost_per_kilometer będzie widoczne jako model.vehicles.load_limits.cost_per_kilometer .
|
Szczegółowe informacje o kosztach wczytywania znajdziesz w dokumentacji (REST, gRPC).
Przykład: wysyłanie OptimizeTours
OptimizeTours
można też wysyłać za pomocą interfejsu REST lub gRPC.
Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:
- Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.
Poniższe polecenie wysyła żądanie
OptimizeTours
do interfejsu RouteOptimization API i otrzymuje odpowiedź w sposób synchroniczny.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
Po zakończeniu procesu otrzymasz wiadomość z odpowiedzią.