desenvolvendo sistemas multiagentes com jade.pdf

24
Allan Lima [email protected]

Upload: anajulia

Post on 19-Jan-2016

47 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvendo Sistemas Multiagentes com JADE.pdf

Allan Lima [email protected]

Page 2: Desenvolvendo Sistemas Multiagentes com JADE.pdf

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.pdf

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.pdf

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.pdf

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.pdf

Utilitários de desenvolvimento

Remote Monitoring Agent

Dummy Agent

Sniffer Agent

Directory Facilitator GUI

Page 7: Desenvolvendo Sistemas Multiagentes com JADE.pdf

Library

Agent Platfrom

Agent Agent

Management System

Directory Facilitator

Message Transport System

Page 8: Desenvolvendo Sistemas Multiagentes com JADE.pdf

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

public class BookBuyerAgent extends Agent {

... }

Page 9: Desenvolvendo Sistemas Multiagentes com JADE.pdf

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.pdf

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.pdf

• 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.pdf

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.pdf

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.pdf

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.pdf

Comportamentos do agente comprador e do agente vendedor...

Page 16: Desenvolvendo Sistemas Multiagentes com JADE.pdf

A comunicação é feita de forma assíncrona Cada agente tem sua lista de mensagens Modelo FIPA-ACL

ACLMessage 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.pdf

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.pdf

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

Page 19: Desenvolvendo Sistemas Multiagentes com JADE.pdf

Permitem aos agentes publicarem quem é responsável por prover determinados serviços

Um agente chamado Directory Facilitator guarda estes dados

Directory Facilitator

AgentA: ServiceX, ServiceY

AgentB: ServiceX, ServiceZ

AgentC: ServiceY

Page 20: Desenvolvendo Sistemas Multiagentes com JADE.pdf

DFService.register()

Publica um serviço

DFAgentDescription e ServiceDescription

Descrevem o serviço

Exemplo...

Page 21: Desenvolvendo Sistemas Multiagentes com JADE.pdf

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.pdf
Page 23: Desenvolvendo Sistemas Multiagentes com JADE.pdf

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