A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvendo Sistemas Multiagentes com JADE

Apresentações semelhantes


Apresentação em tema: "Desenvolvendo Sistemas Multiagentes com JADE"— Transcrição da apresentação:

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)


Carregar ppt "Desenvolvendo Sistemas Multiagentes com JADE"

Apresentações semelhantes


Anúncios Google