agentes de software introdução projeto de sistemas de software

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

Upload: internet

Post on 16-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

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?