Agentes com Jade e Spring Framework

Como já disse o Mysnky agentes tem tudo param serem o próximo grande paradigma da computação. A minha idéia nesse post é falar um pouco mais sobre Sistemas Multi Agentes e como podemos utilizar esses conceitos em Java através frameworks especializados em IA como o Jade e utilizando Spring Framework também :)

Agentes

Não existe muito consenso sobre a definição de agentes para podemos assumir que agente é uma entidade real ou virtual imersa em um ambiente (que também pode se um agente) sobre o qual ele é capaz de agir ou sofrer uma ações do mesmo. Existe apenas uma capacidade parcial de percepção deste ambiente por parte do agente. Os agentes podem se comunicar entre si, seu comportamento é autônomo e decorrente das observações do ambiente e das interações com outros agentes.

Os agentes podem ser basicamente Ativos, Reativos ou Híbridos. Agentes híbridos são bem comuns, muitas vezes queremos realizar soluções com agentes reativos mas quando nos tocamos os agentes já começam a ficar cheios de cognitividade e dai já se tornaram híbridos.



O que caracteriza um agente como Reativo é:
  • Não ter representação explicita do conhecimento
  • Não ter representação do ambiente
  • Não memória das ações
  • Estar em um grande número de membros
  • Organização etológica, semelhante aos animais

Arquitetura de Agentes Reativos Simples

Esse é o modelo de arquitetura mais simples de um agente possível. Basicamente possuímos os sensores que captam o ambiente, esses sensores geram estímulos para a unidade controladora(ações) a através dessas ações e de regras pré definidas que o agente tem obtemos as reações em forma de atuadores.

Você pode representar as ações de um agente reativo com um diagrama da UML, o diagrama mais adequando para essa tarefa é o diagrama de máquina de estados.

Já os agentes cognitivos são reconhecidos pelas seguintes características:
  • Representação do ambiente como um agente
  • Histórico de ações
  • Mecanismo de controle (Raciocínio)
  • Comunicação Direta entre agentes.
  • Poucos membros, ou seja, poucos agentes

Arquitetura BDI


Arquitetura BDI - Agentes Cognitivos


Como você podem perceber um arquitetura para agentes cognitivos como a arquitetura BDI é bem mais complexa. Nessa arquitetura possuímos Crenças que nada mais são que crenças sobre o estado do ambiente, de forma que podem ser até mesmos expectativas sobre futuros estados do ambiente ou até mesmo sobre outros agentes.

Os desejos são estados desejáveis em que algo poderia se encontrar na percepção do agente. O fato de existirem desejos é que motiva o agente a trabalhar como se existissem metas para ele. Para realizar uma meta são necessárias ações essas ações são as intenções que são geradas a partir dos desejos do agente.

Aplicações de SMAs

As aplicações de sistemas multi-agentes são:
  • Processamento de Linguagem Natural
  • Organização de processos industriais
  • Robótica
  • Busca de informações na internet
  • Geográfica
  • PDA
  • Jogos
  • Comércio eletrônico
  • Controle de tráfego aéreo
As grandes complexidades se criar soluções com esse paradigma residem no peso da comunicação e principalmente na própria complexidade do paradigma.

Jade um framework Java para Agentes

É uma framework para criação de aplicações multi-agentes escrito em java. Ele segue as especificações da FIPA que é uma organização que padroniza as aplicações baseadas em agentes.

Jade ainda prove uma série de ferramentas gráficas colo um console em Swing e debug distribuído de agentes. Todas as configurações ainda podem ser modificadas por um GUI de forma remota. O Jade foi desenvolvido pela Telecom Itália e é largamente usada em soluções de telecomunicações.

O Jade é capaz de simplificar consideravelmente o desenvolvimento de soluções baseadas em agentes enquanto ao mesmo tempo segue as especificações da FIPA. JADE utilizada comunicação baseado na ACL da FIPA e implementado em RMI IIOP.

Jade4Spring

Esse é outro framework java que nos trás o melhor dos dois mundos. Ele consegue integrar o contexto do JADE com o contexto do Spring Framework. Jade4Spring nos possibilita desenvolver aplicações multi-agentes como se fosse meros beans do Spring.

Quem já conhece o poder de desenvolver um aplicação Java com Spring pode aproveitar todas as facilidade do desenvolvimento baseado em Spring para suas aplicações Multi-Agentes.

Um Exemplo prático

Vamos ver como é fácil utilizar essas tecnologias juntas para criar um pequena aplicação Multi-Agente.

jade-beans.xml


Agora vamos ver a classe Java Pessoa.



Algumas Explicações

Foi declarado no contexto do Spring um JadeBean esse cara pega automaticamente publica um bean do spring no contexto do Jade e já o coloca em execução. Você pode perceber que existe um allagentes que é um mapa todos os beans que estiverem ali serão publicados automaticamente no contexto do jade.

Para criar um agente no jade basta estender a classe jade.core.Agent. No Jade o modelo do agente e o seu comportamento estão separados. Todas as ações do agente ficam em alguam classe behaviour do Jade.

O Behaviour utilizado em questão foi o do tipo Ticker que significa que de tempos em tempos ele será executado. O Jade possui outros tipos de Behaiviours como por exemplo baseados em estados.

Para testar a aplicação basta subir o contexto do Sprint em uma classe qualquer e automaticamente o contexto do Jade será subido pelo Spring e seus agentes vão entrar em execução.

Até a próxima :)

Popular posts from this blog

Telemetry and Microservices part2

Installing and Running ntop 2 on Amazon Linux OS

Fun with Apache Kafka