AnyLogic
Развернуть
Размер шрифта

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

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

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

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

Давайте и рассмотрим, как можно задать такое поведение устройства с помощью расписания в представлении Единицы модельного времени. Предположим, что плановое ТО устройства проводится безотносительно календарного времени, по прошествии 50 часов его функционирования. Длится техническое обслуживание пусть 2 часа.

Чтобы задать расписание работы устройства в единицах модельного времени

  1. Перетащите элемент Расписание  из палитры Агент на диаграмму типа агентов.
  2. Перейдите в панель Свойства.
  3. Задайте имя расписания в поле Имя. По этому имени вы будете ссылаться на это расписание в свойствах объекта(ов) или программно из кода вашей модели.
  4. Перейдите в секцию Данные и выберите тип значения, которое будут задаваться этим расписанием: да/нет, целое или вещественное. В нашем случае нам просто нужно менять статус нашего устройства, поэтому оставим выбранным тип да/нет.
  5. Укажите, будет ли данное расписание задавать интервалы или отдельные моменты времени. Выберите из группы кнопок Расписание задает опцию Интервалы (Начало, Конец).
  6. Выберите представление расписания, наиболее удобное для вашей задачи — в нашем случае привязки к календарю нет, поэтому выберите из группы кнопок Длительность опцию Другая (нет привязки к календарю).
  7. Задайте время, через которое вы хотите, чтобы заданная последовательность интервалов была повторена. В нашем случае цикл работы устройства составляет 50 + 2 = 52 часа. Поэтому введите в поле Повторять каждые... 52 и выберите в качестве единиц времени часы.
  8. В поле Значение по умолчанию вы можете задать значение, которое будет использоваться расписанием для тех интервалов времени, которые не будут покрыты этим расписанием. В нашем случае это не так важно, поскольку мы зададим в расписании полный цикл жизнедеятельности устройства — как интервалы функционирования, так и времена простоя.

  9. Задайте интервалы работы в расположенной ниже таблице. Каждый интервал задается в отдельной строке таблицы.
  10. Добавьте в таблицу новую строку, щелкнув по кнопке справа от таблицы. Задайте для этого интервала его Начало и Конец, а также соответствующее данному интервалу Значение. В нашем случае мы вначале зададим период функционирования — поэтому оставьте 0 в ячейке Начало и введите 50 в ячейке Конец. Не меняйте статус в ячейке Значение (оставьте статус да).

  11. Теперь нам нужно задать интервал, соответствующий периоду ТО. Аналогично добавьте еще одну строку, оставьте в качестве времени начала 50 и введите 52 в качестве времени окончания этого интервала. Щелкните в поле Значение, чтобы изменить статус на отрицательный — нет (потому что в периоды проведения ТО нам нужно, чтобы управляемый этим расписанием ресурс был недоступен).

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

Закончив задание расписания, вы можете перейти на страницу свойств Предв. просмотр и проверить, соответствует ли задаваемое расписанием поведение ожидаемому:

Теперь вы можете использовать расписание в вашей модели, ссылаясь на него в нужных вам свойствах объектов и/или работая с ним программно с помощью соответствующих методов.

Как мы можем улучшить эту статью?