Что нового в AnyLogic 7? Работа с ресурсами. 25.04.2014 Stepan Egorov

Что нового в AnyLogic 7? Работа с ресурсами.

Вы, наверное, уже слышали, что в новом AnyLogic 7 работа с ресурсами стала более гибкой. Давайте суммируем, что за изменения произошли, и что это означает для разработчика моделей.

Во-первых, мы больше не разделяем обычные и сетевые ресурсы. Это разделение искусственно, и оно ушло во время «большого объединения понятий» AnyLogic 7.



Суть "большого объединения" как такового описывается вот так:



То есть ресурс теперь по сути – это агент. А значит, он может иметь своё поведение, заданное, например, картой состояний. Типичный пример: какое-то производственное оборудование, выступающее как ресурс, может либо работать, либо быть на ремонте. Это описывается небольшой картой состояний, приведённой ниже.



Каждая из единиц ресурса будет находиться в одном из состояний. При этом новая библиотека дискретно-событийного моделирования позволит выбрать для использования ресурс, находящийся в заданном состоянии, например, в состоянии «Работает». Для этого в свойствах блока Service «операция» задаём «условие выбора ресурса».



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



AnyLogic 7 позволяет задавать альтернативные наборы ресурсов, подходящих для обслуживания. Например, на рисунке ниже ресурс «Медсестра» может быть заменён ресурсом типа «Техник».



Другое интересное нововведение – это политики вытеснения ресурсов. Когда появляется новая задача более высокого приоритета, вы можете выбрать, что делать с текущей задачей:
  • Оставить выполняться и не вытеснять текущую работу;
  • Ожидать оригинал ресурса: при этом задача прерывается и ждёт, когда тот же самый ресурс завершит её;
  • Остановить выполнение: при этом задача просто отбрасывается и не будет завершена никогда;
  • Захватить другой ресурс того же типа, чтобы продолжить обслуживание;
  • Продолжить обслуживание без ресурса.

Объекты Seize, Delay и Assembler позволяют выбирать эти политики из dropdown-листа:



Так же для ресурсов просто смоделировать аварии и ремонты. К сожалению, при моделировании реального оборудования без учёта отказов зачастую не обойтись.



Допустим, ресурс требует техобслуживания. Это может быть задано задержкой или процессной диаграммой. Тем самым мы легко можем описать логику, приведённую в самом начале, заменив карту состояний внутри объекта отдельной процессной диаграммой.



Аналогичным образом в блоке ResourcePool можно задать расписание работы, перерывов, работу в несколько смен. Появляется возможность определять схему перерывов объектом «Расписание» и назначать приоритет перерывов. Вот как это выглядит в объекте ResourcePool:



А что если у наших ресурсов есть задачи, которые не ложатся на стандартные шаблоны – это не текущие рабочие процессы, а, например, совещание? В данном случае используйте «Дополнительные задачи». Для этого сначала нужно определить задачу блоком ResourceTask, а затем выбрать эту задачу в «Списке задач» блока ResourcePool:



Лучше один раз увидеть, чем сто раз услышать, поэтому для закрепления материала предлагаем вам посмотреть 10-минутное видео, в котором рассказывается про работу с ресурсами в новом AnyLogic: