Основы агентного моделирования (Система «AnyLogic»)

Основы агентного моделирования (Система «AnyLogic»)

Основы агентного моделирования (Система «AnyLogic») : метод. указания / сост. Н. П. Садовникова, Д. С. Парыгин ; ВолгГТУ. – Волгоград, 2015. – 16 с.

Авторы:

Парыгин Данила Сергеевич
Садовникова Наталья Петровна

В методических указаниях излагаются основные принципы работы в системе AnyLogic. Описываются этапы построения агентной модели. Приводятся варианты заданий. Методические указания предназначены для студентов факультета электроники и вычислительной техники очной и заочной форм обучения.

Цель работы: освоить приемы практической работы в системе AnyLogic, познакомиться c технологией агентного моделирования.

1. Краткие сведения о  системе AnyLogic

AnyLogic – отечественный профессиональный инструмент нового поколения, который предназначен для разработки и исследования имитационных моделей. Разработчик продукта – компания «Экс Джей Текнолоджис» (XJ Technologies), г. Санкт-Петербург; электронный адрес: www.xjtek.ru.

AnyLogic основан на объектно-ориентированной концепции. Другой базовой концепцией является представление модели как набора взаимодействующих, параллельно функционирующих активностей. Активный объект в AnyLogic – это объект со своим собственным функционированием, взаимодействующий с окружением. Он может включать в себя любое количество экземпляров других активных объектов. Графическая среда моделирования поддерживает проектирование, разработку, документирование модели, выполнение компьютерных экспериментов, оптимизацию параметров относительно некоторого критерия.

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

Для реализации специальных вычислений и описания логики поведения объектов AnyLogic позволяет использовать язык Java.

Основными строительными блоками модели AnyLogic являются активные объекты, которые позволяют моделировать любые объекты реального мира. Класс определяет шаблон, в соответствии с которым строятся отдельные экземпляры класса. Эти экземпляры могут быть определены как объекты других активных объектов. Активный объект является экземпляром класса активного объекта. Активные объекты могут содержать вложенные объекты, причем уровень вложенности не ограничен.

Активные объекты имеют четко определенные интерфейсы взаимодействия. Это облегчает создание систем со сложной структурой, а также делает активные объекты повторно используемыми. Создав класс активного объекта, вы можете создать любое количество объектов – экземпляров данного класса.

Основными средствами описания поведения объектов являются переменные, события и диаграммы состояний. Переменные отражают изменяющиеся характеристики объекта. События могут наступать с заданным интервалом времени и выполнять заданное действие. Диаграммы состояний (или стейтчарты) позволяют визуально представить поведение объекта во времени под воздействием событий или условий, они состоят из графического изображения состояний и переходов между ними (т.е. по сути это конечный автомат). Любая сложная логика поведения объектов модели может быть выражена с помощью комбинации стейтчартов, дифференциальных и алгебраических уравнений, переменных, таймеров и программного кода на Java [1]. Алгебраические и дифференциальные уравнения записываются аналитически. Интерпретация любого числа параллельно протекающих процессов в модели AnyLogic скрыта от пользователя. Никаких усилий разработчика модели для организации квазипараллелизма интерпретации не требуется; отслеживание всех событий выполняется системой автоматически.

Агенты в AnyLogic

Агент – это некоторая сущность, которая обладает активностью, автономным поведением, может принимать решения в соответствии с некоторым набором правил, может взаимодействовать с окружением и другими агентами, а также может изменяться (эволюционировать). Многоагентные (или просто агентные) модели используются для исследования децентрализованных систем, динамика функционирования которых определяется не глобальными правилами и законами, а, наоборот, эти глобальные правила и законы являются результатом индивидуальной деятельности членов группы. Цель агентных моделей – получить представление об общем поведении системы исходя из знаний о поведении ее отдельных активных объектов и взаимодействии этих объектов в системе [2].

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

Стейтчарты и таймеры могут выражать поведение: состояния агента и изменение состояний под воздействием событий и условий. Кроме того, агент может иметь интерфейс для взаимодействия с окружением, который реализуется с помощью интерфейсных объектов: портов и интерфейсных переменных.

2. Порядок выполнения работы

Постановка задачи

Создадим модель для моделирования процесса приобретения нового продукта под влиянием рекламной кампании, проводимой с целью выведения нового продукта на сложившийся рынок [3].

В этой модели интенсивность рекламы и вероятность того, что продукт будет приобретен под ее влиянием, полагаются постоянными. Поэтому мы зададим эффективность рекламы константой. Эффективность рекламы определяется количеством людей купивших продукт под воздействием рекламы.

Шаг 1. Создание простейшей агентной модели

  1. Щелкните мышью по кнопке панели инструментов Создать. Задайте имя новой модели и сохраните проект.
  2. Щелкните мышью по кнопке Далее. Откроется вторая страница Мастера создания модели. Здесь предлагается выбрать шаблон модели, на базе которого будет разрабатываться модель. Выберите Агентная модель в расположенном списке.
  3. Далее необходимо задать имя класса агента и количество агентов, которое будет изначально создано. Задайте в качестве имени класса Person и введите в поле Начальное количество агентов 500. Автоматически будет создано 500 агентов (то есть, экземпляров класса Person, каждый из которых будет представлять отдельного агента).
  4. После нажатия кнопки Далее откроется следующая страница для задания свойств пространства, в котором будут действовать агенты, и  выбора фигуры анимации агента.
  5. Установите флажок Добавить пространство и выберите ниже тип этого пространства: Непрерывное. Здесь же можно задать размерность пространства: в поле Ширина введем 600, а в поле Высота – 350.
  6. При открытии следующей страницы Мастера необходимо определить будет ли задана сеть взаимосвязей агентов. Установите флажок Использовать сеть и оставьте выбранной опцию Случайное.
  7. После нажатия кнопки Далее откроется последняя страница Мастера создания модели. Установите на ней флажок Добавить простое поведение для создания диаграммы состояний.

Пользовательский интерфейс AnyLogic

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

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

Рис. 1. Окно проекта

Созданная  модель будет содержать классы активных объектов Main и Person. Активный объект Person будет моделировать агентов (людей). Этот класс активного объекта был автоматически объявлен агентом (тем самым он получил доступ к специальной функциональности агента).

Шаг 2. Моделирование продаж под влиянием рекламы

Характеристики модели задаются с помощью параметров. Мы зададим параметры в классе Person, потому что наши агенты задаются экземплярами именно этого класса. Задав значение параметра в классе, мы задаем его для всех агентов одновременно. Но при необходимости можно задать характеристики индивидуально для каждого агента

Откройте диаграмму класса Person, сделав двойной щелчок мышью по элементу Person в панели Проекты.

1 — Перетащите элемент Параметр из палитры Основная на диаграмму класса:

2 — При помещении  элемента на диаграмму класса, этот элемент будет считаться выбранным, и появится возможность изменять свойства элемента в расположенной в нижней части рабочей области панели Свойства. В дальнейшем для изменения свойств элемента нужно будет вначале щелчком мыши выделить его в графическом редакторе или в дереве элементов модели, отображаемом в панели Проекты.
3 — Перейдите на страницу Основные панели Свойства, чтобы изменить свойства созданного параметра.
4 — Измените имя параметра. Введите AdEffectiveness в поле Имя.
5 — В поле Значение по умолчанию введите 0.01.
6 — Откройте диаграмму класса Person, сделав двойной щелчок мышью по элементу Person в панели Проекты. На диаграмме класса Вы увидите следующую диаграмму состояний:

7 — Измените имя верхнего состояния на PotentialAdopter (поле Имя на странице свойств перехода) Это начальное состояние. Если диаграмма состояний будет находиться в этом состоянии, то это будет означать, что этот человек еще не купил продукт.
8 — Следующее состояние назовем Adopter. Если это состояние диаграммы будет активным, это будет означать, что этот человек уже купил продукт.
9 — Процесс приобретения продукта человеком моделирует переход, ведущий из верхнего состояния в нижнее (рис.2). Нам нужно изменить его свойства, чтобы он срабатывал в нужный нам момент времени.
10 — Время, через которое человек купит продукт, экспоненциально зависит от эффективности рекламы продукта. Поскольку время, необходимое человеку, чтобы принять решение о покупке продукта экспоненциально зависит от подверженности этого человека влиянию рекламы, то выберите из выпадающего списка Происходит с заданной интенсивностью и введите в поле свойства Интенсивность этого перехода имя созданного нами только что параметра AdEffectiveness.

11 — Введите AdEffectiveness в расположенном ниже поле Интенсивность. Чтобы открыть Мастер, щелкните мышью в том месте поля (в нашем случае  – поля Интенсивность, куда Вы хотите поместить имя, а затем нажмите Ctrl+пробел (при работе на Mac OS: Alt+пробел). Появится окно Мастера подстановки кода, перечисляющего переменные модели и функции, доступные в текущем контексте.

Рис. 2. Задание свойств перехода

12 — Удалите переход, ведущий из нижнего состояния в верхнее, поскольку мы пока создаем простейшую модель, в которой человек, однажды приобретший продукт, навсегда остается его потребителем, и соответственно перехода из состояния Adopter в состояние PotentialAdopter пока что быть не должно.

Шаг 3. Настройка запуска модели

В панели Проекты эксперименты отображаются в нижней части дерева модели. Один эксперимент, названный Simulation, создается по умолчанию. Это простой эксперимент, позволяющий запускать модель с заданными значениями параметров, поддерживающий режимы виртуального и реального времени, анимацию и отладку модели.

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

Под единицей модельного времени примем один год, а процесс распространения продукта в этой модели длится примерно 8 лет.

  1. В панели Проекты, выделите эксперимент Simulation:Main.
  2. На странице Модельное время панели Свойства, выберите В заданное время из выпадающего списка Остановить и введите в поле цифру 8.

Шаг 4. Запуск модели

  1. Нажмите на кнопку Построить модель.
  2. Щелкните мышью по кнопке панели инструментов Запустить и выберите из открывшегося списка эксперимент, который Вы хотите запустить.
  3. Появится окно презентации модели. AnyLogic автоматически помещает на презентацию каждого простого эксперимента заголовок и кнопку, позволяющую запустить модель и перейти на презентацию, нарисованную для главного класса активного объекта этого эксперимента (Main).
  4. На презентации можно увидеть моделируемых агентов. Каждый агент отображается своей фигуркой, которая меняет свой цвет в зависимости от того, приобрел ли данный агент рассматриваемый нами продукт или нет. Линиями на презентации будут соединены те агенты, между которыми существуют связи (в данный момент эти связи генерируются случайным образом).

Шаг 5. Подсчет потребителей продукта

Добавим возможность отслеживания того, сколько людей уже купило продукт, а сколько – еще нет.

1 — Откройте диаграмму класса Main.
2 — Выделите на диаграмме вложенный объект people.
3 — Перейдите на страницу Статистика панели Свойства.
4 — Щелкните мышью по кнопке Добавить функцию сбора статистики.
5 — Введите potentialAadopters (имя функции) в поле Имя.
6 — Оставьте выбранный по умолчанию Тип функции: Кол-во.
7 — Задайте Условие:

item.statechart.isStateActive(item.PotentialAdopter)

Эта функция будет вести подсчет количества агентов, для которых выполняется заданное условие, т.e. тех агентов, которые находятся в текущий момент времени в состоянии PotentialAdopter (являются потенциальными потребителями продукта). Здесь item – это агент (элемент реплицированного объекта people).

8 — Аналогично создайте еще одну функцию сбора статистики об агентах, которые уже приобрели продукт.

9 — Добавьте временной график, отображающий динамику изменения численностей потребителей и потенциальных потребителей продукта. Для этого откройте диаграмму класса Main, сделав двойной щелчок мышью по элементу Main в панели Проекты.

10 — Перетащите элемент Временной график из палитры Статистика на диаграмму класса.

11 — Перейдите на страницу Основные панели Свойства и задайте элементы данных  графика:

  • введите people.potentialAdopters() в поле Выражение.
  • введите Potential adopters в поле Заголовок. Эта строка будет отображаться в легенде диаграммы для данного элемента данных.

12 — Аналогично добавьте еще один элемент данных – количество потребителей продукта, возвращаемое другой нашей статистической функцией: people.adopters(). Задайте Adopters в качестве заголовка этого элемента данных и измените свойства внешнего вида, как и в предыдущем случае Временной диапазон (рис.3)

Рис. 3. Задание свойств графика

13 — Запустите модель. С помощью диаграммы (рис.4) можно наблюдать за динамикой моделируемого процесса.

Рис. 4. Отображение моделируемого процесса

3. Задачи для моделирования

  1. Прогнозирование потребления продукта.
  2. Движение людей на переходе.
  3. Рекламная компания.
  4. Выбор продукта.
  5. Распространение гриппа.
  6. Движение машин на перекрестке.
  7. Столкновение частиц при хаотичном броуновском движении.
  8. Обработка запросов серверами.
  9. Обработка документов.

Контрольные вопросы:

  1.  Что такое агент?
  2.  Назовите основные средства описания поведения объектов. Каковы их особенности?
  3. Опишите основные возможности пакета AnyLogic 6.
  4. Что такое внешний интерфейс модели и какие возможности для их создания предлагает AnyLogic?
  5. Какие средства визуализации работы модели предлагает AnyLogic?
  6. Какой общий алгоритм реализован в AnyLogic для создания агентных моделей?
  7. Какие есть возможности для организации пространства для «жизнедеятельности» агентов в модели и для чего это используется?
  8. Чем отличаются непрерывное и дискретное модельные пространства?
  9. Что такое «Активный объект» в AnyLogic  и как они создаются?
  10. Что такое объект «Environment» (окружающая среда агентов), как и зачем он включается в модель?
  11. Как в AnyLogic  можно задавать и управлять движением агентов?

Список рекомендуемой литературы

  1. Карпов, Ю. Г. Имитационное моделирование систем. Введение в моделирование с AnyLogic 5 / Ю. Г. Карпов. – СПб. : БХВ-Петербург, 2009. – 400 с.

2. Маликов, Р. Ф. Практикум по имитационному моделированию сложных систем  в среде AnyLogic : учеб. пособие / Р. Ф. Маликов. – Уфа: Изд-во БГПУ, 2013. – 296 с.

3. Киселева, М. В. Имитационное моделирование систем в среде AnyLogic : учеб.-метод. пособие / М. В. Киселёва. – Екатеринбург : УГТУ-УПИ, 2009. – 88 с.

4. Портал AnyLogic [Электронный ресурс]. – Режим доступа : http://www.anylogic.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *