Wysyłaj żądania z kosztami załadunku, aby optymalizator uwzględniał ładunek przewożony przez pojazdy mię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
).
Minimalne przykładowe żądanie z kosztami wczytywania
Oto częściowy przykład żądania z kosztem wczytywania. W tym przykładzie pojedynczy pojazd może przewozić maksymalnie 1000 kg ładunku weightKg
, co wiąże się z 1 jednostką kosztu na kilometr, gdy przewożony ładunek weightKg
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 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 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 weightLbs
kosztu wczytywania 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.
Wartość 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 najczęstsze pytania dotyczące kosztów ładowania:
Pytanie | Odpowiedź |
---|---|
Gdzie mogę określić koszty ładowania? | Określ koszty załadunku 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. waga lub objętość. Typy obciążeń to dowolne ciągi znaków, jak opisano w sekcji Wymagania i limity dotyczące obciążeń. |
Jak wyrażane są koszty załadunku? | Koszty ładowania są wyrażane w odległości lub czasie przejścia. Użyj symbolu cost_per_kilometer , aby określić koszty w odniesieniu do odległości, a symbolu 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 wczytywania? | 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 wczytywania 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 wczytywania pojawiają się we właściwościach metrics i route_metrics w wiadomościach z odpowiedzią. Na przykład poniesione cost_per_kilometer wyświetlą się jako model.vehicles.load_limits.cost_per_kilometer .
|
Szczegółowe wyjaśnienie kosztów ładowania znajdziesz w dokumentacji referencyjnej (REST, gRPC).
Przykład: wysyłanie OptimizeTours
proś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
OptimizeTours
do 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ą.