Решение, добавленное в запрос, включая информацию о том, какие посещения следует ограничить и как их следует ограничить.
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 , но транспортное средство также расслаблено: посещения полностью бесплатны в пороговое время или после него и потенциально могут стать невыполненными. |