Rozwiązanie wstawione w żądaniu wraz z informacjami o tym, które wizyty muszą być ograniczane, a także o tym, w jaki sposób.
Zapis JSON |
---|
{ "routes": [ { object ( |
Pola | |
---|---|
routes[] |
Trasy rozwiązania 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 w kategorii |
skippedShipments[] |
Pominięto dostawę roztworu do wstrzyknięcia. Niektóre z nich mogą być pomijane w pierwotnym rozwiązaniu. Zobacz pole |
constraintRelaxations[] |
W przypadku 0 lub większej liczby grup pojazdów określa, kiedy i w jakim stopniu chcesz złagodzić ograniczenia. Jeśli to pole jest puste, wszystkie trasy pojazdów, które nie są puste, są w pełni ograniczone. |
ConstraintRelaxation
W przypadku grupy pojazdów określa, na jakim poziomie i na jakim poziomie ograniczenia dotyczące wizyt zostaną złagodzone. Przesyłki wymienione w polu skipped_shipment
można pominąć, tzn. nie można ich zrealizować.
Zapis JSON |
---|
{
"relaxations": [
{
object ( |
Pola | |
---|---|
relaxations[] |
Wszystkie złagodzenia ograniczeń dotyczących wizyt, które będą stosowane w przypadku wizyt na trasach z pojazdami w: |
vehicleIndices[] |
Określa indeksy pojazdów, do których obowiązuje ograniczenie liczby wizyt Indeks pojazdu jest mapowany tak samo jak |
Relaks
Jeśli pole relaxations
jest puste, czas rozpoczęcia i sekwencja wszystkich wizyt w dniu routes
są w pełni ograniczone i nie można wstawiać ani dodawać nowych wizyt do tych tras. Również godzina rozpoczęcia i zakończenia podróży w: routes
jest w pełni ograniczona, chyba że pojazd jest pusty (tzn. nie odnotowaliśmy wizyt, a parametr usedIfRouteIsEmpty
ma w modelu wartość fałsz).
relaxations(i).level
określa poziom złagodzenia ograniczenia stosowany do wizyty #j, która spełnia:
route.visits(j).start_time >= relaxations(i).threshold_time
ORAZj + 1 >= relaxations(i).threshold_visit_count
Podobnie jest w przypadku uruchomienia pojazdu łagodnego do stanu relaxations(i).level
, jeśli spełnia następujące warunki:
vehicleStartTime >= relaxations(i).threshold_time
ORAZrelaxations(i).threshold_visit_count == 0
i koniec pojazdu ma status „relaxations(i).level
”, jeśli spełnia:vehicleEndTime >= relaxations(i).threshold_time
ORAZroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Aby zastosować poziom relaksacyjny, jeśli wizyta spełnia thresholdVisitCount
LUB thresholdTime
, dodaj 2 elementy relaxations
z tym samym ustawieniem level
: jeden ma ustawiony tylko thresholdVisitCount
, a drugi tylko thresholdTime
. Jeśli wizyta spełnia warunki wielu relaxations
, obowiązuje poziom najbardziej relaksujący. W rezultacie, od początku przejazdu przez wyznaczoną trasę do końca pojazdu, poziom relaksu staje się bardziej rozluźniony: tzn. poziom relaksu nie maleje w miarę pokonywania trasy.
Czas i sekwencja wizyt na trasie, które nie spełniają warunków progowych dowolnego elementu relaxations
, są w pełni ograniczone i nie można ich wstawić do tych sekwencji. Dodatkowo, jeśli początek lub koniec pojazdu nie spełnia warunków jakiegokolwiek relaksu, czas jest ustalany, chyba że pojazd jest pusty.
Zapis JSON |
---|
{
"level": enum ( |
Pola | |
---|---|
level |
Poziom złagodzenia ograniczenia, który obowiązuje, gdy spełnione są warunki na poziomie |
thresholdTime |
Czas, o którym można zastosować złagodzenie Sygnatura czasowa w formacie „Zulu” RFC3339 UTC z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: |
thresholdVisitCount |
Liczba wizyt, po których lub których można zastosować złagodzenie Jeśli jest to |
Poziom
Wyraża różne poziomy złagodzenia ograniczeń, które mają zastosowanie do wizyty i tych, które następują po spełnieniu warunków progowych.
Poniższe wyliczenie jest uporządkowane w kolejności rosnącego relaksu.
Wartości w polu enum | |
---|---|
LEVEL_UNSPECIFIED |
Pośredni domyślny poziom relaksacji: brak ograniczeń, tzn. wszystkie odwiedziny są w pełni ograniczone. Tej wartości nie można używać bezpośrednio w polu |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Godziny rozpoczęcia i zakończenia wizyty będą łagodne, ale każda wizyta pozostaje powiązana z tym samym pojazdem i należy przestrzegać sekwencji wizyt – między nimi ani przed nimi nie można wstawić wizyty. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Tak samo jak w przypadku witryny RELAX_VISIT_TIMES_AFTER_THRESHOLD , ale sekwencja wizyt jest także spokojna: wizyty są nadal powiązane z pojazdem. |
RELAX_ALL_AFTER_THRESHOLD |
Tak samo jak w przypadku RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , ale pojazd jest również spokojny: po upływie limitu czasu lub później wizyty są całkowicie bezpłatne i mogą nie zostać zrealizowane. |