AnyLogic содержит средства для быстрого создания моделей дискретно-событийных систем. Весьма сложные модели могут быть построены без использования программного кода из заранее построенных блоков библиотеки Enterprise Library, как это мы видели в главе 6. Библиотечные блоки значительно упрощают разработку моделей дискретных событийных систем в стиле drag-and-drop (перетащить и оставить) в соответствии с парадигмой моделирования систем обслуживания потоков заявок.
Библиотечные элементы в моделях могут быть легко дополнены низкоуровневыми средствами моделирования дискретных событийных систем в AnyLogic, которые включают:
- стейтчарты (карты состояний), позволяющие графически описать сложное дискретное поведение;
- таймеры и события, позволяющие выразить изменения поведения объекта во времени или при наступлении некоторого события;
- возможности определения своих собственных типов транзакций (сообщений) для взаимодействия активных объектов;
- механизм обмена активных объектов сообщениями через порты.
В предыдущих разделах уже рассматривались все эти средства. Коротко охарактеризуем их еще раз.
Стейтчарты — это мощное средство визуального задания сложного поведения объектов, включающее иерархические состояния, разветвления (условные переходы), исторические состояния и т. п. Дискретно-событийные системы меняют свое состояние мгновенно, под влиянием событий. Стейтчарты наиболее естественно представляют такие изменения, поскольку переходы между состояниями в них являются мгновенными. Переходы могут быть активизированы полученными сообщениями, исчерпанием таймау-та, возникновением событий и условиями. Стейтчарты приняты в качестве стандарта в визуальном представлении алгоритмов реактивных (или реагирующих) систем (reactive systems) в языке UML (Unified Modeling Language), однако там они не имеют четко определенной семантики, что не позволяет использовать UML как язык создания моделей.
Сообщения могут быть произвольных типов, они посылаются и принимаются через порты. Именно сообщениями могут быть представлены транзакции в классической парадигме блочного дискретно-событийного моделирования. Порты двунаправлены, они могут иметь очереди входящих сообщений. Входные сообщения либо могут сохраняться в очереди, ассоциированной
с портом, либо обрабатываться при получении, либо передаваться по внутренним соединениям, связанным с портом.
В AnyLogic могут использоваться статические и динамические таймеры. Ранее мы рассмотрели статические таймеры. Динамические таймеры обычно используются для того, чтобы упорядочить события, связанные с задержкой элементов произвольного динамически изменяющегося множества объектов или сообщений.
Движок, управляющий выполнением модели в AnyLogic, упорядочивает обработку дискретных событий, сохраняя порядок и неделимость выполнения операций в соответствии с семантикой языка моделирования. События, которые определены в модели как наступающие одновременно, обрабатываются в произвольном порядке.
В дискретно-событийных моделях обычно необходимо включение стохастики в модель, поскольку часто события происходят в случайные моменты времени. Для этого в AnyLogic предусмотрены более 35 различных генераторов распределений случайных величин, а также средства автоматической обработки наборов данных, являющихся реализациями случайных величин, порожденных в результате выполнения модели. AnyLogic позволяет проведение экспериментов с моделью, выполнение анализа рисков, связанных со случайными флуктуациями параметров моделируемой системы, оптимизацию параметров модели.