Você está na página 1de 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 zero sempre?
ai que entram os frameworks multiagentes



O que o JADE?
Viso geral do JADE
Arquitetura e funcionalidades
Implementao agentes
Modelo de Agente do JADE
Criando comportamentos para os Agentes
Fazendo os Agentes se comunicarem
Servios de Pginas 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 programao
Permite a distribuio dos agentes
baseado nos modelos da FIPA
Runtime Evironment
Infra-estrutura para dar vida aos agentes
Library
Classes para auxiliar na implementao da
simulao
Graphical Tools
Permitem a administrao e o monitoramento da
simulao


Utilitrios 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 mtodo main()
que recebe o nome e o tipo dos agentes
como parmetro
Exemplo de parmetro
buyer1:BookBuyerAgent buyer2:BookBuyerAgent
Exemplo...
Tambm podemos passar parmetros para os
agentes quando queremos
Exemplo:
buyer1:BookBuyerAgent(The-lord-of-the-rings)
buyer2:BookBuyerAgent(Harry-Potter)
O mtodo getArguments() retorna um
Object[] com os parmetros dos agentes
Exemplo...
Comportamento dos agentes definido pela
classe abstrata Behaviour
Devemos herdar desta classe e adicionar
comportamentos aos agentes com o mtodo
addBehaviour()
Principais mtodos a serem implementados:
void action()
boolean done()
Setup()
O agente
foi
morto?
Pegue o prximo
comportamento
c.action()
Remova c do pool de
comportamentos
c.done()?
takeDown()
Sim
No
No
Sim
Sim
Behaviour
Genrico, temos de implementar os mtodos action() e
done()
OneShotBehaviour
done() sempre retorna true
CyclicBehaviour
done() sempre retorna false
WakerBehaviour
Executa o comportamento apenas uma vez aps um
determinado tempo
TickerBehaviour
Excuta o comportamento em tempos fixos de intervalo

Comportamentos do agente comprador e do
agente vendedor...
A comunicao feita de forma assncrona
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 its raining");

send(msg);
Mtodos Importantes
Agent.send()
Envia uma mensagem
Agent.receive()
Retira a primeira mensagem da lista de mensagens do
agente
Retorna null se no 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
responsvel por prover determinados
servios
Um agente chamado Directory Facilitator
guarda estes dados
Directory Facilitator
AgentA: ServiceX, ServiceY
AgentB: ServiceX, ServiceZ
AgentC: ServiceY
DFService.register()
Publica um servio
DFAgentDescription e ServiceDescription
Descrevem o servio
Exemplo...
DFService.search()
Realiza a busca por servios
Recebe o agente e o servio pelo qual ele busca
Importante:
O servio pode no estar presente no momento do
search!!!
Devemos usar uma forma de sincronizar a chamada ou
usar o mtodo 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 preo e no
fim vai comprar do agente que vender mais
barato
O site do JADE tem tudo que voc precisa
http://jade.tilab.com/
necessrio um cadastro para o download do
projeto
Tutorial para iniciantes (base para esta aula)
http://jade.tilab.com/doc/JADEProgramming-
Tutorial-for-beginners.pdf