- Zapis JSON
- Dostawa
- VisitRequest
- LatLng
- Waypoint
- Lokalizacja
- TimeWindow
- Pojazd
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Interwał
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- Cel
- Typ
- DurationDistanceMatrix
- Wiersz
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Model dostawy zawiera zestaw dostaw, które muszą być realizowane przez zestaw pojazdów, przy jednoczesnym zminimalizowaniu ogólnego kosztu, który jest sumą:
- koszt wyznaczania tras dla pojazdów (suma kosztu całkowitego czasu, kosztu czasu podróży i kosztu stałego dla wszystkich pojazdów);
- kary za niezrealizowaną dostawę.
- koszt globalnego czasu trwania dostaw;
| Zapis JSON |
|---|
{ "shipments": [ { object ( |
| Pola | |
|---|---|
shipments[] |
Zestaw dostaw, które muszą zostać wykonane w modelu. |
vehicles[] |
Zestaw pojazdów, których można używać do wizyt. |
objectives[] |
Zbiór celów tego modelu, które przekształcimy w koszty. Jeśli nie jest puste, model wejściowy musi być bezpłatny. Aby uzyskać zmodyfikowane żądanie, użyj funkcji Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
globalStartTime |
Globalny czas rozpoczęcia i zakończenia modelu: żadne czasy poza tym zakresem nie mogą być uznawane za prawidłowe. Okres, którego dotyczy model, musi być krótszy niż rok, tzn. wartości Jeśli używasz pól Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
globalEndTime |
Jeśli nie jest ustawiona, domyślnie używana jest data 1 stycznia 1971 r., godzina 00:00:00 UTC (czyli sekundy: 31536000, nanosekundy: 0). Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
globalDurationCostPerHour |
„Globalny czas trwania” całego planu to różnica między najwcześniejszym czasem rozpoczęcia a najpóźniejszym czasem zakończenia wszystkich pojazdów. Użytkownicy mogą przypisać do tej ilości koszt za godzinę, aby na przykład zoptymalizować czas ukończenia zadania. Koszt musi być podany w tej samej jednostce co |
durationDistanceMatrices[] |
Określa macierze czasu trwania i odległości używane w modelu. Jeśli to pole jest puste, używane są odległości w Google Maps lub odległości geodezyjne, w zależności od wartości pola Przykłady użycia:
|
durationDistanceMatrixSrcTags[] |
Tagi określające źródła macierzy czasu trwania i odległości: Tagi odpowiadają polom |
durationDistanceMatrixDstTags[] |
Tagi określające miejsca docelowe macierzy czasu trwania i odległości: Tagi odpowiadają polom |
transitionAttributes[] |
Dodano do modelu atrybuty przejścia. |
shipmentTypeIncompatibilities[] |
Zestawy niezgodnych typów dostawy (patrz |
shipmentTypeRequirements[] |
Zestawy |
precedenceRules[] |
Zestaw reguł pierwszeństwa, które muszą być egzekwowane w modelu. WAŻNE: używanie reguł pierwszeństwa ogranicza rozmiar problemu, który można zoptymalizować. Żądania korzystające z reguł pierwszeństwa, które obejmują wiele przesyłek, mogą zostać odrzucone. |
maxActiveVehicles |
Ogranicza maksymalną liczbę aktywnych pojazdów. Pojazd jest aktywny, jeśli na jego trasie zrealizowano co najmniej 1 przesyłkę. Może to służyć do ograniczenia liczby tras w przypadku, gdy liczba kierowców jest mniejsza niż liczba pojazdów, a flota pojazdów jest niejednorodna. Optymalizacja wybierze wtedy najlepszy podzbiór pojazdów do użycia. Musi być liczbą dodatnią. |
Wysyłka
Przesyłka pojedynczego produktu od jednego z miejsc odbioru do jednego z miejsc dostawy. Aby przesyłka została uznana za zrealizowaną, unikalny pojazd musi odwiedzić jedną z lokalizacji odbioru (i odpowiednio zmniejszyć swoje wolne moce), a następnie jedną z lokalizacji dostawy (i odpowiednio zwiększyć swoje wolne moce).
| Zapis JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Pola | |
|---|---|
displayName |
Zdefiniowana przez użytkownika wyświetlana nazwa przesyłki. Może mieć maksymalnie 63 znaki i zawierać znaki UTF-8. |
pickups[] |
Zestaw alternatywnych opcji odbioru powiązanych z przesyłką. Jeśli nie podasz tej wartości, pojazd musi tylko odwiedzić lokalizację odpowiadającą dostawom. |
deliveries[] |
Zestaw alternatywnych opcji dostawy powiązanych z przesyłką. Jeśli nie podasz tej wartości, pojazd musi tylko odwiedzić lokalizację odpowiadającą odbiorom. |
loadDemands |
Wymagania dotyczące załadunku przesyłki (np. waga, objętość, liczba palet itp.). Klucze w mapie powinny być identyfikatorami opisującymi typ odpowiedniego obciążenia, najlepiej z uwzględnieniem jednostek. Na przykład: „weight_kg”, „volume_gallons”, „pallet_count” itp. Jeśli danego klucza nie ma na mapie, odpowiedni ładunek jest traktowany jako wartość null. |
allowedVehicleIndices[] |
Zestaw pojazdów, które mogą zrealizować tę dostawę. Jeśli to pole jest puste, wszystkie pojazdy mogą wykonać tę czynność. Pojazdy są podawane według indeksu na liście |
costsPerVehicle[] |
Określa koszt poniesiony w przypadku dostawy przesyłki każdym pojazdem. Jeśli jest określony, musi mieć JEDNĄ z tych wartości:
Koszty te muszą być podane w tej samej jednostce co |
costsPerVehicleIndices[] |
Indeksy pojazdów, których dotyczy |
pickupToDeliveryAbsoluteDetourLimit |
Określa maksymalny bezwzględny czas objazdu w porównaniu z najkrótszą trasą od miejsca odbioru do miejsca dostawy. Jeśli jest określony, musi być nieujemny, a przesyłka musi zawierać co najmniej odbiór i dostawę. Niech t będzie najkrótszym czasem potrzebnym na przejazd z wybranej alternatywnej lokalizacji odbioru bezpośrednio do wybranej alternatywnej lokalizacji dostawy. Ustawienie Jeśli w przypadku tej samej przesyłki określono zarówno limity względne, jak i bezwzględne, w przypadku 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. |
pickupToDeliveryTimeLimit |
Określa maksymalny czas od rozpoczęcia odbioru do rozpoczęcia dostawy przesyłki. Jeśli jest określony, musi być nieujemny, a przesyłka musi zawierać co najmniej odbiór i dostawę. Nie zależy to od tego, które alternatywne opcje odbioru i dostawy zostały wybrane, ani od prędkości pojazdu. Można to określić wraz z maksymalnymi ograniczeniami dotyczącymi zmiany trasy: rozwiązanie będzie uwzględniać obie specyfikacje. |
shipmentType |
Niepusty ciąg znaków określający „typ” tej przesyłki. Za pomocą tej funkcji można określać niezgodności lub wymagania między Różni się od |
label |
Określa etykietę tej przesyłki. Ta etykieta jest zgłaszana w odpowiedzi w |
ignore |
Jeśli wartość jest prawdziwa, pomiń tę przesyłkę, ale nie stosuj Zignorowanie dostawy powoduje błąd weryfikacji, jeśli w modelu znajdują się jakiekolwiek Ignorowanie przesyłki realizowanej w |
penaltyCost |
Jeśli przesyłka nie zostanie zrealizowana, ta kara zostanie dodana do całkowitego kosztu tras. Przesyłka jest uznawana za zrealizowaną, jeśli odwiedzono jedną z jej alternatywnych lokalizacji odbioru lub dostawy. Koszt może być wyrażony w tej samej jednostce, która jest używana w przypadku wszystkich innych pól związanych z kosztami w modelu, i musi być dodatni. WAŻNE: jeśli ta kara nie jest określona, uważa się ją za nieskończoną, tzn. dostawa musi zostać zrealizowana. |
pickupToDeliveryRelativeDetourLimit |
Określa maksymalny względny czas objazdu w porównaniu z najkrótszą ścieżką od miejsca odbioru do miejsca dostawy. Jeśli jest określony, musi być nieujemny, a przesyłka musi zawierać co najmniej odbiór i dostawę. Niech t będzie najkrótszym czasem potrzebnym na przejazd z wybranej alternatywnej lokalizacji odbioru bezpośrednio do wybranej alternatywnej lokalizacji dostawy. Ustawienie Jeśli w przypadku tej samej przesyłki określono zarówno limity względne, jak i bezwzględne, w przypadku 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. |
VisitRequest
Prośba o wizytę, którą można zrealizować pojazdem: ma lokalizację geograficzną (lub dwie, patrz poniżej), godziny otwarcia i zamknięcia reprezentowane przez przedziały czasowe oraz czas trwania usługi (czas spędzony przez pojazd po przybyciu na miejsce odbioru lub dostawy towarów).
| Zapis JSON |
|---|
{ "arrivalLocation": { object ( |
| Pola | |
|---|---|
arrivalLocation |
Geolokalizacja, w której pojazd dociera podczas wykonywania tej |
arrivalWaypoint |
Punkt pośredni, do którego pojazd dociera podczas wykonywania tego |
departureLocation |
Lokalizacja geograficzna, z której pojazd odjeżdża po zakończeniu tego |
departureWaypoint |
Punkt pośredni, z którego pojazd odjeżdża po zakończeniu tego |
tags[] |
Określa tagi dołączone do żądania wizyty. Puste lub zduplikowane ciągi znaków są niedozwolone. |
timeWindows[] |
Przedziały czasowe, które ograniczają czas przyjazdu do miejsca docelowego. Pamiętaj, że pojazd może odjechać poza przedziałem czasu przyjazdu, tzn. czas przyjazdu + czas trwania nie muszą mieścić się w przedziale czasu. Jeśli pojazd przyjedzie przed Brak Przedziały czasu muszą być rozłączne, tzn.żaden przedział czasu nie może nakładać się na inny ani z nim sąsiadować. Muszą być też podane w kolejności rosnącej. Wartości |
duration |
Czas trwania wizyty, czyli czas spędzony przez pojazd między przyjazdem a odjazdem (należy go dodać do ewentualnego czasu oczekiwania; patrz |
cost |
Koszt obsługi tego żądania wizyty na trasie pojazdu. Można go użyć do zapłaty różnych kosztów za każdy alternatywny odbiór lub dostawę przesyłki. Koszt musi być podany w tej samej jednostce co |
loadDemands |
Wczytaj wymagania dotyczące tej prośby o wizytę. Jest to podobne do pola |
visitTypes[] |
Określa typy wizyt. Może to służyć do przydzielenia dodatkowego czasu potrzebnego pojazdowi na zakończenie wizyty (patrz Typ może wystąpić tylko raz. |
label |
Określa etykietę dla tego elementu |
avoidUTurns |
Określa, czy na trasach dojazdu w tej lokalizacji należy unikać zawracania. Unikanie zawracania jest realizowane w miarę możliwości i nie gwarantujemy, że zawracanie zostanie całkowicie wyeliminowane. Jest to funkcja eksperymentalna, a jej działanie może ulec zmianie. Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
LatLng
Obiekt reprezentujący parę szerokości i długości geograficznej. Jest to para liczb zmiennoprzecinkowych podwójnej precyzji, które reprezentują stopnie szerokości i długości geograficznej. O ile nie określono inaczej, ten obiekt musi być zgodny ze standardem WGS84. Wartości muszą mieścić się w znormalizowanych zakresach.
| Zapis JSON |
|---|
{ "latitude": number, "longitude": number } |
| Pola | |
|---|---|
latitude |
Szerokość geograficzna w stopniach. Musi mieścić się w zakresie od –90,0 do +90,0. |
longitude |
Długość geograficzna w stopniach. Musi mieścić się w zakresie od –180,0 do +180,0. |
Punkt pośredni
Zawiera punkt na trasie. Punkty pośrednie oznaczają lokalizacje przyjazdu i odjazdu w przypadku żądań VisitRequest oraz lokalizacje początkowe i końcowe w przypadku pojazdów.
| Zapis JSON |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| Pola | |
|---|---|
sideOfRoad |
Opcjonalnie: Wskazuje, że lokalizacja tego punktu trasy ma preferencję, aby pojazd zatrzymał się po określonej stronie drogi. Gdy ustawisz tę wartość, trasa będzie przebiegać przez daną lokalizację, aby pojazd mógł zatrzymać się po stronie drogi, w kierunku której jest ona przesunięta od środka drogi. Ta opcja nie działa w przypadku trybu podróży „PIESZO”. |
vehicleStopover |
Wskazuje, że punkt pośredni jest przeznaczony dla pojazdów, które mają się w nim zatrzymać, aby odebrać lub wysadzić pasażera. Ta opcja działa tylko w przypadku trybu podróży „DRIVING” i gdy „locationType” ma wartość „location”. Eksperymentalne: działanie lub istnienie tego pola może się w przyszłości zmienić. |
| Różne sposoby przedstawiania lokalizacji. Poniżej znajduje się lista pól, które się wzajemnie wykluczają. W odpowiedzi zostanie ustawione co najwyżej jedno z tych pól: | |
location |
Punkt określony za pomocą współrzędnych geograficznych, w tym opcjonalnego kierunku. |
placeId |
Identyfikator miejsca POI powiązany z punktem pośrednim. Jeśli używasz identyfikatora miejsca do określenia lokalizacji przyjazdu lub odjazdu w przypadku VisitRequest, użyj identyfikatora miejsca, który jest wystarczająco szczegółowy, aby określić lokalizację LatLng na potrzeby nawigacji do tego miejsca. Na przykład identyfikator miejsca reprezentujący budynek jest odpowiedni, ale identyfikator miejsca reprezentujący drogę jest niezalecany. |
| Koniec pól wykluczających się nawzajem. | |
Lokalizacja
Zawiera lokalizację (punkt geograficzny i opcjonalny kierunek).
| Zapis JSON |
|---|
{
"latLng": {
object ( |
| Pola | |
|---|---|
latLng |
Współrzędne geograficzne punktu pośredniego. |
heading |
Kierunek kompasu powiązany z kierunkiem ruchu. Ta wartość służy do określania strony drogi, z której ma nastąpić odbiór i na której ma nastąpić wysadzenie. Wartości kierunku mogą wynosić od 0 do 360, gdzie 0 oznacza kierunek północny, 90 – wschodni itd. |
TimeWindow
Okna czasowe ograniczają czas zdarzenia, np. czas przyjazdu podczas wizyty lub czas rozpoczęcia i zakończenia przejazdu pojazdu.
Sztywne granice czasowe startTime i endTime określają najwcześniejszy i najpóźniejszy czas zdarzenia, tak że startTime <= event_time <=
endTime. Dolna granica miękkiego okna czasowego, softStartTime, wyraża preferencję, aby zdarzenie nastąpiło w momencie softStartTime lub później, poprzez poniesienie kosztu proporcjonalnego do tego, jak długo przed softStartTime nastąpiło zdarzenie. Górna granica miękkiego okna czasowego, softEndTime, wyraża preferencję, aby zdarzenie nastąpiło w momencie softEndTime lub wcześniej, poprzez poniesienie kosztu proporcjonalnego do tego, jak długo po softEndTime nastąpi zdarzenie. Wartości startTime, endTime, softStartTime i softEndTime powinny mieścić się w globalnych limitach czasu (patrz ShipmentModel.global_start_time i ShipmentModel.global_end_time) i być zgodne z tymi zasadami:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
| Zapis JSON |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| Pola | |
|---|---|
startTime |
Czas rozpoczęcia ścisłego przedziału czasu. Jeśli nie zostanie określona, zostanie ustawiona na Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
endTime |
Koniec przedziału czasu. Jeśli nie zostanie określona, zostanie ustawiona na Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
softStartTime |
Czas rozpoczęcia przedziału czasu. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
softEndTime |
Przybliżony czas zakończenia przedziału czasu. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
costPerHourBeforeSoftStartTime |
Koszt za godzinę dodawany do innych kosztów w modelu, jeśli zdarzenie wystąpi przed wartością softStartTime, obliczany jako: Ten koszt musi być dodatni, a pole można ustawić tylko wtedy, gdy ustawiono pole softStartTime. |
costPerHourAfterSoftEndTime |
Koszt za godzinę dodawany 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 ustawiono pole |
Pojazd
Modeluje pojazd w przypadku problemu z przesyłką. Rozwiązanie problemu z przesyłką spowoduje utworzenie trasy dla tego pojazdu, która zaczyna się w miejscu startLocation i kończy w miejscu endLocation. Trasa to sekwencja wizyt (patrz ShipmentRoute).
| Zapis JSON |
|---|
{ "displayName": string, "travelMode": enum ( |
| Pola | |
|---|---|
displayName |
Zdefiniowana przez użytkownika wyświetlana nazwa pojazdu. Może mieć maksymalnie 63 znaki i zawierać znaki UTF-8. |
travelMode |
Tryb podróży, który wpływa na drogi dostępne dla pojazdu i jego prędkość. Zobacz też |
routeModifiers |
Zbiór warunków, które muszą zostać spełnione i które wpływają na sposób obliczania tras dla danego pojazdu. |
startLocation |
Położenie geograficzne, w którym pojazd rozpoczyna podróż przed odebraniem przesyłek. Jeśli nie zostanie określony, pojazd rozpocznie podróż od pierwszego miejsca odbioru. Jeśli model dostawy zawiera macierze czasu trwania i odległości, nie można określić parametru |
startWaypoint |
Punkt orientacyjny reprezentujący położenie geograficzne, w którym pojazd rozpoczyna podróż przed odebraniem przesyłek. Jeśli nie podasz ani |
endLocation |
Położenie geograficzne, w którym pojazd kończy ostatni |
endWaypoint |
Punkt pośredni reprezentujący położenie geograficzne, w którym pojazd kończy przejazd po wykonaniu ostatniego |
startTags[] |
Określa tagi dołączone na początku trasy pojazdu. Puste lub zduplikowane ciągi znaków są niedozwolone. |
endTags[] |
Określa tagi dołączone na końcu trasy pojazdu. Puste lub zduplikowane ciągi znaków są niedozwolone. |
startTimeWindows[] |
Przedziały czasowe, w których pojazd może wyruszyć z lokalizacji początkowej. Muszą mieścić się w globalnych limitach czasowych (patrz pola Okna czasowe należące do tego samego pola powtarzanego muszą być rozłączne, tzn. żadne okno czasowe nie może się pokrywać z innym ani z nim sąsiadować, a ponadto muszą być ułożone w porządku chronologicznym. Wartości |
endTimeWindows[] |
Przedziały czasu, w których pojazd może dotrzeć do miejsca docelowego. Muszą mieścić się w globalnych limitach czasowych (patrz pola Okna czasowe należące do tego samego pola powtarzanego muszą być rozłączne, tzn. żadne okno czasowe nie może się pokrywać z innym ani z nim sąsiadować, a ponadto muszą być ułożone w porządku chronologicznym. Wartości |
unloadingPolicy |
Zasady rozładunku egzekwowane w przypadku pojazdu. |
loadLimits |
pojemność pojazdu (np. waga, objętość, liczba palet); Klucze w mapie to identyfikatory typu obciążenia, zgodne z kluczami pola |
costPerHour |
Koszty pojazdu: wszystkie koszty sumują się i muszą być podane w tej samej jednostce co Koszt za godzinę trasy pojazdu. Ten koszt jest stosowany do łącznego czasu trwania trasy i obejmuje czas podróży, czas oczekiwania i czas wizyty. Używanie |
costPerTraveledHour |
Koszt za godzinę przejazdu na trasie pojazdu. Ten koszt jest stosowany tylko do czasu podróży na trasie (czyli czasu podanego w |
costPerKilometer |
Koszt na kilometr trasy pojazdu. Ten koszt jest stosowany do odległości podanej w |
fixedCost |
Stały koszt stosowany, jeśli ten pojazd jest używany do obsługi przesyłki. |
usedIfRouteIsEmpty |
To pole ma zastosowanie tylko w przypadku pojazdów, których trasa nie obejmuje żadnych przesyłek. Wskazuje, czy w tym przypadku pojazd powinien być uznawany za używany. Jeśli wartość to „true”, pojazd przemieszcza się z lokalizacji początkowej do końcowej, nawet jeśli nie obsługuje żadnych przesyłek, a koszty czasu i odległości wynikające z przejazdu z lokalizacji początkowej do końcowej są uwzględniane. W przeciwnym razie nie będzie się przemieszczać z lokalizacji początkowej do końcowej, a dla tego pojazdu nie będzie zaplanowany żaden |
routeDurationLimit |
Limit stosowany do łącznego czasu trwania trasy pojazdu. W danym |
travelDurationLimit |
Limit zastosowany do czasu trwania podróży pojazdu. W danym |
routeDistanceLimit |
Limit zastosowany do całkowitej odległości na trasie pojazdu. W danym |
extraVisitDurationForVisitType |
Określa mapę ciągów visitTypes na czas trwania. Czas trwania to czas dodatkowy do Jeśli prośba o wizytę ma kilka typów, do mapy zostanie dodany czas trwania dla każdego z nich. |
breakRule |
Opisuje harmonogram przerw, który ma być stosowany w przypadku tego pojazdu. Jeśli jest pusta, dla tego pojazdu nie będą planowane żadne przerwy. |
label |
Określa etykietę tego pojazdu. Ta etykieta jest podawana w odpowiedzi jako |
ignore |
Jeśli wartość to „true”, Jeśli dostawa jest realizowana przez zignorowany pojazd w Jeśli dostawa jest realizowana przez zignorowany pojazd w |
travelDurationMultiple |
Określa współczynnik mnożnikowy, który można wykorzystać do zwiększenia lub zmniejszenia czasu podróży tego pojazdu. Na przykład ustawienie tej wartości na 2,0 oznacza, że ten pojazd jest wolniejszy, a czas podróży jest 2 razy dłuższy niż w przypadku standardowych pojazdów. Ten mnożnik nie wpływa na czas trwania wizyt. Ma to wpływ na koszt, jeśli określono parametry OSTRZEŻENIE: czasy podróży będą zaokrąglane do najbliższej sekundy po zastosowaniu tego mnożnika, ale przed wykonaniem jakichkolwiek operacji numerycznych. Mały mnożnik może więc spowodować utratę precyzji. Zobacz też |
TravelMode
Rodzaje transportu, z których mogą korzystać pojazdy.
Powinny to być podzbiory trybów podróży interfejsu Routes API w Google Maps Platform. Więcej informacji znajdziesz na stronie: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
Uwaga: trasy WALKING są w wersji beta i czasami mogą nie mieć wyraźnych chodników lub ścieżek dla pieszych. Musisz wyświetlać to ostrzeżenie użytkownikowi w przypadku wszystkich tras pieszych, które wyświetlasz w aplikacji.
| 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 |
Środek transportu odpowiadający trasie pieszej. |
RouteModifiers
Zawiera zestaw opcjonalnych warunków, które należy spełnić podczas obliczania tras pojazdów. Jest to podobne do parametru RouteModifiers w interfejsie Routes Preferred API w Google Maps Platform. Więcej informacji znajdziesz na stronie https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Zapis JSON |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| Pola | |
|---|---|
avoidTolls |
Określa, czy w uzasadnionych przypadkach unikać dróg płatnych. Priorytetowo traktowane będą trasy, które nie obejmują dróg płatnych. Dotyczy to tylko zmotoryzowanych środków transportu. |
avoidHighways |
Określa, czy w uzasadnionych przypadkach należy unikać autostrad. Priorytetowo traktowane będą trasy, które nie obejmują autostrad. Dotyczy to tylko zmotoryzowanych środków transportu. |
avoidFerries |
Określa, czy w miarę możliwości unikać promów. Priorytetowo traktowane będą trasy, które nie obejmują podróży promem. Dotyczy to tylko zmotoryzowanych środków transportu. |
avoidIndoor |
Opcjonalnie: Określa, czy unikać nawigacji w pomieszczeniach, gdy jest to uzasadnione. Priorytetowo traktowane będą trasy, które nie zawierają nawigacji w pomieszczeniach. Dotyczy tylko trybu podróży |
UnloadingPolicy
Zasady dotyczące rozładunku pojazdu. Dotyczy tylko przesyłek, które są odbierane i dostarczane.
Inne dostawy mogą odbywać się w dowolnym miejscu na trasie niezależnie od unloadingPolicy.
| Wartości w polu enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Nieokreślone zasady rozładunku; dostawy muszą być realizowane po odpowiednich odbiorach. |
LAST_IN_FIRST_OUT |
Dostawy muszą być realizowane w odwrotnej kolejności do odbiorów. |
FIRST_IN_FIRST_OUT |
Dostawy muszą być realizowane w tej samej kolejności co odbiory. |
LoadLimit
Określa limit obciążenia pojazdu, np. „ten samochód ciężarowy może przewozić tylko do 3500 kg”. Zobacz loadLimits.
| Zapis JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Pola | |
|---|---|
softMaxLoad |
Limit obciążenia. Zobacz |
costPerUnitAboveSoftMax |
Jeśli obciążenie przekroczy |
startLoadInterval |
Dopuszczalny przedział ładowania pojazdu na początku trasy. |
endLoadInterval |
Dopuszczalny przedział czasu załadunku pojazdu na końcu trasy. |
maxLoad |
Maksymalna dopuszczalna wielkość obciążenia. |
costPerKilometer |
Koszt przewiezienia 1 jednostki ładunku na odległość 1 km w przypadku tego pojazdu. Może to być przybliżone zużycie paliwa: jeśli obciążenie jest wagą (w niutonach), to obciążenie × kilometr ma wymiar energii. Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
costPerTraveledHour |
Koszt podróży z jednostką ładunku w ciągu godziny w przypadku tego pojazdu. Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
Interwał
Przedział dopuszczalnych wartości obciążenia.
| Zapis JSON |
|---|
{ "min": string, "max": string } |
| Pola | |
|---|---|
min |
Minimalne dopuszczalne obciążenie. Musi być ≥ 0. Jeśli oba parametry są określone, wartość |
max |
Maksymalne dopuszczalne obciążenie. Musi być ≥ 0. Jeśli nie zostanie określony, maksymalne obciążenie nie jest ograniczone przez ten komunikat. Jeśli oba parametry są określone, wartość |
LoadCost
Koszt przeniesienia jednej jednostki ładunku w czasie Transition. W przypadku danego zadania koszt jest sumą 2 części:
- min(load,
loadThreshold) *costPerUnitBelowThreshold - max(0, obciążenie –
loadThreshold) *costPerUnitAboveThreshold
W przypadku tego kosztu rozwiązania preferują najpierw realizację dużych zamówień lub odbiór dużych zamówień na końcu. Jeśli na przykład pojazd ma
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
a jej trasa to start,pickup,pickup,delivery,delivery,end z przejściami:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
wtedy koszt poniesiony przez ten LoadCost wynosi (cost_below * load_below * kilometers + cost_above * load_above * kms)
- przejście 0: 0,0
- przejście 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- przejście 2: 2,0 * 15 * 1,0 + 10,0 * (20 – 15) * 1,0 = 80,0
- przejście 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- przejście 4: 0,0
Wartość LoadCost na trasie wynosi 120,0.
Jeśli jednak trasa to start,pickup,delivery,pickup,delivery,end z przejściami:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
wtedy koszt poniesiony przez ten LoadCost wynosi
- przejście 0: 0,0
- przejście 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- przejście 2: 0,0
- przejście 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- przejście 4: 0,0
W tym przypadku LoadCost na trasie wynosi 40,0.
LoadCost sprawia, że rozwiązania z przejściami o dużym obciążeniu są droższe.
Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.
| Zapis JSON |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| Pola | |
|---|---|
loadThreshold |
Wartość obciążenia, powyżej której koszt przeniesienia jednostki obciążenia zmienia się z costPerUnitBelowThreshold na costPerUnitAboveThreshold. Musi być większa lub równa 0. |
costPerUnitBelowThreshold |
Koszt przeniesienia jednostki ładunku dla każdej jednostki z zakresu od 0 do wartości progowej. Musi to być wartość skończona, która jest większa lub równa 0. |
costPerUnitAboveThreshold |
Koszt przeniesienia jednostki ładunku za każdą jednostkę powyżej progu. W przypadku specjalnym, gdy próg = 0, jest to stały koszt za jednostkę. Musi to być wartość skończona, która jest większa lub równa 0. |
DurationLimit
Limit określający maksymalny czas trwania trasy pojazdu. Może być twarda lub miękka.
Jeśli zdefiniujesz pole limitu tymczasowego, musisz określić zarówno próg maksymalny limitu tymczasowego, jak i powiązany z nim koszt.
| Zapis JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| Pola | |
|---|---|
maxDuration |
Sztywny limit ograniczający czas trwania do maksymalnie maxDuration. |
softMaxDuration |
Miękki limit, który nie wymusza maksymalnego czasu trwania, ale po przekroczeniu powoduje naliczenie kosztu trasy. Ten koszt jest dodawany do innych kosztów zdefiniowanych w modelu, w tej samej jednostce. Jeśli podano wartość, |
quadraticSoftMaxDuration |
Miękki limit, który nie wymusza maksymalnego czasu trwania, ale w przypadku przekroczenia powoduje, że trasa generuje koszt kwadratowy w stosunku do czasu trwania. Ten koszt jest dodawany do innych kosztów zdefiniowanych w modelu, w tej samej jednostce. Jeśli ustawienie
|
costPerHourAfterSoftMax |
Koszt za godzinę w przypadku przekroczenia progu Koszt musi być nieujemny. |
costPerSquareHourAfterQuadraticSoftMax |
Koszt za godzinę kwadratową, jeśli zostanie przekroczony próg Jeśli czas trwania jest poniżej progu, dodatkowy koszt wynosi 0. W przeciwnym razie koszt zależy od czasu trwania w sposób opisany poniżej: Koszt musi być nieujemny. |
DistanceLimit
Limit określający maksymalną odległość, jaką można pokonać. Może być twarda lub miękka.
Jeśli zdefiniowano limit elastyczny, musisz określić zarówno parametr softMaxMeters, jak i costPerKilometerAboveSoftMax, a ich wartości muszą być nieujemne.
| Zapis JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| Pola | |
|---|---|
maxMeters |
Limit bezwzględny ograniczający odległość do maksymalnie maxMeters. Limit nie może być ujemny. |
softMaxMeters |
Limit miękki, który nie wymusza maksymalnego limitu odległości, ale w przypadku jego przekroczenia generuje koszt, który jest dodawany do innych kosztów zdefiniowanych w modelu, w tej samej jednostce. Jeśli zdefiniowano parametr softMaxMeters, musi on być mniejszy niż maxMeters i nie może być ujemny. |
costPerKilometerBelowSoftMax |
Koszt na kilometr wzrasta do Ten koszt nie jest obsługiwany w regionie |
costPerKilometerAboveSoftMax |
Koszt za kilometr, jeśli odległość przekracza limit Koszt musi być nieujemny. |
BreakRule
Reguły generowania przerw w czasie pracy pojazdu (np. przerw na lunch). Przerwa to ciągły okres, w którym pojazd pozostaje w bezruchu w obecnej pozycji i nie może wykonać żadnej wizyty. Przerwa może nastąpić:
- podczas podróży między 2 wizytami (co obejmuje czas tuż przed wizytą lub tuż po niej, ale nie w trakcie wizyty), w którym to przypadku wydłuża odpowiedni czas przejazdu między wizytami;
- lub przed rozpoczęciem jazdy (pojazd nie może rozpocząć jazdy w trakcie przerwy), w którym to przypadku nie wpływa na czas rozpoczęcia jazdy.
- lub po zakończeniu jazdy (podobnie, z godziną zakończenia jazdy).
| Zapis JSON |
|---|
{ "breakRequests": [ { object ( |
| Pola | |
|---|---|
breakRequests[] |
Kolejność przerw. Zobacz komunikat |
frequencyConstraints[] |
Może obowiązywać kilka |
BreakRequest
Kolejność przerw (czyli ich liczba i kolejność) w przypadku każdego pojazdu musi być znana z wyprzedzeniem. Powtarzające się symbole BreakRequest definiują sekwencję w kolejności, w jakiej muszą wystąpić. Przedziały czasowe (earliestStartTime / latestStartTime) mogą się pokrywać, ale muszą być zgodne z zamówieniem (jest to sprawdzane).
| Zapis JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Pola | |
|---|---|
earliestStartTime |
Wymagane. Dolna granica (włącznie) początku przerwy. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
latestStartTime |
Wymagane. Górna granica (włącznie) początku przerwy. Korzysta ze standardu RFC 3339, w którym wygenerowane dane wyjściowe są zawsze znormalizowane do formatu Z i zawierają 0, 3, 6 lub 9 cyfr po przecinku. Akceptowane są też przesunięcia inne niż „Z”. Przykłady: |
minDuration |
Wymagane. Minimalny czas trwania przerwy. Wartość musi być dodatnia. |
FrequencyConstraint
Można dodatkowo ograniczyć częstotliwość i czas trwania przerw określonych powyżej, wymuszając minimalną częstotliwość przerw, np. „Co 12 godzin musi być przerwa trwająca co najmniej 1 godzinę”. Zakładając, że można to zinterpretować jako „W dowolnym 12-godzinnym przedziale czasu musi być co najmniej jedna przerwa trwająca co najmniej godzinę”, ten przykład można przetłumaczyć na następujący warunek FrequencyConstraint:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Czas i długość przerw w rozwiązaniu będą uwzględniać wszystkie te ograniczenia, a także okna czasowe i minimalne czasy trwania określone już w BreakRequest.
Symbol FrequencyConstraint może w praktyce odnosić się do przerw, które nie następują po sobie. Na przykład poniższy harmonogram uwzględnia przykład „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
| Zapis JSON |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| Pola | |
|---|---|
minBreakDuration |
Wymagane. Minimalny czas trwania przerwy dla tego ograniczenia. Nieujemna. Zobacz opis |
maxInterBreakDuration |
Wymagane. Maksymalny dozwolony czas trwania dowolnego przedziału czasu na trasie, który nie obejmuje co najmniej częściowo przerwy trwającej |
Cel
Cele całkowicie zastępują model kosztów, dlatego są niezgodne z wcześniej ustalonymi kosztami. Każdy cel jest powiązany z określoną liczbą wstępnie zdefiniowanych kosztów, np. pojazdów, przesyłek lub atrybutów przejścia.
Eksperymentalne: więcej informacji znajdziesz na stronie https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.
| Zapis JSON |
|---|
{
"type": enum ( |
| Pola | |
|---|---|
type |
Typ celu. |
weight |
Jak bardzo ten cel powinien się liczyć w porównaniu z innymi. Może to być dowolna liczba nieujemna, a wagi nie muszą sumować się do 1. Wagi domyślnie wynoszą 1,0. |
Typ
Typ celu, który zostanie przypisany do zestawu kosztów.
| Wartości w polu enum | |
|---|---|
DEFAULT |
Aby zapewnić rozsądne rozwiązanie, zostanie użyty domyślny zestaw kosztów. Uwaga: ten cel może być używany samodzielnie, ale jeśli nie jest jeszcze obecny, zawsze będzie dodawany z wagą 1,0 jako wartość bazowa do celów określonych przez użytkownika. |
MIN_DISTANCE |
cele „MIN”. zminimalizować całkowitą przebytą odległość; |
MIN_WORKING_TIME |
zminimalizować łączny czas pracy wszystkich pojazdów; |
MIN_TRAVEL_TIME |
To samo co powyżej, ale z uwzględnieniem tylko czasu podróży. |
MIN_NUM_VEHICLES |
Zminimalizuj liczbę używanych pojazdów. |
DurationDistanceMatrix
Określa macierz czasu trwania i macierz odległości od lokalizacji rozpoczęcia wizyty i pojazdu do lokalizacji zakończenia wizyty i pojazdu.
| Zapis JSON |
|---|
{
"rows": [
{
object ( |
| Pola | |
|---|---|
rows[] |
Określa wiersze macierzy czasu trwania i odległości. Musi zawierać tyle elementów, ile pole |
vehicleStartTag |
Tag określający, do których pojazdów odnosi się ta macierz czasu trwania i macierz odległości. Jeśli to pole jest puste, dotyczy to wszystkich pojazdów i może być tylko jedna macierz. Każde rozpoczęcie jazdy musi pasować do dokładnie jednej macierzy, tzn. dokładnie jedno pole Wszystkie macierze muszą mieć inny |
Wiersz
Określa wiersz macierzy czasu trwania i odległości.
| Zapis JSON |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| Pola | |
|---|---|
durations[] |
Wartości czasu trwania w danym wierszu. Musi zawierać tyle elementów, ile pole |
meters[] |
Wartości odległości w danym wierszu. Jeśli w modelu nie ma kosztów ani ograniczeń odnoszących się do odległości, to pole może pozostać puste. W przeciwnym razie musi zawierać tyle elementów, ile wynosi wartość |
TransitionAttributes
Określa atrybuty przejść między dwiema kolejnymi wizytami na trasie. Do tego samego przejścia może mieć zastosowanie kilka TransitionAttributes. W takim przypadku wszystkie dodatkowe koszty sumują się, a obowiązuje najsurowsze ograniczenie lub limit (zgodnie z naturalną semantyką „I”).
| Zapis JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Pola | |
|---|---|
srcTag |
Tagi określające zbiór przejść (src->dst), do których mają zastosowanie te atrybuty. Wizyta w źródle lub uruchomienie pojazdu są zgodne, jeśli pole |
excludedSrcTag |
Zobacz |
dstTag |
Wizyta w miejscu docelowym lub zakończenie podróży pojazdem pasuje, jeśli pole |
excludedDstTag |
Zobacz |
cost |
Określa koszt wykonania tego przejścia. Jest to ta sama jednostka co wszystkie inne koszty w modelu i nie może być ujemna. Jest ona doliczana do wszystkich innych istniejących kosztów. |
costPerKilometer |
Określa koszt za kilometr stosowany do odległości pokonanej podczas wykonywania tego przejścia. Można ją dodać do dowolnej wartości |
distanceLimit |
Określa limit odległości pokonanej podczas tego przejścia. Od czerwca 2021 r. obsługiwane są tylko limity elastyczne. |
delay |
Określa opóźnienie występujące podczas wykonywania tego przejścia. To opóźnienie zawsze występuje po zakończeniu wizyty w źródle i przed rozpoczęciem wizyty w miejscu docelowym. |
ShipmentTypeIncompatibility
Określa niezgodności między przesyłkami w zależności od ich typu. Wyświetlanie niezgodnych przesyłek na tej samej trasie jest ograniczone w zależności od trybu niezgodności.
| Zapis JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| Pola | |
|---|---|
types[] |
Lista niezgodnych typów. Dwa przesyłki mające różne |
incompatibilityMode |
Tryb zastosowany do niezgodności. |
IncompatibilityMode
Tryby określające, jak ograniczone jest wyświetlanie niekompatybilnych 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 nigdy używać. |
NOT_PERFORMED_BY_SAME_VEHICLE |
W tym trybie 2 przesyłki o niezgodnych typach nigdy nie mogą być przewożone tym samym pojazdem. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
W tym trybie 2 przesyłki o niezgodnych typach nigdy nie mogą znajdować się w tym samym pojeździe w tym samym czasie:
|
ShipmentTypeRequirement
Określa wymagania dotyczące przesyłek na podstawie ich typu (shipmentType). Szczegóły wymagania są definiowane przez tryb wymagania.
| Zapis JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| Pola | |
|---|---|
requiredShipmentTypeAlternatives[] |
Lista alternatywnych typów dostawy wymaganych przez |
dependentShipmentTypes[] |
Wszystkie przesyłki z typem w polu UWAGA: łańcuchy wymagań, w których |
requirementMode |
Tryb zastosowany do wymagania. |
RequirementMode
Tryby określające wygląd przesyłek zależnych na trasie.
| Wartości w polu enum | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Tryb wymagania nieokreślony. Tej wartości nie należy nigdy używać. |
PERFORMED_BY_SAME_VEHICLE |
W tym trybie wszystkie przesyłki „zależne” muszą być przewożone tym samym pojazdem co co najmniej jedna z przesyłek „wymaganych”. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
W trybie Odbiór przesyłki „zależnej” musi zatem spełniać jeden z tych warunków:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Tak samo jak wcześniej, z tym że przesyłki „zależne” muszą mieć w momencie dostawy przesyłkę „wymaganą” w pojeździe. |
PrecedenceRule
Reguła pierwszeństwa między 2 zdarzeniami (każde zdarzenie to odbiór lub dostawa przesyłki): „drugie” zdarzenie musi się rozpocząć co najmniej offsetDuration po rozpoczęciu „pierwszego” zdarzenia.
Kilka zależności może odnosić się do tych samych (lub powiązanych) zdarzeń, np. „odbiór B następuje po dostawie A” i „odbiór C następuje po odbiorze B”.
Ponadto pierwszeństwo ma zastosowanie tylko wtedy, gdy obie przesyłki są realizowane, a w przeciwnym razie jest ignorowane.
| Zapis JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| Pola | |
|---|---|
firstIsDelivery |
Wskazuje, czy zdarzenie „first” jest dostawą. |
secondIsDelivery |
Wskazuje, czy „drugie” zdarzenie to dostawa. |
offsetDuration |
Różnica między zdarzeniem „pierwszym” a „drugim”. Może być ujemna. |
firstIndex |
Indeks przesyłki zdarzenia „first”. To pole musi być określone. |
secondIndex |
Indeks przesyłki zdarzenia „drugiego”. To pole musi być określone. |