Desenvolvendo Sistemas Multiagentes com JADE

24
Desenvolvendo Sistemas Multiagentes com JADE Allan Lima [email protected]

description

Allan Lima [email protected]. Desenvolvendo Sistemas Multiagentes com JADE. SMA e o JADE. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do zero sempre? É ai que entram os frameworks multiagentes. Roteiro. - PowerPoint PPT Presentation

Transcript of Desenvolvendo Sistemas Multiagentes com JADE

Page 1: Desenvolvendo Sistemas  Multiagentes  com JADE

Desenvolvendo Sistemas Multiagentes com JADE

Allan [email protected]

Page 2: Desenvolvendo Sistemas  Multiagentes  com JADE

SMA e o JADE

SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento

Precisamos fazer tudo do zero sempre?

É ai que entram os frameworks multiagentes

Page 3: Desenvolvendo Sistemas  Multiagentes  com JADE

Roteiro

O que é o JADE? Visão geral do JADE

Arquitetura e funcionalidades Implementação agentes

Modelo de Agente do JADE Criando comportamentos para os

Agentes Fazendo os Agentes se comunicarem Serviços de Páginas Amarelas

Page 4: Desenvolvendo Sistemas  Multiagentes  com JADE

O que o JADE?

JADE Java Agent DEvelopment framework

Criado pela Teltecom Italia Atua como um middleware para o

desenvolvimento de SMA em Java Possui um conjunto de ferramentas e

um biblioteca de programação Permite a distribuição dos agentes É baseado nos modelos da FIPA

Page 5: Desenvolvendo Sistemas  Multiagentes  com JADE

Visão Geral do JADE

Runtime Evironment Infra-estrutura para dar “vida” aos

agentes Library

Classes para auxiliar na implementação da simulação

Graphical Tools Permitem a administração e o

monitoramento da simulação

Page 6: Desenvolvendo Sistemas  Multiagentes  com JADE

Visão Geral do JADE

Utilitários de desenvolvimento Remote Monitoring Agent Dummy Agent Sniffer Agent Directory Facilitator GUI

Page 7: Desenvolvendo Sistemas  Multiagentes  com JADE

Visão Geral do JADE

Library

Agent PlatfromAgent

Agent Management System

Directory Facilitator

Message Transport System

Page 8: Desenvolvendo Sistemas  Multiagentes  com JADE

Criando Agentes

Todos os agentes devem herdar da classe jade.core.Agent

public class BookBuyerAgent extends Agent {

...

}

Page 9: Desenvolvendo Sistemas  Multiagentes  com JADE

Criando Agentes

setup() e takeDown() e getAID()

public class BookBuyerAgent extends Agent {

protected void setup() { System.out.println(getAID().getName() + " is ready"); }

protected void takeDown() { System.out.println(getAID().getName() + " deleted"); }

}

Page 10: Desenvolvendo Sistemas  Multiagentes  com JADE

Rodando Agentes no JADE A classe jade.Boot tem um método

main() que recebe o nome e o tipo dos agentes como parâmetro

Exemplo de parâmetro buyer1:BookBuyerAgent

buyer2:BookBuyerAgent Exemplo...

Page 11: Desenvolvendo Sistemas  Multiagentes  com JADE

Passando Parâmetros para os Agentes

• Também podemos passar parâmetros para os agentes quando queremos

• Exemplo:▪ buyer1:BookBuyerAgent(The-lord-of-the-rings)

buyer2:BookBuyerAgent(Harry-Potter) O método getArguments() retorna

um Object[] com os parâmetros dos agentes

Exemplo...

Page 12: Desenvolvendo Sistemas  Multiagentes  com JADE

Comportamentos

Comportamento dos agentes é definido pela classe abstrata Behaviour

Devemos herdar desta classe e adicionar comportamentos aos agentes com o método addBehaviour()

Principais métodos a serem implementados: void action() boolean done()

Page 13: Desenvolvendo Sistemas  Multiagentes  com JADE

Ciclo de Vida de um Agente

Setup()O

agente foi

morto?

Pegue o próximo

comportamento

c.action()

Remova c do pool de

comportamentos

c.done()?

takeDown()Sim

Não

Não

Sim

Sim

Page 14: Desenvolvendo Sistemas  Multiagentes  com JADE

Tipos de Comportamento Behaviour

Genérico, temos de implementar os métodos action() e done()

OneShotBehaviour done() sempre retorna true

CyclicBehaviour done() sempre retorna false

WakerBehaviour Executa o comportamento apenas uma vez após um

determinado tempo TickerBehaviour

Excuta o comportamento em tempos fixos de intervalo

Page 15: Desenvolvendo Sistemas  Multiagentes  com JADE

Exemplos

Comportamentos do agente comprador e do agente vendedor...

Page 16: Desenvolvendo Sistemas  Multiagentes  com JADE

Comunicação A comunicação é feita de forma

assíncrona Cada agente tem sua lista de

mensagens Modelo FIPA-ACLACLMessage msg = new ACLMessage(ACLMessage.INFORM);

msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));msg.setLanguage("English");msg.setOntology("Weather-forecast-ontology");msg.setContent("Today it’s raining");

send(msg);

Page 17: Desenvolvendo Sistemas  Multiagentes  com JADE

Comunicação

Métodos Importantes Agent.send()▪ Envia uma mensagem

Agent.receive()▪ Retira a primeira mensagem da lista de

mensagens do agente▪ Retorna null se não tiver mensagem na lista

Behaviour.block()▪ O active() só volta a ser executado quando

houver uma mensagem seja inseria da lista do agente

Page 18: Desenvolvendo Sistemas  Multiagentes  com JADE

Exemplos

Trocando mensagens entre o agente comprador e o agente vendedor...

Page 19: Desenvolvendo Sistemas  Multiagentes  com JADE

Serviço de Páginas Amarelas Permitem aos agentes publicarem quem

é responsável por prover determinados serviços

Um agente chamado Directory Facilitator guarda estes dados

Directory FacilitatorAgentA: ServiceX,

ServiceYAgentB: ServiceX,

ServiceZ

AgentC: ServiceY

Page 20: Desenvolvendo Sistemas  Multiagentes  com JADE

Publicando Serviços

DFService.register() Publica um serviço

DFAgentDescription e ServiceDescription Descrevem o serviço

Exemplo...

Page 21: Desenvolvendo Sistemas  Multiagentes  com JADE

Procurando por Serviços

DFService.search() Realiza a busca por serviços Recebe o agente e o serviço pelo qual

ele busca Importante:▪ O serviço pode não estar presente no

momento do search!!!▪ Devemos usar uma forma de sincronizar a

chamada ou usar o método searchUntil Exemplo...

Page 22: Desenvolvendo Sistemas  Multiagentes  com JADE

Dúvidas, críticas, sugestões?

Page 23: Desenvolvendo Sistemas  Multiagentes  com JADE

Para brincar um pouco

Fazer o Agente comprador ter uma lista de livros e comprar todos eles

Implementar um mecanismo de pesquisa no comprador Ou seja, ele vai para todos os agente

que vendem livros ele vai procurar perguntar pelo preço e no fim vai comprar do agente que vender mais barato

Page 24: Desenvolvendo Sistemas  Multiagentes  com JADE

Para saber mais...

O site do JADE tem tudo que você precisa http://jade.tilab.com/ É necessário um cadastro para o

download do projeto Tutorial para iniciantes (base para

esta aula) http://jade.tilab.com/doc/JADEProgrammi

ng-Tutorial-for-beginners.pdf