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 pierwotnym rozwiązaniu. Trasy i przesyłki pominięte muszą spełniać podstawowe założenia dotyczące ważności wymienione w   | 
            
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 należy 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 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 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 te warunki:
route.visits(j).start_time >= relaxations(i).threshold_timeORAZj + 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_timeORAZrelaxations(i).threshold_visit_count == 0, a koniec pojazdu jest łagodny dorelaxations(i).level, jeśli spełnia te wymagania:vehicleEndTime >= relaxations(i).threshold_timeORAZroute.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 level: jeden z ustawionym tylko thresholdVisitCount, a drugi tylko z ustawionym 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 łagodzenia, 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ć zwolnienie  Używa standardu RFC 3339, w którym wygenerowany wynik jest zawsze znormalizowany według normy Z i zawiera 0, 3, 6 lub 9 cyfr ułamkowych. Dopuszczalne są też przesunięcia inne niż „Z”. 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 występują po jej 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 prosty sposób w elementach   | 
              
RELAX_VISIT_TIMES_AFTER_THRESHOLD | 
                Czas rozpoczęcia wizyty oraz czas rozpoczęcia i zakończenia jazdy zostaną zmodyfikowane, ale każda wizyta pozostanie powiązana z tym samym pojazdem. Należy zachować 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. |