Allan Lima [email protected]. SMA tem muitas coisas em comum Modelos de agentes Transporte de...

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

Transcript of Allan Lima [email protected]. SMA tem muitas coisas em comum Modelos de agentes Transporte de...

Page 1: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Desenvolvendo Sistemas Multiagentes com JADE

Allan [email protected]

Page 2: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Visão Geral do JADE

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

Page 7: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Visão Geral do JADE

Library

Agent Platfrom

AgentAgent

Management System

Directory Facilitator

Message Transport System

Page 8: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Criando Agentes

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

public class BookBuyerAgent extends Agent {

...

}

Page 9: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Exemplos

Comportamentos do agente comprador e do agente vendedor...

Page 16: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Exemplos

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

Page 19: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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,

ServiceY

AgentB: ServiceX, ServiceZ

AgentC: ServiceY

Page 20: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

Publicando Serviços

DFService.register() Publica um serviço

DFAgentDescription e ServiceDescription Descrevem o serviço

Exemplo...

Page 21: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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

Page 23: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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: Allan Lima adsl@cin.ufpe.br. SMA tem muitas coisas em comum Modelos de agentes Transporte de mensagens Tipos de comportamento Precisamos fazer tudo do.

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