Расписание

AnyLogic предоставляет пользователям специальный элемент - Расписание, с помощью которого вы можете задать цикличность, согласно которой значение какой-то величины изменяется с ходом времени. 

Часто этот объект используется для задания:

Кроме того, вы можете просто задать расписание и не используя его в объектах библиотек AnyLogic, работать с ним программно, узнавая значение задаваемой расписанием величины в любые моменты времени с помощью соответствующих функций.


Режимы расписания

Расписание может работать в одном из двух режимов: задание интервалов времени или задание моментов времени.

Первый режим (интервалы) обычно используется для задания того, как значение какой-то величины непрерывно меняется во времени (обычно - с определенной цикличностью). В данном случае в любой момент времени задаваемая расписанием величина будет иметь какое-то значение. С помощью интервалов задаются и расписания работы смен рабочих, и изменение интенсивности создания заявок или пешеходов, и многое другое.

Второй (моменты времени) используется тогда, когда задается последовательность ключевых моментов, которым соответствуют заданные для них значения (или выполняются заданные действия, см. абзац ниже). Пример - расписание прибытия поездов: в моменты прибытия в пешеходной модели железнодорожного вокзала на перроне появляется заданное расписанием количество пассажиров. 

Кроме того, вы можете связать с ключевыми моментами расписания (как с моментами, так и с временами смены интервалов) действия, введя любой нужный вам код в секции Действие расписания. Действие будет исполняться в эти ключевые моменты, позволяя пользователям тем самым использовать расписание в том числе и как совершенный элемент для планирования неограниченного количества событий в заданные моменты времени (возможно, привязанные к календарным датам и временам).


Типы задаваемых расписанием значений

Расписание может задавать изменение значения одного из трех типов:

Представления

Элемент поддерживает три различных представления расписания:


Исключения в расписании

В представлениях, работающих с календарными временами и датами (Неделя и Дни/Недели), вы также можете задавать исключения - особые интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием. Обычно с помощью исключений задаются праздники и связанные с ними переносы рабочих дней на выходные. Также с помощью исключений можно задавать и изменение значения задаваемой расписанием в эти исключительные дни: например, в те же праздники расписание может задавать увеличение интенсивности прихода покупателей или авральное увеличение штата сотрудников.


Задание расписания

В целом расписание задается похожим образом во всех трех представлениях: вы выбираете тип значения, которое будет определяться этим расписанием (да/нет, целое или вещественное), а затем задаете интервалы времени (или просто моменты времени, в зависимости от выбранного режима) и указываете, какое значение будет соответствовать каждому такому интервалу/моменту. Задав завершенный цикл таких интервалов, вы можете указать, через какое время он должен будет повториться. 

Но поскольку задание расписания в разных представлениях все же несколько отличается, то мы решили описать каждый такой случай отдельно, попутно рассмотрев сразу несколько разных способов применения расписаний:

 Задание расписания работы банковского отделения (длительность - Неделя)

 Задание расписания рабочей смены "два через два" (длительность - 4 дня, режим Дни/Недели)

 Задание расписание проведения ТО устройства (длительность - Другая, нет привязки к календарю)


Свойства расписания

Основные

Имя – Имя расписания. Используется для идентификации элемента и для ссылки на него из свойств объектов, кода и т.п. 

Отображать имя – Если опция выбрана, то имя расписания будет отображаться в графическом редакторе.

Исключить – Если опция выбрана, то расписание будет исключено из модели.

Видимость – Если опция выбрана, то значок расписания будет отображаться на презентации во время выполнения модели.

Данные

Тип – Тип задаваемого расписанием значения: логическое (да/нет), целое или вещественное

Расписание задает – Здесь вы можете выбрать режим расписания - задает ли оно Интервалы (Начало, Конец), или же дискретные Моменты времени.

Режим Интервалы (Начало, Конец) обычно используется для задания того, как значение какой-то величины непрерывно меняется во времени (обычно - с определенной цикличностью). В данном случае в любой момент времени задаваемая расписанием величина будет иметь какое-то значение.
Режим Моменты времени используется тогда, когда задается последовательность ключевых моментов, которым соответствуют заданные для них значения (или выполняются заданные действия).

Длительность – Здесь вы выбираете тип длительности расписания: Неделя, Дни/Недели или Другая (нет привязки к календарю). В зависимости от выбранного типа длительности будет меняться и способ задания интервалов расписания в приведенной ниже таблице.

Неделя - Используйте это представление, если расписание имеет недельную цикличность, например, если вам нужно задать недельный график работы.
Дни/Недели - Используйте это представление для задания расписаний, которые задаются как календарные времена и даты, но имеют цикличность, отличную от недельной - определенное количество дней или недель. 
Другая (нет привязки к календарю) - В этом представлении нет привязки к календарным датам и времени. Интервалы (или моменты времени) расписания задаются просто как количество выбранных единиц времени от момента старта модели. Расписание задается в этом представлении в том случае, если важны только длительности интервалов, а не их календарное время.
В расположенном ниже поле Повторять каждые вы должны будете выбрать единицы модельного времени (это могут быть миллисекунды, секунды, минуты, часы, дни, недели), в которых будет задано расписание (и длительность этого расписания).

Значение по умолчанию – [Виден, если выбрана опция Расписание задает: Интервалы (Начало, Конец)] Значение, которое будет приниматься по умолчанию для не заданных в данном расписании интервалов времени.

Повторять каждые – [Виден, если выбрана Длительность Дни/Недели или Другая (нет привязки к календарю)] Здесь вы можете задать длительность (цикличность) расписания - выбрать, через сколько единиц времени расписание должно будет повториться.

Привязать к – [Виден, если выбрана Длительность Дни/Недели или Другая (нет привязки к календарю)] Если вы хотите, чтобы при старте модели расписание начинало применяться не с начального, а с какого-то другого момента, то здесь вы можете задать значение модельного времени, которому будет соответствовать момент начала расписания. Обратите внимание, что расписание при этом будет применяться все так же со стартом модели, но уже с другого момента. Это свойство полезно, например, для задания времени первого выхода смены рабочих на работу (в случае задания расписаний для нескольких смен рабочих).

Неделя начинается с – [Виден, если выбрана Длительность Дни/Недели и в опции Повторять каждые выбраны недели] Здесь вы можете явно задать, какой день недели является первым днем для задаваемого расписания. Эта опция имеет смысл только тогда, когда длительность расписания составляет несколько недель. Дело в том, что в одних странах (например, России) первым днем недели считается понедельник, а в некоторых других (например, США) - воскресенье. Поэтому если вы зададите расписание с длительностью в несколько недель с учетом того, что первый день недели - понедельник, и потом перешлете модель в страну, где первым днем считается воскресенье, то расписание будет интерпретироваться не так, как это нужно. Поэтому если ожидается использование вашей модели в других странах, рекомендуется явно задавать, какой день недели является первым днем для задаваемого расписания

Загружается из базы данных – [Виден, если выбрана Длительность Дни/Недели или Другая (нет привязки к календарю)] Позволяет загрузить данные из существующей базы данных AnyLogic, если опция отмечена.

Таблица - здесь необходимо указать существующую базу данных AnyLogic.
Условия выборки - здесь необходимо указать условие, определяющее значение, которое будет выбрано из указанного столбца таблицы. Вы можете добавить , дублировать , удалить  и определить порядок условий ( , ).
Начальный столбец - определяет начальный столбец базы данных.
Конечный столбец - определяет конечный столбец базы данных.
Столбец значений - определяет столбец значений базы данных.

Действие

В этом поле вы можете ввести Java код, который будет выполняться в ключевые моменты расписания (времена смены интервалов, либо заданные моменты времени, в зависимости от выбранного режима). Возможность задания таких действий позволяет использовать расписание в том числе и как совершенный элемент для планирования неограниченного количества событий в заданные моменты времени (возможно, привязанные к календарным датам и временам).

Исключения

На этой странице вы можете задать исключения в расписании - интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием. 

Предв. просмотр

На этой странице вы можете просмотреть, как будет выглядеть заданное вами расписание, возможно, в наиболее удобном и привычном для восприятия виде, принятом в электронных ежедневниках и органайзерах:  

Специфические

Единицы измерения (сист. динамика)Если опция выбрана, то вы можете задать единицы измерения для возвращаемого расписанием значения. 


Переход на зимнее/летнее время

В некоторых странах (в том числе, и в России) производится переход на зимнее и летнее время - в определенные дни года часы переводятся на час (или несколько) назад и вперед соответственно. Причем как даты, так и количество часов, на которое переводятся часы, в разных странах - разные (даты также меняются от года к году). 

AnyLogic автоматически учитывает такие переходы в расписаниях. При этом информация о датах переходов в данной стране берется из свойств операционной системы (учитывается Текущее расположение пользователя). 


См. также

 Недельное расписание

 Расписание с длительностью в несколько дней или недель

 Расписание без привязки к календарю

 Исключения в расписании

 Методы для работы с расписанием

 Предварительный просмотр расписания