1 / 24

Desenvolvendo Sistemas Multiagentes com JADE

Allan Lima adsl@cin.ufpe.br. Desenvolvendo Sistemas Multiagentes com JADE. 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. Roteiro.

george
Download Presentation

Desenvolvendo Sistemas Multiagentes com JADE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Allan Lima adsl@cin.ufpe.br 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 frameworksmultiagentes

  3. Roteiro • 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

  4. O que o JADE? • JADE • Java Agent DEvelopment framework • CriadopelaTeltecom 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 • RuntimeEvironment • 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

  6. Visão Geral do JADE • Utilitários de desenvolvimento • RemoteMonitoringAgent • DummyAgent • SnifferAgent • DirectoryFacilitator GUI

  7. Visão Geral do JADE • Library AgentPlatfrom Agent Agent Management System DirectoryFacilitator MessageTransportSystem

  8. Criando Agentes • Todos os agentes devem herdar da classe jade.core.Agent publicclassBookBuyerAgentextendsAgent { ... }

  9. Criando Agentes • setup() e takeDown() e getAID() publicclassBookBuyerAgentextendsAgent { protectedvoidsetup() { System.out.println(getAID().getName() + " is ready"); } protectedvoidtakeDown() { System.out.println(getAID().getName() + " deleted"); } }

  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 osparâ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: • voidaction() • booleandone()

  13. Ciclo de Vida de um Agente takeDown() Sim O agente foi morto? Não Pegue o próximo comportamento Setup() c.action() 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 ACLMessagemsg = newACLMessage(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() • 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 DirectoryFacilitator guarda estes dados DirectoryFacilitator 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 • 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

More Related