Złóż wniosek z kosztami załadunku, aby optymalizator wziął pod uwagę ładunek przewożony przez Twoje pojazdy pomiędzy wizytami. Poniesiony koszt zależy zarówno od ilości ShipmentRoute.VehicleLoad, jak i od 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 ładowania
Oto częściowy przykład żądania z kosztem wczytywania. W tym przykładzie pojedynczy pojazd może przewozić maksymalnie 1000 kg weightKg ładunku, co generuje 1 jednostkę kosztu na kilometr, gdy przewożony weightKg ładunek przekracza 500 kg.
{ "model": { "vehicles": [{ "loadLimits": { "weightKg": { "maxLoad": "1000", "costPerKilometer": { "loadThreshold": "500", "costPerUnitAboveThreshold": 1 } } } }] } }
Obliczenie kosztu wczytywania w tym przykładzie wygląda tak:
cost = max(carried load - load threshold, 0) * distance * cost per unit above threshold
Jeśli pojazd przewozi ładunek o wadze weightKg na odległość 10 kilometrów, obliczenia będą wyglądać tak:
(600 - 500) * 10 * 1 = 1000 cost units
Koszty załadunku mogą służyć 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 wczytywania
Oto kolejny przykład kosztów załadunku, które nakładają koszt za 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 wczytywania 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 wartości weightLbs 950 przez 5 godzin, obliczenia będą wyglądać tak:
max(950 - 900, 0) * 5 * 10 + min(950, 900) * 5 * 1 = 7000
W tym przykładzie wartość load_threshold dla kosztu wczytania weightLbs jest zbliżona do max_load. cost_per_unit_above_threshold stosuje wysoki koszt za godzinę podróży, gdy pojazd przewozi szczególnie ciężki ładunek, co powoduje karanie tras, które mogą zwiększać zużycie pojazdu lub zużywać nadmierne ilości paliwa.
cost_per_unit_below_threshold dodaje koszt na jednostkę wagi przewożonej przez pojazd do progu, co odzwierciedla zwiększone zużycie paliwa, gdy pojazd przewozi większy ładunek.
Najczęstsze pytania
Oto odpowiedzi na najczęstsze pytania dotyczące kosztów ładowania:
| Pytanie | Odpowiedź |
|---|---|
| Gdzie mogę określić koszty ładowania? | Określ koszty ładowania w Vehicle.LoadLimit. |
| Jak koszty załadunku są dopasowywane do przesyłek? | Koszt załadunku dotyczy przesyłek, których rodzaj zapotrzebowania na załadunek jest zgodny z rodzajem limitu załadunku pojazdu, np. wagą lub objętością. Typy obciążeń to dowolne ciągi znaków, jak opisano w sekcji Wymagania i limity dotyczące obciążenia. |
| Jak wyrażane są koszty ładowania? | Koszty ładowania są wyrażane w odległości lub czasie przejścia. Użyj cost_per_kilometer, aby określić koszty w odniesieniu do odległości, i cost_per_traveled_hour, aby określić koszty w odniesieniu do czasu trwania.
|
| Kiedy są naliczane koszty ładowania? | Obciążenie pojazdu jest porównywane z load_threshold kosztu obciążenia. Jeśli określono cost_per_unit_above_threshold, koszt jest dodawany proporcjonalnie do obciążenia pojazdu powyżej load_threshold zgodnie ze wzorem max(0, load - load_threshold). Jeśli określono cost_per_unit_below_threshold, koszt jest dodawany proporcjonalnie do obciążenia pojazdu poniżej load_threshold, zgodnie ze wzorem min(load, load_threshold).
|
| Jakie są domyślne wartości parametrów kosztu załadunku? | load_threshold, cost_per_unit_above_threshold i cost_per_unit_below_threshold mają domyślnie wartość zero.
|
| W jakich jednostkach wyrażone są koszty wczytywania? | Koszty ładowania 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 w odpowiedzi znajdę koszty ładowania? | Poniesione koszty obciążenia pojawiają się we właściwościach metrics i route_metrics w wiadomościach z odpowiedzią. Na przykład poniesione cost_per_kilometer wyświetli się jako model.vehicles.load_limits.cost_per_kilometer.
|
Szczegółowe wyjaśnienie kosztów wczytywania znajdziesz w dokumentacji (REST, gRPC).
Przykład: wysyłanie OptimizeToursprośby
Żądania OptimizeTours można też wysyłać za pomocą REST lub gRPC.
Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:
- Upewnij się, że masz skonfigurowane domyślne dane logowania aplikacji zgodnie z opisem w artykule Korzystanie z OAuth.
Ustaw PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.
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
Gdy prośba zostanie zrealizowana, otrzymasz wiadomość z odpowiedzią.