Desenvolvendo Sistemas Multiagentes com JADE.pdf

Preview:

Citation preview

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 zero sempre? É ai que entram os frameworks multiagentes

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

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

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

Utilitários de desenvolvimento

Remote Monitoring Agent

Dummy Agent

Sniffer Agent

Directory Facilitator GUI

Library

Agent Platfrom

Agent Agent

Management System

Directory Facilitator

Message Transport System

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

public class BookBuyerAgent extends Agent {

... }

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");

}

}

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

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

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()

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

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

Comportamentos do agente comprador e do agente vendedor...

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);

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

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

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

DFService.register()

Publica um serviço

DFAgentDescription e ServiceDescription

Descrevem o serviço

Exemplo...

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

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

Recommended