Rozwiązanie wstrzyknięte w żądanie, w tym informacje o tym, które wizyty muszą być ograniczone i w jaki sposób.
Zapis JSON |
---|
{ "routes": [ { object ( |
Pola | |
---|---|
routes[] |
Trasy, którymi roztwór ma być podawany. Niektóre trasy mogą zostać pominięte w początkowym rozwiązaniu. Trasy i przesyłki pominięte muszą spełniać podstawowe założenia oparte na |
skipped |
Pominięte przesyłki rozwiązania do wstrzyknięcia. Niektóre z nich mogą zostać pominięte w pierwotnym rozwiązaniu. Zapoznaj się z polem |
constraint |
W przypadku co najmniej 1 grupy pojazdów określa, kiedy i w jakim stopniu można złagodzić 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, przy jakich wartościach progowych i o ile zostaną złagodzone ograniczenia dotyczące wizyt. Przesyłki wymienione w polu skipped_shipment
są przeznaczone do pominięcia, co oznacza, że nie można ich realizować.
Zapis JSON |
---|
{
"relaxations": [
{
object ( |
Pola | |
---|---|
relaxations[] |
Wszystkie łagodniejsze ograniczenia dotyczące wizyt, które będą obowiązywać w przypadku wizyt na trasach z pojazdami w |
vehicle |
Określa indeksy pojazdów, do których ma zastosowanie ograniczenie wizyt Indeks pojazdu jest mapowany tak samo jak |
Relaks
Jeśli relaxations
jest pusty, czas rozpoczęcia i kolejność wszystkich wizyt na routes
są całkowicie ograniczone, a do tych tras nie można dodawać nowych wizyt. Czas rozpoczęcia i zakończenia w elementach routes
jest też całkowicie ograniczony, chyba że pojazd jest pusty (czyli nie ma żadnych wizyt i w modelu element usedIfRouteIsEmpty
ma wartość false).
relaxations(i).level
określa poziom zniesienia ograniczeń zastosowany do wizyty #j, która spełnia te warunki:
route.visits(j).start_time >= relaxations(i).threshold_time
ORAZj + 1 >= relaxations(i).threshold_visit_count
Podobnie, uruchomienie pojazdu jest łagodzone do relaxations(i).level
, jeśli spełnia te kryteria:
vehicleStartTime >= relaxations(i).threshold_time
ORAZrelaxations(i).threshold_visit_count == 0
, a na końcu pojazdurelaxations(i).level
, jeśli spełnia te wymagania:vehicleEndTime >= relaxations(i).threshold_time
ORAZroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Aby zastosować poziom zrelaksowania, jeśli wizyta spełnia kryterium thresholdVisitCount
LUB thresholdTime
, dodaj 2 elementy relaxations
z tym samym elementem level
: jeden z ustawionym tylko parametrem thresholdVisitCount
, a drugi tylko parametrem thresholdTime
. Jeśli wizyta spełnia warunki wielu relaxations
, stosuje się najbardziej liberalny poziom. W efekcie od początku do końca przejazdu poziom relaksacji staje się coraz niższy: innymi słowy, nie maleje w miarę upływu czasu.
Czas i kolejność wizyt w trasach, które nie spełniają warunków progowych dotyczących żadnego relaxations
, są całkowicie ograniczone i nie można w tych sekwencjach wstawiać żadnych wizyt. Jeśli początek lub koniec okresu użytkowania pojazdu nie spełnia warunków żadnego poluzowania, czas jest stały, chyba że pojazd jest pusty.
Zapis JSON |
---|
{
"level": enum ( |
Pola | |
---|---|
level |
Poziom zniesienia ograniczenia, który ma zastosowanie, gdy warunki na poziomie |
threshold |
Czas, w którym lub po którym można zastosować 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: |
threshold |
Liczba wizyt, po których można zastosować Jeśli jest to |
Poziom
Określa różne poziomy zniesienia ograniczeń, które są stosowane w przypadku wizyty i tych, które następują po spełnieniu warunków progowych.
Wyliczenie poniżej jest uporządkowane według rosnącego stopnia relaksacji.
Wartości w polu enum | |
---|---|
LEVEL_UNSPECIFIED |
Domyślny dopuszczalny poziom zawężenia: nie ma żadnych zawężeń, co oznacza, że wszystkie wizyty są w pełni ograniczone. Ta wartość nie może być używana w sekcji |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Czasy rozpoczęcia i zakończenia wizyty oraz czasy rozpoczęcia i zakończenia jazdy pojazdem zostaną złagodzone, ale każda wizyta będzie nadal powiązana z tym samym pojazdem i musi być zachowana kolejność wizyt: nie można wstawiać wizyt między sobą 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 |
To samo co RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , ale pojazd jest też zrelaksowany: wizyty są całkowicie bezpłatne w czasie progowym lub po nim i potencjalnie mogą zostać anulowane. |