Wysyła OptimizeToursRequest
zawierający ShipmentModel
i zwraca OptimizeToursResponse
zawierający ShipmentRoute
, czyli zestaw tras, które mają być wykonane przez pojazdy w taki sposób, aby zminimalizować łączny koszt.
Model ShipmentModel
składa się głównie z Shipment
zasobów, które mają zostać wykonane, oraz Vehicle
elementów, które można wykorzystać do transportu Shipment
. Elementy typu ShipmentRoute
przypiszą elementy Shipment
do elementów Vehicle
. Dokładniej rzecz ujmując, do każdego pojazdu przypisywane są ciągi Visit
, gdzie Visit
odpowiada elementowi VisitRequest
oznaczającemu odbiór lub dostawę w przypadku Shipment
.
Celem jest przypisanie ShipmentRoute
do Vehicle
, które minimalizuje łączny koszt, gdzie koszt ma wiele komponentów zdefiniowanych w ShipmentModel
.
Żądanie HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
Adres URL używa składni transkodowania gRPC.
Parametry ścieżki
Parametry | |
---|---|
parent |
Wymagane. Wybierz projekt lub lokalizację, do których chcesz zadzwonić. Format: * Jeśli nie określisz 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łynięciem limitu czasu lub upłynięciem terminu 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 składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
model |
Model dostawy do rozwiązania. |
solvingMode |
Domyślny tryb rozwiązywania to |
searchMode |
Tryb wyszukiwania użyty do rozwiązania żądania. |
injectedFirstSolutionRoutes[] |
Pomaga algorytmowi optymalizacji w znalezieniu pierwszego rozwiązania, które jest podobne do poprzedniego. Podczas tworzenia pierwszego rozwiązania model jest ograniczony. W pierwszym rozwiązaniu wszystkie przesyłki, które nie zostały zrealizowane na trasie, są domyślnie pomijane, ale mogą być realizowane w kolejnych rozwiązaniach. Rozwiązanie musi spełniać podstawowe założenia dotyczące ważności:
Jeśli wstrzyknięte rozwiązanie nie jest możliwe, błąd weryfikacji nie musi być zwracany i zamiast niego może pojawić się błąd wskazujący na niewykonalność. |
injectedSolutionConstraint |
Ogranicz algorytm optymalizacji, aby znaleźć ostateczne rozwiązanie podobne do poprzedniego. Można go na przykład użyć do zamrożenia 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 nie jest możliwe, błąd weryfikacji nie musi być zwracany i zamiast niego może pojawić się błąd wskazujący na niewykonalność. |
refreshDetailsRoutes[] |
Jeśli pole nie jest puste, podane trasy zostaną odświeżone bez zmiany bazowej sekwencji wizyt czy czasów podróży. Zostaną zaktualizowane tylko inne szczegóły. Nie rozwiązuje to problemu. Od listopada 2020 r. ta opcja wypełnia tylko linie wielokątów na niepustych trasach i wymaga, aby parametr Pola Tego pola nie można używać razem z polami
|
interpretInjectedSolutionsUsingLabels |
Jeśli wartość to prawda:
Ta interpretacja dotyczy pól Jeśli wartość to prawda, etykiety z poniższych kategorii mogą pojawić się w danej kategorii co najwyżej raz:
Jeśli Usunięcie wizyt na trasie lub całych tras z wstrzykniętego rozwiązania może mieć wpływ na implikowane ograniczenia, co może spowodować zmianę rozwiązania, błędy walidacji lub niemożliwość jego wykonania. UWAGA: osoba dzwoniąca musi się upewnić, że każda wartość |
considerRoadTraffic |
Przy obliczaniu wartości pól |
populatePolylines |
Jeśli ma wartość prawda, linie łamane będą wypełniane w odpowiedzi |
populateTransitionPolylines |
Jeśli ma wartość Prawda, w odpowiedzi |
allowLargeDeadlineDespiteInterruptionRisk |
Jeśli ta opcja jest ustawiona, żądanie może mieć termin (patrz https://grpc.io/blog/deadlines) do 60 minut. W przeciwnym razie maksymalny termin to tylko 30 minut. Pamiętaj, że żądania długotrwałe wiążą się ze znacznie większym (ale i mniejszym) ryzykiem przerw w działaniu. |
useGeodesicDistances |
Jeśli to ustawienie ma wartość true, odległości przebytej zostaną obliczone na podstawie odległości geodezyjnych zamiast odległości w Mapach Google, a czas podróży zostanie obliczony na podstawie odległości geodezyjnej przy prędkości określonej przez parametr |
label |
Etykieta, która może służyć do identyfikowania tego żądania, zgłoszonego w formularzu |
geodesicMetersPerSecond |
Gdy |
maxValidationErrors |
Skraca liczbę zwróconych błędów weryfikacji. Błędy te są zwykle dołączone do ładunku błędu Błędn_AR jako szczegółowe informacje o błędzie BadRequest (https://cloud.google.com/apis/design/errors#error_details), chyba że przy użyciu funkcji abilitiesMode=VALIDATE_ONLY: zobacz 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 do zasobu parent
:
routeoptimization.locations.use
Więcej informacji znajdziesz w dokumentacji usługi IAM.