agentes de software introdução projeto de sistemas de software
TRANSCRIPT
![Page 1: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/1.jpg)
Agentes de Software
Introdução
Projeto de Sistemas de Software
![Page 2: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/2.jpg)
2 © LES/PUC-Rio
Agenda
• Introdução
• O que são Agentes?
• Agente versus Objeto
• Sistemas Multiagentes
• Exemplos de Aplicações
• ES de Sistemas Multiagentes
• Plataforma Jade
![Page 3: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/3.jpg)
3 © LES/PUC-Rio
O que são Agentes?
• Agente de software é uma entidade que está situada em um ambiente e capaz de ação autônoma neste ambiente para atingir seus objetivos projetados.
Wooldridge & Jennings
• A entidade Agente é qualquer coisa que possa perceber o ambiente e agir sobre o mesmo.
Russell & Norvig
![Page 4: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/4.jpg)
4 © LES/PUC-Rio
O que são Agentes?
• Autonomia
– Operam sem intervenção humana ou de outros agentes
– Tem algum tipo de controle sobre suas ações e seu estado interno
![Page 5: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/5.jpg)
5 © LES/PUC-Rio
O que são Agentes?
• Agentes e o Ambiente
Agente Am
biente
Sensores
Efetuadores
Processamentoautônomo
![Page 6: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/6.jpg)
6 © LES/PUC-Rio
Características de Agentes ES
• Básicas
– Autonomia
• Capacidade de agir sem intervenção externa
– Reatividade
• Capacidade de perceber o ambiente e responder às mudanças que ocorrem nele
– Pró-atividade
• Atuam não somente em resposta ao ambiente – são orientados a objetivos
– Interatividade
• Se comunicam com outros agentes e com o ambiente
– Adaptação
• São capazes de modificar, em algum grau, o seu comportamento devido à mudanças do ambiente e de outros agentes
![Page 7: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/7.jpg)
7 © LES/PUC-Rio
Características de Agentes ES
• Adicionais
– Aprendizado
• São capazes de modificar o seu comportamento baseados em sua experiência (não é necessariamente relacionado às mudanças no ambiente)
– Racionalidade
• São capazes de selecionar suas ações baseados em seus objetivos
– Mobilidade
• São capazes de se mover de um ambiente para outro
![Page 8: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/8.jpg)
8 © LES/PUC-Rio
Agente vs. Objeto
• Similaridade
– Entidades computacionais
– Encapsulam estado
– Realizam ações
– Se comunicam via troca de mensagens
![Page 9: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/9.jpg)
9 © LES/PUC-Rio
Agente vs. Objeto
• Diferenças
– Autonomia
• Objetos são passivos
– Objetos são obedientes
• Agentes: Go and No
– Objetos não encapsulam ativação de comportamento
– Um objeto provê mínimo suporte para estruturas coletivas (ex. hierarquia e relacionamentos)
• Enquanto agentes dão suporte para estruturas coletivas: organizações
![Page 10: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/10.jpg)
10 © LES/PUC-Rio
Sistemas Multi-Agentes
• Um agente, em geral, não é encontrado completamente sozinho em uma aplicação, mas formando conjunto com outros agentes.
“Sistema Multi-Agente (MAS)”
![Page 11: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/11.jpg)
11 © LES/PUC-Rio
O que são Sistemas Multiagentes?
• No ponto de vista de IA
– Um sistema multiagentes é uma sociedade de agentes (agentes IA) individuais, que interagem por meio de troca de conhecimento e de negociação para alcançar um objetivo local ou global
• No ponto de vista de ES
– Um sistema multiagentes é um sistema de software composto por diversos locos de controle (agentes de software) encapsulados e independentes, que interagem no contexto específico de uma aplicação
![Page 12: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/12.jpg)
Engenharia de Software deSistemas Multiagentes
Introdução
![Page 13: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/13.jpg)
13 © LES/PUC-Rio
Evoluções na Engenharia de Software
• A ES é uma disciplina que se preocupa com todos os aspectos do desenvolvimento de software
• Engenharia de Software OO
– Linguagens Orientadas a Objetos.
– Novos métodos para design de sistemas.
• Software está cada vez mais complexo: os sistemas de software deverão estar
– Em todo o lugar
– Sempre conectados (disponíveis)
– Sempre ativos para executar requisições de usuários
![Page 14: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/14.jpg)
14 © LES/PUC-Rio
ES de Sistemas Multiagentes:Motivação
• Sistemas Complexos
![Page 15: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/15.jpg)
15 © LES/PUC-Rio
Tendências
• Sistemas distribuídos
• Sistemas extensíveis
• Crescimento da Internet
• Utilização de ontologias – Web Semântica
• Sistemas abertos
![Page 16: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/16.jpg)
16 © LES/PUC-Rio
Benefícios da abstração de Agentes
• Entidade Pró-Ativa
• Fraco acoplamento
– Comunicação através de mensagens
• Flexibilidade de customização
– individual de agentes
– protocolos de comunicação
– algoritmos de aprendizado
![Page 17: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/17.jpg)
17 © LES/PUC-Rio
O paradigma de SMAs
• Oferece:
– Um modelo de decomposição
– Uma abstração para o desenvolvimento de software baseado no domínio do problema
– Um modelo para desenvolvimento de sistemas como uma composição de unidades organizacionais
– Um modelo de descentralização para reduzir o acoplamento
![Page 18: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/18.jpg)
18 © LES/PUC-Rio
Uma pergunta…
• Será que o paradigma e técnicas atuais de ES serão suficientes para atacar o problema da produção eficiente da próxima geração de sistemas de software?
![Page 19: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/19.jpg)
19 © LES/PUC-Rio
Evolução dos Paradigmas de ES
Tempo
Abstrações determinadas pela arquitetura da máquina
Abstrações determinadas pelo domínio do problema
• Linguagens Assembler
• Abstração Funcional
• Programação Estruturada
• Orientação a Objetos
• Componentes
• ...
• Agentes de Software
![Page 20: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/20.jpg)
20 © LES/PUC-Rio
O Estado da Arte
• Engenharia de software para sistemas multiagentes está em estado inicial
– Muitas propostas e pouco consenso
• Desenvolvimento ad-hoc ou desenvolvimento proprietário
• Falta de avaliação do impacto do uso do paradigma multiagente
• Experimentação – Estudos de Caso
• Necessidade de um desenvolvimento de uma ES para o paradigma
![Page 21: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/21.jpg)
21 © LES/PUC-Rio
Pesquisa até então...
• Desenvolvimento de ES para sistemas multiagentes
– Linguagens de modelagem
– Metodologias de desenvolvimento
– Arquiteturas de desenvolvimento
– Padrões de projeto
– Plataformas e Frameworks
– Métodos formais
– Melhores práticas
– Processos de desenvolvimento
• Necessário amadurecimento...
![Page 22: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/22.jpg)
Exemplos
![Page 23: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/23.jpg)
23 © LES/PUC-Rio
TAC (Trading Agent Competition) Classic
![Page 24: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/24.jpg)
24 © LES/PUC-Rio
Exemplo - Sistema de compra de produtos
• Cenário 1: Cliente compra um produto
– Cliente escolhe um produto e avisa ao vendedor que quer comprá-lo.
– O vendedor pega o produto e efetua a venda.
Agente Usu io疵 Agente Vendedor Agente Fonte de Dados
3: Envia confirma o鈬
4: Confirma a venda
2: Informa a venda
1: Confirma compra DVD LG
![Page 25: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/25.jpg)
25 © LES/PUC-Rio
Exemplo - Sistema de compra de produtos
• Cenário 2:
– O funcionário responsável pelo histórico de vendas da loja, faz uma classificação dos clientes em três categorias: Ouro, prata e bronze.
– O vendedor recebe esta classificação e envia ofertas para os clientes, baseado em alguma estratégia de venda.
Usu io疵 Agente Usu io疵 Agente Vendedor Agente Fonte de Dados
1: Informa a categoria dos clientes
3: Avisa o usu io疵
2: Envia oferta baseado na estrat ia馮
![Page 26: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/26.jpg)
26 © LES/PUC-Rio
Diagrama de Classes
0..*
1
1
Agente
+receberMensagem(msg:Mensagem):void+enviarMenssagem(msg:Mensagem):void
AgenteUsuario AgenteVendedorAgenteFonteDeDados
interfaceCommunicacao
Email Celular
EstrategiaVenda
Gulosa Cativante Ponderada
<<Fa de>>軋BancoDeDados
Mensagem
conteudo:String destino:String tipo:String
MeioDeComunicacao
+adicionarMensagem(Mensagem:msg):void
S�quer lucrar Faz de tudo paraganhar o cliente
Cede se forum bom cliente
![Page 27: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/27.jpg)
27 © LES/PUC-Rio
Exemplo: Sequência implementaçãoCenário 1
mensagemDeCompraMensagem
Usuario
agenteUsuarioAgenteUsuario
meioDeComunicacaoMeioDeComunicacao
agenteVendedorAgenteVendedor
1.5: enviarMenssagem(mensagemDeCompra):void
1.4: setDestino("AgenteVendedor"):void
1.2: setTipo("comprar"):void
1.3: setConteudo("produto=DVD"):void
1.1: cria1: Comprar DVD
1.5.1: adicionarMensagem(mensagemDeCompra):void1.5.1.1: receberMensagem(mensagemDeCompra):void
![Page 28: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/28.jpg)
28 © LES/PUC-Rio
Exemplo 2: Agenda Virtual
![Page 29: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/29.jpg)
29 © LES/PUC-Rio
Agendamento de Compromissos 1/3
: Usuário : homeUsuario.jsp
H S
: Servlet :
cmdFormAgendamento :
UsuarioFachada : Contato
: formAgendamento.jsp : Usuario
exibirFormAgendamento( )doGet( )
execute( )listarContatos( )
listarContatos( )
exibirForm( )
exibirContato( )
[*para cada contato]
![Page 30: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/30.jpg)
30 © LES/PUC-Rio
Agendamento de Compromissos 2/3
: Usuário : formAgendamento.jsp
H S
: Servlet :
cmdAgendar : AgenteUsuario :
AgenteSecretaria : feedbackAgendamento.jsp :
UsuarioFachada
solicitarAgendamento( )doPost( )
execute( ) [Env ia mensagem do tipo S_EVENTO para AgenteSecretaria]
exibirFeedBack( )
[executar diagrama (2.1/3)]
agendar( )enviarMsg( )
receberMsg( )
![Page 31: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/31.jpg)
31 © LES/PUC-Rio
Agendamento de Compromissos 2.1/3
: AgenteSecretaria
: AgenteUsuario : Evento : Usuario
[Se f or um grupo de contato, v erif icar para cada integrante do grupo]
[Se não houv e conf lito]
[Env ia mensagem do tipo S_CONFIRMADA para AgenteUsuario]
[Se chegou mensagem nov a]
[Se mensagem do tipo S_CONFIRMADA]
[Se houv e conf lito, executar 3/3]
[*para cada evento]
enviarMsg( )
enviarAlerta( )
receberMsg( )
lerInbox( )
enviarAlerta( )
adicionarEvento( )adicionarEvento( )
lerInbox( )
verificarConflitos( ) verificarEventos( )
getData( )
tratarMsg( )
tratarMsg( )
![Page 32: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/32.jpg)
32 © LES/PUC-Rio
Agendamento de Compromissos 3/3
: AgenteUsuario : AgenteSecretaria
[Envia mensagem do tipo S_NEGADA para AgenteUsuario]
[Se chegou mensagem nova]
[Se mensagem do tipo S_NEGADA]
lerInbox( )
enviarMsg( )receberMsg( )
tratarMsg( )
enviarAlerta( )
![Page 33: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/33.jpg)
33 © LES/PUC-Rio
Exemplo de Código
![Page 34: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/34.jpg)
34 © LES/PUC-Rio
Exemplo 3: Agente reativos – Inteligência social emergente
• Colônia de formigas procurando por comida
• Cada formiga é um agente
• Se comunicam através do ambiente
• Toda vez que elas acham comida liberam um hormônio chamado feromônio no ambiente
• As outras seguem o feromônio
• E a sociedade converge para o local da comida
• URL: http://website.lineone.net/~john.montgomery/demos/ants.html
![Page 35: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/35.jpg)
35 © LES/PUC-Rio
Outros Exemplos
• Agentes para sistemas de métricas
– Coleta, Avaliação, Apresentação para o Usuário
• Agentes para gerência de ordens de serviço
– Organização, Escalonamento e Negociação de ordens de serviço
• Agentes para gerência de compromissos
– Agendamento, Estratégia de Negociação, Lembretes
• Agentes para gerenciamento de tráfego
– Informação de melhores caminhos
![Page 36: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/36.jpg)
36 © LES/PUC-Rio
Pesquisa em andamento no LES
• Arquiteturas, frameworks e ferramentas para regular SMA
• Governança, normas e reputação
• Diagnóstico e Recomendação de execuções
• Dependability em Sistemas Multiagentes Abertos
• Agentes inteligentes, ontologias, simulação e ambientes para SMA regulados por normas
• Ubiqüidade e Context-aware
• Sistemas Multiagentes para Medicina– Útero virtual
– Células-tronco
• Leski
http://wiki.les.inf.puc-rio.br/index.php/Sistemas_Multiagentes
![Page 37: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/37.jpg)
JadeJava Agent Development Framework
http://jade.tilab.com/
Versão atual: 3.5
![Page 38: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/38.jpg)
38 © LES/PUC-Rio
O que é Jade?
• Jade é um middleware para o desenvolvimento de sistemas multi-agentes
• Inclui
– Um ambiente de execução onde os agentes JADE "vivem" e que deve estar ativo em um host antes que um agente possa ser executado
– Uma biblioteca de classes que programadores podem usar para desenvolver agentes
– Um conjunto de ferramentas gráficas que permite a administração e o monitoramento das atividades dos agentes em execução
![Page 39: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/39.jpg)
39 © LES/PUC-Rio
Contêiner e Plataforma
• Contêiner
– Instância de um ambiente Jade
– É onde os agentes executam
– Ao iniciar o Jade, um MainContainer é criado
• Plataforma
– Conjunto de contêineres ativos
![Page 40: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/40.jpg)
40 © LES/PUC-Rio
Contêineres e Plataformas
![Page 41: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/41.jpg)
41 © LES/PUC-Rio
A Plataforma
• O Jade segue o modelo da FIPA (Foundation for Intelligent Physical Agents)
![Page 42: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/42.jpg)
42 © LES/PUC-Rio
AMS e DF
• Agent Management System (AMS)
– Agente que exerce o controle sobre o acesso e o uso da plataforma
– Existe um único AMS por plataforma
– Mantém a lista de identificadores dos agentes (AID) que estão na plataforma
– Todo agente deve se registrar no AMS
• Directory Facilitator (DF)
– Oferecer o serviço de páginas amarelas na plataforma
![Page 43: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/43.jpg)
43 © LES/PUC-Rio
A Classe Agent
• Representa a classe base para a definição de agentes
• Para o desenvolvedor, um agente Jade é uma instância de uma classe Java que estende a classe Agent
• Já oferece todas as interações básicas da plataforma (registro, configuração, etc...)
• Oferece um conjunto de métodos para a implementação do comportamento do agente
![Page 44: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/44.jpg)
44 © LES/PUC-Rio
Modelo Computacional do Agente
• Um agente é multi-tarefa, onde os serviços são executados concorrentemente
• Cada serviço de um agente deve ser implementado como um ou mais comportamtentos
• A classe Agent oferece um scheduler (não acessível ao programador) que gerencia automaticamente o agendamento dos comportamentos
![Page 45: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/45.jpg)
45 © LES/PUC-Rio
O Ciclo de Vida de um Agente
![Page 46: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/46.jpg)
46 © LES/PUC-Rio
Ciclo de Vida de um Agente
• Iniciado
– O objeto agente é criado, mas ainda não se registrou no AMS, i.e. não possui um identificador e não pode se comunicar com outros agentes
• Ativo
– O objeto agente está registrado no AMS, possui um identificador e pode executar seus serviços
• Suspenso
– O objeto agente está parado, i.e. sua thread interna está suspensa e o agente não está executando serviço algum
![Page 47: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/47.jpg)
47 © LES/PUC-Rio
Ciclo de Vida de um Agente
• Esperando
– O objeto agente está bloqueado, esperando por algum evento, i.e. sua thread interna está dormindo e será acordada quando uma condição se tornar verdadeira
• Removido
– O objeto agente está terminado, i.e. sua thread interna acabou sua execução e o agente não está mais registrado no AMS
• Em Trânsito
– Um agente móvel entra neste estado quando está migrando para um novo local (contêiner). O sistema continua a armazenar as mensagens enviadas a este agente, que lhe serão passadas quando ele estiver no novo local
![Page 48: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/48.jpg)
48 © LES/PUC-Rio
Criando um Agente Jade
• Jade gerencia a criação de um novo agente com os seguintes passos
• O construtor do agente é executado
– O agente recebe um identificador do AMS
– Ex: agente@localhost:1099/JADE
– Entra no estado Ativo
• É executado o método setup()
– Método responsável por inicializar os comportamentos do agente
![Page 49: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/49.jpg)
49 © LES/PUC-Rio
Um Exemplo
package examples.hello;import jade.core.Agent;
public class HelloWorldAgent extends Agent { protected void setup() { // Mostra uma mensagem de Hello System.out.println("Hello World! Meu nome eh " + getAID().getName()); }}
prompt> set CLASSPATH=%CLASSPATH%;.;[CLASSPATH JADE JARS]prompt> java jade.Boot -gui Agente1:examples.hello.HelloWorldAgent
![Page 50: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/50.jpg)
50 © LES/PUC-Rio
Um Exemplo
![Page 51: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/51.jpg)
51 © LES/PUC-Rio
Destruindo um Agente Jade
• Mesmo que não esteja fazendo coisa alguma, o agente continua executando
• Para terminar um agente, deve-se executar o método doDelete() que chama o método takeDown()
• Serve para remover todas as referências ao agente da plataforma
![Page 52: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/52.jpg)
52 © LES/PUC-Rio
Um Exemplo
package examples.hello;import jade.core.Agent;
public class HelloWorldAgent extends Agent { protected void setup() { // Mostra uma mensagem de Hello System.out.println("Hello World! Meu nome eh " + getAID().getName()); doDelete(); }
protected void takeDown() { // Imprimindo uma mensagem de saida System.out.println("Agente " + getAID().getName() + " terminando."); }}
![Page 53: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/53.jpg)
53 © LES/PUC-Rio
As Tarefas do Agente – Classe Behaviour
• Todas as tarefas dos agentes são executadas por meio de "comportamentos"
• Um comportamento é um objeto da classe Behaviour
• O agente adiciona um comportamento com o método addBehaviour()
• Comportamentos podem ser adicionados a qualquer momento
– No método setup()
– Dentro de outros comportamentos
![Page 54: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/54.jpg)
54 © LES/PUC-Rio
As Tarefas do Agente – Classe Behaviour
• Método action()
– Método que define as operações que são executadas quando o comportamento está em execução
• Método done()
– Método que especifica se um comportamento foi completado e deve ser removido do pool de comportamentos que um agente está executando
![Page 55: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/55.jpg)
55 © LES/PUC-Rio
O Esquema de um Comportamento
public class UmComportamento extends Behaviour { public void action() { while (true) { // Código do Comportamento } }
public boolean done() { return true; }}
![Page 56: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/56.jpg)
56 © LES/PUC-Rio
Detalhes sobre a Execução de Comportamentos
• Um agente pode executar diversos comportamentos concorrentemente
• O scheduling de comportamentos não é preemptivo
– Quando um comportamento está agendado para execução, o método action é chamado e executa até retornar
– Quem deve definir quando um agente deve passar da execução de um comportamento para outro é o desenvolvedor
![Page 57: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/57.jpg)
57 © LES/PUC-Rio
A Execução de um Agente
![Page 58: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/58.jpg)
58 © LES/PUC-Rio
A Hierarquia de Comportamentos
• Comportamentos Simples
– Modelam os comportamentos atômicos
– OneShotBehaviour e CyclicBehaviour
• Comportamentos Compostos
– Modelam comportamentos que são compostos de outros comportamentos. Assim, as operações que devem ser executadas não estão definidas neste comportamento em si, mas nos comportamentos filhos que o compõem
– SequentialBehaviour, ParallelBehaviour e FSMBehaviour
![Page 59: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/59.jpg)
59 © LES/PUC-Rio
A Hierarquia de Comportamentos
![Page 60: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/60.jpg)
62 © LES/PUC-Rio
Esquemas de Comportamentos Simples
// OneShotBehaviourpublic class MyOneShotBehaviour extends OneShotBehaviour { public void action() { // Executar a operação X }}
// CyclicBehaviourpublic class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // Executar a operação Y }}
![Page 61: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/61.jpg)
63 © LES/PUC-Rio
Esquema Genérico de Comportamento
public class MyTwoStepBehaviour extends Behaviour { private int step = 0;
public void action() { switch (step) { case 0: // Executar a operação X step++; break; case 1: // Executar a operação Y step++; break; } }
public boolean done() { return step == 2; }}
![Page 62: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/62.jpg)
64 © LES/PUC-Rio
Comportamentos Especiais
• WakerBehaviour
– Comportamento que espera um determinado período de tempo (em ms) para efetivamente executar a tarefa
• TickerBehaviour
– Comportamento que executa uma tarefa periodicamente em intervalos de tempo constantes (em ms). Este comportamento nunca acaba
![Page 63: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/63.jpg)
65 © LES/PUC-Rio
WakerBehaviour
public class MyAgent extends Agent { protected void setup() { System.out.println("Adicionando waker behaviour"); addBehaviour(new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { // Executa a operação X } } ); }}
A operação X é executada 10 segundo depois de imprimir "Adicionando waker behaviour"
![Page 64: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/64.jpg)
66 © LES/PUC-Rio
TickerBehaviour
public class MyAgent extends Agent { protected void setup() { addBehaviour(new TickerBehaviour(this, 10000) { protected void onTick() { // Executar a operação Y } } ); }}
A operação Y é executada periodicamente a cada 10 segundos
![Page 65: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/65.jpg)
67 © LES/PUC-Rio
A Comunicação entre Agentes
• A troca de mensagens é assíncrona e usa a FIPA ACL (Agent Communication Language)
![Page 66: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/66.jpg)
68 © LES/PUC-Rio
A Linguagem ACL
• Campos principais
– Sender: o agente que envia a mensagem
– Receivers: lista de agentes destino da mensagem
– Performative: ato de fala que indica o que o agente que envia a mensagem espera com ela
– Content: o real conteúdo da mensagem
– Language: sintaxe usada para expressar o conteúdo
– Ontology: denota a semântica dos itens do conteúdo
– Outros campos de controle de convesação como: conversation-id, reply-with, in-reply-to, reply-by
![Page 67: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/67.jpg)
69 © LES/PUC-Rio
A Linguagem ACL - Exemplo
Início da mensagem
Tipo de ato de comunicação(Performativa)
Controle de conversação
(inform :sender agent1 :receiver hpl-auction-server :content (price (bid good02) 150) :in-reply-to round-4 :reply-with bid04 :language FIPA SL :ontology hpl-auction)
Mensagem ACL
Conteúdo da mensagem
![Page 68: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/68.jpg)
70 © LES/PUC-Rio
A Linguagem ACL – Performativas
• INFORM “A porta está aberta”
• QUERY “A porta está aberta?”
• CFP “Alguém quer abrir a porta?”
• REQUEST “Abra a porta para mim”
• AGREE “OK, vou abrir a porta para você”
• REFUSE “Eu não vou abrir a porta”
• FAILURE “Eu não consigo abrir a porta”
![Page 69: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/69.jpg)
71 © LES/PUC-Rio
A Linguagem ACL – Performativas
• PROPOSE “Eu posso abrir a porta para você, pelo seguinte preço”
• SUBSCRIBE “Quero ser avisado quando a porta for aberta”
• NOT-UNDERSTOOD “Porta? Que porta?”
![Page 70: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/70.jpg)
72 © LES/PUC-Rio
Enviando Mensagens
• Deve-se criar e montar um objeto ACLMessage e chamar o método send() do agente
ACLMessage msg = new ACLMessage( ACLMessage.INFORM );msg.addReceiver( new AID( "Agente2", AID.ISLOCALNAME ) );msg.setLanguage( "English" );msg.setOntology( "Weather-forecast-ontology" );msg.setContent( "Today it’s raining" );send(msg);
![Page 71: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/71.jpg)
73 © LES/PUC-Rio
Recebendo Mensagens
• Para se receber uma mensagem usa-se o método receive(), que recupera a primeira mensagem da fila de mensagens do agente
• Este método remove a mensagem da pilha, ou retorna null caso esteja vazia
ACLMessage msg = receive();if (msg != null) { // Processar a mensagem}
![Page 72: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/72.jpg)
74 © LES/PUC-Rio
Bloqueando um Agente à espera de uma Mensagem
• O scheduler de ações do Jade não pára a execução de uma ação caso não haja mensagens para um agente
• Para parar a execução de uma ação à espera de uma mensagem, deve-se usar o método block()
public void action() { ACLMessage msg = myAgent.receive(); if (msg != null) { // Mensagem recebida - processá-la ... } else block();}
![Page 73: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/73.jpg)
75 © LES/PUC-Rio
Selecionando um Tipo de Mensagem da Fila
• Pode-se selecionar um tipo de mensagem da fila usando um MessageTemplate
public void action() { MessageTemplate mt; mt = MessageTemplate.MatchPerformative(ACLMessage.CFP); ACLMessage msg = myAgent.receive(mt); if (msg != null) { // Mensagem do tipo CFP recebida - processá-la ... } else block();}
![Page 74: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/74.jpg)
76 © LES/PUC-Rio
O Serviço de Páginas Amarelas – Agente DF
• Todo agente deve registrar seu serviço no DF (Directory Facilitator)
• Só existe um DF em cada plataforma Jade
![Page 75: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/75.jpg)
77 © LES/PUC-Rio
Registrando um Serviço no DF
• Deve-se criar um objeto ServiceDescription e chamar o método register() de um DF (usualmente no método setup() do agente)
protected void setup() { ... // Registrar um agente vendedor de livros no DF DFAgentDescription dfd = new DFAgentDescription(); dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); sd.setName("JADE-book-trading"); dfd.addServices(sd);
try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } ...}
![Page 76: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/76.jpg)
78 © LES/PUC-Rio
Removendo um Serviço do DF
• Chamar o método deregister() do DF (usualmente no método takeDown() do agente)
protected void takeDown() { // Saindo do DF try { DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); }
// Mostrando uma mensagem de saída System.out.println("Agente vendedor " + getAID().getName() + " terminando");}
![Page 77: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/77.jpg)
79 © LES/PUC-Rio
Procurando por Serviços no DF
• Criar um objeto DFAgentDescription e chamar o método search() do DF
protected void setup() { ... // Criando um TickerBehaviour para procurar agentes vendedores a cada minuto addBehaviour(new TickerBehaviour(this, 60000) { protected void onTick() { // Atualizando a lista de agentes vendedores DFAgentDescription template = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("book-selling"); template.addServices(sd);
try { DFAgentDescription[] result = DFService.search(myAgent, template); sellerAgents = new AID[result.length]; for (int i = 0; i < result.length; ++i) sellerAgents[i] = result.getName(); } catch (FIPAException fe) { fe.printStackTrace(); } ... } ); ...}
![Page 78: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/78.jpg)
80 © LES/PUC-Rio
Concluindo...
• Jade é um framework de desenvolvimento de sistemas multi-agentes
– Implementa o modelo de infraestrutura FIPA com registro, páginas amarelas e mecanismo de envio de mensagens
• Uso de AMS (Agent Management System), DF e de FIPA ACL
– Ciclo de vida de um agente
• setup(), addBehaviour(), takeDown()
– Abordagem orientada a tarefas: o comportamento dos agentes é decomposto em pedaços menores (Behaviour) que são adicionados ao agente quando necessário
• http://www.inf.puc-rio.br/~ioliveira/temp/pss/jade/
![Page 79: Agentes de Software Introdução Projeto de Sistemas de Software](https://reader035.vdocuments.pub/reader035/viewer/2022081516/552fc0f9497959413d8b6cc8/html5/thumbnails/79.jpg)
FIM
Perguntas?