Wyślij żądanie z kosztami obciążenia, aby optymalizator uwzględniał obciążenie pojazdów między wizytami. Poniesiony koszt zależy zarówno od ilości przewożonego ładunku ShipmentRoute.VehicleLoad, jak i odległości lub czasu trwania przejścia (odpowiednio przy użyciu cost_per_kilometer lub cost_per_traveled_hour).
Minimalny przykład żądania z kosztami obciążenia
Oto częściowy przykład żądania z kosztem obciążenia. W tym przykładzie pojedynczy pojazd może przewozić ładunek o łącznej masie weightKg nie większej niż 1000 kg, co powoduje koszt 1 jednostki na kilometr, gdy przewożony ładunek weightKg przekracza 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Obliczenie kosztu obciążenia w tym przykładzie wygląda tak:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Jeśli więc pojazd przewozi ładunek o masie weightKg 600 kg na odległość 10 km, obliczenie będzie wyglądać tak:
(600 - 500) * 10 * 1 = 1000 cost units
Koszty obciążenia można wykorzystać do modelowania różnych koncepcji, takich jak zwiększone zużycie energii przez pojazd podczas transportu ciężkich ładunków lub zużycie pojazdu spowodowane nadmiernym obciążeniem.
Inny przykład żądania z kosztami obciążenia
Oto kolejny przykład kosztów obciążenia, który nakłada koszt na czas podróży zarówno powyżej, jak i poniżej progu:
{ "model": { "vehicles": [{ "loadLimits": { "weightLbs": { "maxLoad": "1000", "costPerTraveledHour": { "loadThreshold": "900", "costPerUnitAboveThreshold": 10, "costPerUnitBelowThreshold": 1 }, }, } }] } }
Obliczenie kosztu obciążenia w tym przykładzie wygląda tak:
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 ładunek o masie weightLbs 950 kg 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 load_threshold dla kosztu obciążenia weightLbs jest zbliżony do max_load. Wartość cost_per_unit_above_threshold stosuje wysoki koszt na godzinę podróży, gdy pojazd podróżuje z wyjątkowo ciężkim ładunkiem, co powoduje karę za trasy, które mogą zwiększyć zużycie pojazdu lub zużywać nadmierną ilość paliwa.
Wartość cost_per_unit_below_threshold dodaje koszt na jednostkę masy przewożoną przez pojazd do progu, co oznacza zwiększone zużycie paliwa, gdy pojazd przewozi większy ładunek.
Najczęstsze pytania
Oto wybrane najczęstsze pytania dotyczące kosztów obciążenia:
| Pytanie | Odpowiedź |
|---|---|
| Gdzie mogę określić koszty obciążenia? | Koszty obciążenia określ w polu Vehicle.LoadLimit. |
| Jak koszty obciążenia są dopasowywane do przesyłek? | Koszt obciążenia dotyczy przesyłek, których zapotrzebowanie na obciążenie typ odpowiada typowi limitu obciążenia pojazdu, np. masie lub objętości. Typy obciążenia to dowolne ciągi znaków, jak opisano w zapotrzebowania i limitów obciążenia. |
| Jak wyrażane są koszty obciążenia? | Koszty obciążenia są wyrażane w kategoriach odległości lub
czasu trwania. Użyj cost_per_kilometer, aby określić koszty w kategoriach odległości, oraz cost_per_traveled_hour, aby określić koszty w kategoriach czasu trwania.
|
| Kiedy stosowane są koszty obciążenia? | Obciążenie pojazdu jest porównywane z wartością load_threshold kosztu obciążenia. Jeśli określono cost_per_unit_above_threshold, koszt jest dodawany proporcjonalnie do obciążenia pojazdu powyżej wartości load_threshold za pomocą formuły max(0, load - load_threshold). Jeśli
cost_per_unit_below_threshold jest określony, koszt jest dodawany
proporcjonalnie do obciążenia pojazdu poniżej
wartości load_threshold, za pomocą formuły
min(load, load_threshold).
|
| Jakie są wartości domyślne parametrów kosztów obciążenia? | load_threshold, cost_per_unit_above_threshold i
cost_per_unit_below_threshold są domyślnie równe zero.
|
| W jakich jednostkach wyrażane są koszty obciążenia? | Koszty obciążenia są wyrażane w tych samych jednostkach bezwymiarowych co wszystkie inne
parametry kosztów, np. global_duration_cost_per_hour lub
Shipment.penalty_cost.
|
| Gdzie znajdę koszty obciążenia w odpowiedzi? | Poniesione koszty obciążenia są widoczne we właściwościach metrics i
route_metrics wiadomości odpowiedzi. Na przykład poniesiony cost_per_kilometer będzie widoczny jako model.vehicles.load_limits.cost_per_kilometer.
|
Szczegółowe wyjaśnienie kosztów obciążenia znajdziesz w dokumentacji (REST, gRPC).
Przykład: wysyłanie żądania OptimizeTours
Żądania 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 masz skonfigurowane domyślne uwierzytelnianie aplikacji zgodnie z opisem w sekcji Korzystanie z OAuth.
Ustaw PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu w chmurze.
To polecenie wysyła żądanie
OptimizeToursdo interfejsu Route Optimization API i synchronicznie odbiera odpowiedź.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 żądania otrzymasz wiadomość z odpowiedzią.