Indeks
RouteOptimization
(interfejs)AggregatedMetrics
(komunikat)BatchOptimizeToursMetadata
(komunikat)BatchOptimizeToursRequest
(komunikat)BatchOptimizeToursRequest.AsyncModelConfig
(komunikat)BatchOptimizeToursResponse
(komunikat)BreakRule
(komunikat)BreakRule.BreakRequest
(komunikat)BreakRule.FrequencyConstraint
(komunikat)DataFormat
(wyliczenie)DistanceLimit
(komunikat)GcsDestination
(komunikat)GcsSource
(komunikat)InjectedSolutionConstraint
(komunikat)InjectedSolutionConstraint.ConstraintRelaxation
(komunikat)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(komunikat)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(wyliczenie)InputConfig
(komunikat)Location
(komunikat)OptimizeToursRequest
(komunikat)OptimizeToursRequest.SearchMode
(wyliczenie)OptimizeToursRequest.SolvingMode
(wyliczenie)OptimizeToursResponse
(komunikat)OptimizeToursResponse.Metrics
(komunikat)OptimizeToursValidationError
(komunikat)OptimizeToursValidationError.FieldReference
(komunikat)OutputConfig
(komunikat)RouteModifiers
(komunikat)Shipment
(komunikat)Shipment.Load
(komunikat)Shipment.VisitRequest
(komunikat)ShipmentModel
(komunikat)ShipmentModel.DurationDistanceMatrix
(komunikat)ShipmentModel.DurationDistanceMatrix.Row
(komunikat)ShipmentModel.PrecedenceRule
(komunikat)ShipmentRoute
(komunikat)ShipmentRoute.Break
(komunikat)ShipmentRoute.EncodedPolyline
(komunikat)ShipmentRoute.Transition
(komunikat)ShipmentRoute.VehicleLoad
(komunikat)ShipmentRoute.Visit
(komunikat)ShipmentTypeIncompatibility
(komunikat)ShipmentTypeIncompatibility.IncompatibilityMode
(wyliczenie)ShipmentTypeRequirement
(komunikat)ShipmentTypeRequirement.RequirementMode
(wyliczenie)SkippedShipment
(komunikat)SkippedShipment.Reason
(komunikat)SkippedShipment.Reason.Code
(wyliczenie)TimeWindow
(komunikat)TransitionAttributes
(komunikat)Vehicle
(komunikat)Vehicle.DurationLimit
(komunikat)Vehicle.LoadLimit
(komunikat)Vehicle.LoadLimit.Interval
(komunikat)Vehicle.TravelMode
(wyliczenie)Vehicle.UnloadingPolicy
(wyliczenie)Waypoint
(komunikat)
RouteOptimization
Usługa optymalizacji trasy pojazdu.
Ważność niektórych typów pól:
google.protobuf.Timestamp
- Czas jest podawany w czasie uniksowym: sekundy od 1970-01-01T00:00:00+00:00.
- sekundy musi zawierać się w przedziale [0, 253402300799], czyli w przedziale [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- Wartość nanos musi być nieskonfigurowana lub ustawiona na 0.
google.protobuf.Duration
- sekundy musi zawierać się w przedziale [0, 253402300799], czyli w przedziale [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00].
- Wartość nanos musi być nieskonfigurowana lub ustawiona na 0.
google.type.LatLng
- szerokość geograficzna musi się mieścić w zakresie [-90,0, 90,0].
- Długość geograficzna musi mieścić się w przedziale [-180,0, 180,0].
- co najmniej jedna z długości i szerokości geograficznej musi być różna od zera.
BatchOptimizeTours |
---|
Optymalizuje wycieczki samochodowe dla co najmniej 1 wiadomości w Jest to długo trwająca operacja (LRO). Dane wejściowe do optymalizacji (wiadomości: Użytkownik może wysłać zapytanie Jeśli pole Jeśli pole
|
OptimizeTours |
---|
Wysyła Model Celem jest przydzielenie zasobów typu
|
AggregatedMetrics
Dane zbiorcze dotyczące ShipmentRoute
(odpowiednio OptimizeToursResponse
dla wszystkich elementów Transition
lub Visit
(odpowiednio dla wszystkich elementów ShipmentRoute
).
Pola | |
---|---|
performed_shipment_count |
Liczba zrealizowanych przesyłek. Pamiętaj, że para „odbiór” i „dostawa” jest liczona tylko raz. |
travel_duration |
Całkowity czas podróży dla danej trasy lub rozwiązania. |
wait_duration |
Całkowity czas oczekiwania dla trasy lub rozwiązania. |
delay_duration |
Łączny czas opóźnienia na trasie lub w rozwiązaniu. |
break_duration |
Całkowity czas trwania przerwy dla trasy lub rozwiązania. |
visit_duration |
Łączny czas trwania wizyty dla trasy lub rozwiązania. |
total_duration |
Łączny czas trwania powinien być równy sumie wszystkich okresów powyżej. W przypadku tras odpowiada też:
|
travel_distance_meters |
Całkowita odległość pokonywana w przypadku danej trasy lub rozwiązania. |
max_loads |
Maksymalne obciążenie osiągnięte na całej trasie (odpowiednio: w rozwiązaniu) dla każdej ilości na tej trasie (odpowiednio: w rozwiązaniu) obliczone jako maksimum wszystkich |
BatchOptimizeToursMetadata
Ten typ nie zawiera pól.
Metadane operacji dotyczące BatchOptimizeToursRequest
wywołań.
BatchOptimizeToursRequest
Żądanie zbiorczej optymalizacji wycieczek jako operacji asynchronicznej. Każdy plik wejściowy powinien zawierać 1 element OptimizeToursRequest
, a każdy plik wyjściowy – 1 element OptimizeToursResponse
. Żądanie zawiera informacje potrzebne do odczytu i zapisu oraz analizy plików. Wszystkie pliki wejściowe i wyjściowe powinny należeć do tego samego projektu.
Pola | |
---|---|
parent |
Wymagane. Wybierz docelowy projekt i lokalizację, aby zadzwonić. Format: * Jeśli nie podasz lokalizacji, region zostanie wybrany automatycznie. |
model_configs[] |
Wymagane. Informacje wejściowe/wyjściowe dotyczące każdego modelu zakupu, takie jak ścieżki plików i formaty danych. |
AsyncModelConfig
Informacje dotyczące asynchronicznego rozwiązania jednego modelu optymalizacji.
Pola | |
---|---|
display_name |
Opcjonalnie: Zdefiniowana przez użytkownika nazwa modelu, która może być używana przez użytkowników jako alias do śledzenia modeli. |
input_config |
Wymagane. Informacje o modelu wejściowym. |
output_config |
Wymagane. Wymagane informacje o lokalizacji wyjściowej. |
BatchOptimizeToursResponse
Ten typ nie zawiera pól.
Odpowiedź na: BatchOptimizeToursRequest
. Jest on zwracany w ramach długo trwającej operacji po jej zakończeniu.
BreakRule
Reguły generowania przerw na przejazd pojazdem (np. przerwy na lunch). Przerwa to ciągły okres, w którym pojazd pozostaje nieaktywny w swojej aktualnej pozycji i nie może wykonać żadnej wizyty. Przerwa może wystąpić:
- podczas przemieszczania się między 2 wizytami (co obejmuje czas tuż przed wizytą lub tuż po niej, ale nie w jej trakcie), w którym przypadku wydłuża się czas przemieszczania się między wizytami,
- lub przed uruchomieniem pojazdu (pojazd może nie uruchomić się w trakcie przerwy) – w takim przypadku nie ma to wpływu na czas uruchomienia pojazdu.
- lub po zakończeniu pojazdu (edytuj, z godziną zakończenia pojazdu).
Pola | |
---|---|
break_requests[] |
Sekwencja przerw. Zobacz wiadomość |
frequency_constraints[] |
Może obowiązywać kilka zasad ( |
BreakRequest
Sekwencja przerw (tj. ich liczba i kolejność) musi być wcześniej znana. Powtarzające się elementy BreakRequest
definiują tę sekwencję w kolejności, w jakiej muszą wystąpić. Przedziały czasu (earliest_start_time
/ latest_start_time
) mogą się pokrywać, ale muszą być zgodne z zamówieniem (jest to zaznaczone).
Pola | |
---|---|
earliest_start_time |
Wymagane. Dolna granica (włącznie) na początku przerwy. |
latest_start_time |
Wymagane. Górna granica (włącznie) na początku przerwy. |
min_duration |
Wymagane. Minimalny czas trwania przerwy. Musi być liczbą dodatnią. |
FrequencyConstraint
Można jeszcze bardziej ograniczyć częstotliwość i czas trwania przerw określonych powyżej przez wymuszenie minimalnej częstotliwości, na przykład „Co 12 godzin musi być przerwa co najmniej 1 godzinę”. Zakładając, że można to zinterpretować w ten sposób: „W każdym przesuwającym się przedziale czasu wynoszącym 12 godzin musi istnieć co najmniej jedna przerwa o długości co najmniej 1 godziny”, przykłada prezentuje się tak: FrequencyConstraint
:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Czas i czas trwania przerw w rozwiązaniach uwzględniają wszystkie takie ograniczenia, a także przedziały czasowe i minimalne czasy trwania określone w zasadzie BreakRequest
.
FrequencyConstraint
może w praktyce mieć zastosowanie do przerw, które nie następują po sobie. Na przykład w ramach harmonogramu „1 godzina co 12 godzin”:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
Pola | |
---|---|
min_break_duration |
Wymagane. Minimalny czas trwania przerwy dla tego ograniczenia. Nieujemna. Zobacz opis |
max_inter_break_duration |
Wymagane. Maksymalny dozwolony przedział czasu na trasie, który nie obejmuje co najmniej częściowego przerwania |
DataFormat
Formaty danych dla plików wejściowych i wyjściowych.
Wartości w polu enum | |
---|---|
DATA_FORMAT_UNSPECIFIED |
Nieprawidłowa wartość. Format nie może być UNSPECIFIED. |
JSON |
w formacie JavaScript Object Notation. |
PROTO_TEXT |
Format tekstowy buforów protokołu. Więcej informacji: https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Ograniczenie określające maksymalną odległość, jaką można przebyć. Może być twarda lub miękka.
Jeśli zdefiniowany jest limit tymczasowy, muszą być zdefiniowane zarówno soft_max_meters
, jak i cost_per_kilometer_above_soft_max
, i nie mogą być ujemne.
Pola | |
---|---|
max_meters |
Stały limit ogranicza odległość do maksymalnej wartości max_meters. Limit nie może być ujemny. |
soft_max_meters |
Limit częściowy nie egzekwuje maksymalnego limitu odległości, ale jego naruszenie powoduje naliczenie kosztów, które wliczają się do innych kosztów określonych w modelu z tą samą jednostką. Jeśli zdefiniowana wartość parametru soft_max_meters jest mniejsza niż wartość max_meters, musi być ona nieujemna. |
cost_per_kilometer_below_soft_max |
Poniesiony koszt za kilometr, rosnący do
Ten koszt nie jest obsługiwany w: |
cost_per_kilometer_above_soft_max |
Koszt za kilometr naliczany, jeśli odległość przekracza limit
Koszt nie może być ujemny. |
GcsDestination
Lokalizacja w Google Cloud Storage, w której będą zapisywane pliki wyjściowe.
Pola | |
---|---|
uri |
Wymagane. Identyfikator URI obiektu w Google Cloud Storage. |
GcsSource
Lokalizacja w Google Cloud Storage, z której zostanie odczytany plik wejściowy.
Pola | |
---|---|
uri |
Wymagane. Identyfikator URI obiektu Google Cloud Storage w formacie |
InjectedSolutionConstraint
Rozwiązanie podane w żądaniu, w tym informacje o tym, które wizyty należy ograniczyć i jak należy to robić.
Pola | |
---|---|
routes[] |
Trasy roztworu do wstrzykiwania. Niektóre trasy mogą zostać pominięte w pierwotnym rozwiązaniu. Trasy i pominięte przesyłki muszą spełniać podstawowe założenia dotyczące ważności wymienione dla: |
skipped_shipments[] |
Pominięto dostawy roztworu do wstrzykiwania. Niektóre z nich mogą zostać pominięte w pierwotnym rozwiązaniu. Zobacz pole |
constraint_relaxations[] |
W przypadku zerowej lub większej liczby grup pojazdów określa, kiedy i jak bardzo złagodzą ograniczenia. Jeśli to pole jest puste, wszystkie niepuste trasy pojazdów są w pełni ograniczone. |
ConstraintRelaxation
W przypadku grupy pojazdów określa progi i poziomy ograniczeń dotyczących wizyt. Przesyłki wymienione w polu skipped_shipment
nie można pominąć. tzn. nie można ich wykonać.
Pola | |
---|---|
relaxations[] |
Wszystkie złagodzenia ograniczeń dotyczących wizyt, które będą miały zastosowanie do wizyt na trasach z pojazdami w: |
vehicle_indices[] |
Określa indeksy pojazdów, do których ma zastosowanie ograniczenie wizyty Indeks pojazdu jest mapowany tak samo jak |
Relaks
Jeśli relaxations
jest pusty, czas rozpoczęcia i kolejność wszystkich wizyt na relaxations
są całkowicie ograniczone, a do tych tras nie można dodawać nowych wizyt. Poza tym godzina rozpoczęcia i zakończenia pojazdu w regionie routes
jest całkowicie ograniczona, chyba że pojazd jest pusty (np. nie ma wizyt, a wartość used_if_route_is_empty
w modelu ma wartość Fałsz).
relaxations(i).level
określa poziom złagodzenia ograniczeń zastosowany do wizyty nr j, która jest satysfakcjonująca:
route.visits(j).start_time >= relaxations(i).threshold_time
ORAZj + 1 >= relaxations(i).threshold_visit_count
I analogicznie, uruchomienie pojazdu jest ustawione na relaxations(i).level
, jeśli spełnione są następujące warunki:
vehicle_start_time >= relaxations(i).threshold_time
ORAZrelaxations(i).threshold_visit_count == 0
, a na końcu pojazdurelaxations(i).level
, jeśli spełnia te wymagania:vehicle_end_time >= relaxations(i).threshold_time
ORAZroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Aby zastosować poziom relaksacji, jeśli wizyta spełnia threshold_visit_count
LUB threshold_time
, dodaj 2 obiekty relaxations
z tymi samymi wartościami level
: jeden z ustawionym tylko parametrem threshold_visit_count
, a drugi z tylko threshold_time
. Jeśli wizyta spełnia warunki wielu relaxations
, stosowany jest poziom najbardziej zrelaksowany. W efekcie, gdy pojazd zaczyna się od zwiedzania trasy, aż do jego końca, poziom relaksacji staje się bardziej relaksujący: tj. poziom relaksacji nie maleje w miarę postępów trasy.
Czas i kolejność wizyt w trasach, które nie spełniają warunków progowych dotyczących dowolnego relaxations
, są całkowicie ograniczone i nie można wstawiać w tych sekwencjach żadnych wizyt. Ponadto, jeśli początek lub koniec pojazdu nie spełnia warunków relaksacji, czas jest ustalony, chyba że pojazd jest pusty.
Pola | |
---|---|
level |
Poziom zniesienia ograniczenia, który ma zastosowanie, gdy warunki na poziomie lub po poziomie |
threshold_time |
Czas, po którym lub po upływie tego czasu może zostać zastosowane złagodzenie |
threshold_visit_count |
Liczba wizyt, po których można zastosować Jeśli ma wartość |
Poziom
Wyraża różne poziomy złagodzeń ograniczeń, które są stosowane do wizyty i te, które nastąpią po spełnieniu warunków progowych.
Poniższe wyliczenie ułożone jest w kolejności rosnącej złagodzenia.
Wartości w polu enum | |
---|---|
LEVEL_UNSPECIFIED |
Domyślny poziom relaksacji: żadne ograniczenia nie są łagodzone, tj. wszystkie wizyty są w pełni ograniczone. Ta wartość nie może być bezpośrednio używana w elemencie |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Godziny rozpoczęcia i zakończenia wizyt w pojeździe zostaną skrócone, ale każda wizyta będzie powiązana z tym samym pojazdem i należy przestrzegać jej sekwencji: nie można wstawiać pomiędzy nimi ani przed nimi. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
To samo co RELAX_VISIT_TIMES_AFTER_THRESHOLD , ale z mniej restrykcyjną sekwencją wizyt: wizyty mogą być wykonywane tylko przez ten pojazd, ale mogą też zostać anulowane. |
RELAX_ALL_AFTER_THRESHOLD |
Tak samo jak w przypadku usługi RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , ale pojazd jest też w prostym stylu: wizyty są całkowicie bezpłatne po osiągnięciu progu lub później i mogą stać się nieskuteczne. |
InputConfig
Podaj dane wejściowe dla [BatchOptimizeTours][google.maps.routeOptimization.v1.RouteOptimizationService.BatchOptimizeTours].
Pola | |
---|---|
data_format |
Wymagane. Format danych wejściowych. |
Pole sumy source . Wymagane. source może być tylko jednym z tych elementów: |
|
gcs_source |
Lokalizacja w Google Cloud Storage. Musi to być pojedynczy obiekt (plik). |
Lokalizacja
Zawiera lokalizację (punkt geograficzny i opcjonalnie nagłówek).
Pola | |
---|---|
lat_lng |
Współrzędne geograficzne punktu pośredniego. |
heading |
Nagłówek kompasu powiązany z kierunkiem ruchu. Ta wartość służy do określenia strony drogi, z której ma nastąpić odbiór i zwrot. Wartości kierunku mogą wynosić od 0 do 360, gdzie 0 to kierunek na północ, 90 to kierunek na wschód itd. |
OptimizeToursRequest
Prośba o przekazanie danych do rozwiązywania problemu optymalizacji trasy, który definiuje model dostawy do rozwiązania, a także parametry optymalizacji.
Pola | |
---|---|
parent |
Wymagane. Wybierz docelowy projekt lub lokalizację, aby zadzwonić. Format: * Jeśli nie podasz lokalizacji, region zostanie wybrany automatycznie. |
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. |
model |
Model dostawy do rozwiązania. |
solving_mode |
Domyślny tryb rozwiązywania to |
search_mode |
Tryb wyszukiwania użyty do rozwiązania żądania. |
injected_first_solution_routes[] |
Pomaganie algorytmowi optymalizacji w znalezieniu pierwszego rozwiązania podobnego 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ę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. |
injected_solution_constraint |
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ę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. |
refresh_details_routes[] |
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. wypełnia to tylko wielokąty na niepustych trasach i wymaga, aby parametr Pola Tego pola nie można używać razem z polami
|
interpret_injected_solutions_using_labels |
Jeśli ma wartość prawda:
Ta interpretacja ma zastosowanie do pól Jeśli wartość to prawda, etykiety z tych kategorii mogą pojawić się w danej kategorii co najwyżej raz:
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 |
consider_road_traffic |
Warto uwzględnić prognozę ruchu podczas obliczania pól |
populate_polylines |
Jeśli ma wartość prawda, linie łamane będą wypełniane w odpowiedzi |
populate_transition_polylines |
Jeśli ma wartość Prawda, w odpowiedzi |
allow_large_deadline_despite_interruption_risk |
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 żądania długotrwałe wiążą się ze znacznie większym (ale i mniejszym) ryzykiem przerw w działaniu. |
use_geodesic_distances |
Jeśli to ustawienie ma wartość true, odległości przebycia zostaną obliczone na podstawie odległości geodezyjnych zamiast odległości w Mapach Google, a czasy przejazdu zostaną obliczone na podstawie odległości geodezyjnych przy prędkości określonej przez parametr |
label |
Etykieta, która pozwala zidentyfikować to żądanie. Zostanie ona zgłoszona w |
geodesic_meters_per_second |
Jeśli |
max_validation_errors |
Skraca liczbę zwróconych błędów weryfikacji. Błędy te są zwykle dołączone do ładunku błędu Błędn_AR jako szczegóły błędu BadRequest (https://cloud.google.com/apis/design/errors#error_details), chyba że troubleshooting_mode=VALIDATE_ONLY: zobacz pole |
SearchMode
Tryb określający działanie wyszukiwania, kompensujący czas oczekiwania z jakością rozwiązania. We wszystkich trybach egzekwowany jest globalny termin żądań.
Wartości w polu enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
Nieokreślony tryb wyszukiwania, odpowiednik funkcji RETURN_FAST . |
RETURN_FAST |
Zatrzymaj wyszukiwanie po znalezieniu pierwszego dobrego rozwiązania. |
CONSUME_ALL_AVAILABLE_TIME |
Poświęć cały dostępny czas na szukanie lepszych rozwiązań. |
SolvingMode
Określa sposób obsługi żądania przez rozwiązanie. Jeśli żądanie będzie nieprawidłowe, we wszystkich trybach oprócz VALIDATE_ONLY
, wystąpi błąd INVALID_REQUEST
. Informacje o ograniczaniu liczby zwracanych błędów znajdziesz w sekcji max_validation_errors
.
Wartości w polu enum | |
---|---|
DEFAULT_SOLVE |
Rozwiąż model. Ostrzeżenia mogą być wyświetlane w [OptimizeToursResponse.validation_errors][google.cloud.optymalizacja.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Sprawdza tylko model bez rozwiązania problemu: wypełnia jak najwięcej parametrów OptimizeToursResponse.validation_errors . |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Wypełnia tylko pola WAŻNE: zwracane są tylko te przesyłki, które zostały wykryte jako niemożliwe do zrealizowania podczas wstępnego przetwarzania. |
OptimizeToursResponse
Odpowiedź po rozwiązaniu problemu optymalizacji wycieczki obejmującego trasy, które należy pokonywać w przypadku każdego pojazdu, pominięte przesyłki i całkowity koszt rozwiązania.
Pola | |
---|---|
routes[] |
trasy wyznaczone dla każdego pojazdu; i-ta trasa odpowiada i-temu pojazdowi w modelu. |
request_label |
Kopia |
skipped_shipments[] |
Lista wszystkich pominiętych przesyłek. |
validation_errors[] |
Lista wszystkich błędów weryfikacji, które udało nam się wykryć niezależnie. Zobacz „WIELE BŁĘDÓW” wyjaśnienie dotyczące komunikatu |
metrics |
Dane o czasie trwania, odległości i użytkowaniu tego rozwiązania. |
Dane
Zbiorcze wskaźniki, zagregowane dla wszystkich tras.
Pola | |
---|---|
aggregated_route_metrics |
Dane zagregowane na trasach. Poszczególne dane to suma (lub maksimum, w przypadku obciążeń) we wszystkich polach |
skipped_mandatory_shipment_count |
Liczba pominiętych przesyłek obowiązkowych. |
used_vehicle_count |
Liczba wykorzystywanych pojazdów. Uwaga: jeśli trasa pojazdu jest pusta, a |
earliest_vehicle_start_time |
Najwcześniejszy czas rozpoczęcia używania pojazdu, obliczony jako minimalny dla wszystkich używanych pojazdów |
latest_vehicle_end_time |
Najpóźniejszy czas zakończenia dla używanego pojazdu, obliczony jako maksymalny dla wszystkich używanych pojazdów |
costs |
Koszt rozwiązania z podziałem na pola żądania związane z kosztami. Klucze to ścieżki proto, odnoszące się do wejścia OptimizeToursRequest, np. „model.shipments.pickups.cost”, a wartości to łączny koszt wygenerowany przez odpowiednie pole kosztu, zsumowany w całym rozwiązaniu. Inaczej mówiąc, koszt["model.shipments.pickups.cost"] to suma wszystkich kosztów odbioru w ramach danego rozwiązania. Wszystkie koszty zdefiniowane w modelu są uwzględnione w szczegółowym raporcie z wyjątkiem kosztów związanych z atrybutami przejścia, które od 2022 roku są raportowane tylko w postaci zbiorczej. |
total_cost |
Całkowity koszt rozwiązania. Suma wszystkich wartości na mapie kosztów. |
OptimizeToursValidationError
Opisuje błąd lub ostrzeżenie występujące podczas sprawdzania OptimizeToursRequest
.
Pola | |
---|---|
code |
Błąd weryfikacji jest definiowany przez parę ( Inne pola (poniżej) zawierają więcej informacji o błędzie. WIELE BŁĘDÓW: gdy występuje wiele błędów, proces weryfikacji próbuje wygenerować kilka z nich. Podobnie jak w przypadku kompilatorów, jest to proces niedoskonały. Niektóre błędy weryfikacji są „krytyczne”, co oznacza, że zatrzymują cały proces weryfikacji. Dotyczy to między innymi Stabilność: rozwiązania REFERENCYJNE: lista wszystkich par (kod, nazwa):
|
display_name |
Wyświetlana nazwa błędu. |
fields[] |
Kontekst błędu może mieć wartość 0, 1 (w większości przypadków) lub większą liczbę pól. Na przykład w odniesieniu do pojazdu nr 4 i pierwszej dostawy nr 2 można wykonać te czynności:
Pamiętaj jednak, że moc zbioru funkcji |
error_message |
Zrozumiały dla człowieka ciąg tekstowy opisujący błąd. Między STABILNOŚĆ: niestabilna: z czasem komunikat o błędzie powiązany z danym |
offending_values |
Może zawierać wartości pól. Nie zawsze jest to możliwe. Nie należy się na niego w żaden sposób opierać. Należy go używać tylko do ręcznego debugowania modelu. |
Odniesienie do pola
Określa kontekst błędu weryfikacji. FieldReference
zawsze odnosi się do danego pola w tym pliku i ma taką samą strukturę hierarchiczną. Możemy na przykład określić element nr 2 w atrybucie start_time_windows
pojazdu nr 5 za pomocą:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Pomijamy jednak elementy najwyższego poziomu, takie jak OptimizeToursRequest
czy ShipmentModel
, aby uniknąć zatłoczenia wiadomości.
Pola | |
---|---|
name |
Nazwa pola, np. „pojazdy”. |
sub_field |
W razie potrzeby zagnieżdżone pole podrzędne. |
Pole sumy
|
|
index |
Indeks pola, jeśli się powtarza. |
key |
klucz, jeśli pole jest mapą; |
OutputConfig
Określ miejsce docelowe dla wyników [BatchOptimizeTours][google.maps.routeOptimization.v1.RouteOptimizationService.BatchOptimizeTours].
Pola | |
---|---|
data_format |
Wymagane. Format danych wyjściowych. |
Pole sumy destination . Wymagane. destination może mieć tylko jedną z tych wartości: |
|
gcs_destination |
Lokalizacja w Google Cloud Storage, w której będą zapisywane dane wyjściowe. |
RouteModifiers
Obejmuje zestaw opcjonalnych warunków, które muszą zostać spełnione przy obliczaniu tras pojazdów. Jest to podobne do RouteModifiers
w interfejsie API Preferowane trasy na platformie Mapy Google (https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers).
Pola | |
---|---|
avoid_tolls |
Określa, czy w uzasadnionych przypadkach unikać dróg płatnych. Preferowane będą trasy, które nie zawierają dróg płatnych. Dotyczy to tylko pojazdów mechanicznych. |
avoid_highways |
Określa, czy w uzasadnionych przypadkach unikać autostrad. Priorytet będą miały trasy niezawierające autostrad. Dotyczy tylko pojazdów z silnikiem. |
avoid_ferries |
Określa, czy w uzasadnionych sytuacjach unikać przepraw promowych. Pierwszeństwo będą miały trasy, które nie będą obejmować podróży promami. Dotyczy tylko pojazdów z silnikiem. |
avoid_indoor |
Opcjonalnie: Określa, czy w uzasadnionych przypadkach unikać przechodzenia do wnętrz. Preferowane będą trasy niezawierające nawigacji wewnątrz budynków. Dotyczy tylko środka transportu |
Wysyłka
Dostawa pojedynczego produktu, od odbioru do jednej dostawy. Aby przesyłka została uznana za zrealizowaną, musi być dostarczona przez unikalne pojazdy, które odwiedzą najpierw jedno z miejsc odbioru (i odpowiednio zmniejszą liczbę wolnych miejsc), a następnie jedno z miejsc dostawy (i odpowiednio zwiększą liczbę wolnych miejsc).
Pola | |
---|---|
display_name |
Zdefiniowana przez użytkownika wyświetlana nazwa przesyłki. Może składać się z maksymalnie 63 znaków i zawierać znaki UTF-8. |
pickups[] |
Zestaw alternatyw odbioru powiązanych z przesyłką. Jeśli nie określono inaczej, pojazd musi tylko odwiedzić lokalizację odpowiadającą dostawom. |
deliveries[] |
Zestaw alternatywnych opcji dostawy powiązanych z dostawą. Jeśli go nie podasz, pojazd musi udać się tylko do lokalizacji odpowiadającej punktom odbioru. |
load_demands |
wymagania dotyczące ładunku (np. waga, objętość, liczba palet itp.); Klucze w mapie powinny być identyfikatorami, które opisują typ odpowiadającego im obciążenia. W idealnej sytuacji powinny też zawierać jednostki. Na przykład: „weight_kg”, „volume_gallons”, „pallet_count” itp. Jeśli dany klucz nie pojawi się na mapie, odpowiadające mu obciążenie zostanie uznane za puste. |
allowed_vehicle_indices[] |
Zestaw pojazdów, które mogą zrealizować tę przesyłkę. Jeśli pole jest puste, wszystkie pojazdy mogą je wykonać. Pojazdy są podawane według indeksu na liście |
costs_per_vehicle[] |
Określa koszt, jaki jest naliczany w momencie dostarczenia tej przesyłki przez każdy pojazd. Jeśli pole jest określone, musi zawierać KAŻDY:
Te koszty muszą być wyrażone w tych samych jednostkach co |
costs_per_vehicle_indices[] |
Indeksy pojazdów, do których ma zastosowanie |
pickup_to_delivery_absolute_detour_limit |
Określa maksymalny bezwzględny czas objazdu w porównaniu z najkrótszą ścieżką od odbioru do dostawy. Jeśli jest określona, nie może być ujemna, a przesyłka musi zawierać co najmniej informacje o odbiorze i dostawie. Na przykład nie może to być najkrótszy czas, jaki zajmie Ci przejście z wybranej opcji odbioru bezpośrednio do wybranej opcji dostawy. Następnie ustawienie zasady
Jeśli w przypadku tej samej przesyłki określono zarówno limity względne, jak i bezwzględne, dla każdej możliwej pary odbioru/dostawy stosowany jest bardziej restrykcyjny limit. Od 2017 r. objazdy są obsługiwane tylko wtedy, gdy czas podróży nie zależy od pojazdów. |
pickup_to_delivery_time_limit |
Określa maksymalny czas od rozpoczęcia odbioru do rozpoczęcia dostawy przesyłki. Jeśli jest określona, nie może być ujemna, a przesyłka musi zawierać co najmniej informacje o odbiorze i dostawie. Nie zależy to od tego, które opcje odbioru i dostawy są wybrane ani od prędkości pojazdu. Można je określić razem z ograniczeniami maksymalnego objazdu: rozwiązanie będzie uwzględniać obie specyfikacje. |
shipment_type |
Niepusty ciąg znaków określający „typ” za tę przesyłkę. Ta funkcja może służyć do definiowania niezgodności lub wymagań między Różnica w porównaniu z |
label |
Określa etykietę dla tej przesyłki. Ta etykieta jest podawana w odpowiedzi w |
ignore |
Jeśli tak, pomiń tę przesyłkę, ale nie stosuj Zignorowanie dostawy powoduje błąd weryfikacji, gdy w modelu występują Ignorowanie dostawy realizowanej w ramach |
penalty_cost |
Jeśli przesyłka nie zostanie zrealizowana, ta kara zostanie dodana do łącznego kosztu tras. Wysyłka jest uznawana za zrealizowaną, jeśli dostępna jest jedna z alternatywnych opcji odbioru lub dostawy. Koszt może być wyrażony w tej samej jednostce, która jest używana we wszystkich innych polach związanych z kosztem w modelu, i musi być dodatni. WAŻNE: jeśli ta kara nie zostanie określona, uznamy ją za nieskończoną, co oznacza, że dostawa musi zostać zrealizowana. |
pickup_to_delivery_relative_detour_limit |
Określa maksymalny czas dojazdu do miejsca docelowego w porównaniu z najkrótszą ścieżką od miejsca odbioru do miejsca dostawy. Jeśli jest określona, nie może być ujemna, a przesyłka musi zawierać co najmniej informacje o odbiorze i dostawie. Na przykład nie może to być najkrótszy czas, jaki zajmie Ci przejście z wybranej opcji odbioru bezpośrednio do wybranej opcji dostawy. Następnie ustawienie zasady
Jeśli w przypadku tej samej przesyłki określono zarówno limity względne, jak i bezwzględne, dla każdej możliwej pary odbioru/dostawy stosowany jest bardziej restrykcyjny limit. Od października 2017 r. objazdy są obsługiwane tylko wtedy, gdy czas podróży nie zależy od pojazdów. |
Wczytaj
Podczas wizyty może zostać dodana do ładunku pojazdu wstępnie określona kwota (jeśli jest to odbiór) lub odejmowana w przypadku dostawy. Tę kwotę definiuje ten komunikat. Zobacz load_demands
.
Pola | |
---|---|
amount |
Obciążenie pojazdu wykonującego daną wizytę, o ile będzie się ono zmieniać. Jest to liczba całkowita, dlatego zaleca się wybranie odpowiedniej jednostki, aby uniknąć utraty dokładności. Wartość musi być ≥ 0. |
VisitRequest
Prośba o zwiedzanie, którą może zrealizować pojazd: określona lokalizacja geograficzna (lub dwie, patrz poniżej), godziny otwarcia i zamknięcia wyrażone w przedziałach czasowych oraz czas trwania obsługi (czas spędzony przez pojazd po dotarciu do miejsca odbioru lub odesłaniu towarów).
Pola | |
---|---|
arrival_location |
Lokalizacja geograficzna, do której przyjeżdża pojazd podczas wykonywania tej czynności ( |
arrival_waypoint |
Punkt orientacyjny, w którym pojazd dociera podczas wykonywania tego |
departure_location |
Lokalizacja geograficzna, z której pojazd odjeżdża po ukończeniu tego celu: |
departure_waypoint |
Punkt orientacyjny, w którym pojazd rusza po zakończeniu tego |
tags[] |
Określa tagi dołączone do żądania wizyty. Puste lub zduplikowane ciągi znaków są niedozwolone. |
time_windows[] |
Przedziały czasu, które ograniczają godzinę przybycia podczas wizyty. Pamiętaj, że pojazd może odjechać poza przedział czasu przyjazdu, tj. godzina przyjazdu + czas przyjazdu nie muszą znajdować się w określonym przedziale czasu. Może to spowodować oczekiwanie, jeśli pojazd dotrze przed Brak wartości Okna czasowe muszą być odseparowane, co oznacza, że żadne z nich nie może się pokrywać z innym ani być sąsiadować z innym. Okna czasowe muszą być uporządkowane w rosnącej kolejności. Wartości |
duration |
Czas trwania wizyty, czyli czas spędzony przez pojazd między przybyciem a odejściem (dodawany do możliwego czasu oczekiwania; patrz |
cost |
Koszt obsługi tej prośby o wizytę w przypadku trasy pojazdu. Umożliwia ona pokrycie różnych kosztów każdego alternatywnego odbioru lub dostawy przesyłki. Koszt musi być w tej samej jednostce co |
load_demands |
Wczytywanie żądań dotyczących tej wizyty. Jest to pole podobne do pola |
visit_types[] |
Określa typy wizyty. Możesz go wykorzystać, aby zarezerwować dodatkowy czas wymagany na dokonanie tej wizyty (patrz Typ może wystąpić tylko raz. |
label |
Określa etykietę elementu |
ShipmentModel
Model dostawy zawiera zestaw dostaw, które muszą być realizowane przez zestaw pojazdów, przy jednoczesnym minimalizowaniu łącznego kosztu, który jest sumą:
- koszt kierowania pojazdami (suma kosztu łącznego czasu, koszt podróży i stały koszt dla wszystkich pojazdów).
- kary za niewykonaną dostawę.
- koszt globalnego czasu trwania przesyłek;
Pola | |
---|---|
shipments[] |
Zestaw dostaw, które muszą zostać zrealizowane w ramach modelu. |
vehicles[] |
Zestaw pojazdów, których można używać do wykonywania wizyt. |
global_start_time |
Globalny czas rozpoczęcia i zakończenia modelu: żadne okresy spoza tego zakresu nie mogą zostać uznane za prawidłowe. Zakres czasowy modelu musi być krótszy niż rok, czyli Gdy używasz pól |
global_end_time |
Jeśli nie zostanie ustawiona, domyślnie używana jest data 1 stycznia 1971 r., godzina 00:00:00 UTC (czyli 31536000 sekund, 0 nanosekund). |
global_duration_cost_per_hour |
„Globalny czas trwania” całego planu to różnica między najwcześniejszym rzeczywistym godzinem rozpoczęcia a najpóźniejszą obowiązującą godziną zakończenia wszystkich pojazdów. Użytkownicy mogą przypisać koszt za godzinę do tej ilości, aby na przykład zoptymalizować zadanie pod kątem jak najszybszego ukończenia. Ten koszt musi być w tej samej jednostce co |
duration_distance_matrices[] |
Określa macierze czasu trwania i odległości używane w modelu. Jeśli to pole będzie puste, zamiast niego będą używane Mapy Google lub odległości geodezyjne w zależności od wartości w polu Przykłady użycia:
|
duration_distance_matrix_src_tags[] |
tagi definiujące źródła macierzy czasu trwania i odległości; Funkcja Znaczniki odpowiadają wartości |
duration_distance_matrix_dst_tags[] |
tagów definiujących docelowe macierze czasu trwania i odległości; Znaczniki odpowiadają wartości |
transition_attributes[] |
Atrybuty przejścia zostały dodane do modelu. |
shipment_type_incompatibilities[] |
Zestawy niezgodnych typów przesyłki (patrz |
shipment_type_requirements[] |
Zestawy wymagań |
precedence_rules[] |
Zestaw reguł pierwszeństwa, które muszą być egzekwowane w modelu. |
max_active_vehicles |
Ogranicza maksymalną liczbę aktywnych pojazdów. Pojazd jest aktywny, jeśli na trasie jest realizowana co najmniej 1 dostawa. Można go użyć do ograniczenia liczby tras w przypadku, gdy kierowców jest mniej niż pojazdów, a flota pojazdów jest zróżnicowana. Optymalizacja wybierze najlepszy podzbiór pojazdów do użycia. Musi być wyłącznie dodatnia. |
DurationDistanceMatrix
Określa czas trwania i tablicę odległości od wizyty i miejsca rozpoczęcia podróży pojazdu oraz lokalizacji końcowej pojazdu.
Pola | |
---|---|
rows[] |
Określa wiersze macierzy czasu trwania i odległości. Musi się składać z tylu elementów: |
vehicle_start_tag |
Tag definiujący, do których pojazdów ma zastosowanie dany czas trwania i tablica odległości. Jeśli jest pusty, ma zastosowanie do wszystkich pojazdów i może być tylko jedna matryca. Każdy początek pojazdu musi pasować do jednej macierzy, tzn. dokładnie jedno z jego pola Wszystkie macierze muszą mieć inną wartość |
Wiersz
Określa wiersz macierzy czasu trwania i odległości.
Pola | |
---|---|
durations[] |
Czas trwania danego wiersza. Musi się składać z tylu elementów: |
meters[] |
Wartości odległości w danym wierszu. Jeśli w modelu nie ma żadnych kosztów ani ograniczeń odnoszących się do odległości, można pozostawić to pole puste. W przeciwnym razie musi ono zawierać tyle elementów, co |
PrecedenceRule
reguła pierwszeństwa między 2 zdarzeniami (każde z nich to odbiór lub dostawa przesyłki): „drugie” zdarzenie musi rozpoczynać się co najmniej offset_duration
po czasie „pierwsze” rozpoczęto.
Kilka pierwszeństwa może odnosić się do tych samych (lub powiązanych) wydarzeń, np. „Odbiór towaru B odbywa się po dostarczeniu produktu A” a „odbiór produktu C odbywa się po odebraniu produktu B”.
Dodatkowo pierwszeństwo ma tylko wtedy, gdy obie przesyłki są realizowane, w przeciwnym razie są ignorowane.
Pola | |
---|---|
first_is_delivery |
Wskazuje, czy „pierwszy” zdarzenie to dostawa. |
second_is_delivery |
Wskazuje, czy parametr „second” zdarzenie to dostawa. |
offset_duration |
Odstęp między zdarzeniami „first” i „second”. Wynik może być ujemny. |
first_index |
Indeks dostawy pierwszego produktu . To pole musi być określone. |
second_index |
Indeks dostawy „sekundy” . To pole musi być określone. |
ShipmentRoute
Trasa pojazdu można podzielić na osi czasu w następujący sposób (zakładamy, że jest n wizyt):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Trzeba pamiętać, że:
- „zdarzenia punktowe”, takie jak początek i koniec podróży pojazdu, a także początek i koniec każdej wizyty (tj. przyjazd i odjazd). Mają miejsce w określonej sekundzie.
- „przedziały czasu”, takie jak same odwiedziny i przejście między nimi. Chociaż czasami interwały czasowe mogą mieć zerową długość, czyli zaczynają się i kończą w tej samej sekundzie, często mają dodatnią długość.
Niezmienniki:
- Jeśli jest n wizyt, występują przejścia n+1.
- Odwiedziny są zawsze otoczone przejściem przed nią (ten sam indeks) i przejściem po niej (indeks + 1).
- Po uruchomieniu pojazdu zawsze następuje przejście nr 0.
- Koniec pojazdu jest zawsze poprzedzony przejściem nr n.
Oto, co się dzieje podczas Transition
i Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Na koniec zobacz, jak można zorganizować TRAVEL, PRZERW, OPÓŹNIENIA i OCZEKIWANIE w trakcie przejścia.
- Nie nakładają się.
- OPÓŹNIENIE jest niepowtarzalne i musi przypadać w ciągłym okresie tuż przed kolejną wizytą (lub wyłączeniem pojazdu). Dzięki temu wystarczy znać czas trwania opóźnienia, aby poznać godzinę rozpoczęcia i zakończenia.
- BREAKS są ze sobą przylegające, niepokrywające się okresy. Odpowiedź określa czas rozpoczęcia i czas trwania każdej przerwy.
- TRAVEL (TRAVEL) i WAIT (opóźnienia) są „wywłaszczeniowe” – mogą zostać kilka razy przerwane w trakcie tego przejścia. Klienci mogą założyć, że podróż odbywa się „jak najszybciej”, a pozostały czas jest wypełniony przez „czekanie”.
Przykład (skomplikowany):
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
Pola | |
---|---|
vehicle_index |
Pojazd pokonujący trasę, określony za pomocą indeksu w źródle |
vehicle_label |
Etykieta pojazdu wykonującego tę trasę, równa |
vehicle_start_time |
Godzina, o której pojazd rozpoczyna trasę. |
vehicle_end_time |
Czas zakończenia trasy przez pojazd. |
visits[] |
Uporządkowana sekwencja wizyt reprezentująca trasę. wizyta[i] to i-ta wizyta na trasie. Jeśli to pole jest puste, pojazd jest uważany za nieużywany. |
transitions[] |
Uporządkowana lista przejść na trasie. |
has_traffic_infeasibilities |
Jeśli zasada
Przyjazd na stronie next_visit prawdopodobnie nastąpi później niż w bieżącym oknie czasowym ze względu na zwiększony szacowany czas podróży ( |
route_polyline |
Zakodowana linia łamana reprezentuje trasę. To pole jest wypełniane tylko wtedy, gdy |
breaks[] |
Przerwy zaplanowane dla pojazdu na tej trasie. Sekwencja |
metrics |
Dane o czasie trwania, dystansie i obciążeniu tej trasy. Pola |
route_costs |
Koszt trasy z podziałem na pola żądania związane z kosztami. Klucze to ścieżki proto, względem danych wejściowych OptimizeToursRequest, np. „model.shipments.pickups.cost”, a ich wartości to łączny koszt wygenerowany przez odpowiednie pole kosztu, zagregowany dla całej trasy. Inaczej mówiąc, koszt["model.shipments.pickups.cost"] to suma wszystkich kosztów odbioru na trasie. Wszystkie koszty zdefiniowane w modelu są tutaj szczegółowo raportowane, z wyjątkiem kosztów związanych z atributem TransitionAttributes, które od 1 stycznia 2022 r. są raportowane tylko w sposób zagregowany. |
route_total_cost |
Łączny koszt trasy. Suma wszystkich kosztów na mapie kosztów. |
Przerwa
Dane reprezentujące wykonanie przerwy.
Pola | |
---|---|
start_time |
Czas rozpoczęcia przerwy. |
duration |
Czas trwania przerwy. |
EncodedPolyline
Zakodowana reprezentacja linii łamanej. Więcej informacji o kodowaniu linii łamanych znajdziesz tutaj: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
Pola | |
---|---|
points |
Ciąg znaków reprezentujący zakodowane punkty linii łamanej. |
Przejście
Przejście między 2 zdarzeniami na trasie. Zobacz opis ShipmentRoute
.
Jeśli pojazd nie ma start_location
lub end_location
, odpowiadające mu dane dotyczące podróży mają wartość 0.
Pola | |
---|---|
travel_duration |
Czas podróży w trakcie tej zmiany. |
travel_distance_meters |
Odległość przebyta podczas przejścia. |
traffic_info_unavailable |
Gdy żądanie ruchu jest wysyłane za pomocą |
delay_duration |
Suma czasów opóźnienia zastosowanych do tego przejścia. Jeśli tak, opóźnienie zaczyna się dokładnie |
break_duration |
Suma czasu trwania przerw w trakcie tego przejścia (jeśli występują). Szczegółowe informacje o czasie rozpoczęcia i czasie trwania każdej przerwy są przechowywane w |
wait_duration |
Czas oczekiwania podczas tej zmiany. Czas oczekiwania odpowiada czasowi bezczynności i nie obejmuje przerwy. Pamiętaj też, że czas oczekiwania może zostać podzielony na kilka nieciągłych przedziałów czasu. |
total_duration |
Całkowity czas trwania zmiany podany dla wygody użytkowników. Jest ona równa:
|
start_time |
Godzina rozpoczęcia tego przejścia. |
route_polyline |
Zakodowana reprezentacja linii łamanej trasy, która była następnie używana podczas przejścia. To pole jest wypełniane tylko wtedy, gdy |
vehicle_loads |
Ładunki pojazdów w trakcie tej zmiany dotyczące każdego typu pojazdu, który pojawia się w klastrze Obciążenia podczas pierwszego przejścia to obciążenia początkowe trasy pojazdu. Następnie, po każdej wizycie, |
VehicleLoad
Raportuje rzeczywiste obciążenie pojazdu w danym punkcie trasy w przypadku konkretnego typu (patrz Transition.vehicle_loads
).
Pola | |
---|---|
amount |
Obciążenie pojazdu dla danego typu. Jednostka ładunku jest zwykle określana przez typ. Zobacz |
Odwiedź
Wizyta przeprowadzona na trasie. Ta wizyta odpowiada odbiórowi lub dostawie: Shipment
.
Pola | |
---|---|
shipment_index |
Indeks pola |
is_pickup |
Jeśli ma wartość prawda, wizyta odpowiada odbiorze produktu |
visit_request_index |
Indeks |
start_time |
Godzina rozpoczęcia wizyty. Pamiętaj, że pojazd może pojawić się na miejscu wcześniej. Czasy są zgodne z |
load_demands |
Łączne obciążenie związane z wizytami jako suma dostawy i żądania wizyty |
detour |
Dodatkowy czas objazdu ze względu na przesyłki odwiedzone na trasie przed wizytą oraz potencjalny czas oczekiwania związany z przedziałami czasowymi. Jeśli wizyta dotyczy dostawy, zmiana trasy jest obliczana na podstawie odpowiedniej wizyty z odbiorem i ma wartość:
W przeciwnym razie jest obliczany na podstawie pojazdu
|
shipment_label |
Kopia odpowiedniego elementu |
visit_label |
Kopia odpowiedniego elementu |
ShipmentTypeIncompatibility
Określa niezgodności między dostawami w zależności od ich rodzaju przesyłki. Wyświetlanie niezgodnych przesyłek na tej samej trasie jest ograniczone ze względu na tryb niezgodności.
Pola | |
---|---|
types[] |
Lista niezgodnych typów. Dwie przesyłki, których |
incompatibility_mode |
Tryb został zastosowany do niezgodności. |
IncompatibilityMode
Środki określające, jak ograniczone jest wyświetlanie niezgodnych przesyłek na tej samej trasie.
Wartości w polu enum | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Nieokreślony tryb niezgodności. Tej wartości nie należy używać. |
NOT_PERFORMED_BY_SAME_VEHICLE |
W tym trybie 2 przesyłki z niekompatybilnymi typami nigdy nie mogą korzystać z tego samego pojazdu. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
W przypadku 2 przesyłek o niezgodnych typach z trybem zgodności
|
ShipmentTypeRequirement
Określa wymagania dotyczące poszczególnych dostaw na podstawie ich rodzaju przesyłki. Konkretne wymagania są określane przez tryb wymagań.
Pola | |
---|---|
required_shipment_type_alternatives[] |
Lista alternatywnych typów przesyłek wymaganych w dokumencie |
dependent_shipment_types[] |
Wszystkie przesyłki o typie podanym w polu UWAGA: łańcuchy wymagań, takie jak |
requirement_mode |
Tryb zastosowany do wymagania. |
RequirementMode
Tryby definiujące sposób wyświetlania przesyłek zależnych na trasie.
Wartości w polu enum | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Tryb nieokreślonych wymagań. Ta wartość nigdy nie powinna być używana. |
PERFORMED_BY_SAME_VEHICLE |
W tym trybie wszystkie „zależne” przesyłki muszą być z tym samym pojazdem co co najmniej jeden z „wymaganych” przesyłek. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
W trybie „zależny”; opcja odbioru przesyłki musi więc spełniać jeden z tych warunków:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Tak samo jak poprzednio, z wyjątkiem pola „zależnego” przesyłki muszą mieć atrybut „wymagany”, przesyłki na swój pojazd w momencie dostawy. |
SkippedShipment
Określa szczegóły niezrealizowanych dostaw w rozwiązaniu. W przypadku błahych przypadków lub jeśli możemy określić przyczynę pominięcia, podajemy ją tutaj.
Pola | |
---|---|
index |
Indeks odpowiada indeksowi przesyłki w źródle |
label |
Kopia odpowiedniego elementu |
reasons[] |
Lista powodów, dla których dostawa została pominięta. Zobacz komentarz powyżej |
Przyczyna
Jeśli będziemy mogli wyjaśnić, dlaczego przesyłka została pominięta, znajdziesz tu ich listę. Jeśli przyczyna nie jest taka sama w przypadku wszystkich pojazdów, element reason
będzie zawierał więcej niż 1 element. Pominięta przesyłka nie może mieć zduplikowanych powodów, tj. gdy wszystkie pola są takie same oprócz example_vehicle_index
. Przykład:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
Pominięta przesyłka jest niezgodna ze wszystkimi pojazdami. Przyczyny mogą być różne w przypadku wszystkich pojazdów, ale w co najmniej jednym z nich przekroczyłaby pojemność (w tym pojazd nr 1), co najmniej 1 pojazd „Gruszki” przekroczyłaby pojemność (w tym pojazd nr 3) i przekroczyła limit odległości w przypadku co najmniej 1 pojazdu (w tym pojazdu 1).
Pola | |
---|---|
code |
Więcej informacji znajdziesz w komentarzach do kodu. |
example_exceeded_capacity_type |
Jeśli kod przyczyny to |
example_vehicle_index |
Jeśli przyczyna jest niezgodność między pojazdem dostawczym, a pojazdem wysyłkowym, w tym polu znajdziesz indeks jednego odpowiedniego pojazdu. |
Kod
Kod identyfikujący typ przyczyny. Kolejność nie ma znaczenia. W szczególności nie wskazuje, czy dana przyczyna pojawi się wcześniej w rozwiązaniach, jeśli oba te warunki będą spełnione.
Wartości w polu enum | |
---|---|
CODE_UNSPECIFIED |
Nie należy jej nigdy używać. |
NO_VEHICLE |
W modelu nie ma żadnego pojazdu, co uniemożliwiałoby realizację wszystkich dostaw. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
Zapotrzebowanie na dostawę przekracza pojemność pojazdu w przypadku niektórych typów pojemności, z których jeden wynosi example_exceeded_capacity_type . |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
Minimalna odległość niezbędna do wykonania tej dostawy, czyli od Pamiętaj, że w tych obliczeniach używamy odległości geodezyjnych. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Minimalny czas niezbędny do wykonania tej przesyłki, w tym czas podróży, czas oczekiwania i obsługa, przekracza Uwaga: czas podróży oblicza się według najlepszego przypadku, czyli odległości geodezyjnej x 36 m/s (około 130 km/h). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Tak jak powyżej, ale porównujemy tylko minimalny czas podróży z travel_duration_limit pojazdu. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Pojazd nie może zrealizować tej dostawy w najlepszym scenariuszu (patrz CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT w celu obliczenia czasu), jeśli rozpoczyna się o najwcześniejszej możliwej godzinie: łączny czas pracy pojazdu spowoduje, że zakończy on pracę po upływie najpóźniejszego możliwego czasu. |
VEHICLE_NOT_ALLOWED |
Pole allowed_vehicle_indices przesyłki nie jest puste, a pojazd do niego nie należy. |
TimeWindow
Przedziały czasu ograniczają czas zdarzenia, np. godzinę przyjazdu podczas wizyty lub godzinę rozpoczęcia i zakończenia pojazdu.
Wartości graniczne sztywnych przedziałów czasowych, start_time
i end_time
, egzekwują najwcześniejszy i najnowszy czas zdarzenia, na przykład start_time <= event_time <=
end_time
. Dolna granica okresowego okresu (soft_start_time
) określa preferencję, aby zdarzenie miało miejsce soft_start_time
lub później przez naliczanie kosztów proporcjonalnie do tego, jak długo przed zdarzeniem soft_start_time wystąpiło. Górna granica zakresu czasowego (soft_end_time
) określa preferencję, aby zdarzenie miało miejsce soft_end_time
lub wcześniej, ponieważ powoduje naliczanie kosztów proporcjonalnie do czasu, jaki upłynął od zdarzenia soft_end_time
. Wartości start_time
, end_time
, soft_start_time
i soft_end_time
powinny mieścić się w globalnych limitach czasowych (patrz ShipmentModel.global_start_time
i ShipmentModel.global_end_time
) oraz spełniać te warunki:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
Pola | |
---|---|
start_time |
Trudny czas rozpoczęcia okna czasowego. Jeśli nie określono inaczej, wartość zostanie ustawiona na |
end_time |
Czas zakończenia sztywnego przedziału czasu. Jeśli nie określono inaczej, wartość zostanie ustawiona na |
soft_start_time |
Godzina łagodnego rozpoczęcia przedziału czasu. |
soft_end_time |
Godzina zakończenia okresu. |
cost_per_hour_before_soft_start_time |
Koszt na godzinę dodany do innych kosztów w modelu, jeśli zdarzenie występuje przed wartością soft_start_time, obliczany jako:
Ten koszt musi być dodatni, a pole można ustawić tylko wtedy, gdy ustawiono soft_start_time. |
cost_per_hour_after_soft_end_time |
Koszt za godzinę dodany do innych kosztów w modelu, jeśli zdarzenie wystąpi po
Ten koszt musi być dodatni, a pole można ustawić tylko wtedy, gdy skonfigurowano opcję |
TransitionAttributes
Określa atrybuty przejścia między 2 kolejnymi wizytami na trasie. Do tego samego przejścia może być stosowanych kilka elementów TransitionAttributes
: w takim przypadku wszystkie dodatkowe koszty sumują się i zastosowane jest najbardziej rygorystyczne ograniczenie lub limit (zgodnie z naturalną semantyką „ORAZ”).
Pola | |
---|---|
src_tag |
Tagi definiujące zestaw przejść (src->dst), do których mają zastosowanie te atrybuty. Wizyty w źródle lub rozpoczęcie pojazdu pasują do tych, które |
excluded_src_tag |
Zobacz |
dst_tag |
Wizyty w miejscu docelowym lub data zakończenia pojazdu pasują do tych, które |
excluded_dst_tag |
Zobacz |
cost |
Określa koszt przeprowadzenia tej zmiany. Ta jednostka jest taka sama jak wszystkie inne koszty w modelu i nie może być ujemna. Jest doliczana do wszystkich innych istniejących kosztów. |
cost_per_kilometer |
Określa koszt kilometra stosowany do odległości pokonanej podczas wykonywania tej zmiany. Dodaje się do wszystkich |
distance_limit |
Określa limit odległości pokonanej podczas wykonywania tej zmiany. Od 6 czerwca 2021 r. obsługiwane są tylko limity wstępne. |
delay |
Określa opóźnienie związane z przeprowadzeniem tej zmiany. Opóźnienie to zawsze następuje po zakończeniu wizyty źródłowej i przed jej rozpoczęciem. |
Pojazd
Model pojazdu w przypadku problemu z dostawą. Rozwiązanie problemu z dostawą spowoduje utworzenie trasy dla tego pojazdu rozpoczynającej się od start_location
i kończącej na end_location
. Trasa jest sekwencją wizyt (patrz ShipmentRoute
).
Pola | |
---|---|
display_name |
Zdefiniowana przez użytkownika wyświetlana nazwa pojazdu. Może składać się z maksymalnie 63 znaków i zawierać znaki UTF-8. |
travel_mode |
Tryb podróży, który wpływa na drogi, z których może korzystać pojazd, i jego prędkość. Zobacz też |
route_modifiers |
Zestaw warunków, które wpływają na sposób obliczania tras dla danego pojazdu. |
start_location |
Lokalizacja geograficzna, w której pojazd rozpoczyna się przed odebraniem przesyłki. Jeśli nie podasz żadnej wartości, pojazd rozpocznie się przy pierwszym odbiorze. Jeśli model dostawy zawiera macierze czasu trwania i odległości, nie można określić |
start_waypoint |
Punkt pośredni reprezentujący lokalizację geograficzną, w której pojazd rozpoczyna się przed odebraniem przesyłki. Jeśli nie podasz ani atrybutu |
end_location |
Miejsce geograficzne, w którym pojazd kończy ostatnią |
end_waypoint |
Punkt pośredni reprezentujący lokalizację geograficzną, w której kończy się pojazd po zakończeniu ostatniego |
start_tags[] |
Określa tagi dołączone do początku trasy pojazdu. Puste lub zduplikowane ciągi znaków są niedozwolone. |
end_tags[] |
Określa tagi dołączone na końcu trasy pojazdu. Puste lub zduplikowane ciągi znaków są niedozwolone. |
start_time_windows[] |
Przedziały czasu, w których pojazd może odjechać ze swojej lokalizacji początkowej. Muszą mieścić się w globalnych limitach czasowych (patrz pola Przedziały czasu należące do tego samego pola powtarzanego muszą być rozłączne, tj. żadne przedziały czasu nie mogą na siebie nachodzić ani przylegać do siebie i muszą być ułożone w kolejności chronologicznej. Wartości |
end_time_windows[] |
Przedziały czasu, w których pojazd może dotrzeć do miejsca docelowego. Muszą mieścić się w globalnych limitach czasowych (patrz pola Przedziały czasu należące do tego samego pola powtarzanego muszą być rozłączne, tj. żadne przedziały czasu nie mogą na siebie nachodzić ani przylegać do siebie i muszą być ułożone w kolejności chronologicznej. Wartości |
unloading_policy |
W pojeździe egzekwowane są zasady wyładowywania. |
load_limits |
Pojemność pojazdu (np. waga, objętość, liczba palet). Klucze na mapie to identyfikatory typu obciążenia, zgodne z kluczami w polu |
cost_per_hour |
Koszty pojazdu: wszystkie koszty są sumowane i muszą być podane w tej samej jednostce co Koszt za godzinę trasy pojazdu. Koszt ten jest stosowany do łącznego czasu podróży pokonanego na trasie i obejmuje czas podróży, czas oczekiwania i czas wizyty. Używanie operatora |
cost_per_traveled_hour |
Koszt przebytej godziny trasy pojazdu. Koszt ten jest stosowany tylko do czasu podróży na danej trasie (tj. raportowanego w |
cost_per_kilometer |
Koszt za kilometr trasy pojazdu. Koszt ten jest stosowany do odległości podawanej w raportach |
fixed_cost |
Stały koszt stosowany, jeśli ten pojazd służy do obsługi przesyłki. |
used_if_route_is_empty |
To pole ma zastosowanie tylko do pojazdów, których trasa nie obsługuje żadnych przesyłek. Wskazuje, czy w tym przypadku pojazd powinien być uznany za używany. Jeśli wybrano opcję prawda, pojazd porusza się od początku do końca, nawet jeśli nie obsługuje żadnych przesyłek, oraz koszty czasu i odległości związane z rozpoczęciem pracy --> bierzemy pod uwagę podróż końcową. W przeciwnym razie pojazd nie przemieszcza się z miejsca początkowego do miejsca docelowego i nie ma dla niego zaplanowanego |
route_duration_limit |
Limit został zastosowany do łącznego czasu trwania trasy pojazdu. W danym okresie ( |
travel_duration_limit |
Limit został zastosowany do czasu podróży na trasie pojazdu. W danym okresie ( |
route_distance_limit |
Limit został zastosowany do całkowitej odległości na trasie pojazdu. W danym regionie |
extra_visit_duration_for_visit_type |
Określa mapowanie z ciągów visit_types na czasy trwania. Czas trwania to czas dodatkowy do Jeśli prośba o wizytę ma kilka typów, czas trwania zostanie dodany do każdego z nich na mapie. |
break_rule |
Opisuje harmonogram przerw, który ma być stosowany w tym pojeździe. Jeśli pole będzie puste, w przypadku tego pojazdu nie zostaną zaplanowane żadne przerwy. |
label |
Określa etykietę tego pojazdu. Ta etykieta jest zgłaszana w odpowiedzi jako |
ignore |
Jeśli wartość Jeśli przesyłka jest realizowana przez pojazd ignorowany w definicji Jeśli przesyłka jest realizowana przez zignorowany pojazd w |
travel_duration_multiple |
Określa współczynnik mnożenia, który może być używany do zwiększania lub zmniejszania czasu przejazdu tego pojazdu. Na przykład ustawienie wartości 2,0 oznacza, że ten pojazd jest wolniejszy i czas podróży jest 2 razy dłuższy niż w przypadku standardowych pojazdów. Ta wielokrotność nie ma wpływu na czas trwania wizyty. Wpływa na koszty, jeśli określono OSTRZEŻENIE: czasy przejazdu zostaną zaokrąglone do najbliższej sekundy po zastosowaniu tego wielokrotnego, ale przed wykonaniem jakichkolwiek operacji numerycznych, dlatego małe wielokrotne może spowodować utratę dokładności. Zobacz też |
DurationLimit
Limit określający maksymalny czas trwania trasy pojazdu. Może być twarda lub miękka.
Gdy zdefiniowano pole opcjonalnego limitu, muszą być one określone razem.
Pola | |
---|---|
max_duration |
Twardy limit ogranicza czas trwania do maksymalnie max_duration. |
soft_max_duration |
Ograniczony limit nie egzekwuje maksymalnego czasu trwania, ale jego naruszenie powoduje naliczanie opłat za trasę. Ten koszt jest częścią innych kosztów określonych w modelu, które obejmują tę samą jednostkę. Jeśli została określona, |
quadratic_soft_max_duration |
Ograniczony limit nie egzekwuje maksymalnego czasu trwania, ale w przypadku naruszenia powoduje naliczanie kosztu w postaci kwadratowej. Ten koszt jest częścią innych kosztów określonych w modelu, które obejmują tę samą jednostkę. Jeśli jest zdefiniowana, wartość
|
cost_per_hour_after_soft_max |
Koszt za godzinę po przekroczeniu progu
Koszt musi być nieujemny. |
cost_per_square_hour_after_quadratic_soft_max |
Koszt godziny kwadratowej poniesiony w przypadku naruszenia progu Koszt dodatkowy wynosi 0, jeśli czas trwania jest poniżej progu. W przeciwnym razie koszt zależy od czasu trwania:
Koszt musi być nieujemny. |
LoadLimit
Określa limit obciążenia mający zastosowanie do pojazdu, np. „ta ciężarówka może przewieźć do 3500 kg”. Zobacz load_limits
.
Pola | |
---|---|
soft_max_load |
Miękki limit obciążenia. Zobacz |
cost_per_unit_above_soft_max |
Jeśli obciążenie na trasie tego pojazdu kiedykolwiek przekroczy |
start_load_interval |
Dopuszczalny przedział ładowania pojazdu na początku trasy. |
end_load_interval |
Dopuszczalny przedział ładowania pojazdu na końcu trasy. |
max_load |
Maksymalna akceptowalna ilość obciążenia. |
Interwał
Odstęp między akceptowanymi wielkościami wczytywania.
Pola | |
---|---|
min |
minimalne dopuszczalne obciążenie; Wartość musi być ≥ 0. Jeśli oba parametry są określone, wartość |
max |
Maksymalne dopuszczalne obciążenie. Wartość musi być większa lub równa 0. Jeśli nie określisz maksymalnego obciążenia, wiadomość nie będzie nakładać żadnych ograniczeń. Jeśli obie są określone, |
TravelMode
Tryby podróży, z których mogą korzystać pojazdy.
Powinny one być podzbiorem preferowanych trybów podróży w interfejsie API tras Google Maps Platform. Zobacz: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Wartości w polu enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Nieokreślony środek transportu, odpowiednik: DRIVING . |
DRIVING |
Tryb podróży odpowiadający wskazówkom dojazdu (samochód, ...). |
WALKING |
Tryb podróży odpowiadający wskazówkom dojazdu pieszo. |
UnloadingPolicy
Zasady dotyczące wyładowywania pojazdu. Dotyczy tylko przesyłek z odbiorem i dostawą.
W przypadku innych przesyłek mogą one zostać dostarczone w dowolnym miejscu na trasie niezależnie od firmy unloading_policy
.
Wartości w polu enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Nieokreślona zasada wyładowywania; dostawy muszą następować dopiero po odpowiednim odbiorze. |
LAST_IN_FIRST_OUT |
Dostawy muszą odbywać się w odwrotnej kolejności odbioru |
FIRST_IN_FIRST_OUT |
Dostawy muszą być w tym samym zamówieniu co odbiór |
Punkt pośredni
Obejmuje punkt pośredni. Punkty Waypoints oznaczają miejsca przyjazdu i wyjazdu w żądaniach VisitRequests oraz lokalizację początkową i końcową Pojazdów.
Pola | |
---|---|
side_of_road |
Opcjonalnie: Wskazuje, że umiejscowienie tego punktu pośredniego powinno umożliwiać zatrzymanie pojazdu po określonej stronie drogi. Po ustawieniu tej wartości trasa będzie przebiegać przez lokalizację, tak aby pojazd mógł się zatrzymać na poboczu drogi, w kierunku której lokalizacja jest przekierowana od środka drogi. Ta opcja nie działa w przypadku opcji „SPACER” środkami transportu. |
Pole sumy location_type . różne sposoby przedstawiania lokalizacji; location_type może mieć tylko jedną z tych wartości: |
|
location |
Punkt określony za pomocą współrzędnych geograficznych, w tym opcjonalny nagłówek. |
place_id |
Identyfikator miejsca POI powiązany z punktem pośrednim. |