Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouCamila Rodriguez Alterado mais de 10 anos atrás
1
Desenvolvendo Sistemas Multiagentes com JADE
Allan Lima Desenvolvendo Sistemas Multiagentes com JADE
2
SMA e o JADE 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
3
Roteiro O que é o JADE? Visão geral do JADE Implementação agentes
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
4
O que o JADE? JADE Criado pela Teltecom Italia
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
5
Visão Geral do JADE Runtime Evironment Library Graphical Tools
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
6
Visão Geral do JADE Utilitários de desenvolvimento
Remote Monitoring Agent Dummy Agent Sniffer Agent Directory Facilitator GUI
7
Agent Management System Directory Facilitator Message Transport System
Visão Geral do JADE Library Agent Platfrom Agent Agent Management System Directory Facilitator Message Transport System
8
Criando Agentes Todos os agentes devem herdar da classe jade.core.Agent public class BookBuyerAgent extends Agent { ... }
9
Criando Agentes 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"); O método setup() é chamando quando o agente é inserido no JADE O método takeDown() é chamando quando o agente é removido do JADE O método AID() retorna o identificador único do agente no formato:
10
Rodando Agentes no JADE
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...
11
Passando Parâmetros para os Agentes
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...
12
Comportamentos 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() O método action() é chamado de acordo com o tipo do comportamento O métido done() serve para verificar se o comportamento foi finalizado e deve ser removido da lista de comportamentos do agente
13
Ciclo de Vida de um Agente
Sim takeDown() O agente foi morto? Não Pegue o próximo comportamento Setup() c.action() Um agente é considerado morto quando o método doDelete() é chamado c.done()? Não Sim Sim Remova c do pool de comportamentos
14
Tipos de Comportamento
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
15
Exemplos Comportamentos do agente comprador e do agente vendedor...
16
Comunicação 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);
17
Comunicação Métodos Importantes Agent.send() Agent.receive()
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
18
Exemplos Trocando mensagens entre o agente comprador e o agente vendedor...
19
Serviço de Páginas Amarelas
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
20
Publicando Serviços DFService.register()
Publica um serviço DFAgentDescription e ServiceDescription Descrevem o serviço Exemplo...
21
Procurando por Serviços
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...
22
Dúvidas, críticas, sugestões?
23
Para brincar um pouco 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
24
Para saber mais... O site do JADE tem tudo que você precisa
É necessário um cadastro para o download do projeto Tutorial para iniciantes (base para esta aula)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.