Основная библиотека AnyLogic подерживает дискретно-событийный, или, если быть более точным, "процессный" подход моделирования. С помощью объектов Основной библиотеки Вы можете моделировать системы реального мира, динамика которых представляется как последовательность операций (прибытие, задержка, захват ресурса, разделение, ...) над некими сущностями (entities, по-русски - транзакты, заявки), представляющими клиентов, документы, звонки, пакеты данных, транспортные средства и т.п. Эти сущности пассивны, они сами не контролируют свою динамику, но могут обладать определёнными атрибутами, влияющими на процесс их обработки (например, тип звонка, сложность работы) или накапливающими статистику (общее время ожидания, стоимость).
Процессы задаются в форме потоковых диаграмм (блок-схем) - графическом представлении, принятом во многих областях: производстве, бизнес-процессах, центрах обработки звонков, логистике, здравоохранении и т.д. Потоковые диаграммы AnyLogic иерархичны, масштабируемы, расширяемы и объектно-ориентированы, что позволяет пользователю моделировать сложные системы любого уровня детальности. Другой важной особенностью Основной библиотеки является возможность создания достаточно сложных анимаций процессных моделей.
В Основную библиотеку также входят объекты, разработанные для моделирования процессов, происходящих в (и зависящих от) пространства: таких, где объекты-заявки и ресурсы перемещаются в некой сети. Это подмножество объектов значительно упрощает моделирование некоторых типов систем, например, производства, внуризаводской логистики, супермаркета, склада, госпиталя. Для использования этого подхода, называемого сетевым моделированием, Вы должны определить топологию сети (например, используя векторную графику AnyLogic поверх плана или чертежа здания или сооружения), множества ресурсов (статических, движущихся или перемещаемых), и собственно процесс. Процесс в данном случае - это комбинация объектов типа "переместиться туда-то" или "присоединить к себе ресурс" (таких, как NetworkMoveTo, NetworkSeize, NetworkSendTo) и обычных объектов Основной библиотеки (Queue, Delay, Service). Заявки и ресурсы автоматически анимируются движущимися по сегментам сети или находящимися в её узлах; эта анимация может также комбинироваться с обычной.
Если моделируемая система сложна, имеет смысл разбить её модель на компоненты (подпроцессы) и поместить каждый из них в отдельный активный объект. Вы можете определить входы и выходы из подпроцесса, поместить их на внешний интерфейс активного объекта и скрыть его реализацию. На верхнем уровне Вы будете оперировать такими объектами как блоками, соединяя их входы и выходы. Вы можете создать несколько экземпляров активного объекта с разными параметрами, в том числе и в других проектах.
Пример: Вам понадобилось создать в модели аэропорта такие компоненты, как Регистрация, ПаспортныйКонтроль, Посадка и т.д. В блок, моделирующем зону регистрации, Вы можете лишь единожды добавить объект СтойкаРегистрации и сделать его реплицированным. Ресурсы модели могут разделяться между различными активными объектами, так что Вы можете, например, использовать общий компонент ИнформационнаяСистема, предоставляющий ресурсы для этих подпроцессов.
Как и все в AnyLogic, процессная модель может быть расширена до любого требуемого уровня детальности с необходимой нестандартной функциональностью. Во-первых, базовые классы Entity и ResourceUnit могут быть расширены Вашими собственными классами с любыми дополнительными полями и методами. Указав эти классы в параметрах классов объектов, Вы позволите более простой доступ к Вашим полям (без явного приведения типов, как это было в AnyLogic 5). Например, в модели аэропорта Вам может понадобиться создать специальные классы, моделирующие пассажиров, багаж, офицеров безопасности и т.д.
Во-вторых, у каждого объекта Основной библиотеки есть специальные "точки расширения" - места, где Вы можете задать какие-то действия или выражения. Такими точками расширения являются динамические параметры (помеченные в описаниях объектов как [динамические]), вычисляемые во время выполнения модели при прохождении заявок через процессную диаграмму. Например, в объекте Delay, моделирующем распечатку посадочных талонов в объекте Регистрация, Вы можете присвоить пассажиру выход (гейт), написав entity.gate = main.gateof( entity.flightno ) в параметре Действие при выходе. Здесь gate (гейт) и flightno (номер полета) - поля класса Passenger, моделирующего пассажиров, а gateof - функция, заданная в корневом объекте модели Main. Обратите внимание, что у Вас есть доступ к любой части модели из любой другой части модели, и более того, поскольку Вы пишете Java код, Вы можете взаимодействовать с любым внешним программным обеспечением и/или использовать любой из огромного количества Java пакетов.
Основная библиотека тесно интегрирована с анимационными средствами AnyLogic и позволяет создавать анимации процессов любой степени сложности, в том числе иерархические и с несколькими различными графическими представлениями процесса. Например, Вы можете определить глобальный взгляд на процесс производства с несколькими агрегированными индикаторами, а также детальные анимации конкретных операций - и переключаться между ними.
Для большинства объектов Основной библиотеки анимация задается следующим образом: Вы рисуете фигуру, скажем, ломаную, указываете ее в параметре Фигура анимации, скажем, объекта Delay и говорите этому объекту, что Вы хотите отображать заявки, задерживающиеся в этом объекте, движущимися по этой фигуре анимации (см. Анимация объектов Основной библиотеки). Затем Вы рисуете другую фигуру (или группу фигур), и делаете ее Фигурой анимации заявки, например, в объекте Source. Тогда пока заявки будут находиться в объекте Delay, анимации этих заявок будут отображаться в соответствующих точках этой ломаной.
В сетевом моделировании Вы рисуете сеть узлов и сегментов, и заявки автоматически отображаются движущимися вдоль сегментов или остающимися в узлах (более подробную информацию Вы можете получить здесь).
Одним из главных преимуществ AnyLogic является возможность комбинирования различных стилей моделирования, позволяющая отражать комплексность и неоднородность систем реального мира. Вы можете комбинировать Ваши процессные модели, построенные с помощью Основной библиотеки, с моделями системной динамики или агентными моделями, или же просто создавать Ваши собственные объекты с помощью базовых элементов AnyLogic и включать их в диаграмму, описывающую Ваш процесс.
Есть множество способов комбинирования подходов моделирования, мы приведем лишь некоторые примеры:
Если Вам нужен объект со специфической функциональностью, отличной от функциональности, предоставляемой объектами Основной библиотеки (и недостижимой путем комбинирования этих объектов), Вы можете создать Ваш собственный класс активного объекта и использовать объекты Exit и Enter в качестве интерфейсных элементов - тогда Вы сможете вставлять экземпляры данного класса активного объекта в Вашу процессную диаграмму. В таком активном объекте можно использовать диаграммы состояний, события, переменные и т.д (см. описание объекта Exit).