Инструменты для построения мультиагентных систем

Posted on 1 декабря, 2010

1


(Примечание автора: написано 16.03.2009)

JADE

JADE – это программное обеспечение промежуточного слоя (см. рис.1), разработанное компанией TILAB (http://jade.tilab.com), предназначенное для создания  распределенных мультиагентных приложений на основе транспортной архитектуры «точка-точка». И интеллект, и инициатива, и информация, и ресурсы, и контроль могут быть полностью распределены по мобильным терминалам также как и по компьютерам выделенной сети. Среда может динамично взаимодействовать  с узлами, которые в терминологии JADE называются агентами. Агенты то появляются, то исчезают  в системе в соответствии с потребностями и требованиями программной среды.   Коммуникации между узлами не зависят от типа сети (проводная, беспроводная). Они являются полностью симметричными, и каждый узел может, как инициировать запросы, так и отвечать на них.

Рисунок 1. Роль ПО промежуточного слоя

Платформа JADE полностью разработана на языке Java. Основополагающие принципы платформы:

  • · Функциональная совместимость – продукт JADE разработан в соответствии со спецификациями FIPA (см. рис. 2). Как следствие JADE-агенты могут взаимодействовать со сторонними агентами, поддерживающими этот стандарт.
  • Портируемость и единообразность – продукт JADE предоставляет гомогенный набор прикладных программных интерфейсов(API), которые не зависят  ни от базового устройства сети,  ни от версии платформы Java.  Если подробнее, то в процессе исполнения данное ПО предоставляет одни и те же API   для окружений  J2EE, J2SE, J2ME. При развертывании разработчики приложений должны определить тип среды исполнения Java.
  • · Простота использования – набор простых и интуитивно-понятных интерфейсов API прячет сложную логику  ПО промежуточного слоя от пользователя.
  • · Принцип «разрабатывать по средствам» — программистам нет необходимости использовать все возможности,  которые предоставляет ПО промежуточного слоя. От программистов не требуется знать что-либо о неиспользуемых функциях платформы. Ни одна из незадействованных функций не создает дополнительные накладные вычислительные расходы.

Рисунок 2. Стандарт FIPA: службы, предоставляемые агентной платформой

Архитектурная модель

Платформа JADE включает как программные библиотеки (т.е. наборы Java-классов), требуемые для разработки прикладных агентов, так и среду исполнения, которая предоставляет базовые службы и которая должна быть активна на устройстве до того, как на нем будет исполняться агент. Каждый экземпляр JADE во время исполнения называется контейнером (так как он «содержит» агентов). Набор всех контейнеров называется платформой и предоставляет однородный слой, который прячет от агентов(а также от разработчиков приложений) сложность и распределенный характер механизмов, расположенных на более низком уровне(аппаратное обеспечение, операционные системы, типы сетей, JVM).

Программное обеспечение JADE совместимо со средой J2ME CLDC/MIDP1.0. Оно тестировалось на испытательных стендах на базе GPRS сети с различными мобильными  терминалами среди которых были: Nokia 3650, Motorola Accompli008, Siemens SX45, PalmVx, Compaq iPaq, Psion5MX, HP Jornada 560. В процессе исполнения JADE занимает около 100КБ оперативной памяти, но этот размер может быть уменьшен до 50КБ за счет совместной компиляции JVM и JADE. Продукт JADE является крайне универсальным и более того, он не только удовлетворяет ограничениям сред с ограниченными ресурсами, но он интегрирован в сложные архитектуры, такие как .NET и J2EE, где JADE становится службой для исполнения прикладных проактивных приложений с несколькими взаимодействующими сторонами. Ограниченный объем  места, которое занимает JADE  в оперативной памяти, позволяет устанавливать это программное обеспечение на все мобильные телефоны,  поддерживающие  технологию Java.

Рисунок 3. Архитектура JADE

Функциональная модель

С  функциональной точки зрения программный инструмент JADE предоставляет базовые службы, необходимые для распределенных приложений типа «точка-точка» в стационарных и мобильных средах. Он позволяет каждому агенту динамически обнаруживать других агентов и обмениваться с ними сообщения в соответствии с парадигмой систем «точка-точка». С точки зрения приложения каждый агент идентифицируется уникальным именем и предоставляет набор служб. Он может регистрировать и модифицировать свои службы и/или искать агентов, предоставляющих данные службы. Также агент способен контролировать свой жизненный цикл и, в частности, общаться с другими агентами.

Агенты общаются путем обмена асинхронными сообщениями, модель коммуникаций почти повсеместно применима для распределенных и слабосвязанных коммуникаций, т.е. коммуникаций между гетерогенными сущностями, который ничего не знают друг о друге. Для осуществления коммуникации агент только посылает сообщение получателю. Идентификатором служит имя агента(нет необходимости указывать ссылку на объект-получатель) и, как следствие, нет временной зависимости между общающимися агентами. Не требуется, чтобы отправитель и получатель были запущены в одно и тоже время. Получатель даже может не существовать(или еще не существовать) или может быть не известен явно отправителю. Отправитель может определить свойство отправителя (например, «все заинтересованные в футболе агенты»), чтобы указать конечный адрес.

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

Структура сообщения задается при помощи языка ACL, определенного спецификациями FIPA, и включает такие поля, как переменные, определяющие контекст, получателя сообщения и время, в течение которого будет ожидаться ответ, нацеленные на поддержку сложных взаимодействий и множественные параллельные беседы. Для того, чтобы поддерживать реализацию сложных коммуникаций в дальнейшем,  программное обеспечение JADE предоставляет набор каркасов типичных паттернов взаимодействий для выполнения определенных задач, таких как ведение переговоров, аукционы и делегирование задач. Используя эти скелетоны(реализованные как абстрактные классы Java), программисты смогут избежать таких проблем, как задачи синхронизации, таймауты, условия ошибок, и, в общем, всех тех аспектов, которые тесно не связаны с логикой приложения. Для того чтобы облегчить реализацию механизмов создания и обработки содержимого сообщений, агентная платформа JADE предоставляет поддержку  для автоматического прямого и обратного конвертирования в формат, подходящий для обмена контентом, включая XML  и RDF, и формат, подходящий для управления контентом (например, объекты Java). Эта поддержка встроена в некоторые инструменты создания антологий, например, Protégé, позволяя программистам создавать онтологию графически.  Платформа JADE является непрозрачной относительно базового движка системы вывода в случае, если требуются результаты вывода для специфичного приложения,  она позволяет программистам переиспользовать предпочтительную систему вывода. Она была интегрирована c модулями JESS и Prolog.

Для того чтобы увеличить масштабируемость или удовлетворить ограничения сред с ограниченными ресурсами, ПО JADE предоставляет возможность выполнения множественных параллельных задач в одном потоке Java. Несколько элементарных задач, таких как коммуникации, могут быть соединены для формирования более сложных задач, представленных как конечные автоматы.

В средах J2SE и Personal Java программа JADE поддерживает мобильность кода и мобильность состояния. То есть агент может остановить работу на хосте и мигрировать на другой удаленный хост(нет необходимости копировать код или устанавливать агента на  этом хосте заранее),  а затем возобновить исполнение с того места, где он был остановлен. Эта функциональность позволяет, к примеру, распределение вычислительной нагрузки в режиме исполнения путем перемещения агентов на менее загруженные машины без какого-либо воздействия на приложение.

Платформа также содержит службу имен (которая проверяет, что каждый агент имеет уникальное имя) и службу «желтых страниц», которая может быть распределена по нескольким хостам. Можно создать графы федерации, чтобы определить организованные области агентных служб.  Другая очень важная функция заключается в доступности богатого набора графических инструментов, поддерживающих и стадию отладки, и стадию управления/наблюдения жизненного цикла приложения.  Посредством этих инструментов стало возможно удаленно управлять агентами (даже в том случае, когда они уже развернуты и запущены): могут быть сымитированы переговоры агентов, можно просматривать сообщения, которыми обмениваются агенты, можно заниматься мониторингом задач, контролировать жизненный цикл агента.

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

Название JADE – Java Agent Development Framework
Разработчик TILAB
Сайт http://jade.tilab.com/
Язык Java: J2EE, J2SE, J2ME CLDC/MIDP1.0 platforms
Технические/функциональные характеристики Распределенные, многосторонние приложения с коммуникациями «peer-to-peer»  Соответствие стандарту FIPA Управление жизненным циклом агента Службы «белые страниц» и «желтых страниц» с возможностью создания графов федераций в онлайн режиме Графические инструменты, поддерживающие стадии отладки, управления, мониторинга Поддержка миграции агентного кода и запущенного состояния Поддержка сложных протоколов взаимодействия(например, contract-net) Поддержка создания  и управления контентом сообщений, в т.ч. в формате XML и RDF Поддержка интеграции со страницами JSP Поддержка безопасности на уровне приложения (на данный момент – только для платформы J2SE) Возможность выбора транспортных протоколов в режиме исполнения Доступные транспортные протоколы: JAVA-RMI,  JICP(используется по-умолчанию),  HTTP и IIOP
Сетевое окружение Проведены испытания на базе  Bluetooth, GPRS, W-LAN,  Internet.
Терминалы Все терминалы, поддерживающие среду Java MIDP 1.0, или Personal Java, или J2SE.

Таблица 1. Основные характеристики агентной платформы JADE

ABLE

Agent Building and Learning Enviroment (ABLE) – это инструментарий, написанный на языке Java,  для разработки и развертывания приложений на базе гибридных интеллектуальных агентов. Гибридные подходы синергетически увеличивают силу каждой технологии и компенсируют её недостатки. Например, правила работают с явно заданным знанием, но они не являются гибкими. В отличие от них  нейронные сети могут адаптироваться или обучаться по входным данным, но изученное знание достаточно сложно выразить в явной форме.

Устройство агентной платформы

На рисунке 4 показаны интерфейсы и базовые классы Java, которые составляют среду ABLE.

Рисунок 4. Набор базовых классов, интерфейсов, образующих ядро платформы ABLE

Java-интерфейс компонента AbleBean определяет набор основных атрибутов (имя, комментарий, состояние и др.) и поведение (стандартные методы обработки, такие как init(), reset(), quit()), позволяющие соединять AbleBeans и формировать агентов AbleAgents. Компоненты AbleBeans соединяются с использованием трех основных различных техник: потоки данных, события и свойства.

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

Соединения на основе событий используются для того, чтобы подписать объект на события компонента AbleBean. Компоненты AbleBeans поддерживают синхронную и асинхронную обработку событий, используя класс AbleEvents, который расширяет класс Java EventObject. Каждый компонент AbleBean имеет очередь событий, в  которую поступают уведомления о произошедших событиях AbleEvent или запросы на выполнение действий. Каждой событие AbleEvent  содержит логическую переменную flag, которая определяет, должно ли событие быть обработано синхронно в потоке вызова или оно будет обработано асинхронно в отдельном потоке.

Соединения через свойства используются для того, чтобы синхронизовать два различных свойства, расположенных в двух различных компонентах AbleBeans. Всегда когда изменяется первое свойство через setter-метод, также меняется второе свойство через setter-метод.

Для сохранения состояний между запусками компоненты AbleBeans используют механизм сериализации платформы Java. Все соединения на основе буферов данных, событий, свойств сохраняются  в течение цикла деактивации и активации. Среда исполнения ABLE содержит четко определенный набор свойств, что позволяет портировать сериализованные агенты AbleAgents.

Агент AbleAgent. При создании  среды конструирования агентов  важно определить «гранулярность» агентов. Во многих проектах в качестве базы рассматриваются BDI-агенты (агенты обладающие убеждениями(beliefs), желаниями(desires) и намерениями(intentions)).  При разработке инструментария ABLE была выбрана модель, где роль базовых блоков играют программные компоненты, а не полноценные агенты. Это позволяет создавать специальных агентов, в которых набор функций и их сложность зависит от решаемых агентами задач.

Агенты AbleAgents взаимодействуют со своей средой при помощи сенсоров (устройства восприятия) и эффекторов (механизмы исполнения действий). В программном инструментарии Able сенсоры и эффекторы являются экземплярами класса AbleUserDefinedFunction, который отображает вызовы методов на внешние объекты Java. Эти методы обычно вызывают другие программные интерфейсы(APIs) либо для получения данных (сенсоры), либо для выполнения действий (эффекторы). Агенты AbleAgents управляют сенсорами и эффекторами. Сенсоры и эффекторы принимают прозвольные списки аргументов и возвращают вызывающему объекты Java.

Обычно агент AbleAgent содержит один или несколько компонент  AbleBeans, которые связаны с сенсорами и эффекторами. На рисунке 5 агент содержит три компонента AbleBeans, один сенсор и один эффектор.  Компонент AbleBean A сначала вызывает сенсор и получает данные из приложения А. Он обрабатывает данные и передает информацию компоненту AbleBean B путем прямого вызова метода, посредством события или через соответствующее свойство. Компонент AbleBean B обрабатывает эти данные и передает данные компоненту AbleBean С, который в свою очередь вызывает эффектор, в результате чего вызывается метод в приложении Application  B.

Рисунок 5. Типичная структура агента AbleAgent

Библиотека компонентов ABLE

Компонентная библиотека AbleBeans является фундаментальной частью системы ABLE. Она содержит компоненты доступа к данным и фильтрующие компоненты, алгоритмы машинного обучения, движки машинного рассуждения и вывода. Высокоуровневые агенты интеллектуального анализа данных состоят из одного или более базовых компонент. Кроме того платформа ABLE содержит набор классов типов данных, которые определяют логические, дискретные, категориальные, числовые и строковые литералы, переменные и поля. Эта базовая модель данных используется компонентами в данной библиотеке. Ядро платформы ABLE содержит компоненты данных, обучения, правил.

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

  • · Import – считывает данные, разделенные пробелами, запятыми, знаками табуляции из плоских текстовых файлов
  • · DBImport – считывает данные из реляционных баз данных, используя JDBC(JavaBeans Database Connectivity)
  • · DataTable – обеспечивает представление  над  множеством данных Import
  • · Filter – фильтрует, трансформирует и масштабирует данные, используя определение шаблона преобразования
  • · TimeSeriesFilter – кэширует последовательности данные, чтобы использовать их для предсказания временных рядов
  • · Export – записывает разделенные пробелами, запятыми, знаками табуляции данные в плоские текстовые файлы
  • · DBExport – записывает данные в реляционные базы данных используя механизм JDBC

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

  • Back Propagation – реализует улучшенный алгоритм обратного распространения с использованием образцов и пакетных обновлений, скрытых слоев и рекуррентности выходного слоя
  • Self-Organizing Map – поддерживает образцы и пакетные обновления, а также функцию соседства на базе гауссиана
  • Temporal Difference Learning – поддерживает последовательное обучение с использованием алгоритма обучения с подкреплением
  • Radial Basis Function – поддерживает регрессию и классификацию, используя разнообразные базисные функции с автоматической кластеризацией весов скрытого слоя на базе самоорганизующихся карт
  • Naïve Bayes Classifier – поддерживает постепенное обучение из дискретизированных данных, используя статистический метод Байеса
  • Decision Tree – поддерживает основанную на деревьях решений классификацию данных на основе алгоритма C4.5

Компоненты-правила. Язык описания правил ARL(ABLE Rule Language) определяет богатый набор представлений знаний, основанных на правилах, включая скрипты, использующие простые присваивания, if-then и if-then-else правила, правила анализа паттернов when-do, и правила в стиле предикатов.  Язык ARL поддерживает  блоки правил, которые  называются группами правил (похожи на макросы). Платформа ABLE предоставляет широкий выбор машин логического вывода для обработки наборов правил на языке ARL.

Как показано на рисунке 6, язык правил ABLE может быть представлении в виде текста или в виде XML(Extensible Markup Language). Класс AbleRuleSet проводит синтаксический анализ текстового или XML источника, формирует наборы объектов AbleRuleBlock и AbleRule и создает экземпляр соответствующей машины вывода на основе метода вывода, описанного в наборе правил RuleSet. Язык ARL поддерживает очень тесную интеграцию с классами и объектами Java, позволяющими инстанциирование, доступ к объектам (вызовы методов, получение информации о членах) из правил.   Обработчики содержат следующие элементы:

  • Прямая цепочка логического вывода – обрабатывает правила if-then, используя прямую цепочку рассуждений
  • Обратная цепочка логического вывода – обрабатывает правила if-then, используя обратную цепочку рассуждений
  • Нечеткая прямая цепочка логического вывода – обрабатывает правила if-then,  содержащие лингвистические переменные, границы, различные типы нечетких множеств и поддерживает многоступенчатую цепочку вывода
  • Анализатор паттернов – обрабатывает правила соответствия паттернам when-do, используя последовательную цепочку логического вывода в рабочей памяти
  • Сеть анализа паттернов – обрабатывает правила соответствия паттернам, используя алгоритм прямой цепочки логического вывода сети Reté в рабочей памяти.
  • Машина предикатного вывода – обрабатывает правила предикатов, используя алгоритм обратной цепочки логического вывода с возвратами(похожий на алгоритм логического вывода в языке Prolog)
  • Машина обработки скриптов – обрабатывает в последовательном порядке выражения присваивания,  правила  if-then, if-then-else, while-do и do-while

Рисунок 6. Компонент AbleRuleSet и машины логического вывода

Один из наиболее значительных аспектов языка правил ABLE – способность смешивать символьный, основанный на правилах логический вывод с подсимвольной нейронной сетью и другими алгоритмами машинного обучения. Основная идея в том, что подсознательные процессы человеческого мозга соотносятся с методами на базе нейронных сетей, и что осознанное мышление  можно сравнить с обработкой символов. Логический вывод может быть осуществлен при помощи набора правил ABLE на основе выходных данных различных нейронных компонент. Например, сенсорные данные могут быть поданы на вход нейронной сети для кластеризации по степени «похожести», для классификации по категориям или для предсказания тенденций.  Затем система правил может обработать выходные данные нейронной сети, назначить этим данным семантические метки, и построить логический вывод на основе них. В системе правил принимается решение: начать процесс обучения нейронных сетей или предпринять конкретные действия для изменения внешней среды.

Способность правил вызывать другие компоненты AbleRuleSet  позволяет осуществлять иерархичную настройку и естественное разделение знаний по отдельным наборам правил. Эта возможность облегчает разработку правил и их дальнейшее сопровождение.

Специальные агенты AbleAgents. Кроме  компонент  ядра библиотека ABLE содержит набор специальных агентов AbleAgents. Компоненты данных, обучения AbleBeans комбинируются для того, чтобы создать агентов (с функциями кластеризации, классификации, предсказаний на базе нейронных сетей), которые можно использовать для решения простых задач интеллектуального анализа данных. Предоставляемый  платформой ABLE набор стандартных специальных агентов  содержит шесть сущностей:

  • Агент на базе генетического алгоритма управляет популяцией генетических объектов, среди которых могут быть и компоненты AbleBeans
  • Агент с нейронным классификатором использует обратное распространение для классификации данных
  • Агент нейронной кластеризации использует самоорганизующиеся карты для кластеризации или сегментирования данных
  • Агент, делающий предсказания на основе нейронных сетей использует обратное распространение для построения регрессионных моделей
  • Агент на основе скриптов использует язык правил ABLE для определения поведения агента
  • Агент, имеющий дело с JavaScript, использует JavaScript для того, чтобы определить поведение агента

Расширение функциональности платформы ABLE c использованием компонентов, созданных пользователями

В дополнение к компонентам ядра, которые содержатся в библиотеке компонентов платформы ABLE, пользователи могут использовать новые или существующие алгоритмы, создавать свои собственные компоненты.  Можно добавить наборы компонент для предметной области в редакторе агентов платформы ABLE и динамически загрузить из файла JAR. Элементарный паттерн проектирования  требует, чтобы объект алгоритма был обернут в экзепляр AbleBean, файл BeanInfo был создан для определения каких-либо членов, которые являются внешними, и был предоставлен класс графического модуля настройки для того, чтобы позволить пользователям установить какие-либо уникальные атрибуты алгоритма.

Этот подход был использован для интеграции компонент обучения (с использованием дерева решений, наивного байесовского классификатора) с платформой ABLE. Как показано на рисунке 7, для подключения к ABLE требуется три класса Java– это сам класс AbleBean, элемент BeanInfo, который определяет свойства и методы доступа компонента, и компонент настройки, который предоставляет графический интерфейс пользователя, применяемый для указания конфигурации свойств компонента. Компонент AbleBean должен содержать экземпляр класса с алгоритмом, отображать методы init() и process() для вызова функционально эквивалентных методов у объекта, реализующего алгоритм, и также служить оберткой для всех  getter- и setter- методов, используемых модулем настройки.   Этот подход позволяет коду алгоритма оставаться неизменным, хотя  в тоже  время он может использоваться как часть любого решения на базе платформы ABLE.

Рисунок 7. Пример проектирования пользовательского компонента

Инструменты разработки платформы ABLE

Редактор агентов платформы ABLE – это интерактивная среда разработки и тестирования, основанная на библиотеке Swing. Она предоставляет агента в виде дерева, состоящего из компонент AbleBeans, а также плоский вид (с соответствующими соединениями по данным, событиям, свойствам) . Агенты могут быть загружены, отредактированы и сохранены во внешние файлы с использованием сериализации Java. Инспекторы платформы ABLE предоставляют текстовое и графическое представление данных объекта, используя методы инстроспекции платформы Java. Кроме стандартных линейных, столбчатых, двухмерных, круговых диаграмм предоставляется поддержка для добавления заданных пользователем инспекторских  представлений.

Редактор агентов(Agent Editor) может графически конструировать агентов AbleAgents путем использования библиотеки ядра AbleBeans и агентов AbleAgents в качестве строительных блоков. С помощью графической среды можно добавить соединения по данным, по событиям, по свойствам. В редакторе Agent Editor  программного комплекса ABLE агенты также могут быть вручную запрограммированы и затем протестированы. Каждый компонент AbleBean предоставляет диалоговое окошко модуля настройки, которое используется для настройки  и задания значений свойств этого компонента. На рисунке 8 изображен редактор агентов, в котором открыт единственный агент, выполняющий предсказания на базе нейронных сетей, который содержится в базовом агенте платформы ABLE — AbleDefaultAgent. Эти компоненты отображаются справа.

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

Окна программы-инспектора платформы ABLE используют интроспекцию для отображения данных о членах компонент, информации о состоянии. Программы-инспекторы обеспечивают текстовое представление и графическое представление для данных компонента. Предоставляются такие представления, как столбчатые диаграммы, линейные графики, графики  x-y. Пользователи могут выбирать одно или более свойств компонента для отображения, либо одно или более индексированных свойств, таких как массивы или вектора объектов.  Кроме этого программы-инспекторы позволяют пользователям выбирать различные элементы данных для использования при отображении временных рядов. Программа-инспектор кэширует точки данных на каждом шаге и отображает заданное количество точек. Эта функция является очень полезной при наблюдении за предсказаниями временных рядов и поведения контроллера агента по прошествии длительного времени.

Рисунок 8. Редактор агентов платформы ABLE

На рисунке 9 показаны два инспектора из примера «Анализ рынка» (пример поставляется вместе с инструментарием ABLE). Программа-инспектор с левой стороны показывает кластеры нейронной сети самоорганизующихся карт с метками и категориями, назначенными каждому кластеру. Программа-инспектор справа показывает столбчатую диаграмму весов выигравшего кластера.

Рисунок 9. Пример программ-инспекторов программного комплекса ABLE

Агентная платформа ABLE

Агентная платформа ABLE предоставляет набор служб для агентов AbleAgents, которые образуют мультиагентные системы. Службы включают в себя стандартную модель переходов жизненного цикла (создание, приостановка, продолжение, выход), а также  фасилитатор директорий и функции обмена сообщениями между агентами. Платформа ABLE является распределенной агентной платформой, поддерживающей агентов на  различных физических системах, которые общаются при помощи технологии Java Remote Method Invocation(RMI). Агенты ABLE могут обмениваться сообщениями друг с другом при помощи механизмов, описанных ранее (через события AbleEvents либо через непосредственные вызовы методов), либо с  другими агентами, которые соответствуют стандарту FIPA,  и агентными платформами посредством использования языка общения агентов, предложенного FIPA(ACL – Agent Communication Language).

Рисунок 10. Распределенная агентная платформа ABLE

Как показано на рисунке 10 распределенная агентная платформа ABLE соответствует абстрактной архитектуре FIPA. Текущая платформа ABLE согласуется со спецификациями FIPA 97. Ведутся работы для того, чтобы адаптировать платформу к более поздней абстрактной архитектуре, чтобы привести её к соответствию  с технологией  Java Agent Services(JAS), разработанной в рамках Sun Microsystems Java Community Process JSR 87. Технология JAS предоставляет набор интерфейсов Java и соответствующую реализацию служб платформы, требуемые для распределенной агентной платформы в соответствии с абстрактной архитектурой FIPA. Платформа ABLE содержит дополнительную функциональность: управление жизненным  циклом агента, регистрация сервисов и безопасность агента. Следующие службы поставляются как часть стандартных служб, поддерживаемых агентной платформой ABLE:

  • Booter and Service Root. Платформа предоставляет службы запуска и корневые службы для агентов, которые хотят обмениваться сообщениями со службами агентной платформы и агентами, запущенными на платформе
  • Naming Services. Платформа предоставляет уникальное имя для каждого зарегистрированного агента
  • Transport Services.Платформа предоставляет механизм  для того, чтобы агенты обменивались сообщениями через транспортные коммуникации низкого уровня, включая Java RMI и HTTP
  • Directory Services.Платформа предоставляет агентам способы для регистрации их описаний для того, чтобы позволить другим агентам находить их и им находить других агентов
  • Life-cycle Services. Платформа предоставляет службу-фабрику, которая предоставляет функцию добавления новых типов агентов и позволяет администратору создавать/запускать/приостанавливать/возобновлять/останавливать запущенных агентов. Так же предоставляется поддержка миграции агентов с одной платформы на другую платформу.

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

Проектирование приложений платформы ABLE

Инструментарий ABLE является достаточно гибким и может быть использован для того, чтобы добавить интеллектуальность приложениям множеством различных способов. В приложении для поддержки специализированных функций можно использовать одну или несколько компонент ядра ABLE. Дополнительные специфичные для предметной области компоненты AbleBeans, такие как новая техника оптимизации или технологии обработки данных могут быть разработаны и соединены с компонентами ядра. Для  предоставления функций в приложении можно использовать автономные агенты, составленные из различных компонент AbleBeans.

Рисунок 14. Пример архитектуры приложения платформы ABLE

Как показано на рисунке 14, агенты AbleAgents могут устранить разрыв между средой программных компонент и средой приложения путем расширения функциональности базового агента платформы ABLE и реализации интерфейсов AbleBean. Очень рекомендуется использовать этот метод, т.к. он позволяет задействовать всю мощь компонентой библиотеки для добавления новой функции.

Название ABLE – Agent Building and Learning Enviroment
Разработчик IBM
Сайт http://www.alphaworks.ibm.com/tech/able/
Язык Java: J2EE, J2SE
Технические/функциональные характеристики
  • Импорт/экспорт данных плоских текстовых файлов, реляционных СУБД
  • Компоненты машинного обучения (обратное распространение ошибки, самоорганизующиеся карты, обучение с подкреплением,регрессия и классификация на основе базисных функций, наивный байесовский классификатор, С4.5)
  • Система логического вывода на основе правил
  • Набор готовых специализированных агентов
  • Возможность создавать пользовательские компоненты и интегрировать их в платформу
  • Графический редактор агентов
  • Инспектирование компонент в процессе работы
  • Соответствие стандарту FIPA
  • Управление жизненным циклом агента
  • Графические инструменты, поддерживающие стадии отладки, управления, мониторинга
  • Поддержка миграции агентов
  • Поддержка безопасности на уровне приложения (на данный момент – только для платформы J2SE)
  • Доступные транспортные протоколы:
  • JAVA-RMI,  HTTP
Сетевое окружение Internet, локальные сети.
Терминалы Все терминалы, поддерживающие среду J2SE.

Таблица 2. Основные характеристики агентной платформы ABLE

Repast

Repast (Recoursive Porous Agent Simulation Toolkit) – одно из нескольких доступных на сегодняшний день инструментальных средств.  Программный комплекс Repast перенял много идей от инструментального средства  Swarm(Swarm – это инструментальное средство моделирования на основе агентов). Платформа Repast имеет различные реализации на нескольких языках программирования и содержит встроенные адаптивные средства, такие как генетические алгоритмы и регрессии.

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

Всего существует три реализации инструментария Repast: для  языка Java(Repast J), для платформы Microsoft .NET(Repast.NET) и Repast для языка скриптов Python(Repast Py).

Платформа Repast содержит  множество различных  функций, в том числе:

  • Платформа Repast содержит множество шаблонов агентов с примерами. Тем не менее, это инструментальное средство предоставляет пользователям большую гибкость в определении свойств и поведения агентов
  • Платформа Repast является полностью объектно-ориентированной
  • Платформа Repast содержит довольно качественный планировщик дискретных событий. Этот планировщик поддерживает и последовательные, и параллельные операции с дискретными событиями
  • Платформа Repast предлагает встроенные средства записи результатов симуляции и графические инструментальные средства
  • Платформа Repast содержит базу для автоматического моделирования методов Монте Карло
  • Платформа Repast предоставляет ряд  двумерных сред и визуализаций
  • Платформа Repast позволяет пользователям динамически просматривать и изменять свойства агентов, бехевиоральные уравнения агентов и модель свойств в оперативном режиме
  • Платформа Repast содержит библиотеки генетических алгоритмов, нейронных сетей, генерации случайных чисел и специализированных математических выражений
  • Платформа Repast содержит встроенные средства моделирования динамики систем
  • Платформа Repast имеет инструменты для моделирования социальных сетей
  • Платформа Repast поддерживает интеграцию с географическими информационными системами (ГИС)
  • Платформа Repast поддерживает работу с операционными системами Windows, Mac OS, Linux. Она может работать как на персональных компьютерах, так  и на масштабных научных вычислительных кластерах

Появившееся позже инструментальное средство Repast Symphony(Repast S), основанное на Repast,  расширяет возможности платформы Repast, предоставляя среду разработки моделей и среду исполнения.

Список дополнительных возможностей Repast S:

  • Совместное использование языков Java, Groovy,  а также потоковых диаграмм в каждом проекте;
    • Интеграция с множеством различных внешних утилит, включая  R statistics environment, подключаемые модули анализа трафика *ORA и Pajek, плагин для работы с SQL-запросами, инженерный пакет визуализации VisAD, платформа интеллектуального анализа данных Weka, многие популярные форматы электронных таблиц, вычислительная математическая среда MATLAB, дизайнер визуальных отчетов iReport;
    • Моделирование трехмерных сред, интеграция с библиотекой сетевого моделирования JUNG, импорт данных  из  электронных таблиц Microsoft Excel, файлов UCINET DL
    • Опциональная сквозная имитация XML
    • Распределенные вычисления с помощью продукта  Terracotta

Среда исполнения платформы Repast S

Среда исполнения Repast S содержит дополнительные функции хранения агентов, отображения и активации поведения, новые возможности анализа и представления данных.

Реализация модели в Repast S

Реализация модели в Repast S описывается следующим образом:

  • Проектировщик модели создает фрагменты модели в виде обычных объектов Java(чаще всего при помощи автоматизированных средств)
  • Проектировщик использует настройки для того, чтобы использовать эти фрагменты, а также,  чтобы подключить стороннее программное обеспечение к среде исполнения Repast S
  • Проектировщик модели с помощью среды исполнения Repast S указывает способ создания и соединения компонент модели
  • На основе (1)интерактивного ввода пользователя и (2)декларативных или императивных запросов к компонентам платформа Repast S автоматически управляет фрагментами модели

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

Атомы и связи между ними

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

  • Способности отвечать на запросы
  • Определений сети
  • Расположения в пространстве
  • Распределенных источников данных
  • Расписания
  • И т.д.

Благодаря технологиям удаленного доступа и инструментам интеграции, можно использовать внешние модели и распределенные системы в рамках платформы Repast S аналогично любым другим программным компонентам. Есть две категории настроек Repast S, обе хранятся в файлах XML.

  • Настройки модуля, описывающего модель, содержат типы компонент (например,классы Java или сторонние компоненты)  и виды соединений(например, сетевые), которые  разрешены в данной модели, а также включают в себя декларативные созданные пользователем  тригерры(«дозорных»). Пример триггера: оповестить агента о находящихся поблизости агентах. Дескрипторы модели определяют, что может быть в ней представлено.
  • Настройки модуля, описывающего сценарий,  задают такие элементы как источник данных модели(например, набор файлов), визуализация модели(двух- или трехмерные представления), и способ представления данных протоколирования(например, в виде выходных файлов или в виде графиков).  Модули, описывающие сценарий, определяют, что представлено в модели.

Настройки интерфейса позволяют использовать реагирующие алгоритмы планирования, упрощают декларативную спецификацию модели. Реагирующие алгоритмы планирования могут содержать функциональные триггеры событий или «дозорных», в которых для задания наблюдаемых компонент указываются строки запросов, и явные описания нотифицируемых компонент.  «Дозорные» позволяют одним компонентам проводить мониторинг состояния других компонент.

Графический интерфейс

Интерфейс среды исполнения Repast S показан на рисунке 14. На рисунке изображена очень простая модель с названием  «Simple Happy Model» («Простая модель счастья). Нижняя сторона панели под названием «Scenario Tree» демонстрирует модуль, описывающий сценарии, тогда как кнопки и меню слева вверху представляют элементы управления симуляцией. Модуль описания модели(не представлен на картинке) используется для определения того, какие типы агентов(например,  простые счастливые агенты), связи между агентами(например, сетевые) и «дозорные» (например,  обновляющие наш уровень счастья всегда когда связанный с нами друг обновил обновил свой) представлены в модели. Наконец, справа внизу представлена трехмерная визуализация маленькой дружеской сети агентов.

Рисунок 15. Графический интерфейс среды исполнения Repast(пример – Simple Happy Model)

Интерфейс, представленный на рисунке 15 был построен с использованием каркаса  Simphony Application Framework (SAF). SAF – это платформа разработки приложений(написанная на чистом языке Java), созданная с целью упростить создание графических настольных приложений. SAF использует технологии JFC (Java Foundation Classes), FlexDock и JPF(Java Plugin Framework) для отображения подключаемых модулей и управления ими. Набор каркасов  SAF реализует функцию управления жизненным циклом и содержит другие полезные инструменты, такие как отсоединяемые/присоединямые окна.

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

Среда разработки платформы Repast  S

Среда разработки платформы Repast S содержит новые функции для определения поведения агента и динамической модельной сборки.

 

Рисунок 16. Окно дизайнера поведения агентов Repast S

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

Аннотации и настройки.

Среда Repast S использует новую функциональность, доступную с пятой версии платформы Java – аннотации – для того, чтобы явно обозначать участки кода для выполнения более поздних операций. Аннотации – это тэги метаданных, которые компилируются в файлы бинарного класса. Аннотации не выполняются также как код, и в этом похожи на обычные комментарии Java. Однако в отличие от комментариев аннотации хранятся в скомпилированных версиях исходного кода. Это позволяет выполняющимся программам Java(таким  как среда исполнения Repast S) получать метаданные и использовать их в работе. Т.е. во время проектирования разработчики могут явно помечать (или аннотировать) код для специальной обработки средой исполнения Repast S. Эта функциональность используется, например, для создания «часовых». Пример на рисунке 17 показывает агента, который активизируется всякий раз, когда меняется атрибут счастья у связанного с ним соседа (друга). Аннотации так же используются для задач составления расписания(см. рисунок 18).

Рисунок 17. Пример аннотации для «часового» в методе простого счастливого агента

Рисунок 18. Пример аннотации для планировщика в методе простого счастливого агента («Старт» - временной шаг вызова метода, «Pick» определяет случайный выбор одного из доступных простых счастливых агентов)

Платформа Repast S использует два основных типа настроек, дескрипторы модели и сценариев, которые склеивают (или соединяют) модели. Дескрипторы   модели определяют что может содержаться в модели (типы агентов, допустимые связи между агентами, наблюдаемая информация). Дескрипторы сценариев определяют реальное содержимое модели: источники данных, визуализации, протоколирование. Дескрипторы модели и сценариев хранятся в файлах XML.

Дескрипторы модели создаются во время её разработки, в то время как предполагается, что дескрипторы сценариев создаются во время исполнения. Среда разработки Repast S предоставляет как мастер создания, так простой редактор для модификации дескрипторов модели. Среда исполнения Repast S включает в себя специальную панель для создания и сопровождения дескрипторов сценария.

Специальные средства генерации и поддержки кода

Среда разработки Repast S использует систему подключаемых модулей Eclipse CodeWeasel. Средства CodeWeasel – это набор подключаемых модулей Java для среды разработки Eclipse. Эти модули были разработаны командой Repast Argonne для того, чтобы обеспечивать работу таких систем, как Repast S. Инструменты CodeWeasel официально выпускаются как независимый проект с открытым исходным кодом для поддержки Repast S.

Средства CodeWeasel обеспечивают автоматизацию работы и упрощают создание  и сопровождение кода на языке Java. Сама среда Eclipse уже содержит мощные инструменты для создания и сопровождения пакетов и классов Java. Модули CodeWeasel содержат инструменты, которые их дополняют и ликвидируют пробелы в этих существующих функциях. Основополагающий принцип CodeWeasel гласит, что должны использоваться только исходные файлы Java. Не разрешается использовать для хранения пользовательского кода ни отдельных файлов метаданных, ни файлов состояния. На текущий момент основными представителями семейства CodeWeasel являются  модули MethodWeasel, FieldWeasel, FieldWeasel и LegacyWeasel. Также могут быть включены и дополнительные инструменты.

Модуль MethodWeasel – содержит мастер и визуальный редактор для Java-методов. Мастер предоставляет простой инструмент для создания новых сигнатур методов(имя метода, параметры метода, возвращаемый тип)  и определения аннотаций метода. Мастер построен на основе бесплатного open-source подключаемого модуля Eclipse под названием Мастер методов(Method Wizard). Визуальный редактор представляет код на языке Java в виде блок-схем. Содержимое блок-схем имеет прямое соответствие с кодом Java, поэтому редактор может работать с любым стандартом кода Java 5, вне зависимости от того был создан метод при помощи средства MethodWeasel или нет. Визуальный редактор  предоставляет закладки для модификации сигнатур метода и изменения его аннотаций.

Так же как и модуль MethodWeasel, модуль FieldWeasel имеет и мастер, и визуальный редактор. Однако в отличие от модуля MethodWeasel средство FieldWeasel работает с Java -полями. Мастер предоставляет  простой интерфейс для создания и инициализации новых полей. Как и указанный выше мастер, он построен на базе бесплатного подключаемого к среде Eclipse open-source модуля Мастер методов.

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

Модуль LegacyWeasel – это средство интеграции, которое позволяет использовать разработчикам документы XML для определения формата используемых файлов (например, существующие текстовые и бинарные файлы), точки экспорта  или  импорта данных Java(например,  классы Java, которые генерируют или принимают данные). Предполагается, что эти файлы XML могут создаваться при помощи простого встроенного редактора Eclipse(«Укажи-и-щелкни»). После создания соответствующих файлов XML модуль LegacyWeasel автоматически конвертирует данные источники данных (например, объекты Java) во входные файлы;  запускает или активирует используемую модель или программы; а затем считывает содержимое полученного в результате выходного файла обратно в соответствующие точки экспорта(например, в те же самые или другие объекты Java).      Кроме автоматизации и упрощения процесса интеграции модели XML файлы модуля LegacyWeasel потенциально могут быть использованы в качестве подробной документации по формату и содержимому входных и выходных файлов используемой модели.

Инструменты моделирования

Помимо средств общего назначения(упоминавшихся выше) среда разработки Repast S включает набор специальных инструментов поддержки. Эти инструменты содержат Мастер новой модели, Мастер файла спецификации новой модели и редактор файла спецификации модели. Мастер новой модели в среде Eclipse используется для создания новых моделей Repast S (например, проектов Repast S). Мастер спецификации новой модели создает спецификацию файлов модели в виде файлов XML, а редактор спецификации модели позволяет простую модификацию этих файлов.

Контексты

Основная структура данных в Repast S называется контекстом (Context). Context – это просто контейнер на базе семантики множества. В контекст может быть помещен  объект любого типа с оговоркой, что в контексте может содержаться только один экземпляр любого объекта. С точки зрения моделирования Context представляет абстрактную популяцию. Объекты в контексте являются популяцией модели. Для простоты мы будем называть такие объекты протоагентами (т.е. моделируемыми сущностями, которые обладают поведением и состоянием, но не способны к обучению). Надо сказать, что контекст не предоставляет никакого механизма для взаимодействия между протоагентами. Однако он обеспечивает базовую инфраструктуру для определения популяции и характера взаимодействий в ней. Т.е. контекст формирует условия функционирования агентов.

Контексты формируют абстрактную среду, в которой в заданной точке симуляции содержатся протоагенты. Также каждый контекст обладает своим собственным состоянием. Это состояние может содержать данные различных типов. В состоянии контекста могут содержаться простые значения, например, время. Также поддерживаются данные Data Fields. Элемент DataField – это n-мерное поле значений, с которым могут взаимодействовать  протоагенты контекста.

Также Context может содержать набор ассоциированных с ним поведений. Эти поведения могут влиять на внутреннее поведение контекста. Например, контекст, представляющий деревню фермеров, может иметь модель погоды и связанную с ней модель жатвы и посевов. Эти модели – пример поведений в рамках контекста. Моделью погоды в этом случае можно было бы управлять через состояние контекста, и вывод обновлял бы его состояние.   Мы можем создавать более сложную, гибкую модель поведений для Context, наделяя его, таким образом, качествами агента. Эта возможность предоставляет мощный режим для конструирования.

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

Членство в элементе Context  изменяемо. Т.е. в зависимости от ситуации агент может перемещаться между контекстами.

Контексты могут обладать такой степенью абстракции, какую пожелает проектировщик. Ключевая особенность Context – описание метапопуляций и обеспечение состояния, определяющего условия функционирования протоагентов.

Проекции

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

Проекции формируют новую структуру в рамках заданной метапопуляции контекста. Структура определяет  и обеспечивает связи в популяции, используя семантику, заданную в проекции(Projection). C практической точки зрения, это означает, что проекции добавляются в контекст  для того,  чтобы обеспечить взаимодействие протоагентов. Проекции относятся к контексту как «многие-к-одному». Каждый контекст имеет произвольное количество связанных с ним проекций,  что означает, что протоагенты могут образовать произвольное количество типов связей.  На рисунке 19 показано как взаимодействуют объекты Contexts и Projections.

Каждая проекция может работать с произвольными объектами. Для того чтобы работать с проекциями,  не требуется изменений кода протоагента. Проекции создаются независимо от протоагентов. Модель создания проекций является гибкой, поиск связей между объектами или связанных элементов делегируется объектам Query. Объекты Query специализируются на конкретных типах проекций. Тем не менее, все объекты Query реализуют один и тот же интерфейс, который возвращает список объектов, которые удовлетворяет критерию определенного контекста. Объекты Queries могут комбинироваться и образовывать новые запросы Quieries произвольной сложности. Например, можно послать запрос контексту, используя различные содержащиеся в нем проекции или атрибуты объектов. Аналогично, создав основной набор запросов, соединив их с анализатором выражений, разработчик модели, не изменяя код, может создать систему, в которой множества связей, запрашиваемых протоагентами, могут быть созданы и изменены при помощи декларативного языка запросов.

 

Рисунок 19. Контекст, содержащий агентов (слева), проекции (сеть, карту, сетку - справа), подконтекст (внизу)

Контекстно-зависимое поведение

Контексты предоставляют способ создания  и поддержки среды с популяцией. Проекции позволяют определить широкий спектр  связей при помощи объектов Queries. Однако они не учитывают поведение протоагентов или то, как протоагенты будут использовать информацию, полученную из контекста и его проекций. Локализованное поведение – это поведение, которое протоагент проявляет только в определенных условиях. Эти условия определяются контекстом, в который помещен протоагент.

Для того чтобы реализовать контекстно-зависимое поведение протоагентов, создаются «часовые» или триггеры. Проектировщик определяет конкретные условия для выполнения определенного поведения. Эти условия  учитываются «часовым».  Используя «часовых» дизайнер может изменять поведение протоагента в зависимости от контекста и обстоятельств.

Название Repast — Recursive Porous Agent Simulation Toolkit, Repast Symphony
Разработчик Argonne National Laboratory
Сайт http://repast.sourceforge.net/
Язык Java: J2EE, J2SE, Groovy, Python, семейство языков платформы .NET(C#, VB и др.)
Технические/функциональные характеристики
  • Планировщик событий (выполняет последовательные, параллельные операции с дискретными событиями)
  • Встроенные средства записи результатов(в текстовые файлы, в файлы формата XML)
  • Используются методы Монте-Карло
  • Поддержка двухмерных, трехмерных визуализаций
  • Динамическое управление агентами во время выполнения
  • Библиотеки генетических алгоритмов, нейронных сетей, генерации случайных чисел, спец. мат. выражений
  • Встроенные средства моделирования системной динамики
  • Инструменты для моделированиясоциальных сетей
  • Поддержка геоинформационных систем
  • Операционные системы: Windows, Mac OS, Linux
  • Работа как на персональных компьютерах, так и на научных вычислительных кластерах
  • Моделирование при помощи блок-схем
  • Поддержка Java, Groovy
  • Интеграция с множеством различных внешних утилит, включая  R statistics environment, подключаемые модули анализа трафика *ORA и Pajek, плагин для работы с SQL-запросами, инженерный пакет визуализации VisAD, платформа интеллектуального анализа данных Weka, многие популярные форматы электронных таблиц, вычислительная математическая среда MATLAB, дизайнер визуальных отчетов iReport;
  • интеграция с библиотекой сетевого моделирования JUNG
  • импорт данных  из  электронных таблиц Microsoft Excel, файлов UCINET DL
  • Опциональное сквозное моделирование на базе XML
  • Распределенные вычисления с помощью продукта  Terracotta
Сетевое окружение
Терминалы Все терминалы, поддерживающие среду J2SE, Groovy либо содержащие интерпретатор языка Python, либо установленную платформу .NET

Таблица 3. Основные технические характеристики инструментария Repast, Repast S

Средство мультиагентного моделирования MASON

Программная система MASON (Multiagent Simulator of Neighbourhood) – это инструментарий, позволяющий выполнять однопроцессное  дискретное моделирование с выборкой случайных событий, содержащий средства визуализации. Он написан на языке Java, является достаточно гибкой средой для широкого применения при моделировании. Особо стоит подчеркнуть тот факт, что инструментарий позволяет строить мультиагентные системы с очень большим количеством(вплоть до миллиона) агентов. Программный комплекс является бесплатным и поставляется с открытым внешним кодом(http://cs.gmu.edu/~eclab/projects/mason/).

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

  • Небольшое, производительное, доступное для понимания, легко модифицируемое ядро.
  • Независимая, расширяемая 2D- и 3D- визуализация.
  • Генерация одинаковых результатов независимо от платформы
  • Поддержка до миллиона агентов(без визуализации)
  • Поддержка работы с наибольшим возможным количеством агентов (с визуализацией)
  • Простая интеграция со сторонними библиотеками

Каких функций в данном продукте нет(и их реализация не планировалась разработчиками платформы):

  • Реализация моделирований на распределенной, многопроцессорной системе
  • Поддержка специальных функций для моделирования социальных агентов и роботов
  • Эффективное использование оперативной памяти

Архитектура

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

Инструментарий написан с использованием модульной, многоуровневой архитектуры (см. рисунок 20). Внизу  — набор утилитных структур данных, которые можно использовать для различных нужд. Далее следует модельный уровень, небольшая коллекция классов, состоящих из планировщика дискретных событий, высококачественного генератора случайных чисел, множество полей, которые содержат объекты и связывают их с локациями. Этой части кода достаточно для того, чтобы написать простые программы для моделирования, запускаемые с помощью командной строки.

 

Рисунок 20. Основные элементы MASON. Уровни модели и визуализации

Уровень визуализации отвечает за отображение областей и управление пользователя процессом моделирования. Пример визуализированных областей показан на рисунке 21. Уровень моделирования отделен от уровня визуализации. Набор утилит позволяет в процессе исполнения позволяет отрисовку и управление моделью. Мы можем использовать модель как самодостаточную сущность. Мы можем в любое время отделить модель от её визуализации, сохранить модель на диск, перенести её на другую платформу и затем продолжить работу с ней, либо выбрать абсолютно другую визуализацию модели. На рисунке 19 показана эта процедура.

 

Рисунок 21. Сохранение и восстановление в контрольных точках модели MASON(c визуализацией и без)

Все элементы уровней моделирования и визуализации являются модульными и могут быть легко заменены либо расширены.

Рисунок 22. Визуализированная область, изображающая трехмерное непрерывное пространство

Уровень модели

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

Агенты и Расписание. MASON использует специальное толкование понятия агент: вычислительная сущность, для которой можно запланировать выполнение некоторого действия и которая может управлять средой.  Заметьте, что в определении не говориться, что агент физически содержится в среде, хотя такое могло бы быть; в этом случае мы бы называли его воплощенным агентом. Агенты являются мозгами и они не нуждаются в телах. Платформа MASON не планирует события для того, чтобы потом оповестить о них агента – она непосредственно планирует действия самого агента. Составление нескольких расписаний для выполнения различных функций просто выполняется при помощи анонимного класса-обертки.

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

Fields. Области связывают произвольные объекты или значения с локациями в некотором воображаемом пространстве. Множество из этих областей практически ничем не отличаются от оберток для простых двух- и трехмерных массивов.  Другие обеспечивают разреженные связи. Объект может находиться в нескольких областях в одно и тоже время(и для некоторых областей, в одной области более чем один раз).  Использование областей – опциональная функция, пользователь может добавлять свои области. Средство MASON предоставляет области для:

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

Уровень визуализации

Объекты уровня визуализации могут получать доступ к объектам уровня модели только с разрешения «привратной» обертки класса SimState, которая называется GUIState. Это класс, который может полностью открепить модель и сериализовать объект SimState на диск либо десериализовать его с диска. Так как необходимо для определенных объектов составлять планы действий(окнам необходимо обновляться для того, чтобы отражать изменения модели), класс GUI State также содержит свое собственное расписание, которое соответствует основному расписанию модели. Это обеспечивает полную независимость уровня визуализации от модели.

Инструментарий MASON отображает моделирование при помощи одного или более дисплеев, графических окон, которые рисуют двухмерные, трехмерные представления областей. Дисплеи соотносятся с областями отношением «многие-ко-многим». Трехмерные дисплеи могут отображать двухмерные дисплеи. Каждый дисплей содержит одно или несколько изображений, предоставляет объекты-прокси, которые отрисовывают области и позволяют пользователю просматривать или изменять их содержимое. Соответствующие области и их изображения соотносятся  друг  с другом как «один-ко-многим».

Инструмент моделирования MASON предоставляет  улучшенную консоль, графическую утилиту, при помощи которой можно начинать/останавливать/приостанавливать/последовательно исполнять расписание, загружать и сохранять сериализованные модели, показывать и скрывать дисплеи, загружать различные виды моделирований и инспектировать области. Эта программа является не обязательной и её можно заменить более простой реализацией.

Название MASON – MultiAgent Simulator of Neighboorhood
Разработчик George Mason University’s Evolutionary Computation Laboratory и GMU Center for Social Complexity
Сайт http://cs.gmu.edu/~eclab/projects/mason/
Язык Java: J2EE, J2SE
Технические/функциональные характеристики
  • Планировщик дискретных событий
  • Двухмерная, трехмерная визуализация моделирования
  • Работа с большим количеством агентов (при отключенной визуализации — вплоть до одного миллиона экземпляров)
  • Сохранение и загрузка модели в контрольных точках
  • Простая интеграция со сторонними библиотеками
  • Поддержка пространственных моделей
  • Управление, мониторинг агентов при помощи графического инструмента
Сетевое окружение
Терминалы Все терминалы, поддерживающие среду J2SE.

Таблица 4. Основные технические характеристики инструментария MASON

Использованные источники

  1. Сайт JADE, http://jade.tilab.com.
  2. Сайт организации FIPA, http://www.fipa.org.
  3. BlueJADE, http://sourceforge.net/projects/bluejade.
  4. Pavel Vrba, E.Cortese, F. Quarta, G. Vitaglione, Scalability and Performance of the JADE Message Transport System. Analysis of suitability for Holonic Manufacturing Systems. EXP # 3 ( September 2003).
  5. F. Bellifemine, G. Caire, A. Poggi, G. Rimassa. JADE. A white paper. EXP # 3 (September 2003), pp. 6-19, http://jade.tilab.com/papers/2003/WhitePaperJADEEXP.pdf.
  6. J. P. Bigus, “The Agent Building and Learning Environment,” Proceedings of Autonomous Agents 2000, Barcelona, ACM Press (2000), pp. 108–109
  7. Agent Building and Learning Environment, http://www.alphaWorks.ibm.com/tech/able/.
  8. The Recursive Porous Agent Simulation Toolkit,  http://repast.sourceforge.net/repast_3/index.html/.
  9. Repast Symphony, http://repast.sourceforge.net
  10. Proceedings of the Agent 2005 Conference On Generative Social Processes, Models, and Mechanisms , October 13-15, 2005.
  11. North M.J., T.R. Howe, N.T. Collier, and R.J. Vos, 2005, “Repast Simphony Development Environment,” in C.M. Macal, M.J. North, and D. Sallach (eds.), Proceedings of the Agent 2005 Conference on Generative Social Processes, Models, and Mechanisms, ANL/DIS-06-1, co-sponsored by Argonne National Laboratory and The University of Chicago, Oct. 13-15.
  12. North M.J., T.R. Howe, N.T. Collier, and R.J. Vos, 2005, “Repast Simphony Runtime System,” in C.M. Macal, M.J. North, and D. Sallach (eds.), Proceedings of the Agent 2005 Conference on Generative Social Processes, Models, and Mechanisms, ANL/DIS-06-1, co-sponsored by Argonne National Laboratory and The University of Chicago, Oct. 13-15.
  13. FlexDoc, https://flexdock.dev.java.net.
  14. Java Plug-in Framework (JPF) Project, http://jpf.sourceforge.net.
  15. Hawlitzek Conslulting, 2005. Eclipse Plug-in Method Wizard, http://www.hawlitzek-consulting.de/Java_Downloads/Eclipse_Extensions/Eclipse_Extensions_English/eclipse_extensions_english.html.
  16. Eclipse, Eclipse Foundation Inc., Ottawa, Ontario, Canada, http://www.eclipse.org.
  17. North M.J., T.R. Howe, N.T. Collier, M.T. Parker, J.R. Vos, 2005,  “Containing agents: Context, Projections, and Agents” in C.M. Macal, M.J. North, and D. Sallach (eds.), Proceedings of the Agent 2006 Conference on Social Agents: Results and Prospects, ANL/DIS-06-7, co-sponsored by Argonne National Laboratory and The University of Chicago, September 21-23.
  18. Multi-Agent Simulator Of Neighborhoods, MASON, http://cs.gmu.edu/~eclab/projects/mason/
  19. MASON: A New Multi-Agent Simulation Toolkit. 2004. Sean Luke, Claudio Cioffi-Revilla, Liviu Panait, and Keith Sullivan. Proceedings of the 2004 SwarmFest Workshop. http://cs.gmu.edu/~eclab/projects/mason/publications/SwarmFest04.pdf