Wysyła OptimizeToursRequest zawierający ShipmentModel i zwraca OptimizeToursResponse zawierający ShipmentRoute, czyli zestaw tras, które mają pokonać pojazdy, aby zminimalizować ogólny koszt.
Model ShipmentModel składa się głównie z Shipment, które należy wykonać, i Vehicle, które mogą służyć do transportu Shipment. ShipmentRoute przypisuje Shipment do Vehicle. Mówiąc dokładniej, przypisują one do każdego pojazdu serię obiektów Visit, gdzie Visit odpowiada obiektowi VisitRequest, który jest odbiorem lub dostawą dla obiektu Shipment.
Celem jest 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. Docelowy projekt lub lokalizacja, w której ma zostać wykonane wywołanie. Format:
Regionalne wartości |
Treść żądania
Treść żądania zawiera dane o następującej strukturze:
| Zapis JSON |
|---|
{ "timeout": string, "model": { object ( |
| Pola | |
|---|---|
timeout |
Jeśli ten limit czasu jest ustawiony, serwer zwraca odpowiedź przed upływem limitu czasu lub przed upływem 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. |
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, które jest podobne do poprzedniego. Model jest ograniczony, gdy tworzone jest pierwsze rozwiązanie. Wszystkie przesyłki, które nie zostały zrealizowane na trasie, są domyślnie pomijane w pierwszym rozwiązaniu, ale mogą zostać zrealizowane 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 zostanie zwrócony błąd weryfikacji, ale może zostać zwrócony błąd wskazujący na niewykonalność. |
injectedSolutionConstraint |
Ogranicz algorytm optymalizacji, aby znaleźć ostateczne rozwiązanie podobne do poprzedniego. Można to wykorzystać na przykład do zablokowania części tras, które zostały już ukończone lub które mają zostać ukończone, ale nie mogą być modyfikowane. Jeśli wstrzyknięte rozwiązanie jest niewykonalne, niekoniecznie zostanie zwrócony błąd weryfikacji, ale może zostać zwrócony błąd wskazujący na niewykonalność. |
refreshDetailsRoutes[] |
Jeśli pole nie jest puste, podane trasy zostaną odświeżone bez modyfikowania ich podstawowej sekwencji wizyt lub czasów podróży: zostaną zaktualizowane tylko inne szczegóły. Nie rozwiązuje to problemu z modelem. Od listopada 2020 r. ta funkcja wypełnia tylko linie łamane niepustych tras i wymaga, aby parametr Pola Tego pola nie można używać razem z polem
|
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 maksymalnie raz:
Jeśli Usunięcie wizyt na trasie lub całych tras z wstrzykniętego rozwiązania może mieć wpływ na domniemane ograniczenia, co może prowadzić do zmiany rozwiązania, błędów weryfikacji lub niemożliwości realizacji. UWAGA: wywołujący musi upewnić się, że każdy element |
considerRoadTraffic |
Uwzględnij szacunkowe natężenie ruchu podczas obliczania pól |
populatePolylines |
Jeśli ma wartość Prawda, linie łamane będą wypełniane w odpowiedziach |
populateTransitionPolylines |
Jeśli ma wartość prawda, linie łamane i tokeny tras będą wypełniane 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 długotrwałe żądania wiążą się ze znacznie większym (ale nadal niewielkim) ryzykiem przerwania. |
useGeodesicDistances |
Jeśli ma wartość „true”, odległości będą obliczane przy użyciu odległości geodezyjnych zamiast odległości z Map Google, a czasy podróży będą obliczane przy użyciu odległości geodezyjnych z prędkością określoną przez parametr |
label |
Etykieta, która może służyć do identyfikacji tego żądania, zgłaszana w |
geodesicMetersPerSecond |
Gdy parametr |
maxValidationErrors |
Skraca 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ń uprawnień w zasobie parent:
routeoptimization.locations.use
Więcej informacji znajdziesz w dokumentacji uprawnień.