- Zapis JSON
- Wysyłka
- VisitRequest
- LatLng
- Waypoint
- Lokalizacja
- TimeWindow
- Pojazd
- Tryb podróży
- RouteModifiers
- VehicleInfo
- TrailerInfo
- HazardousGoodsType
- UnloadingPolicy
- LoadLimit
- Interwał
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Wiersz
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- Tryb wymagań
- PrecedenceRule
Model dostawy obejmuje zestaw dostaw, który musi być realizowany przez zestaw pojazdów przy minimalizacji całkowitego 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;
| Zapis JSON |
|---|
{ "shipments": [ { object ( |
| Pola | |
|---|---|
shipments[] |
Zestaw dostaw, które muszą być wykonane w ramach modelu. |
vehicles[] |
Zestaw pojazdów, których można używać do odwiedzin. |
globalStartTime |
Globalny czas rozpoczęcia i zakończenia modelu: żadne okresy spoza tego zakresu nie mogą zostać uznane za prawidłowe. Przedział czasu modelu musi być krótszy niż rok, tzn. odstępy Gdy używasz pól Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
globalEndTime |
Jeśli nie zostanie ustawiona, domyślnie używana jest data 1 stycznia 1971 r., godzina 00:00:00 czasu UTC (czyli 31536000 sekund, 0 nanosekund). Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
globalDurationCostPerHour |
„Całkowity czas trwania” ogólnego planu to różnica między najwcześniejszym skutecznym czasem rozpoczęcia a najpóźniejszym skutecznym czasem 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. Te koszty muszą być wyrażone w tych samych jednostkach co |
durationDistanceMatrices[] |
Określa macierze czasu trwania i odległości używane w modelu. Jeśli to pole jest puste, zamiast niego używane są odległości na mapach Google lub geodezyjne, w zależności od wartości pola Przykłady użycia:
|
durationDistanceMatrixSrcTags[] |
Tagi definiujące źródła czasu trwania oraz macierzy odległości; Tagi odpowiadają elementom |
durationDistanceMatrixDstTags[] |
Tagi określające miejsca docelowe macierzy czasu i odległości; Tagi odpowiadają elementom |
transitionAttributes[] |
Dodano atrybuty przejścia do modelu. |
shipmentTypeIncompatibilities[] |
Zestawy niezgodnych typów przesyłki (patrz |
shipmentTypeRequirements[] |
zestawy wymagań |
precedenceRules[] |
Zestaw reguł pierwszeństwa, które muszą być egzekwowane w modelu. |
maxActiveVehicles |
Ogranicza maksymalną liczbę aktywnych pojazdów. Pojazd jest aktywny, jeśli na jego 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ć dodatni. |
Wysyłka
Dostawa pojedynczego produktu, od odbioru do jednej dostawy. Aby przesyłka została uznana za wykonaną, unikalny pojazd musi odwiedzić jedno z miejsc odbioru (i odpowiednio zmniejszyć ilość zapasowego), a następnie odwiedzić jedno z miejsc dostawy (i w związku z tym odpowiednio zwiększyć pojemność zapasową).
| Zapis JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Pola | |
|---|---|
displayName |
Zdefiniowana przez użytkownika nazwa wyświetlana przesyłki. Może on zawierać maksymalnie 63 znaki i znaki UTF-8. |
pickups[] |
Zestaw alternatywnych opcji odbioru powiązanych z dostawą. Jeśli go nie podasz, pojazd musi udać się tylko do lokalizacji odpowiadającej dostawcom. |
deliveries[] |
Zestaw alternatyw dostawy powiązanych z przesyłką. Jeśli go nie podasz, pojazd musi udać się tylko do lokalizacji odpowiadającej punktom odbioru. |
loadDemands |
wymagania dotyczące ładunku (np. waga, objętość, liczba palet itp.); Klucze na mapie powinny być identyfikatorami opisującymi rodzaj danego obciążenia, najlepiej uwzględniając też jednostki. Na przykład: „weight_kg”, „volume_gallons”, „pallet_count” itp. Jeśli dany klucz nie pojawia się na mapie, odpowiadający mu ładunek jest uważany za null. Obiekt zawierający listę par |
allowedVehicleIndices[] |
Zestaw pojazdów, które mogą zrealizować tę przesyłkę. Jeśli pole jest puste, mogą go wykonywać wszystkie pojazdy. Pojazdy są identyfikowane przez ich numer na liście |
costsPerVehicle[] |
Określa koszt poniesiony podczas dostawy przesyłki przez dany pojazd. Jeśli jest podany, musi zawierać 1 z tych elementów:
Koszty muszą być podane w tej samej jednostce co |
costsPerVehicleIndices[] |
Indeksy pojazdów, do których ma zastosowanie |
pickupToDeliveryAbsoluteDetourLimit |
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 jednej przesyłki są określone zarówno względne, jak i bezwzględne limity, w przypadku każdej możliwej pary odbioru/dostawy stosuje się bardziej restrykcyjny limit. Od października 2017 r. objazdy są obsługiwane tylko wtedy, gdy czas podróży nie zależy od pojazdów. Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
pickupToDeliveryTimeLimit |
Określa maksymalny czas od rozpoczęcia odbioru do rozpoczęcia dostawy przesyłki. Jeśli jest podany, musi być dodatni, a przesyłka musi zawierać co najmniej odbiór i dostawę. 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 przestrzegać obu specyfikacji. Czas trwania w sekundach składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
shipmentType |
Niepusty ciąg znaków określający „typ” tej przesyłki. Za pomocą tej funkcji można definiować niezgodności lub wymagania dotyczące Różnica w porównaniu z |
label |
Określa etykietę dla tej przesyłki. Ta etykieta jest raportowana w odpowiedzi w |
ignore |
Jeśli wartość to prawda, pomiń tę dostawę, ale nie stosuj Ignorowanie dostawy powoduje błąd weryfikacji, jeśli w modelu występują jakiekolwiek Ignorowanie dostawy realizowanej w ramach |
penaltyCost |
Jeśli dostawa nie zostanie ukończona, kara zostanie dodana do całkowitego kosztu tras. Przesyłka jest uważana za ukończoną, jeśli wybrano jedną z dostępnych opcji odbioru lub dostawy. Koszt może być wyrażony w tych samych jednostkach co wszystkie inne pola związane z kosztami w modelu i musi być dodatni. WAŻNE: jeśli nie określisz tej kary, zostanie ona uznana za nieskończoną, co oznacza, że przesyłka musi zostać zrealizowana. |
pickupToDeliveryRelativeDetourLimit |
Określa maksymalny 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. Niech na przykład t będzie najkrótszym czasem potrzebnym na dotarcie z wybranego miejsca odbioru bezpośrednio do wybranego miejsca dostawy. Następnie ustawienie zasady Jeśli w przypadku jednej przesyłki są określone zarówno względne, jak i bezwzględne limity, w przypadku każdej możliwej pary odbioru/dostawy stosuje się bardziej restrykcyjny limit. Od 2017 r. objazdy są obsługiwane tylko wtedy, gdy czas podróży nie zależy od pojazdów. |
VisitRequest
Prośba o wizytację, którą można wykonać pojazdem: ma ona geolokalizację (lub 2 lokalizacje, patrz poniżej), godziny otwarcia i zamknięcia reprezentowane przez okna czasowe oraz czas trwania usługi (czas spędzony przez pojazd od momentu przyjazdu do odbioru lub dostarczenia towarów).
| Zapis JSON |
|---|
{ "arrivalLocation": { object ( |
| Pola | |
|---|---|
arrivalLocation |
Geolokalizacja miejsca, do którego dociera pojazd podczas wykonywania tej |
arrivalWaypoint |
Punkt orientacyjny, w którym pojazd dociera podczas wykonywania tego |
departureLocation |
Lokalizacja geograficzna, z której pojazd odjeżdża po ukończeniu tego celu: |
departureWaypoint |
Punkt pośredni, do którego odjeżdża pojazd, gdy ukończysz ten kurs ( |
tags[] |
Określa tagi dołączone do żądania wizyty. Pustych lub powtarzających się ciągów znaków nie można używać. |
timeWindows[] |
Okna czasowe, które ograniczają czas przybycia podczas wizyty. Pamiętaj, że pojazd może wyjechać poza okno czasu przyjazdu, czyli czas przyjazdu + czas trwania nie muszą mieścić się w oknie czasowym. 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 Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
cost |
Koszt obsługi tej prośby o wizytę w przypadku trasy pojazdu. Można go używać do płacenia różnych kosztów za odbiór lub dostawę przesyłki. Te koszty muszą być wyrażone w tych samych jednostkach co |
loadDemands |
Wczytaj wymagania dotyczące tego żądania wizyty. To pole jest podobne do pola Obiekt zawierający listę par |
visitTypes[] |
Określa typy wizyt. Możesz go wykorzystać, aby zarezerwować dodatkowy czas wymagany na dokonanie tej wizyty (patrz Typ może się pojawić tylko raz. |
label |
Określa etykietę elementu |
LatLng
Obiekt reprezentujący parę szerokości i długości geograficznej. Jest ona wyrażona jako para podwójnej precyzji reprezentująca stopnie szerokości i długości geograficznej. Jeśli nie określono inaczej, obiekt musi być zgodny ze standardem WGS84. Wartości muszą mieścić się w normalizowanych zakresach.
| Zapis JSON |
|---|
{ "latitude": number, "longitude": number } |
| Pola | |
|---|---|
latitude |
Szerokość geograficzna w stopniach. Musi mieścić się w zakresie [-90,0, +90,0]. |
longitude |
Długość geograficzna w stopniach. Musi mieścić się w zakresie od -180,0 do +180,0]. |
Punkt pośredni
Obejmuje punkt pośredni. Punkty pośrednie oznaczają miejsca przyjazdu i odjazdu dotyczące żądań wizyty oraz miejsca początkowe i końcowe dotyczące pojazdów.
| Zapis JSON |
|---|
{ "sideOfRoad": boolean, // Union field |
| Pola | |
|---|---|
sideOfRoad |
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 trybie podróży „SPACER”. |
Pole sumy location_type. różne sposoby przedstawiania lokalizacji; location_type może być tylko jednym z tych elementów: |
|
location |
Punkt określony za pomocą współrzędnych geograficznych, w tym opcjonalny nagłówek. |
placeId |
Identyfikator miejsca POI powiązany z punktem pośrednim. |
Lokalizacja
Zawiera lokalizację (punkt geograficzny i opcjonalnie nagłówek).
| Zapis JSON |
|---|
{
"latLng": {
object ( |
| Pola | |
|---|---|
latLng |
Współrzędne geograficzne punktu kontrolnego. |
heading |
Kierunek kompasu związany z kierunkiem ruchu. Ta wartość służy do określania strony drogi na potrzeby odbioru i zwrotu. Nagłówek może przyjmować wartości z zakresu od 0 do 360, gdzie 0 oznacza kierunek kierunku północnego, 90 określa kierunek kierunku północnego itd. |
TimeWindow
Okna czasowe ograniczają czas trwania zdarzenia, np. czas przybycia w ramach wizyty lub czas rozpoczęcia i zakończenia korzystania z pojazdu.
Wartości graniczne sztywnego przedziału czasu, czyli startTime i endTime, egzekwują najwcześniejszy i najnowszy czas zdarzenia, na przykład startTime <= event_time <=
endTime. Dolna granica łagodnego okresu czasu (softStartTime) określa preferencję, aby zdarzenie miało miejsce softStartTime lub później przez naliczanie kosztu proporcjonalnie do czasu, jaki upłynął przed wystąpieniem zdarzenia softStartTime. Górna granica okna czasowego, softEndTime, wyraża preferencję, aby zdarzenie miało miejsce w czasie lub przed czasem softEndTime, przynosząc koszt proporcjonalny do czasu, jaki upłynie od tego momentu. Wartości startTime, endTime, softStartTime i softEndTime powinny mieścić się w globalnych limitach czasowych (patrz ShipmentModel.global_start_time i ShipmentModel.global_end_time) oraz spełniać te warunki:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
| Zapis JSON |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| Pola | |
|---|---|
startTime |
Trudny czas rozpoczęcia okna czasowego. Jeśli nie podasz żadnej wartości, zostanie użyta wartość Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
endTime |
Trudny czas zakończenia przedziału czasowego. Jeśli nie określono inaczej, wartość zostanie ustawiona na Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
softStartTime |
Godzina łagodnego rozpoczęcia przedziału czasu. Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
softEndTime |
Czas zakończenia przedziału czasu (miękki). Sygnatura czasowa w formacie RFC3339 UTC „Zulu” z rozdzielczością nanosekundy i maksymalnie 9 cyframi po przecinku. Przykłady: |
costPerHourBeforeSoftStartTime |
Koszt na godzinę dodany do innych kosztów w modelu, jeśli zdarzenie wystąpiło przed softStartTime, obliczany jako: Ten koszt musi być dodatni, a pole można ustawić tylko wtedy, gdy skonfigurowano softStartTime. |
costPerHourAfterSoftEndTime |
Koszt za godzinę dodany do innych kosztów w modelu, jeśli zdarzenie wystąpi po Koszt musi być dodatni, a pole można ustawić tylko wtedy, gdy ustawiono |
Pojazd
Modelowanie pojazdu w przypadku problemu z dostawą. Rozwiązanie problemu z dostawą spowoduje utworzenie trasy dla tego pojazdu rozpoczynającej się od startLocation i kończącej na endLocation. Trasa jest sekwencją wizyt (patrz ShipmentRoute).
| Zapis JSON |
|---|
{ "displayName": string, "travelMode": enum ( |
| Pola | |
|---|---|
displayName |
Zdefiniowana przez użytkownika wyświetlana nazwa pojazdu. Może on zawierać maksymalnie 63 znaki i znaki UTF-8. |
travelMode |
Tryb podróży, który wpływa na drogi, z których może korzystać pojazd, i jego prędkość. Zobacz też |
routeModifiers |
Zbiór warunków, które należy spełnić, a które wpływają na sposób obliczania tras dla danego pojazdu. |
startLocation |
Lokalizacja geograficzna, w której pojazd rozpoczyna się przed odebraniem przesyłki. Jeśli go nie podasz, pojazd rozpocznie się przy pierwszym odbiorze. Jeśli model dostawy zawiera macierze czasu i odległości, nie można określić parametru |
startWaypoint |
Punkt pośredni reprezentujący lokalizację geograficzną, w której pojazd rozpoczyna się przed odebraniem przesyłki. Jeśli nie określono ani |
endLocation |
Lokalizacja geograficzna, w której kończy się pojazd ( |
endWaypoint |
Punkt pośredni reprezentujący lokalizację geograficzną, w której kończy się pojazd po zakończeniu ostatniego |
startTags[] |
Określa tagi dołączone do początku trasy pojazdu. Pustych lub powtarzających się ciągów znaków nie można używać. |
endTags[] |
Określa tagi dołączone na końcu trasy pojazdu. Puste lub zduplikowane ciągi znaków są niedozwolone. |
startTimeWindows[] |
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 powtarzającego się pola muszą być rozłączne, co oznacza, że żaden z nich nie może się pokrywać z innym ani być sąsiadować z innym. 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 Przedziały czasu należące do tego samego powtarzającego się pola muszą być rozłączne, co oznacza, że żaden z nich nie może się pokrywać z innym ani być sąsiadować z innym. Muszą być ułożone w porządku chronologicznym. Wartości |
unloadingPolicy |
Zasady rozładunku obowiązujące w pojazdach. |
loadLimits |
Pojemność pojazdu (np. waga, objętość, liczba palet). Klucze na mapie to identyfikatory typu wczytania zgodne z kluczami pola Obiekt zawierający listę par |
costPerHour |
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życie usługi |
costPerTraveledHour |
Koszt godziny przejazdu pojazdu. Ten koszt jest stosowany tylko do czasu przejazdu po trasie (czyli podanego w |
costPerKilometer |
Koszt za kilometr trasy pojazdu. Ten koszt jest stosowany do odległości podanej w |
fixedCost |
Stałe koszty stosowane, jeśli pojazd jest używany do obsługi przesyłki. |
usedIfRouteIsEmpty |
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 wartość to prawda, pojazd przemieszcza się z początku do miejsca docelowego nawet wtedy, gdy nie obsługuje żadnych przesyłek, a koszty czasu i odległości wynikające z początku podróży są brane pod uwagę. W przeciwnym razie nie będzie podróżować z początku do miejsca docelowego, a dla tego pojazdu nie zaplanowano żadnych |
routeDurationLimit |
Limit został zastosowany do łącznego czasu trwania trasy pojazdu. W danym |
travelDurationLimit |
Limit został zastosowany do czasu podróży na trasie pojazdu. W danym okresie ( |
routeDistanceLimit |
Ograniczenie stosowane do całkowitej odległości przebytej przez pojazd. W danym |
extraVisitDurationForVisitType |
Określa mapowanie z ciągów visitTypes na czasy trwania. Czas trwania jest uzupełnieniem Jeśli prośba o wizytę ma kilka typów, na mapie zostanie dodany czas trwania dla każdego z nich. Obiekt zawierający listę par |
breakRule |
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 raportowana w odpowiedzi jako |
ignore |
Jeśli wartość Jeśli przesyłka jest realizowana przez pojazd ignorowany w definicji Jeśli dostawa jest realizowana przez pojazd ignorowany w |
travelDurationMultiple |
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 koszt, jeśli określono OSTRZEŻENIE: czas podróży zostanie zaokrąglony do najbliższej sekundy po zastosowaniu wielokrotności, ale przed wykonaniem jakichkolwiek operacji liczbowych, dlatego mała wielokrotność może spowodować utratę dokładności. Zobacz też |
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 trasom pieszym. |
TRUCK |
Podróż ciężarówką. Ten tryb wiąże się z ograniczeniami fizycznymi i prawnymi. |
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 w Google Maps Platform. Więcej informacji znajdziesz na stronie https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers.
| Zapis JSON |
|---|
{
"vehicleInfo": {
object ( |
| Pola | |
|---|---|
vehicleInfo |
Określa informacje o pojeździe. |
VehicleInfo
Zawiera informacje o pojeździe, np. informacje o ciężarówce.
| Zapis JSON |
|---|
{ "totalAxleCount": integer, "totalHeightMm": string, "totalLengthMm": string, "totalWidthMm": string, "totalWeightKg": string, "trailerInfo": [ { object ( |
| Pola | |
|---|---|
totalAxleCount |
Łączna liczba osi. Musi wynosić ≥ 2. Musi być ustawiony na przewóz drogą lądową lub naczepą. Dotyczy tylko środka transportu |
totalHeightMm |
Wysokość pojazdu, w tym wysokość przyczepy. Musi być ustawione dla ciężarówek lub przyczep. Dotyczy tylko środka transportu |
totalLengthMm |
Długość pojazdu uwzględniająca długość przyczep przyczepnych. Musi być ustawiony na przewóz drogą lądową lub naczepą. Dotyczy tylko środka transportu |
totalWidthMm |
Szerokość pojazdu, w tym szerokość przyczep. Musi być ustawione dla ciężarówek lub przyczep. Dotyczy tylko środka transportu |
totalWeightKg |
Ciężar pojazdu uwzględniający ciężar wszystkich przyczep. W tym kontekście waga oznacza rzeczywistą wagę, a nie klasę wagową. Musi być ustawione dla ciężarówek lub przyczep. Dotyczy tylko środka transportu |
trailerInfo[] |
Dotyczy tylko trybu podróży |
hazardousGoodsTypes[] |
Lista materiałów niebezpiecznych przewożonych w pojeździe (jeśli takie są). |
TrailerInfo
Informacje o poszczególnych przyczepach zamontowanych w pojeździe. W przypadku transportu drogowego należy podać długości przyczep. Łączna liczba atrybutów musi obejmować atrybuty wszystkich przyczep. Na przykład totalHeightMm musi zawsze mieć wartość trailerInfo.height_mm lub większą.
| Zapis JSON |
|---|
{ "lengthMm": string } |
| Pola | |
|---|---|
lengthMm |
Długość zwiastuna. |
HazardousGoodsType
Rodzaje różnych niebezpiecznych materiałów.
| Wartości w polu enum | |
|---|---|
HAZARDOUS_GOODS_TYPE_UNSPECIFIED |
Nie określono typu towarów niebezpiecznych. |
EXPLOSIVES |
materiały wybuchowe. |
GASES |
Gazy. |
FLAMMABLE |
Towary łatwopalne. |
COMBUSTIBLE |
Towary łatwopalne. |
ORGANIC |
produkty ekologiczne; |
POISON |
towary trujące; |
RADIOACTIVE |
Towary radioaktywne. |
CORROSIVE |
Produkty żrące. |
ASPIRATION_HAZARD |
Produkty niebezpieczne w przypadku aspiracji. |
ENVIRONMENTAL_HAZARD |
Towary niebezpieczne dla środowiska. |
OTHER |
Inne typy towarów. |
UnloadingPolicy
Zasady dotyczące sposobu rozładunku pojazdu. Dotyczy tylko przesyłek z odbiorem i dostawą.
Inne przesyłki mogą być dostarczane w dowolnym miejscu na trasie niezależnie od unloadingPolicy.
| Wartości w polu enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Nieokreślona polityka rozładunku; dostawy muszą odbywać się po odpowiednich odbiorach. |
LAST_IN_FIRST_OUT |
Dostawy muszą być w odwrotnej kolejności do odbioru |
FIRST_IN_FIRST_OUT |
Dostawy muszą być w tym samym zamówieniu co odbiór |
LoadLimit
Określa limit ładunku dla pojazdu, np. „ten samochód może przewozić maksymalnie 3500 kg”. Zobacz loadLimits.
| Zapis JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Pola | |
|---|---|
softMaxLoad |
Miękki limit obciążenia. Zobacz |
costPerUnitAboveSoftMax |
Jeśli obciążenie na trasie tego pojazdu kiedykolwiek przekroczy |
startLoadInterval |
Dopuszczalny przedział ładowania pojazdu na początku trasy. |
endLoadInterval |
Dopuszczalny czas obciążenia pojazdu na końcu trasy. |
maxLoad |
Maksymalna akceptowalna ilość obciążenia. |
Interwał
Przedział dopuszczalnych wartości obciążenia.
| Zapis JSON |
|---|
{ "min": string, "max": string } |
| Pola | |
|---|---|
min |
minimalny dopuszczalny ładunek; Wartość musi być ≥ 0. Jeśli obie są określone, |
max |
Maksymalne dopuszczalne obciążenie. Wartość musi być ≥ 0. Jeśli nie określisz maksymalnego obciążenia, wiadomość nie będzie nakładać żadnych ograniczeń. Jeśli oba parametry są określone, wartość |
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.
| Zapis JSON |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| Pola | |
|---|---|
maxDuration |
Stały limit ogranicza czas trwania do maksymalnie maxDuration. Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
softMaxDuration |
Ograniczony limit nie egzekwuje maksymalnego czasu trwania, ale jego naruszenie powoduje naliczanie opłat za trasę. Ten koszt jest sumowany z innymi kosztami zdefiniowanymi w modelu, przy użyciu tej samej jednostki. Jeśli została określona, Czas trwania w sekundach składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
quadraticSoftMaxDuration |
miękki limit, który nie narzuca maksymalnego czasu trwania, ale w przypadku jego przekroczenia powoduje, że trasa powoduje koszt proporcjonalny do kwadratu czasu; Ten koszt jest sumowany z innymi kosztami zdefiniowanymi w modelu, przy użyciu tej samej jednostki. Jeśli jest zdefiniowana, wartość
Czas trwania w sekundach składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
costPerHourAfterSoftMax |
Koszt za godzinę po przekroczeniu progu Koszt musi być nieujemny. |
costPerSquareHourAfterQuadraticSoftMax |
Koszt za godzinę kwadratową, który jest naliczany, gdy przekroczony zostanie próg Jeśli czas trwania jest poniżej progu, dodatkowy koszt wynosi 0. W innych przypadkach koszt zależy od czasu trwania w następujący sposób: Koszt nie może być ujemny. |
DistanceLimit
Limit określający maksymalną odległość, jaką można przebyć. Może być twarda lub miękka.
Jeśli zdefiniowany jest miękki limit, wartości softMaxMeters i costPerKilometerAboveSoftMax muszą być zdefiniowane i nieujemne.
| Zapis JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
| Pola | |
|---|---|
maxMeters |
Twardy limit ogranicza odległość wynoszącą maksymalnie maxMeters. Limit nie może być ujemny. |
softMaxMeters |
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ą. Zdefiniowana wartość softMaxMeters musi być mniejsza niż maxMeters i nie może być ujemna. |
costPerKilometerAboveSoftMax |
Koszt za kilometr, jeśli odległość przekracza limit Koszt musi być nieujemny. |
BreakRule
Reguły generowania przerw na przejazd pojazdem (np. przerwy na lunch). Przerwa to ciągły okres czasu, w którym pojazd pozostaje nieczynny w swojej bieżącej pozycji i nie może wykonywać żadnych wizyt. Przerwa może wystąpić:
- podczas przemieszczania się między 2 wizytami (co obejmuje czas bezpośrednio przed wizytą lub bezpośrednio 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 (samochód nie może się uruchomić w trakcie przerwy), w którym to przypadku nie wpływa na czas uruchomienia pojazdu.
- lub po zakończeniu korzystania z pojazdu (w tym przypadku również podaj godzinę zakończenia korzystania z pojazdu).
| Zapis JSON |
|---|
{ "breakRequests": [ { object ( |
| Pola | |
|---|---|
breakRequests[] |
Kolejność przerw. Zobacz wiadomość: |
frequencyConstraints[] |
Mogą obowiązywać różne |
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 (earliestStartTime / latestStartTime) mogą się pokrywać, ale muszą być zgodne z zamówieniem (jest to zaznaczone).
| Zapis JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Pola | |
|---|---|
earliestStartTime |
Wymagane. Dolna granica (włącznie) na początku przerwy. Sygnatura czasowa w formacie UTC „Zulu” zdefiniowanym w dokumencie RFC 3339, z dokładnością do nanosekund i maksymalnie 9 miejsc po przecinku. Przykłady: |
latestStartTime |
Wymagane. Górna granica (włącznie) na początku przerwy. Sygnatura czasowa w formacie UTC „Zulu” zdefiniowanym w dokumencie RFC 3339, z dokładnością do nanosekund i maksymalnie 9 miejsc po przecinku. Przykłady: |
minDuration |
Wymagane. Minimalny czas trwania przerwy. Musi być dodatni. Czas trwania w sekundach składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
FrequencyConstraint
Można też dodatkowo ograniczyć częstotliwość i czas trwania przerw określonych powyżej, narzucając minimalną częstotliwość przerwy, np. „Co 12 godzin musi być przerwa trwająca 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:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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 ten harmonogram uwzględnia przykład „1 godz. co 12 godz.”:
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 Czas trwania w sekundach składający się z maksymalnie dziewięciu cyfr po przecinku i kończący się „ |
maxInterBreakDuration |
Wymagane. Maksymalny dozwolony przedział czasu na trasie, który nie obejmuje co najmniej częściowej przerwy Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
DurationDistanceMatrix
Określa czas trwania i macierz odległości od miejsc początkowych wizyt i pojazdu do miejsc końcowych wizyt i pojazdu.
| Zapis JSON |
|---|
{
"rows": [
{
object ( |
| Pola | |
|---|---|
rows[] |
Określa wiersze macierzy czasu trwania i odległości. Musi się składać z tylu elementów: |
vehicleStartTag |
Tag określający, do których pojazdów ma zastosowanie ta tablica czasu trwania i 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ć inny element |
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ć taką samą liczbę elementów jak Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
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 |
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”).
| Zapis JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Pola | |
|---|---|
srcTag |
Tagi definiujące zbiór przejść (src->dst), do których mają zastosowanie te atrybuty. Wizyta w źródle lub uruchomienie pojazdu powoduje dopasowanie, jeśli pole |
excludedSrcTag |
Zobacz |
dstTag |
Wizyty w miejscu docelowym lub data zakończenia pojazdu pasują do tych, które |
excludedDstTag |
Zobacz |
cost |
Określa koszt przeprowadzenia tej zmiany. Jest on podawany w tych samych jednostkach co wszystkie inne koszty w modelu i nie może być ujemny. Jest doliczana do wszystkich innych istniejących kosztów. |
costPerKilometer |
Określa koszt na kilometr zastosowany do przebytej odległości podczas wykonywania tego przejścia. Dodaje się do wszystkich |
distanceLimit |
Określa limit pokonywanej odległości podczas wykonywania tego przejścia. Od 6 czerwca 2021 r. obsługiwane są tylko limity wstępne. |
delay |
Określa opóźnienie powstałe podczas wykonywania tego przejścia. Opóźnienie to zawsze następuje po zakończeniu wizyty źródłowej i przed jej rozpoczęciem. Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
ShipmentTypeIncompatibility
Określa niezgodności między dostawami w zależności od parametru deliveryType. Wyświetlanie niezgodnych przesyłek na tej samej trasie jest ograniczone ze względu na tryb niezgodności.
| Zapis JSON |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| Pola | |
|---|---|
types[] |
Lista niezgodnych typów. Dwie przesyłki, których |
incompatibilityMode |
Tryb został zastosowany do niezgodności. |
IncompatibilityMode
Tryby określające, jak ograniczać pojawianie się niezgodnych przesyłek na tej samej trasie.
| Wartości w polu enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Nieokreślony tryb niezgodności. Ta wartość nigdy nie powinna być używana. |
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 przesyłek na podstawie ich typu przesyłki. Szczegóły wymagań są definiowane przez tryb wymagań.
| Zapis JSON |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| Pola | |
|---|---|
requiredShipmentTypeAlternatives[] |
Lista alternatywnych typów przesyłek wymaganych w dokumencie |
dependentShipmentTypes[] |
Wszystkie przesyłki o typie podanym w polu UWAGA: łańcuchy wymagań, takie jak |
requirementMode |
Tryb zastosowany do wymagań. |
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ń. Tej wartości nie należy 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 przesyłka „wymagana”. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
W trybie Odbiór „zależnej” przesyłki musi więc mieć:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
To samo co wcześniej, z tą różnicą, że w momencie dostawy przesyłki „zależne” muszą mieć w pojeździe przesyłkę „wymaganą”. |
PrecedenceRule
Reguła pierwszeństwa między 2 zdarzeniami (każde zdarzenie to odbiór lub dostawa przesyłki): „drugie” zdarzenie musi rozpocząć się co najmniej offsetDuration s po rozpoczęciu „pierwszego”.
Kilka pierwszeństwa może odnosić się do tych samych (lub powiązanych) wydarzeń, np. „Odbiór B następuje po dostawie A” i „Odbiór C następuje po odbiorze B”.
Ponadto priorytety mają zastosowanie tylko wtedy, gdy obie przesyłki są realizowane, a w przeciwnym razie są ignorowane.
| Zapis JSON |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| Pola | |
|---|---|
firstIsDelivery |
Wskazuje, czy „pierwsze” zdarzenie to dostawa. |
secondIsDelivery |
Wskazuje, czy „drugie” zdarzenie to dostawa. |
offsetDuration |
Odstęp między zdarzeniami „first” i „second”. Może być ujemna. Czas w sekundach z maksymalnie 9 miejscami po przecinku, zakończony literą „ |
firstIndex |
Indeks dostawy „pierwszego” zdarzenia. To pole musi być określone. |
secondIndex |
Indeks dostawy „drugiego” zdarzenia. To pole musi być określone. |