View
43
Download
0
Category
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
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
Recommended