Решение, добавленное в запрос, включая информацию о том, какие посещения следует ограничить и как их следует ограничить.
| 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 | Время, в течение которого или после которого может быть применен Использует RFC 3339, где генерируемые выходные данные всегда будут нормализованы по Z и используют 0, 3, 6 или 9 дробных цифр. Также принимаются смещения, отличные от «Z». Примеры: |
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 , но транспортное средство также расслаблено: посещения полностью бесплатны в пороговое время или после него и потенциально могут стать невыполненными. |