Дискретно-событийное моделирование

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

Вот некоторые примеры событий: покупатель вошел в магазин, на складе закончили разгружать фуру, конвейер остановился, в производство запущен новый продукт, уровень запасов достиг некоего порога и т.д. В дискретно-событийном моделировании движение поезда из точки А в точку Б будет представлено двумя событиями: отправление и прибытие, а само движение станет "задержкой" (интервалом времени) между ними. (Это, однако, не означает, что вы не сможете показать поезд движущимся - как раз наоборот, AnyLogic позволяет создавать визуально непрерывные анимации для логически дискретных процессов).

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

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

Библиотека Моделирования Процессов AnyLogic

Основное средство процессного моделирования в AnyLogic - это Библиотека Моделирования Процессов. В эту библиотеку вошли объекты для определения "потока" процесса (process workflow): Source (источник), Sink (выход из системы), Delay (задержка), Queue (очередь), Service (обслуживание), SelectOutput (выбор пути), и т.д., а также задействованных в процессе ресурсов. Все объекты гибкие и настраиваемые: параметры могут изменяться динамически, действия могут зависеть от атрибутов агентов, и т.д. Объекты имеют "точки расширения" типа действий При входе/При выходе - это места, где можно определить действия, производимые над агентами при их прохождении через объект. Базовый тип агентов Agent, в свою очередь, может быть расширен путём добавления параметров и методов. Компоненты модели, построенные из блоков Библиотеки моделирования процессов, могут естественным образом взаимодействовать с компонентами системной динамики, с агентами или с низкоуровневыми примитивами AnyLogic - диаграммами состояний и событиями.

Если моделируемая система сложна, имеет смысл разбить её модель на компоненты (подпроцессы) и поместить каждый из них в отдельный тип агента. Вы можете определить входы и выходы из подпроцесса, поместить их на внешний интерфейс агента и скрыть его реализацию. На верхнем уровне вы будете оперировать такими объектами как блоками, соединяя их входы и выходы. Вы можете создать несколько экземпляров агента с разными параметрами, в том числе и в других проектах.

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

Сетевое моделирование

В Библиотеку моделирования процессов также входят объекты, разработанные для моделирования процессов, происходящих в (и зависящих от) пространства: таких, где агенты и ресурсы перемещаются в некой сети. Это подмножество объектов значительно упрощает моделирование некоторых типов систем, например, производства, внуризаводской логистики, супермаркета, склада, госпиталя. Для использования этого подхода, называемого сетевым моделированием (Network Based Modeling), вы должны определить топологию сети (например, используя элементы разметки пространства AnyLogic поверх плана или чертежа здания или сооружения), множества ресурсов (статических, движущихся или перемещаемых), и собственно процесс. Процесс в данном случае - это комбинация объектов типа "переместиться туда-то" или "присоединить к себе ресурс" и обычных объектов Библиотеки моделирования процессов. Агенты и ресурсы автоматически анимируются движущимися по сегментам сети или находящимися в её узлах; эта анимация может также комбинироваться с обычной.