Agentes de Software Introdução Projeto de Sistemas de Software.

79
Agentes de Software Introdução Projeto de Sistemas de Software

Transcript of Agentes de Software Introdução Projeto de Sistemas de Software.

Page 1: Agentes de Software Introdução Projeto de Sistemas de Software.

Agentes de Software

Introdução

Projeto de Sistemas de Software

Page 2: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Engenharia de Software deSistemas Multiagentes

Introdução

Page 13: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

14 © LES/PUC-Rio

ES de Sistemas Multiagentes:Motivação

• Sistemas Complexos

Page 15: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

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.

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.

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.

Exemplos

Page 23: Agentes de Software Introdução Projeto de Sistemas de Software.

23 © LES/PUC-Rio

TAC (Trading Agent Competition) Classic

Page 24: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

28 © LES/PUC-Rio

Exemplo 2: Agenda Virtual

Page 29: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

33 © LES/PUC-Rio

Exemplo de Código

Page 34: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

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.

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.

40 © LES/PUC-Rio

Contêineres e Plataformas

Page 41: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

45 © LES/PUC-Rio

O Ciclo de Vida de um Agente

Page 46: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

50 © LES/PUC-Rio

Um Exemplo

Page 51: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

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.

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.

57 © LES/PUC-Rio

A Execução de um Agente

Page 58: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

59 © LES/PUC-Rio

A Hierarquia de Comportamentos

Page 60: Agentes de Software Introdução Projeto de Sistemas de Software.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

FIM

Perguntas?