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

Задание расписания, длящегося несколько дней или недель

Режим Дни/Недели обычно используется для задания расписаний, которые задаются как календарные времена и даты, но имеют длительность цикла, отличную от недельной - определенное количество дней или недель.

Например, в таком режиме удобно задавать то, как интенсивность создания агентов изменяется в течение дня - в данном случае длительность расписания равна одному дню.

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

Чтобы задать расписание смены "два через два"

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

  8. Задайте интервалы в расположенной ниже таблице. Чтобы добавить новый интервал, щелкните по кнопке . В таблицу будет добавлена новая строка.

  9. Задайте для этого интервала его Начало и Конец, как указано на рисунке ниже, а также соответствующее данному интервалу Значение.

  10. Аналогично задайте еще один интервал. Обратите внимание, что в ячейках Начало и Конец теперь указан День 2 - здесь мы задаем рабочее время для второго рабочего дня смены.

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

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

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

Также вы можете можно задать для расписания исключения - особые интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием (обычно с помощью исключений задаются праздники и связанные с ними переносы рабочих дней).

Задание двух смен, начинающих работу с разных дней

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

Чтобы задать две дополняющие друг друга смены

  1. Пусть созданное вами на данный момент расписание задает расписание работы первой смены, которая заступает на работу с первого моделируемого дня.
  2. Задайте расписание для второй смены. Создайте копию ранее созданного расписания, перетащив мышью существующее расписание (с одновременно нажатыми левой кнопкой мыши и клавишей Ctrl (macOS: Cmd)).
  3. Укажите, что это расписание должно применяться не с первого моделируемого дня, а с третьего. Для этого нужно выбрать в свойстве Перейти к этого расписания (секция Предв. просмотр) день, отстоящий на два дня от дня, выбранного в аналогичном свойстве расписания первой смены.

Применение расписания в объекте ResourcePool

Если вы задаете расписание работы (доступности) ресурсов, то вы должны соответствующим образом изменить свойства блока ResourcePool, задающего эти ресурсы.

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

Обычно эта опция (Расписание) используется тогда, когда количество доступных ресурсов меняется с течением времени и в отличие от приведенного выше примера, значений больше, чем 2 (здесь же - только 0 и 5).Если же количество доступных ресурсов всегда одинаково, и просто меняется их статус (все они либо работают, либо нет), то вы можете просто один раз явно задать их количество в свойстве Количество ресурсов блока ResourcePool и использовать у расписания в качестве типа значения тип да/нет. В выпадающем списке Количество задано тогда будет нужно выбрать опцию Расписанием доступности, а в расположенном ниже поле Расписание доступности ввести имя вашего расписания.

Опция "Неделя начинается с"

Обратите внимание, что если вы выберете в опции Повторять каждые: недели, то справа появится еще одна опция - Неделя начинается с. Эта опция имеет смысл только тогда, когда длительность расписания составляет несколько недель.

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

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

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