Allan Lima
[email protected]

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

GraphicalTools
 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
Message Transport System
Directory
Facilitator

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()
Sim
Setup()
O agente
foi
morto?
Não
takeDown()
Pegue o próximo
comportamento
c.action()
Não
c.done()?
Sim
Sim
Remova c do pool de
comportamentos

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

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/JADEProgramming-
Tutorial-for-beginners.pdf
Download

Desenvolvendo Sistemas Multiagentes com JADE