Новая версия JADE 3.7 и WADE 2.5

2 июля 2009 года Telecom Italia Lab выпустили новый релиз .

Новая версия получила названия 'OSGAgents', благодаря интеграции с OSGi - спецификацией динамической модульной шины для создания -приложений, разрабатываемой консорциумом OSGi Alliance. Данная интеграция позволяет запускать агентов в OSGi среде, дает им доступ к основным возможностям OSGi(регистрация и использования OSGi-сервисов и др.). На сайте можно также скачать JADE-OSGi Guide.

Еще одним достоинством новой версии является поддержка WSDC (Web Service Dynamic Client). Это расширение позволяет вызывать веб-службы на лету, минуя генерацию классов-заглушек.

Более подробную информацию можно получить на официальном сайте JADE и WADE

Е.Н. Владимирская

Национальный аэрокосмический университет им. Н.Е.
Жуковского «ХАИ», Харьков, Украина
catherine.vladimirskaya@gmail.com

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

Направление «МАС» распределенного искусственного интеллекта рассматривает решение одной задачи несколькими интеллектуальными подсистемами. Для решения задачи агенты могут взаимодействовать между собой, с пользователями, а также с другими информационными системами ресурсами сети Интернет. Перспективным представляется взаимодействие агентов в сфере Semantic Web - расширении классического веба, где информация более пригодна для машинной обработки. Таким образом, актуальным и важным является  создание архитектуры и средств для организации взаимодействия и управления агентами, где бы агенты могли обмениваться сообщениями с использованием заранее определенных словарей, где возможно было бы производить подбор необходимых сервисов и информационных ресурсов, а также использовать многие другие возможности Semantic Web.

Некоторые проблемы организации функционирования агентов можно решить, опираясь на готовые базовые решения – агентные платформы, реализующие основные механизмы, обеспечивающие работу МАС. В настоящее время существует множество агентных платформ, как коммерческих, так и с открытым исходным кодом. Для решения поставленных задач выбрана платформа [2]. Данная платформа и ее расширения предоставляют различные средства для обеспечения функционирования агентов в рамках парадигмы Semantic Web.  Платформа обеспечивает поддержку онтологий (пакет .content), при этом информация об онтологиях представлена в виде -объектов. Более эффективным представляется использование библиотеки AgentOWL[3], которая поддерживает RDF/OWL модели для агентов . Описание модели знаний агента(«generic agent model» [3]) основано на пяти основных элементах: Resources, Actions, Actors, Context и Events. Поддерживается обмен сообщениями в формате RDF/OWL, включение полученной информации в модель.  Для того чтобы агенты могли функционировать в контексте Semantic Web, им добавляются методы работы с построенной моделью знаний, а также методы обработки и отправки сообщений в формате OWL и SPARQL. В AgentOWL используется библиотека проекта Jena[4], поэтому данный подход легко расширять новыми возможностями работы с онтологической моделью знаний, используя Jena API.

Рассмотрение агентов в контексте Semantic Web ведет к необходимости интеграции МАС с веб-приложениями, в частности, создания веб-интерфейса для агентов. Существует несколько готовых подходов, которые облегчают решение данной задачи. Подход JadeGateway[5] обеспечивает взаимодействие между внешним приложением и платформой . Все служебные классы доступны в пакете .wrapper.gateway. Основное назначение – создание веб-интерфейса для агентов, при этом агент контролирует все запросы к странице. Основной принцип подхода заключается в применении цепочки: servlet – gatewayagent – МАС. Другой подход – проект Jade4spring – обеспечивает легкую интеграцию контейнеров агентов и фреймворка Spring[6]. Такой подход позволяет эффективно использовать агентов в контексте веб-приложения. Визуализацию онтологических моделей предлагается осуществлять с использованием Flare Prefuse [7]. Flare представляет собой ActionScript библиотеку  для создания визуализаций, которые выполняются в Adobe Flash Player. Для преобразования OWL в формат, требуемый для Flare, используется OWL2Prefuse[8]. Используя библиотеку Flare можно получить OWL-граф, информация о котором сохраняется в формате SWF. Объект SWF встраивается на страницу, при этом необходимо обеспечить обмен информации между указанным объектом и агентами, запущенными в контексте веб-приложения, для обеспечения динамической визуализации онтологических моделей.

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

Список литературы
1.    Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. – СПб.: Питер, 2003.
2.    Fabio Bellifemine, Giovanni Caire, Tiziana Trucco (TILAB, formerly CSELT), Giovanni Rimassa (University of Parma) . PROGRAMMER’S GUIDE, 2006.
3.     Michal Laclavik, Marian Babik, Zoltan Balogh, Ladislav Hluchy AgentOWL: Semantic Knowledge Model and Agent Architecture In Computing and Informatics. Vol. 25, no. 5 (2006), p. 419-437. ISSN 1335-9150, Chapters 1, 4, 5.
4.     Jena, HP Labs Semantic Web Toolkit. http://jena.sourceforge.net/.
5.    Viktor Kelemen “Accessing a MAS from a Servlet using the JadeGateway” http://.tilab.com/doc/tutorials/JadeGateway.pdf
6.    Spring, the leading platform to build and run enterprise applications http://www.springsource.org/.
7.    Flare: data vizualization for the web. http://flare.prefuse.org/.
8.    OWL2Prefuse. http://owl2prefuse.sourceforge.net/.


Международная научно-практическая конференция "Веб-программирование и Интернет-технологии ": Сб. матер. Междунар. науч.-практ. конф. Минск, 8-10 июня 2009г.- Мн.: Институт математики НАН Беларуси, 2009.-112с.

Jade и Web

Рассматривая -агентов в контексте Web вообще и Semantic Web в частности, можно уделить немного внимания вопросам интеграции агентов с веб-приложениями.

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

Читать продолжение »

Агенты и онтологии на примере AgentOWL

В прошлый раз я описывала использование AgentOWL. Сейчас  я предлагаю рассмотреть некоторые теоретические и практические аспекты поддержки и использования RDF/OWL моделей агентами. Целью будет выявления возможностей и ограничений подхода AgentOWL.

Читать продолжение »

JADE и Semantic Web

Направление мультиагентных систем (МАС) возникло на стыке различных направлений, таких как искусственный интеллект, параллельное программирование, Интернет коммуникации, и в настоящее время стремительно развивается. МАС строятся из множества взаимодействующих агентов (зачастую представляющих собой полноценные интеллектуальные системы), совместно решающих поставленную задачу в распределенных средах.
Основным элементом программного агента системы, дающим ему возможность принимать решения, планировать действия, взаимодействовать с другими агентами, является онтологическая база знаний, содержащая модели концептуальных понятий, отношений предметной области и правила для анализа и ситуативной ориентации.
Программные агенты должны сыграть ведущую роль в Semantic Web. Однако пока большинство проектов посвященных МАС находятся на исследовательской стадии.
Можно найти и проекты, которые объявляют о готовности использования агентов в коммерческих целях. Такой пример можно посмотреть на сайте проекта Magenta.
«Magenta Toolkit многократно применялся для решения широкого спектра задач планирования и распределения ресурсов, а также для разработки Интернет-приложений, основанных на концепциях Web 3.0 и Semantic Web.»
Там же можно попросить Magenta Toolkit «в академических научно-исследовательских и образовательных целях». Кстати, планирую это сделать=))) Интересно посмотреть.
Среди других проектов можно выделить  наиболее популряный - JADE. Проект идет по пути разработки фреймворка для построения МАС.
Основной упор делается на специфические аспекты взаимодействия агентов, такие как обмен сообщениями, кодировка и парсинг, жизненный цикл агентов и т.д.
А как же Semantic Web?
Semantic Web для агента - отличнейшее поле для деятельности.
А вот если проект SW? Нужны ли ему на данном этапе агенты(вообще агенты и агенты в частности)? Тут, конечно, все зависит от специфики приложения. Выбор агентного подхода должен быть четко обоснован при рассмотрении других альтернатив.

Что говорит википедия:

"Multi-agent systems are applied in the real world to graphical applications such as computer games. Agent systems have been used in films.They are also used for coordinated defence systems. Other applications include transportation, logistics, graphics, GIS as well as in many other fields. It is widely being advocated for use in networking and mobile technologies, to achieve automatic and dynamic load balancing, high scalability, and self-healing networks."

Т.е. последнее замечание в некоторой степени касается и SW.  И я бы сказала, есть некоторый акцент на слове "advocated".

Что же предосталяет (конкретно из того что могло бы быть полезно для приложений SW):

1)поддержка онтологий(.content package), которые агенты могут использовать для обмена сообщениями. Можно создать онтологию в Protégé а потом Beangenerator автоматически создаст "ontology definition class and the predicates, agent actions and concepts classes".

Beangenerator здесь. Написано что работает для protege 3.2.1 и след версий. Для OWL-онтологий с багами:). Для Protege 4 вроде не работает(по крайней мере у меня), а хотелось бы

2)есть интеграция с Jess - агенту можно прикрутить логический вывод

3) есть RDFCodec и AgentOWL

4) Простой пример использование   для выполнения простых SPARQL-запросов к http://dbpedia.org/sparql можно посмотреть тут.

Из примера видно, что по сути ничего для SPARQL и не предоставляет. А может, это и не надо? Для этого есть Jena к примеру.

5) -агента достаточно легко развернуть как web-service(WSIG add-on)

6) Отдельным плюсом является интеграция с jsp(лучше бы конечно jsf:) При этом агент контролирует все запросы к странице.

Что еще хотелось бы, так это веб-интерфейс мониторинга и управления агентами.


надеюсь, эта информация будет вам полезной=)

немного об авторе review здесь

Работа с JADE в Eclipse: разработка агентов (часть 2)

Алексей Скороходов опубликовал на SHCHERBAK.NET вторую из серии статей "Работа с в : создание первого агента".
Читаем, как организовать взаимодействие между интеллектуальными агентами на платформе ( Agent DEvelopment Framework).

Автор: Алексей Скороходов

Данная статья является продолжением статьи «Работа с JADE в Eclipse: Создание первого агента!». В предыдущей статье мы рассмотрели вопросы создания программного агента на платформе , но не рассмотрели вопросы коммуникации агентов и их реализации. По сути, не ответили на вопрос, как необходимо разрабатывать агента, который может взаимодействовать с другими.

Итак, агенты...

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

Агентам присущи следующие «ментальные» свойства (или их подмножества)*:

  • знания (knowledge)-постоянные, неизменяемые в процессе функционирования знания агента о себе, среде и других агентах;
  • убеждения(beliefs)-знания агента о среде (в том числе, о других агентах), которые могут стечением времени изменяться и становиться неверными;
  • желания(desires)-состояния, которых агент желает достичь (могут быть противоречивыми), аналогичны целям;
  • намерения(intentions)-действия, которые агент собирается выполнить вследствие своих желаний или в силу взятых на себя обязательств;
  • обязательства (commitments)-задачи, решение которых агент берет на себя в рамках кооперации с другими агентами по их просьбе или поручению.

* автор вышеперечисленных свойств агентов - Тарасов В.Б.

В данной статье мы разработаем два типовых агента:

  1. Агента, который будет искать агентов в агентной системе () и «здороваться» с ними
  2. Агента,  отвечающего на «приветствие».

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

Реализация агента 1 (A.) представлена в листинге ниже:

package Agent_A;

import .core.Agent;
import .core.AID;
import .domain.AMSService;
import .domain.FIPAAgentManagement.*;
import .core.behaviours.*;
import .lang.acl.*;

public class A extends Agent{
protected void setup()
{
addBehaviour(new CyclicBehaviour(this) // Поведение агента исполняемое в цикле
{
public void action()
{
ACLMessage msg = receive();
if (msg!=null) {
System.out.println( " - " +
myAgent.getLocalName() + " received: " +
msg.getContent() );
}//Вывод на экран локального имени агента и полученного сообщения
block();//Блокируем поведение, пока в очереди сообщений агента не появится хотя бы одно сообщение
}
});
AMSAgentDescription [] agents = null;
try
{
SearchConstraints c = new SearchConstraints();
c.setMaxResults (new Long(-1));
agents = AMSService.search( this, new AMSAgentDescription (), c );
}
catch (Exception e)
{
System.out.println( "Problem searching AMS: " + e );
e.printStackTrace();
}

for (int i=0; i
{
AID agentID = agents[i].getName();
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(agentID);// id агента которому отправляем сообщение
msg.setLanguage("English");//Язык
msg.setContent("Ping");//Содержимое сообщения
send(msg);//отправляем сообщение
}
}
}

Реализация агента 2 (B.) представлена в листинге ниже:

package Agent_B;

import .core.Agent;
import .core.behaviours.*;
import .lang.acl.*;

public class B extends Agent{
protected void setup()
{
addBehaviour(new CyclicBehaviour(this)
{
public void action()
{
ACLMessage msg = receive();
if (msg!=null) {
System.out.println( " - " +
myAgent.getLocalName() + " received: " +
msg.getContent() );
//Вывод на экран локального имени агента и полученного сообщения
ACLMessage reply = msg.createReply();
reply.setPerformative( ACLMessage.INFORM )
//set the performative of this ACL message object to the passed constant. Remind to use the set of constants (i.e. INFORM, REQUEST, ... ) defined in this class
reply.setContent("Pong");Содержимое сообщения
send(reply);//отправляем сообщения
}
block();
}
});
}
}

Как видно из рисунка 1, агент ххх отправил сообщение ”Ping” сам его же получил и вывел на экран.Также получил и вывел принятое сообщение агент ууу, после чего отправил сообщение ”Pong” это был ответ на полученное сообщение. Далее агент ххх получив сообщение ”Pong”, выводит его. (xxx,yyy -экземпляры соответствующих классов (агентов))



Сообщения между агентами

рисунок 1


Далее, с помощью снифера, который встроен в платформу мы можем видеть какие сообщения и кому были отправлены. Так на рис 2. наш агент «xxx» отправил сообщение всем агентам запущенным в данный момент на платформе    (включая и себя) это связано с тем, что при поиске агентов мы «c.setMaxResults (new Long(-1));»  установили равным «-1».


Сниффер  JADE

рисунок 2

На сегодня все... AgentOWL и вопросы повышения интеллектуальности агентов будут расмотрены в следующих статьях.