Wysyła OptimizeToursRequest
zawierający ShipmentModel
i zwraca OptimizeToursResponse
zawierający ShipmentRoute
, czyli zestaw tras, które mają wykonać pojazdy minimalizujące całkowity koszt.
Model ShipmentModel
składa się głównie z Shipment
, które trzeba wykonać, oraz z Vehicle
, które można wykorzystać do transportu Shipment
. Elementy typu ShipmentRoute
przypiszą elementy Shipment
do elementów Vehicle
. W szczególności przypisują do każdego pojazdu serię Visit
, gdzie Visit
odpowiada VisitRequest
, czyli odbiór lub dostawę dla Shipment
.
Celem jest przypisanie zasobów typu ShipmentRoute
do komponentów typu Vehicle
, co minimalizuje całkowity koszt, gdy koszt ma wiele komponentów zdefiniowanych w tabeli 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ź, zanim upłynie czas oczekiwania lub termin 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 będzie to możliwe) przed upływem czasu oczekiwania. Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku i kończący się „ |
model |
Model dostawy do rozwiązania. |
solvingMode |
Domyślnie ustawiony jest tryb zadań |
searchMode |
Tryb wyszukiwania użyty do rozwiązania żądania. |
injectedFirstSolutionRoutes[] |
Pomaganie algorytmu optymalizacji w znalezieniu pierwszego rozwiązania podobnego do poprzedniego. Model jest ograniczony podczas tworzenia pierwszego rozwiązania. 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ć pewne podstawowe założenia dotyczące poprawności:
Jeśli wstrzyknięty kod nie jest wykonalny, niekoniecznie zwracany jest błąd weryfikacji. Zamiast tego może zostać zwrócony błąd wskazujący na brak możliwości wykonania. |
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 nie jest pusty, dane trasy zostaną odświeżone bez zmiany ich sekwencji wizyt lub czasu podróży: zostaną zaktualizowane tylko inne szczegóły. Nie rozwiązuje to problemów z modelem. Od listopada 2020 r. wypełnia to tylko linie wielokątów na niepustych trasach i wymaga, aby parametr Pola Nie można używać tego pola razem z polem
|
interpretInjectedSolutionsUsingLabels |
Jeśli to prawda:
Ta interpretacja ma zastosowanie do pól Jeśli ma wartość true, etykiety w tych kategoriach mogą się pojawiać maksymalnie raz w danej kategorii:
Jeśli wartość Usunięcie wizyt na trasie lub całych tras z wstrzykiwanego rozwiązania może mieć wpływ na domniemane ograniczenia, co może prowadzić do zmiany rozwiązania, błędów weryfikacji lub niewykonalności. UWAGA: rozmówca musi upewnić się, że każde |
considerRoadTraffic |
Warto uwzględnić prognozę ruchu podczas obliczania pól |
populatePolylines |
Jeśli ma wartość Prawda, w odpowiedzi |
populateTransitionPolylines |
Jeśli ma wartość true (prawda), linie łamane i tokeny trasy zostaną wypełnione w odpowiedzi |
allowLargeDeadlineDespiteInterruptionRisk |
Jeśli ta wartość jest ustawiona, termin żądania (patrz https://grpc.io/blog/deadlines) może wynosić maksymalnie 60 minut. W przeciwnym razie maksymalny termin to tylko 30 minut. Pamiętaj, że w przypadku długotrwałych żądań występuje znacznie większe (choć nadal niewielkie) ryzyko przerwania. |
useGeodesicDistances |
Jeśli wartość to prawda, odległości będą obliczane na podstawie odległości geodezyjnych zamiast z Map 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, zgłoszonego w formularzu |
geodesicMetersPerSecond |
Jeśli |
maxValidationErrors |
Obcina zwracaną liczbę 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 parametr 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 do zasobu parent
:
routeoptimization.locations.use
Więcej informacji znajdziesz w dokumentacji uprawnień.