Начиная с версии 6.5.1 AnyLogic предоставляет пользователям специальный элемент - Расписание, с помощью которого Вы можете задать цикличность, согласно которой значение какой-то величины изменяется с ходом времени.
Часто этот объект используется для задания:
Кроме того, Вы можете просто задать расписание и не используя его в
объектах библиотек AnyLogic, работать с ним
программно, узнавая значение задаваемой расписанием
величины в любые моменты
времени с
помощью соответствующих функций.
Расписание может работать в одном из двух режимов: задание интервалов времени или задание моментов времени.
Первый режим (интервалы) обычно используется для задания того, как значение какой-то величины непрерывно меняется во времени (обычно - с определенной цикличностью). В данном случае в любой момент времени задаваемая расписанием величина будет иметь какое-то значение. С помощью интервалов задаются и расписания работы смен рабочих, и изменение интенсивности создания заявок или пешеходов, и многое другое.
Второй (моменты времени) используется тогда, когда задается последовательность ключевых моментов, которым соответствуют заданные для них значения (или выполняются заданные действия, см. абзац ниже). Пример - расписание прибытия поездов: в моменты прибытия в пешеходной модели железнодорожного вокзала на перроне появляется заданное расписанием количество пассажиров.
Кроме того, Вы можете связать с ключевыми моментами расписания (как с моментами, так и с временами смены интервалов) действия, введя любой нужный Вам код в поле Действие расписания (оно находится в самом низу страницы основных свойств). Действия будут исполняться в эти ключевые моменты, позволяя пользователям тем самым использовать расписание в том числе и как совершенный элемент для планирования неограниченного количества событий в заданные моменты времени (возможно, привязанные к календарным датам и временам).
Элемент поддерживает три различных представления расписания:
В представлениях, работающих с календарными временами и датами (Неделя и Дни/Недели), Вы также можете задавать исключения - особые интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием. Обычно с помощью исключений задаются праздники и связанные с ними переносы рабочих дней на выходные. Также с помощью исключений можно задавать и изменение значения задаваемой расписанием в эти исключительные дни: например, в те же праздники расписание может задавать увеличение интенсивности прихода покупателей или авральное увеличение штата сотрудников.
В целом расписание задается похожим образом во всех трех представлениях: Вы выбираете тип значения, которое будет определяться этим расписанием (да/нет, целое или вещественное), а затем задаете интервалы времени (или просто моменты времени, в зависимости от выбранного режима) и указываете, какое значение будет соответствовать каждому такому интервалу/моменту. Задав завершенный цикл таких интервалов, Вы можете указать, через какое время он должен будет повториться.
Но поскольку задание расписания в разных представлениях все же несколько отличается, то мы решили описать каждый такой случай отдельно, попутно рассмотрев сразу несколько разных способов применения расписаний:
Задание расписания работы
банковского отделения (длительность - Неделя)
Задание расписания рабочей
смены "два через два" (длительность - 4 дня, режим Дни/Недели)
Задание
расписание проведения ТО
устройства (длительность - Другая,
нет привязки к календарю)
Имя – Имя расписания. Используется для идентификации элемента и для ссылки на него из свойств объектов, кода и т.п.
Отображать имя – Если опция выбрана, то имя расписания будет отображаться в графическом редакторе.
Исключить – Если опция выбрана, то расписание будет исключено из модели.
На презентации – Если опция выбрана, то значок расписания будет отображаться на презентации во время выполнения модели.
Тип значения –
Тип задаваемого расписанием значения:
логическое (да/нет),
целое
или вещественное.
Использовать единицы измерения – Если опция выбрана, то Вы можете задать единицы измерения для возвращаемого расписанием значения (в расположенном справа поле Единица измерения).
Значение по умолчанию – Значение, которое будет приниматься по умолчанию для не заданных в данном расписании интервалов времени.
Расписание задает
–
Здесь Вы можете выбрать режим расписания - задает ли оно Интервалы (Начало, Конец),
или же дискретные Моменты
времени.
Длительность – Здесь
Вы выбираете тип длительности расписания: Неделя, Дни/Недели или Другая (нет привязки к календарю).
В зависимости от выбранного типа длительности будет меняться и способ
задания интервалов расписания в приведенной ниже таблице.
Повторять каждые – [Виден, если выбрана Длительность Дни/Недели или Другая (нет привязки к календарю)] Здесь Вы можете задать длительность (цикличность) расписания - выбрать, через сколько единиц времени расписание должно будет повториться.
Привязать к – [Виден, если выбрана Длительность Дни/Недели или Другая (нет привязки к календарю)] Если Вы хотите, чтобы при старте модели расписание начинало применяться не с начального, а с какого-то другого момента, то здесь Вы можете задать значение модельного времени, которому будет соответствовать момент начала расписания. Обратите внимание, что расписание при этом будет применяться все так же со стартом модели, но уже с другого момента. Это свойство полезно, например, для задания времени первого выхода смены рабочих на работу (в случае задания расписаний для нескольких смен рабочих).
Неделя начинается с – [Виден, если выбрана Длительность Дни/Недели и в опции Повторять каждые выбраны недели] Здесь Вы можете явно задать, какой день недели является первым днем для задаваемого расписания. Эта опция имеет смысл только тогда, когда длительность расписания составляет несколько недель. Дело в том, что в одних странах (например, России) первым днем недели считается понедельник, а в некоторых других (например, США) - воскресенье. Поэтому если Вы зададите расписание с длительностью в несколько недель с учетом того, что первый день недели - понедельник, и потом перешлете модель в страну, где первым днем считается воскресенье, то расписание будет интерпретироваться не так, как это нужно. Поэтому если ожидается использование Вашей модели в других странах, рекомендуется явно задавать, какой день недели является первым днем для задаваемого расписания.
Действие – В этом поле Вы можете ввести Java код, который будет выполняться в ключевые моменты расписания (времена смены интервалов, либо заданные моменты времени, в зависимости от выбранного режима). Возможность задания таких действий позволяет использовать расписание в том числе и как совершенный элемент для планирования неограниченного количества событий в заданные моменты времени (возможно, привязанные к календарным датам и временам).
На этой странице Вы можете задать исключения в расписании - интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием.
На этой странице Вы можете просмотреть, как будет выглядеть заданное Вами расписание, возможно, в наиболее удобном и привычном для восприятия виде, принятом в электронных ежедневниках и органайзерах:
В некоторых странах (в том числе, и в России) производится переход на зимнее и летнее время - в определенные дни года часы переводятся на час (или несколько) назад и вперед соответственно. Причем как даты, так и количество часов, на которое переводятся часы, в разных странах - разные (даты также меняются от года к году).
AnyLogic автоматически учитывает такие переходы в расписаниях. При этом информация о датах переходов в данной стране берется из свойств операционной системы (учитывается Текущее расположение пользователя).


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