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  | 
| skippedShipments[] | 
 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  | 
| constraintRelaxations[] | 
 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  | 
| vehicleIndices[] | 
 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 relaxations są całkowicie ograniczone, a do tych tras nie można dodawać nowych wizyt.routes Czas rozpoczęcia i zakończenia w elementach routes jest też całkowicie ograniczony, chyba że pojazd jest pusty (czyli nie ma wizyt i w modelu element usedIfRouteIsEmpty ma wartość false).
relaxations(i).level określa poziom złagodzenia ograniczeń zastosowanych do wizyty #j, która spełnia:
- route.visits(j).start_time >= relaxations(i).threshold_timeORAZ
- j + 1 >= relaxations(i).threshold_visit_count
Podobnie, uruchomienie pojazdu jest zwolnione do relaxations(i).level, jeśli spełnia te kryteria:
- vehicleStartTime >= relaxations(i).threshold_timeORAZ
- relaxations(i).threshold_visit_count == 0, a na końcu pojazdu- relaxations(i).level, jeśli spełnia te wymagania:
- vehicleEndTime >= relaxations(i).threshold_timeORAZ
- route.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 thresholdVisitCount, a drugi tylko 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 wyższy, czyli nie maleje w miarę upływu czasu.
Czas i kolejność wizyt w ramach trasy, które nie spełniają warunków progowych dotyczących żadnego relaxations, są całkowicie ograniczone i do tych sekwencji nie można wstawiać żadnych wizyt. Jeśli początek lub koniec okresu użytkowania pojazdu nie spełnia warunków żadnego z obostrzonych zasadami okresów, 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  | 
| thresholdTime | 
 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:  | 
| thresholdVisitCount | 
 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ą nie zostać wykonane. |