desenvolvendo sistemas multiagentes com jade.pdf
TRANSCRIPT
![Page 1: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/1.jpg)
Allan Lima [email protected]
![Page 2: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/6.jpg)
Utilitários de desenvolvimento
Remote Monitoring Agent
Dummy Agent
Sniffer Agent
Directory Facilitator GUI
![Page 7: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/7.jpg)
Library
Agent Platfrom
Agent Agent
Management System
Directory Facilitator
Message Transport System
![Page 8: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/8.jpg)
Todos os agentes devem herdar da classe jade.core.Agent
public class BookBuyerAgent extends Agent {
... }
![Page 9: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/11.jpg)
• 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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/15.jpg)
Comportamentos do agente comprador e do agente vendedor...
![Page 16: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/18.jpg)
Trocando mensagens entre o agente comprador e o agente vendedor...
![Page 19: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/20.jpg)
DFService.register()
Publica um serviço
DFAgentDescription e ServiceDescription
Descrevem o serviço
Exemplo...
![Page 21: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/22.jpg)
![Page 23: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/23.jpg)
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
![Page 24: Desenvolvendo Sistemas Multiagentes com JADE.pdf](https://reader034.vdocuments.site/reader034/viewer/2022051401/55cf949e550346f57ba33c2c/html5/thumbnails/24.jpg)
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