Имитационное моделирование управления в групповой робототехнике на основе многоагентного подхода методические материалы к практическим занятиям




Скачать 286.98 Kb.
Дата11.08.2016
Размер286.98 Kb.


Паршикова Е.А.

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ УПРАВЛЕНИЯ
В ГРУППОВОЙ РОБОТОТЕХНИКЕ
НА ОСНОВЕ МНОГОАГЕНТНОГО ПОДХОДА


Методические материалы к практическим занятиям

Москва, 2015

Составитель: Паршикова Е.А.

УДК 519.876.5

Имитационное моделирование управления в групповой робототехнике на основе многоагентного подхода: Метод. указания к практическим занятиям; Сост.: Паршикова Е.А.. – М., 2014. – 32 с. Под ред. Карповой И.П.

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

Для студентов старших курсов технических вузов, изучающих моделирование, многоагентные системы, робототехнику.

Ил.: 33. Библиогр.: 14 назв.

ISBN

Содержание


Введение 4

1.Виды имитационного моделирования 4

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

1.2.Непрерывное моделирование 5

1.3.Агентное моделирование 6

1.4.Выводы 7

2.Имитационное моделирование управления в групповой робототехнике на основе многоагентного подхода в Anylogic (rev. 7.1.2.) 9

2.1.О средстве моделирования AnyLogic 9

2.2.Системные требования 9

2.3.Установка 10

2.4.Примеры моделей на основе агентного подхода 12

2.4.1.Пример 1. Робот, движущийся к цели по заданной траектории 12

2.4.2.Пример 2. Группа роботов, следующая за лидером 27

Библиографический список 34




Введение


Моделирование — метод решения задач, при использовании которого исследуемая система заменяется более простым объектом, описывающим реальную систему и называемым моделью. Моделирование применяется в случаях, когда проведение экспериментов над реальной системой невозможно или нецелесообразно: например, по причине хрупкости или дороговизны создания прототипа, либо из-за длительности проведения эксперимента в реальном масштабе времени. Различают физическое и математическое моделирование. Особым видом математических моделей являются имитационные модели.

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

Применение имитационных моделей дает множество преимуществ по сравнению с выполнением экспериментов над реальной системой и использованием других методов:



  • стоимость;

  • время;

  • повторяемость;

  • точность;

  • наглядность;

  • универсальность.
  1. Виды имитационного моделирования


В имитационном моделировании существует несколько парадигм, используемых при построении и анализе моделей. Изменения состояний системы могут происходить либо непрерывно, либо в дискретные моменты времени. В зависимости от этого в качестве базовых концепций можно выделить: дискретное моделирование (системы, основанные на описании процессов) и системы, основанные на непрерывном моделировании (модели и методы системной динамики) [Лычкина, 2000]. Хотя процедуры описания динамического поведения дискретно и непрерывно изменяющихся моделей различны, основная концепция имитации системы – отображение изменений ее состояния с течением времени – остается той же.

Также необходимо выделить новое, недавно возникшее направление в имитационном моделировании – мультиагентные модели.


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


Дискретно-событийное моделирование (discrete event modeling) — подход к моделированию, предлагающий абстрагироваться от непрерывной природы событий и рассматривать процессы, протекающие в моделируемой системе, как последовательность отдельных событий. Основан Джеффри Гордоном в 1960-х годах.

В дискретно-событийном моделировании выделяются состояния системы и описываются действия, которые переводят ее из одного состояния в другое. Состояние системы может меняться только в моменты свершения событий. Так как состояние системы не изменяется между этими моментами, полный динамический портрет состояний системы может быть получен путем продвижения имитационного времени от одного события к другому. При дискретной имитации значения зависимых переменных изменяются дискретно в моменты совершения событий и, как правило, не изменяются в промежутках между моментами совершения событий [Наместников, 2004].

Термин "дискретно-событийное моделирование", однако, обычно используется в более узком смысле для обозначения "процессного" моделирования, где динамика системы представляется как последовательность операций над некими сущностями. Эти сущности пассивны, они сами не контролируют свою динамику, но могут обладать определёнными атрибутами, влияющими на процесс их обработки или накапливающими статистику. Процессное моделирование используется на среднем или низком уровне абстракции: каждый объект моделируется индивидуально, как отдельная сущность, но множество деталей "физического уровня" опускается [www.anylogic.ru].

Дискретно-событийное моделирование наиболее развито и имеет огромную сферу приложений — от логистики и систем массового обслуживания до транспортных и производственных систем. Этот вид моделирования наиболее подходит для моделирования производственных процессов.

Примеры систем: Extend, Arena, ProModel, Witness, Taylor, Gpss/H-Proof, AutoMod, QUEST, SIMFACTORY II.5, SIMPLE++, eM-Plant, и др. [Лычкина, 2005]

    1. Непрерывное моделирование


В непрерывной имитационной модели состояние системы представляется с помощью непрерывно изменяющихся в течение имитационного времени зависимых переменных, которые в отличие от дискретно изменяющихся переменных называются переменными состояния [Наместников, 2004]. Непрерывная имитационная модель создается путем задания уравнений для совокупности переменных состояния, динамическое поведение которых имитирует реальную систему.

Системная динамика (systems dynamics) — это метод по изучению комплексных систем, которые подвержены изменениям с течением времени. Основан Джеем Форрестером в 1950 годах. В основе системной динамики лежит утверждение, что структура системы предопределяет её поведение. Системная динамика как метод позволяет учесть основополагающие взаимосвязи между элементами системы и временные задержки в динамике её развития [Sterman, 2000]. При моделировании учитываются причинно-следственные взаимосвязи между элементами системы, особое внимание уделяется обратной связи между ними. При этом очень важным моментом является то, что модель не только должна воспроизводить поведение системы в реальных условиях, но делать это на основе тех же причин, которые существуют в реальности. Системная динамика главным образом используется в долгосрочных, стратегических моделях и принимает высокий уровень абстракции. Дискретные элементы представлены в моделях системной динамики не как отдельные элементы, а как система в целом [www.anylogic.ru].

Системная динамика – это подход имитационного моделирования, своими методами и инструментами позволяющий понять структуру и динамику сложных систем [www.anylogic.ru]. Системная динамика находит свое применение в самых разнообразных сферах, таких как экономика, управление бизнесом, государственное управление, правовая сфера, транспортные перевозки, инженерия, медицина, биология, экология, антропология, психология, социология, образование и др. [Scholl, 2001a, Scholl, 2001b] С помощью системной динамики строят модели бизнес-процессов, развития города, модели производства, динамики популяции, экологии и развития эпидемии.

Примеры систем: Powersim, Vensim, Dynamo, Stella, Ithink и др. [Лычкина, 2005]

    1. Агентное моделирование


Агентное моделирование (agent-based model) — относительно новое (1990-е-2000-е гг.) направление в имитационном моделировании, которое используется для исследования децентрализованных систем, динамика функционирования которых определяется не глобальными правилами и законами (как в других парадигмах моделирования), а наоборот, когда эти глобальные правила и законы являются результатом индивидуальной активности членов группы [Карпов, 2006]. Агентная модель представляет реальный мир в виде многих отдельно специфицируемых активных подсистем, называемых агентами (автономных объектов, целенаправленно функционирующих в конкретной среде по определенному набору правил, взаимодействующих друг с другом и адаптирующихся в процессе функционирования [Жарова, 2012]). Обычно в таких системах не существует глобального централизованного управления, агенты функционируют по своим законам асинхронно [Карпов, 2005]. Поведение агентов регулируется их собственной схемой, т.е. когнитивной структурой, которая определяет, какое действие агент предпринимает в момент времени t, с учетом его восприятия окружающей среды [Schieritz, Milling, 2003]. Существует множество определений понятия агента. Общим во всех определениях этого понятия является то, что агент — это некая сущность, обладающая активностью, автономным поведением, может принимать решения в соответствии с некоторым набором правил, взаимодействовать с окружением и другими агентами, а также может самостоятельно изменяться (эволюционировать) [Карпов, 2006]. Основываясь на простых правилах поведения и взаимодействия агентов, естественные системы явно проявляют групповой интеллект [Замятина, 2007].

Таким образом, с точки зрения практического применения агентное моделирование можно определить как метод имитационного моделирования, исследующий поведение децентрализованных агентов и то, как это поведение определяет поведение всей системы в целом [www.anylogic.ru].

Примеры систем: Anylogic, NetLogo, StarLogo TNG, Mimosa [Замятина, 2007].

Когнитивная архитектура — основа для интеллектуальных агентов. Когнитивная архитектура определяет базовую инфраструктуру интеллектуальной системы и включает в себя те аспекты когнитивного агента, которые постоянны во времени и в различных областях применения. Они, как правило, включают в себя [Langley, Laird, Rogers, 2009]:


  • краткосрочную и долгосрочную память, в которых хранится содержимое об убеждениях, целях и знаниях агента;

  • представление элементов, которые содержатся в этих видах памяти и их организацию в крупномасштабные ментальные структуры;

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

Использование и исследование когнитивных архитектур как способов объединения в единой системе всех необходимых для полноценного интеллекта функций, таких как обучение, представление знаний, рассуждения и т.д. выделилось в новую господствующую парадигму в области искусственного интеллекта в целом. [Brachman, 2005]

Примеры систем: Soar, ACT-R, ICARUS, CLARION, FORR, PRODIGY [Langley, Laird, Rogers, 2009]


    1. Выводы


Как уже было сказано выше, в имитационном моделировании можно выделить три основных подхода:

  • системная динамика;

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

  • агентное моделирование.

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

Одни из основополагающих основ моделирования – это абстрагирование и упрощение, которые должны зависеть от решаемой задачи. Например, использование системной динамики для моделирования поведения автономных сущностей нецелесообразно, так как лучше не вводить дополнительный уровень абстракции и соответствующих предположений, если возможно использование агентного моделирования. И наоборот, незачем использовать дискретно-событийное моделирование для непрерывных закономерностей, если есть системная динамика.


  1. Имитационное моделирование управления в групповой робототехнике на основе многоагентного подхода в Anylogic (rev. 7.1.2.)

    1. О средстве моделирования AnyLogic


Программное обеспечение для имитационного моделирования AnyLogic поддерживает все три перечисленных выше вида моделирования. Инструмент обладает современным графическим интерфейсом и позволяет использовать язык Java для разработки моделей. Очень упрощенно основную концепцию использования этой системы моделирования можно представить через описание правил поведения отдельных активностей в удобном графическом формализме. Модель состоит из активных объектов (которые реагируют на события своей среды, а также предпринимают определенные действия, не дожидаясь прямого обращения к себе), имеющих каждый свои правила поведения и взаимодействующих через явно определенные интерфейсы [Карпов, 2005]. Данная система предоставляет следующие возможности [www.anylogic.ru]:

  • поддерживает все подходы к созданию имитационных моделей: процессно-ориентированный (дискретно-событийный), системно-динамический и агентный, а также любую их комбинацию;

  • любой уровень детализации;

  • графический интерфейс, инструменты и библиотеки, интерактивная анимация;

  • мультиплатформенный программный продукт (работает на Windows, Mac OS и Linux);

  • модели AnyLogic могут использоваться как отдельные Java-приложения полностью не зависимые от среды разработки;

  • полный диапазон консультационных услуг от обучения до разработки моделей.

Недостаток системы: AnyLogic предлагает не один, а множество путей разработки модели, и для эффективного выбора из этого спектра нужна большая практика.
    1. Системные требования

Требования к аппаратному обеспечению

  • 500MB свободного дискового пространства.

  • Рекомендуется иметь 2GB памяти и современный процессор для хорошей производительности.

  • Рекомендуется использовать мышь.
Требования к программному обеспечению

Среда разработки моделей AnyLogic 7 – это Java-приложение. Она протестирована на следующих платформах:

  • Microsoft Windows 8, x86-32 и x64;

  • Microsoft Windows 7 SP1, x86-32 и x64;

  • Apple Mac OS X 10.7.3 (Lion) или выше, Universal;

  • SuSE Linux Enterprise Server 10 SP2, 11.x, x86-32;

  • Ubuntu Linux 10.04 или выше, x86-32.

AnyLogic 7 может также быть установлен на других платформах, не перечисленных в этом списке (например, на других версиях Linux), но в этом случае полная совместимость с платформой не гарантируется.

Для работы AnyLogic 7 требуется Java 2 Standard Edition 8.0 или выше.

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

Java-аплеты AnyLogic 7 работают в любом браузере с поддержкой Java со следующими версиями JRE (Java Runtime Environment):



  • JRE 1.8.0 или выше;

  • Java plug-in (нужен для запуска моделей в браузере, устанавливается вместе с JRE как опция).

Модели, сделанные в AnyLogic 7 – это самостоятельные Java-приложения. Они протестированы на всех перечисленных выше платформах.
    1. Установка


AnyLogic не запустится до тех пор, пока Вы не активируете AnyLogic на Вашем компьютере с помощью программного ключа активации. Чтобы активировать AnyLogic с помощью программного ключа, Вам будет нужно вначале получить ознакомительный ключ, а затем активировать AnyLogic с его помощью. Обе процедуры - запроса ключа и активации AnyLogic - выполняются с помощью Мастера активации AnyLogic.

Чтобы открыть Мастер активации AnyLogic:



  1. Запустите AnyLogic.

  2. Если AnyLogic еще не активирован, появится окно Мастера активации AnyLogic.

  3. Если же Вы уже активировали AnyLogic (и используете его в ознакомительном режиме), то Вы можете открыть Мастер активации АnyLogic, выбрав Справка > Активировать продукт... из меню AnyLogic.

Чтобы получить ознакомительный ключ AnyLogic:

  1. На первой странице Мастера активации AnyLogic выберите опцию Запросить ограниченный по времени ознакомительный ключ и щелкните мышью по кнопке Далее.

  2. Откроется вторая страница Мастера активации. Следуйте инструкциям Мастера. Введите данные о себе и Ваш адрес электронной почты. Будьте внимательны, потому что ключ активации будет выслан именно на этот адрес. 

  3. Проверьте, заданы ли верные настройки соединения. Щелкните мышью по кнопке Настройки прокси. Откроется диалоговое окно Настройки прокси. Если Вы используете прокси, установите флажок Использовать прокси и задайте настройки соединения с помощью расположенных ниже элементов управления. Когда Вы закончите, щелкните мышью по кнопке OK

  4. Щелкните мышью по кнопке Далее, когда Вы введете всю необходимую информацию. 

  5. AnyLogic попробует отослать запрос ключа активации на сервер активации AnyLogic. Если соединение с сервером установить не удастся, то будет показана страница Мастера активации Соединение не было установлено, предлагающая Вам либо нажать на кнопку Назад и изменить Ваши настройки соединения и попробовать снова, либо нажать на кнопку Вперед, чтобы открыть форму запроса активации в браузере и вставить туда сообщение запроса. Когда форма запроса будет открыта, Вам нужно будет вставить в форму хранящийся в Буфере обмена код запроса, сгенерированный AnyLogic и нажать на кнопку Послать запрос (Submit request). 

Чтобы активировать AnyLogic:

  1. Откройте Мастер активации AnyLogic.

  2. Если Вы являетесь владельцем лицензии AnyLogic, выберите опцию Ввести полученный Вами по электронной почте постоянный ключ.

  3. Если же Вы хотите ознакомиться с AnyLogic и активировать его на время в ознакомительном режиме, выберите опцию Ввести полученный Вами по электронной почте ознакомительный ключ.

  4. Нажмите на кнопку Далее.

  5. На второй странице мастера, введите ключ который Вы получили по электронной почте (предварительно скопируйте ключ из письма в Буфер обмена, а затем вставьте его в форму Мастера активации, щелкнув по кнопке Вставить из буфера).

  6. Когда Вы закончите, щелкните мышью по кнопке Далее. Следующая страница Мастера активации будет содержать сообщение о том, была ли активация успешной. Если произошли какие-то неполадки, щелкните мышью по кнопке Назад и попытайтесь ввести ключ снова. Если же активация была выполнена успешно, щелкните по кнопке Готово.

Чтобы получить информацию о Вашей лицензии на AnyLogic:

  1. Выберите Справка > О программе AnyLogic из главного меню. Откроется диалоговое окно О программе AnyLogic. Здесь Вы можете просмотреть информацию о Вашей лицензии (рис.1).



Рисунок 1.
    1. Примеры моделей на основе агентного подхода

      1. Пример 1. Робот, движущийся к цели по заданной траектории

Описание задачи

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

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

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

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

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

Создание модели

  1. Нажмите меню Файл->Создать->Модель в главном окне (рис.2).



Рисунок 2.

  1. Откроется диалоговое окно Новая модель. Укажите имя модели. Введите MyBots в поле Имя модели (рис.3).



Рисунок 3.

  1. Укажите местоположение, где Вы хотите хранить файлы модели. Используйте кнопку Выбрать..., чтобы загрузить нужную папку, или введите путь к папке в поле Местоположение.

  2. Щелкните Готово, чтобы завершить процесс.

Новая модель будет создана. AnyLogic автоматически добавит один тип агента Main и простой эксперимент Simulation.

В центре рабочего пространства Вы видите графический редактор. Он показывает диаграмму типа агента Main (рис.4). Рамка синего цвета показывает границы окна презентации (настройки окна презентации Вы можете найти в свойствах эксперимента Simulation, в секции Окно).





Рисунок 4.

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

Справа Вы можете найти панель Свойства. Панель Свойства отображает и позволяет изменять свойства выбранного в данный момент элемента (группы элементов) модели. Когда Вы выделяете какой-либо элемент, например, в панели Проекты или в графическом редакторе, панель Свойства отображает свойства выделенного элемента.

Вы можете открывать и закрывать конкретные панели с помощью меню Вид.



Щелкните имя модели в панели Проекты и перейдите в панель Свойства (рис.5). Выберите секунды в качестве Единиц модельного времени:



Рисунок 5.
Задание свойств среды

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

    1. Установим начальную скорость для типа агента Main равной 0 (рис.6, поз.1).

    2. Далее определим тип расположения агентов в среде (создание агентов описано ниже). Пусть все агенты размещаются в среде обитания случайным образом (рис.6, поз.2).

    3. Установим флаг Выполнять шаги, чтобы сделать исполнение модели пошаговым (рис.6, поз.3).

    4. Тип пространства установим Непрерывным, размер пространства 1000х1000 (рис.6, поз.4).



Рисунок 6.
Создание элементов среды

    1. Создадим конечную точку назначения агента в виде здания. Для этого перетащите элемент Склад из палитры Картинки (рис.7) на диаграмму типа агента Main (рис.8) и увеличьте его (рис.9).



Рисунок 7.



Рисунок 8.



Рисунок 9.

    1. Зададим траекторию движения агента ломаной линией. Для этого перетащите элемент Ломаная из палитры Презентация на диаграмму типа агента Main (рис.10) и сформируйте желаемый путь следования агента к точке назначения (рис.11).



Рисунок 10.



Рисунок 11.
Создание агента

    1. Вначале создадим одного агента. Для этого перетащите элемент Агент из палитры Агент (рис.12) на диаграмму типа агента Main. Окно мастера Создание агентов откроется автоматически.



Рисунок 12.

  1. Выберите опцию Единственный агент на первом шаге мастера. Нам нужно создать только одного робота, который будет двигаться к зданию по определенной нами ломаной линии. 

  2. Мы создаем новый тип агента, поэтому нам не нужно использовать предоставляемые шаблоны. Укажите Имя нового типа: Leader и имя самого агента leader в поле ниже. Щелкните Далее, чтобы продолжить.

  3. Выберите тип анимации 2D, затем фигуру анимации Истребитель 2 из секции Основные и щелкните Далее.

  4. Пропустите четвертый шаг по добавлению параметров. Просто щелкните Далее.

  5. Мы хотим, чтобы все наши агенты "жили" в непрерывном пространстве, размерами 1000x1000, в сети со случайным расположением агентов. Популяция агентов-роботов, которых мы позже так же добавим на диаграмму Main, будут жить в той же среде.

После создания нового типа агента Leader, Вы можете найти его в дереве модели на том же уровне, что и тип агента Main, а сам агент leader находится в ветке Main -> Агенты. Фигура анимации агента отображается как на диаграмме его типа, так и на Main.



Рисунок 13.

Уменьшим размер фигуры (рис. 14) аналогично тому, как мы изменяли размер элемента Склад (warehouse).





Рисунок 14.
Задание свойств агента

  1. На диаграмме типа агента Main щелкните на агента leader и в панели Свойства установите свойство Видимость->нет (рис.15), чтобы при запуске модели видеть только анимацию агента без отображения типа агента.



Рисунок 15.

  1. Далее откройте диаграмму агента Leader, щелкнув на него дважды в панели Проекты, и на панели Свойства установите начальную скорость агента равную 7 м/с, а также флаг «Поворачивать анимацию согласно направлению движения» (рис.16, поз.1).



Рисунок 16.

  1. Поскольку агенты в нашей среде располагаются случайным образом (согласно нашим установкам для агента типа Main), то чтобы поместить агента Leader при запуске модели в начало его пути, вставьте в раздел Свойства->Действия агента->При запуске (рис.16, поз.2) следующий код:

jumpTo(40, 120);

Это установит агента при запуске в первую точку ломаной линии, обозначающей путь агента. Первая цифра в скобках – координата Х начала линии, вторая – координата Y. Эти координаты можно увидеть в свойствах элемента polyline. Для этого на диаграмме агента Main выделите элемент Ломаная и в разделе Свойства->Местоположение и размер определите координаты начала линии (рис.17).





Рисунок 17.

  1. Чтобы агент Leader двигался к цели по заданному нами пути, вставьте в раздел Свойства->Действия агента->Действия на шаге следующий код (рис.16, поз.3):

moveTo( main.warehouse.getX()-1, main.warehouse.getY()-1, main.polyline );

Этот код вычисляет координаты X (команда getX()) и Y (команда getY()) Склада (warehouse) и перемещает туда агента по заданному пути (рolyline).

В AnyLogic иногда Вам необходимо вводить код в параметрах различных элементов модели. Важно понимать, где именно Вы "находитесь", вписывая код (какому типу агента принадлежит этот элемент), и как получить доступ к другим элементам из этого поля.

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

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

Чтобы получить доступ к контейнеру текущего объекта (того агента, куда вложен текущий), укажите его имя. Обратите внимание на специальный элемент, Ссылка на агента верхнего уровня (рис.18), который присутствует на диаграмме каждого типа, чьи агенты живут в среде этого агента верхнего уровня (в нашей модели это тип агента Main). Ссылка называется по имени этого агента верхнего уровня и позволяет обращаться к нему по этому имени, чтобы получить доступ к элементам, находящимся на его диаграмме. Например, чтобы получить доступ к элементу warehouse, который находится на диаграмме Main, из агента leader, мы пишем main.warehouse, находясь на диаграмме leader.





Рисунок 18.
Запуск модели

Теперь запустим модель.

Если в модели есть какие-либо ошибки, то построение будет неудачным, и Вы увидите панель Ошибки, в которой будут перечислены все ошибки в модели. Вы можете открыть место ошибки двойным щелчком по ее описанию в списке, чтобы исправить ее.

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


  1. Выберите эксперимент, который хотите запустить, открыв выпадающий список рядом с кнопкой запуска модели Запуск на панели управления. Ваш эксперимент называется MyBots/Simulation. Потом Вы сможете запускать этот эксперимент, просто щелкая кнопку Запуск, поскольку она будет запускать последний запущенный эксперимент.

  2. Запустив модель, Вы увидите окно презентации. На ней отображается презентация, созданная для этого эксперимента. AnyLogic автоматически создает заголовок и кнопку запуска модели.

  3. Щелкните кнопку Запустить (рис.19).



Рисунок 19.



Рисунок 20.
Описание поведения агента диаграммой состояний

Описанные в разделе «Задание свойств агента» задачи (пп.3 и 4) – размещение агента и следование к цели по заданному маршруту – можно решить и другим способом: при помощи диаграммы состояний. Если Вы будете задавать логику поведения агента с помощью диаграммы состояний, то удалите программный код из свойств агента Leader, введенный в пп.3 и 4 в разделе «Задание свойств агента» и следуйте инструкции ниже.

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

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

Диаграмма состояний представляет собой состояния, соединенные переходами. Переходы могут сработать в результате заданного в качестве условия перехода события - это может быть истечение заданного таймаута, получение диаграммой состояний сообщения, выполнение заданного логического условия и т.д. Срабатывание перехода приводит к переходу управления диаграммы состояний в то состояние, в которое ведет этот переход. Состояния могут быть иерархическими, т.e. содержать другие состояния и переходы.

Создадим диаграмму состояний для агента Leader.


    1. Перетащите элемент Начало диаграммы состояний из палитры Диаграмма состояний в диаграмму агента Leader. Этот элемент задает начало всей диаграммы. Затем добавьте Состояние, перетащив этот элемент из палитры Диаграмма состояний, и поместите его в конец стрелки начала диаграммы состояний (рис.21). Чтобы добавить переход, сделайте двойной щелчок по элементу Переход в палитре. Его иконка поменяется, это значит, что элемент теперь в режиме рисования. Удостоверьтесь, что элементы соединяются друг с другом. Когда они соединены, AnyLogic отображает зеленую точку в месте соединения.



Рисунок 21.

    1. Создадим «пустую» диаграмму состояний, которая состоит из трех состояний и двух переходов разных типов. Состояния называются Start (начало), MovingToWarehouse (движение к складу), AtTheWarehouse (на складе). Это, собственно, все действия и передвижения агента в нашей модели. Следуйте структуре диаграммы, представленной на рисунке ниже (рис.22).



Рисунок 22.

Произведем настройку диаграмму состояний.



  1. В дереве модели найдите диаграммы состояний агента Leader. Откройте двойным щелчком диаграмму состояний LeaderState, которую мы создали выше. Теперь давайте зададим логику ее работы.

  2. Выделите состояние Start. Нам необходимо задать его Действие при входе (рис.23):



Рисунок 23.

  1. Для состояния MovingToWarehouse задайте его Действие при входе (рис.24).



Рисунок 24.

  1. Переход из состояния Start в состояние MovingToWarehouse происходит C заданной интенсивностью в 1 секунду (рис.25).



Рисунок 25.

  1. На рис.22 Вы видите, что последний переход из состояния MovingToWarehouse в состояние AtTheWarehose запускается По прибытию агента (рис.26). Когда он происходит, агент остается на складе.



Рисунок 26.

Теперь, когда диаграмма состояний агента задана, Вы снова можете снова запустить модель.


      1. Пример 2. Группа роботов, следующая за лидером

Описание задачи

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

Для простоты возьмем уже разработанную нами в пп.2.4.1 модель и поместим агентов в уже созданную нами среду, а за лидера примем созданного нами агента-робота, следующего к цели по заданному маршруту. Таким образом, мы опустим этапы создания модели и среды, а также этап задания свойств и элементов среды, и приступим сразу к созданию популяции агентов.


Создание популяции агентов

  1. Создадим популяцию агентов. Для этого перетащите элемент Агент из палитры Агент на диаграмму типа агента Main.

  2. В этот раз выберите опцию Популяция агентов. Щелкните Далее на шаге 2 (по умолчанию выбрана нужная нам опция Я хочу создать новый тип агента). На следующем шаге мастера создания агентов введите имя нового типа: Bot и тогда автоматически появится имя популяции: bots. Щелкните Далее.

  3. Выберите 2D фигуру анимации Истребитель из секции списка объектов Основные.

  4. Нам не нужно сейчас создавать какие-либо параметры, так что пропустите шаг 5. На шаге 6 задайте количество агентов, которые мы хотим видеть в этой популяции: 10 агентов.

  5. Вы можете щелкнуть Готово уже на шаге 6. Настойки шага 7, Конфигурация создаваемой среды, будут автоматически заполнены, так как мы добавляем популяцию агентов в тип агента Main, где мы уже задавали среду при создании агента leader.

После создания нового типа агента Bot, Вы можете найти его в дереве модели на том же уровне, что и тип агента Main и Leader, а сами агенты bots находится в ветке Main->Агенты.

Новый тип агентов отобразится на диаграмме Main. Вы можете заметить, что популяции на диаграмме помечены значком [..] (рис.27).

Фигура анимации агента отображается как на диаграмме его типа, так и на Main. Уменьшим размер фигуры типа агента Bot аналогично тому, как мы изменяли размер элемента Склад (warehouse) и Leader.



Рисунок 27.

Задание свойств популяции агентов

  1. На диаграмме типа агента Main щелкните на популяцию агентов bots и в панели Свойства установите свойство Видимость->нет (рис.28), чтобы при запуске модели видеть только анимацию агентов без отображения типа агента.



Рисунок 28.

  1. Далее откройте диаграмму агента Bot, щелкнув на него дважды в панели Проекты, и на панели Свойства установите начальную скорость агента равную 7 м/с, а также флаг «Поворачивать анимацию согласно направлению движения» (рис.29, поз.1).



  1. Теперь нам нужно, чтобы агенты двигались за своим лидером. Для этого вставьте в раздел Свойства->Действия агента->Действия на шаге следующий код (рис.29, поз.2):

moveTo(main.leader.getX(), main.leader.getY());

Этот код вычисляет координаты X (команда getX()) и Y (команда getY()) лидера (leader) и перемещает агентов в направлении местонахождения агента-лидера. На каждом шаге координаты лидера автоматически пересчитываются.





Рисунок 29.
Запуск модели и исследование ее элементов

Это последний шаг нашего учебного пособия по разработке агентной модели для группы роботов.

Перед тем, как запустить модель, добавьте элементы презентации.



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



Рисунок 30.

  1. Перейдите в секцию свойств фигуры Внешний вид и выберите текстуру Grass в качестве Цвета заливки и опцию Нет цвета для Цвета линии (рис.30, поз.1). Далее задайте координаты X и Y равными 0 – таким образом мы помещаем прямоугольник в начало координат (рис.30, поз.2). Обратите внимание на свойства Z и Z-Высота (рис.30, поз.4) в секции Местоположение и размер. Например, если Z-Высота равняется 10, Вы можете установить Z на -10, иначе другие фигуры анимации "утонут" в этом фоне, ведь они по умолчанию перемещаются на нулевом уровне.

  2. Так как прямоугольник - это последняя добавленная нами фигура, он отображается поверх всех остальных. Щелкните прямоугольник правой кнопкой мыши и выберите Порядок > На задний план.

Теперь запустим модель.

  1. Щелкните кнопку панели управления Запуск и запустите модель.



Рисунок 31.

  1. Вы можете управлять запуском модели с помощью кнопок панели управления: Приостановить и Прекратить выполнение запуска (рис.32, поз.1), Ускорить или Замедлить модель (рис.32 поз.2). Кроме того, Вы можете следить за разными типами агентов с помощью кнопок навигации по структуре модели (рис.32, поз.3).



Рисунок 32.

  1. Щелкните стрелку вниз в навигации по модели (рис.32, поз.3), чтобы открыть список агентов. Рядом с именами популяций агентов Вы увидите их количество в квадратных скобках [..]. Выберите, например, bots [0..9]. Нумерация начинается с 0 - у нас десять турбин в модели.

  2. Откройте тип агента leader. Вы увидите тип агента leader и процессы, происходящие на нем на диаграмме состояний с отображением активных состояний агента. Таким образом, Вы можете исследовать поведение любого типа агента или конкретного агента в модели.

Рисунок 33.


Библиографический список


[Лычкина, 2005] Лычкина Н.Н. Современные технологии имитационного моделирования и их применение в информационных бизнес-системах и системах поддержки принятия решений. Пленарный доклад. Вторая всероссийская научно-практическая конференция по имитационному моделированию и его применению в науке и промышленности «Имитационное моделирование. Теория и практика» ИММОД-2005, Санкт-Петербург, 2005 г.

[Brachman, 2005] Brachman R. Getting Back to “The Very Idea” // AI Magazine, 2005. V. 26. No 4. P. 48–50.

[Langley, Laird, Rogers, 2009] Langley P., Laird J.E., Rogers S.: Cognitive architectures: Research issues and challenges // Cognitive Systems Research, 2009, 10(2), 141–160.

[Жарова, 2012] Жарова А. В. Применение метода абстракции через отношение эквивалентности к определению понятия агент. // Науковий журнал "Економіка сьогодення: актуальні питання та перспективи". – №1. – Днепропетровск. – 2012. – С.101-116.

[Лычкина, 2000] Лычкина Н.Н. Технологические возможности современных систем моделирования // Банковские технологии, 2000. Вып. 9.С. 60-63.

[Наместников, 2004] Наместников А.М. Разработка имитационных моделей в среде MATLAB: Методические указания для студентов специальностей 01719, 351400 // Ульяновск, УлГТУ, 2004. – 72с.

[www.anylogic.ru] Официальный сайт AnyLogic. Режим доступа к ресурсу: http://www.anylogic.ru/

[Sterman, 2000] Sterman J. Business Dynamics: systems thinking and modeling for a complex world. The McGraw-Hill Companies, Inc., 2000.

[Scholl, 2001a] Scholl H.J. Agent Based and System Dynamics Modeling: A Call for Cross Study and Joint Research. // In Proceedings of the 34th Annual Hawaii International Conference on System Sciences. – Washington, 2001.

[Scholl, 2001b] Scholl, H.J. Looking Across the Fence: Comparing Findings From SD Modeling Efforts With those of Other Modeling Techniques. // Proceedings of the 19th International Conference of the System Dynamics Society. – Atlanta, 2001.

[Карпов, 2006] Карпов, Ю. Г., «Имитационное моделирование систем. Введение в моделирование с AnyLogic 5». — СПб: БХВ-Петербург, 2006. — 400 с.

[Карпов, 2005] Карпов Ю.Г. Моделирование агентов – новая парадигма в имитационном моделировании. – СПГПУ, 2005. – 5 с.

[Замятина, 2007] Замятина Е.Б. Современные теории имитационного моделирования: Специальный курс. - Пермь: ПГУ, 2007. - 119 с.

[Schieritz, Milling, 2003] Schieritz N., Milling P. Modeling the Forest or Modeling the Trees – A Comparison of System Dynamics and Agent-Based Simulation // In Proceedings of the XXI International Conference of the System Dynamics Society. – New York, USA. – 2003.





База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница