Wysyła OptimizeToursRequest zawierający ShipmentModel i zwraca OptimizeToursResponse zawierający ShipmentRoute, czyli zestaw tras, które mają być wykonane przez pojazdy, aby zminimalizować ogólny koszt.
ShipmentModel model składa się głównie z Shipment, które należy wykonać, oraz Vehicle, które można wykorzystać do transportu Shipment. ShipmentRoute przypisuje Shipment do Vehicle. Przypisują one do każdego pojazdu serię Visit, gdzie Visit odpowiada VisitRequest, czyli odbiorowi lub dostawie dla Shipment.
Chodzi o przypisanie ShipmentRoute do Vehicle, które minimalizuje łączny koszt, przy czym koszt ma wiele komponentów zdefiniowanych w ShipmentModel.
Żądanie HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
Adres URL używa składni transkodowania gRPC.
Parametry ścieżki
| Parametry | |
|---|---|
parent |
Wymagane. Wybierz projekt lub lokalizację, do której chcesz zadzwonić. Format:
Jeśli nie podasz lokalizacji, region zostanie wybrany automatycznie. |
Treść żądania
Treść żądania zawiera dane o następującej strukturze:
| Zapis JSON |
|---|
{ "timeout": string, "model": { object ( |
| Pola | |
|---|---|
timeout |
Jeśli ten czas oczekiwania jest ustawiony, serwer zwraca odpowiedź przed upływem czasu oczekiwania lub przed osiągnięciem terminu serwera dla żądań synchronicznych, w zależności od tego, co nastąpi wcześniej. W przypadku żądań asynchronicznych serwer wygeneruje rozwiązanie (jeśli to możliwe) przed upływem limitu czasu. Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „ |
model |
Model dostawy do rozwiązania. |
solvingMode |
Domyślny tryb rozwiązywania to |
searchMode |
Tryb wyszukiwania użyty do rozwiązania żądania. |
injectedFirstSolutionRoutes[] |
Pomóż algorytmowi optymalizacji znaleźć pierwsze rozwiązanie podobne do poprzedniego. Model jest ograniczany podczas tworzenia pierwszego rozwiązania. Wszystkie wysyłki, które nie zostały zrealizowane na trasie, są w pierwszym rozwiązaniu pomijane, ale mogą być realizowane w kolejnych rozwiązaniach. Rozwiązanie musi spełniać pewne podstawowe założenia dotyczące ważności:
Jeśli wstrzyknięte rozwiązanie jest niewykonalne, niekoniecznie zwracany jest błąd weryfikacji. Zamiast tego może zostać zwrócony błąd wskazujący na niewykonalność. |
injectedSolutionConstraint |
Ogranicz algorytm optymalizacji, aby znaleźć rozwiązanie końcowe podobne do poprzedniego. Może to być na przykład przydatne do zamrażania części tras, które zostały już ukończone lub mają zostać ukończone, ale nie mogą być modyfikowane. Jeśli wstrzyknięte rozwiązanie jest niewykonalne, niekoniecznie zwracany jest błąd weryfikacji. Zamiast tego może zostać zwrócony błąd wskazujący na niewykonalność. |
refreshDetailsRoutes[] |
Jeśli nie jest pusta, podane trasy zostaną odświeżone bez modyfikowania ich podstawowej sekwencji wizyt ani czasów podróży: zaktualizowane zostaną tylko inne szczegóły. Nie rozwiązuje to modelu. Od listopada 2020 r. wypełnia ona tylko linie łamane niepustych tras i wymaga, aby wartość Pola Tego pola nie można używać razem z polami Zasady |
interpretInjectedSolutionsUsingLabels |
Jeśli ma wartość prawda:
Ta interpretacja dotyczy pól Jeśli ma wartość true, etykiety w tych kategoriach mogą pojawiać się w swojej kategorii co najwyżej raz:
Jeśli Usunięcie wizyt na trasie lub całych tras z wstrzykniętego rozwiązania może wpłynąć na domniemane ograniczenia, co może spowodować zmianę rozwiązania, błędy weryfikacji lub niemożliwość jego zastosowania. UWAGA: dzwoniący musi zapewnić, że każdy |
considerRoadTraffic |
W obliczeniach pól |
populatePolylines |
Jeśli ma wartość true, w odpowiedziach |
populateTransitionPolylines |
Jeśli ma wartość true, w odpowiedzi |
allowLargeDeadlineDespiteInterruptionRisk |
Jeśli ta opcja jest ustawiona, żądanie może mieć termin (patrz https://grpc.io/blog/deadlines) wynoszący maksymalnie 60 minut. W przeciwnym razie maksymalny termin to tylko 30 minut. Pamiętaj, że w przypadku długotrwałych żądań ryzyko przerwania jest znacznie większe (choć nadal niewielkie). |
useGeodesicDistances |
Jeśli wartość to „prawda”, odległości podróży będą obliczane na podstawie odległości geodezyjnych zamiast odległości w Mapach Google, a czasy podróży będą obliczane na podstawie odległości geodezyjnych z prędkością określoną przez |
label |
Etykieta, która może służyć do identyfikowania tego żądania i jest zwracana w parametrze |
geodesicMetersPerSecond |
Jeśli wartość |
maxValidationErrors |
Obcina liczbę zwracanych błędów weryfikacji. Te błędy są zwykle dołączane do ładunku błędu INVALID_ARGUMENT jako szczegóły błędu BadRequest (https://cloud.google.com/apis/design/errors#error_details), chyba że solvingMode=VALIDATE_ONLY: patrz pole |
Treść odpowiedzi
W przypadku powodzenia treść odpowiedzi obejmuje wystąpienie elementu OptimizeToursResponse.
Zakresy autoryzacji
Wymaga następującego zakresu OAuth:
https://www.googleapis.com/auth/cloud-platform
Uprawnienia
Wymaga tych uprawnień IAM w zasobie parent:
routeoptimization.locations.use
Więcej informacji znajdziesz w dokumentacji IAM.