Временное окно - период между временем начала и окончания, когда можно посетить сетевое положение, например остановку в анализе маршрута.
Два слоя сетевого анализа содержат следующие временные окна: маршрут и слои задачи выбора маршрута транспорта. В приведенных далее таблицах содержится список классов сетевого анализа, для которых можно настраивать временные окна.
Поля временного окна в слоях анализа маршрута
Класс сетевого анализа | Поле временного окна |
---|---|
Остановки | TimeWindowStart |
TimeWindowEnd |
Примечание:
Временные окна используются, когда заполнены любые из полей временных окон (TimeWindowStart и TimeWindowEnd) в слое Остановок. Часовой пояс для полей временных окон можно указать при создании нового слоя анализа Маршрута с помощью параметра Часовой пояс для полей времени в диалоговом окне инструмента геообработки Создать слоя анализа маршрутов. Чтобы обновить часовой пояс для полей временных окон в существующем слое, используйте свойство timeZoneUsageForTimeFields класса RouteSolverProperties в Python.
Поля временного окна в слоях анализа задачи маршрута транспортного средства
Класс сетевого анализа | Поле временного окна |
---|---|
Заказы | TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
Станции | TimeWindowStart |
TimeWindowEnd | |
TimeWindowStart2 | |
TimeWindowEnd2 | |
Перерывы | TimeWindowStart |
TimeWindowEnd |
Чтобы временные окна стали доступными, необходимость в выборе свойств слоя анализа задачи выбора маршрута транспорта отсутствует, так как они доступны всегда. Классы Заказы и Склады позволяют настраивать два временных окна.
Примечание:
Временные окна используются, когда заполнены любые из полей временных окон (TimeWindowStart и TimeWindowEnd) в слое Заказы и Склады. Часовой пояс для полей временных окон можно указать при создании нового слоя анализа Маршрута с помощью параметра Часовой пояс для полей времени в диалоговом окне инструмента геообработки Создать слой анализа задачи выбора маршрута транспорта. Чтобы обновить часовой пояс для полей временных окон в существующем слое, используйте свойство timeZoneUsageForTimeFields класса VehicleRoutingProblemSolverProperties в Python.
Объекты маршрута в задаче выбора маршрута транспорта также имеют поля временных окон: EarliestStartTime и LatestStartTime. Они указывают период, в который маршрут может быть начат.
Использование дат во временных окнах
Часть, отвечающая за дату во временном окне, показывает, происходит ли это окно в конкретную дату, день недели или в текущую дату. Например, если ваше временное окно представляет собой время доставки, это может быть разовое время доставки, назначенное на определенную дату; регулярная доставка, которая выполняется по средам; либо запланированная доставка, которая должна произойти сегодня, независимо от дня недели.
Для временного окна в указанную дату просто включите нужную дату при заполнении полей временных окон. В примерах в следующем разделе временное окно назначено на 16 марта 2018.
Вместо конкретной даты может быть задан день недели, при помощи следующих условных дат:
- Сегодня – 12/30/1899
- Воскресенье – 12/31/1899
- Понедельник – 1/1/1900
- Вторник – 1/2/1900
- Среда – 1/3/1900
- Четверг – 1/4/1900
- Пятница – 1/5/1900
- Суббота – 1/6/1900
Дата временного окна должна соответствовать дате, указанной для времени дня (для анализа Маршрутов) или дате по умолчанию (для анализа Задачи выбора маршрута транспорта).
Пример временного окна
Для того, чтобы лучше понять принцип работы временных окон, рассмотрим случай с четырьмя остановками: a, b, c и d, – для которых необходимо найти маршрут. Временное окно каждой остановки задается свойствами TimeWindowStart и TimeWindowEnd.
Маршрут может начаться из точки a в любое время между 8:00 и 9:00. Однако он не должен прибывать в точку b до 9:10. Как показано ниже, маршрут прибывает в точку b в 9:05:08.
Так как точка b должна быть посещена только в промежутке между 9:10 и 9:12 утра,маршрут вынужден ждать в точке b в течение 4 минут и 40 секунд, а затем отправиться в 9:10 утра. Это время ожидания хранится в поле Wait_TravelTime остановки b как 4,66 минут, и добавлено в общее время, которое занимает маршрут. В поле Cumul_TraveTime сохраняется общее время, затраченное на прохождение маршрута. Суммарное время в пути по маршруту для остановки b составляет 10 минут (5 минут и 20 секунд в пути и 4 минуты и 40 секунд в ожидании, что необходимо для учета требований временного окна остановки b).
Маршрут отправляется из остановки b в 9:10 утра и прибывает в остановку c в 9:15:20 утра. Однако остановка c имеет временное окно с 9:10 до 9:12 утра. Превышение составляет 3 минуты и 20 секунд, оно хранится в поле Violation_TravelTime как 3,33 минуты, так как маршрут не может учесть временное окно остановки c.
Остановка c отмечается символом превышения временного окна.
Временные окна рассматриваются как "гибкие" ограничения. Это значит, что несмотря на то, что механизм расчета пытается соблюсти условия временного окна, он будет нарушать условия временного окна некоторых остановок, которые необходимо достичь. Этот процесс отличается от обработки «жесткого» ограничения, когда движение по маршруту к точке с нарушенными условиями временного окна осуществлено не будет. Жесткие временные окна не поддерживаются слоем анализа Маршрутов. Однако вы можете использовать их для временных окон Заказов в слое анализа Задачи выбора маршрута транспорта, задав для поля MaxViolationTime значение ноль.
Механизм расчета маршрута производит попытку поиска наименее затратного маршрута по ряду остановок с учетом установленных ограничений сети и всех временных окон. Если нарушения условий временного окна избежать нельзя, механизм расчета пытается минимизировать общее время превышения.