InjectedSolutionConstraint

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 (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
Pola
routes[]

object (ShipmentRoute)

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 injectedFirstSolutionRoutes.

skippedShipments[]

object (SkippedShipment)

Pominięto dostawę roztworu do wstrzyknięcia. Niektóre z nich mogą być pomijane w pierwotnym rozwiązaniu. Zobacz pole routes.

constraintRelaxations[]

object (ConstraintRelaxation)

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 (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
Pola
relaxations[]

object (Relaxation)

Wszystkie złagodzenia ograniczeń dotyczących wizyt, które będą stosowane w przypadku wizyt na trasach z pojazdami w: vehicleIndices.

vehicleIndices[]

integer

Określa indeksy pojazdów, do których obowiązuje ograniczenie liczby wizyt relaxations. Brak wartości oznacza, że wartość jest uznawana za domyślną, a relaxations ma zastosowanie do wszystkich pojazdów, które nie zostały określone w innych parametrach constraintRelaxations. Może istnieć maksymalnie 1 wartość domyślna, tzn. maksymalnie 1 pole złagodzenia ograniczeń jest dozwolone puste vehicleIndices. Indeks pojazdu może być wymieniony tylko raz, nawet w obrębie kilku constraintRelaxations.

Indeks pojazdu jest mapowany tak samo jak ShipmentRoute.vehicle_index, jeśli parametr interpretInjectedSolutionsUsingLabels ma wartość prawda (zobacz komentarz do fields).

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 ORAZ
  • j + 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 ORAZ
  • relaxations(i).threshold_visit_count == 0 i koniec pojazdu ma status „relaxations(i).level”, jeśli spełnia:
  • vehicleEndTime >= relaxations(i).threshold_time ORAZ
  • route.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 (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
Pola
level

enum (Level)

Poziom złagodzenia ograniczenia, który obowiązuje, gdy spełnione są warunki na poziomie thresholdTime lub później ORAZ co najmniej thresholdVisitCount.

thresholdTime

string (Timestamp format)

Czas, o którym można zastosować złagodzenie level lub po nim.

Sygnatura czasowa w formacie „Zulu” RFC3339 UTC z rozdzielczością nanosekundową i maksymalnie 9 cyframi po przecinku. Przykłady: "2014-10-02T15:01:23Z" i "2014-10-02T15:01:23.045123456Z".

thresholdVisitCount

integer

Liczba wizyt, po których lub których można zastosować złagodzenie level. Jeśli zasada thresholdVisitCount ma wartość 0 (lub jest nieskonfigurowana), parametr level może być stosowany bezpośrednio przy uruchamianiu pojazdu.

Jeśli jest to route.visits_size() + 1, level można zastosować tylko po stronie pojazdu. Jeśli wartość przekracza route.visits_size() + 1, parametr level nie jest w ogóle stosowany na tej trasie.

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 level.

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.