Решение, добавленное в запрос, включая информацию о том, какие посещения следует ограничить и как их следует ограничить.
| JSON-представление | 
|---|
| { "routes": [ { object ( | 
| Поля | |
|---|---|
| routes[] |    Пути введения раствора. Некоторые маршруты могут быть исключены из исходного решения. Маршруты и пропущенные поставки должны удовлетворять основным предположениям достоверности, перечисленным для  | 
| skippedShipments[] |    Пропущенные поставки раствора для инъекций. Некоторые из них могут быть исключены из исходного решения. См. поле  | 
| constraintRelaxations[] |   Для нуля или более групп транспортных средств указывает, когда и насколько ослаблять ограничения. Если это поле пусто, все непустые маршруты транспортных средств полностью ограничены. | 
ОграничениеРелаксация
 Для группы транспортных средств указывается, при каком пороге(ах) ограничения на посещение будут смягчены и до какого уровня. Отгрузки, перечисленные в поле skipped_shipment , могут быть пропущены; т. е. они не могут быть выполнены. 
| JSON-представление | 
|---|
| {
  "relaxations": [
    {
      object ( | 
| Поля | |
|---|---|
| relaxations[] |    Все ослабления ограничений на посещение, которые будут применяться к посещениям маршрутов с транспортными средствами в  | 
| vehicleIndices[] |    Указывает индексы транспортных средств, к которым применяются   Индекс транспортного средства сопоставляется так же, как  | 
Релаксация
 Если relaxations пусто, время начала и последовательность всех посещений routes полностью ограничиваются, и никакие новые посещения не могут быть вставлены или добавлены к этим маршрутам. Кроме того, время начала и окончания routes транспортного средства полностью ограничено, если только транспортное средство не пусто (т. е. не имеет посещений и для параметра usedIfRouteIsEmpty в модели установлено значение false).
 relaxations(i).level определяет уровень ослабления ограничений, применяемый к посещению #j, который удовлетворяет:
-  route.visits(j).start_time >= relaxations(i).threshold_timeИ
-  j + 1 >= relaxations(i).threshold_visit_count
 Аналогично, запуск транспортного средства расслабляется до relaxations(i).level если он удовлетворяет:
-  vehicleStartTime >= relaxations(i).threshold_timeИ
-  relaxations(i).threshold_visit_count == 0, и конец транспортного средства расслабляется доrelaxations(i).level, если он удовлетворяет:
-  vehicleEndTime >= relaxations(i).threshold_timeИ
-  route.visits_size() + 1 >= relaxations(i).threshold_visit_count
 Чтобы применить уровень релаксации, если посещение соответствует thresholdVisitCount ИЛИ thresholdTime добавьте два relaxations с одинаковым level : одно с установленным только thresholdVisitCount , а другое с установленным только thresholdTime . Если посещение удовлетворяет условиям многократного relaxations , применяется наиболее расслабленный уровень. В результате от начала движения транспортного средства до посещения маршрута до конца транспортного средства уровень релаксации становится более расслабленным: т.е. уровень релаксации не снижается по мере прохождения маршрута.
 Время и последовательность посещений маршрута, которые не удовлетворяют пороговым условиям каких-либо relaxations , полностью ограничены, и никакие посещения не могут быть вставлены в эти последовательности. Кроме того, если начало или конец транспортного средства не удовлетворяет условиям какого-либо расслабления, время фиксируется, если только транспортное средство не пустое. 
| JSON-представление | 
|---|
| {
  "level": enum ( | 
| Поля | |
|---|---|
| level |    Уровень ослабления ограничений, который применяется, когда выполняются условия в  | 
| thresholdTime |    Время, в течение которого или после которого может быть применен   Временная метка в формате RFC3339 UTC «Зулу» с наносекундным разрешением и до девяти дробных цифр. Примеры:  | 
| thresholdVisitCount |    Количество посещений, во время или после которого может быть применен   Если это  | 
Уровень
Выражает различные уровни ослабления ограничений, которые применяются к посещению и после него, когда оно удовлетворяет пороговым условиям.
Ниже перечислено в порядке возрастания релаксации.
| Перечисления | |
|---|---|
| LEVEL_UNSPECIFIED | Неявный уровень ослабления по умолчанию: никакие ограничения не ослабляются, т. е. все посещения полностью ограничены.  Это значение не должно быть явно использовано в  | 
| RELAX_VISIT_TIMES_AFTER_THRESHOLD | Время начала посещений и время начала/окончания посещения транспортных средств будут смягчены, но каждое посещение остается привязанным к одному и тому же транспортному средству, и необходимо соблюдать последовательность посещений: ни одно посещение не может быть вставлено между ними или перед ними. | 
| RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD | То же, что RELAX_VISIT_TIMES_AFTER_THRESHOLD, но последовательность посещений также смягчена: посещения могут выполняться только этим транспортным средством, но потенциально могут стать невыполненными. | 
| RELAX_ALL_AFTER_THRESHOLD | То же, что RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, но транспортное средство также расслаблено: посещения полностью бесплатны в пороговое время или после него и потенциально могут стать невыполненными. |