Rozwiązanie podane w żądaniu, w tym informacje o tym, które wizyty należy ograniczyć i jak należy to robić.
Zapis JSON |
---|
{ "routes": [ { object ( |
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: |
skippedShipments[] |
Pominięto dostawy roztworu do wstrzykiwania. Niektóre z nich mogą zostać pominięte w pierwotnym rozwiązaniu. Zobacz pole |
constraintRelaxations[] |
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ć.
Zapis JSON |
---|
{
"relaxations": [
{
object ( |
Pola | |
---|---|
relaxations[] |
Wszystkie złagodzenia ograniczeń dotyczących wizyt, które będą miały zastosowanie do wizyt na trasach z pojazdami w: |
vehicleIndices[] |
Określa indeksy pojazdów, do których ma zastosowanie ograniczenie wizyty Indeks pojazdu jest mapowany tak samo jak |
Relaks
Jeśli pole relaxations
jest puste, godzina rozpoczęcia i sekwencja wszystkich wizyt w dniu routes
są w pełni ograniczone i nie można dodawać do tych tras nowych wizyt ani dodawać do nich 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ść usedIfRouteIsEmpty
w modelu ma wartość Fałsz).
relaxations(i).level
określa poziom złagodzenia ograniczeń stosowany do wizyty #j, która jest spełniona:
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:
vehicleStartTime >= relaxations(i).threshold_time
ORAZrelaxations(i).threshold_visit_count == 0
, a koniec pojazdu jest ustawiony narelaxations(i).level
, jeśli są spełnione:vehicleEndTime >= relaxations(i).threshold_time
ORAZroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Aby zastosować poziom relaksacji, jeśli wizyta spełnia thresholdVisitCount
LUB thresholdTime
, dodaj 2 obiekty relaxations
z tymi samymi wartościami level
: jeden z ustawionym tylko parametrem thresholdVisitCount
, a drugi z tylko thresholdTime
. 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 sekwencja wizyt na trasie, które nie spełniają warunków progu żadnego z relaxations
, są w pełni ograniczone i nie można do nich dodawać żadnych wizyt. Ponadto, jeśli początek lub koniec pojazdu nie spełnia warunków relaksacji, czas jest ustalony, chyba że pojazd jest pusty.
Zapis JSON |
---|
{
"level": enum ( |
Pola | |
---|---|
level |
Poziom złagodzenia ograniczeń stosowany, gdy spełnione są warunki na poziomie |
thresholdTime |
Czas, po którym lub po upływie tego czasu może zostać zastosowane złagodzenie Sygnatura czasowa w RFC3339 UTC „Zulu” z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: |
thresholdVisitCount |
Liczba wizyt, podczas których lub po upływie których może zostać zastosowane złagodzenie 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 |
Tak samo jak w przypadku witryny RELAX_VISIT_TIMES_AFTER_THRESHOLD , ale sekwencja wizyt jest też spokojna: wizyty są powiązane z pojazdem użytkownika. |
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. |