Агент

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

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

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