retsina plataforma de agentes ccm mas framework equipe do curso de es para sma {lucena, furtado,...

76
RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Upload: internet

Post on 17-Apr-2015

102 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

RETSINAPlataforma de Agentes CCM

MAS Framework

Equipe do Curso de ES para SMA

{lucena, furtado, choren, viviane}@inf.puc-rio.br

Page 2: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

RETSINA(Reusable Environment for Task Structured Intelligent Network

Agents)

Katia Sycara et al.

Carnegie Mellon University - EUA

Page 3: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 3

O que é RETSINA?

• Uma infra-estrutura que oferece um conjunto de tipos de agentes que podem ser adaptados para implementar soluções para domínios específicos

• Propósitos– Oferecer módulos re-utilizáveis: comunicação,

planejamento, agendamento e monitoramento

– Implementar sistemas como sociedades de entidades que respondem a pedidos de execução de tarefas

Page 4: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 4

Requisitos

• Ambientes abertos e dinâmicos– Agentes / serviços nem sempre existirão

– Localização dos agentes mudam• Mobilidade

• Balanceamento de carga

– Identidade dos agentes pode mudar• Não se pode antever seu nome

– Não se pode antever o vocabulário usado para descrevê-lo

Page 5: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 5

Outros Requisitos

• Deve-se assumir que existe redundância de serviços

• Fornecedores múltiplos / competidores– Diferenças nos parâmetros do serviço

– Velocidade

– Preço

– Segurança

– Reputação

Page 6: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 6

A Arquitetura dos Agentes RETSINA

Page 7: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 7

A Arquitetura dos Agentes RETSINA

• 4 threads paralelas

• Communicator– Para comunicação com outros agentes

• Planner– Relaciona entradas "sensoriais" e "crenças" a possíveis planos

de ação

• Scheduler– Agenda planos "habilitados" para execução

• Executor Monitor– Executa um plano agendado

– Gerencia a execução dos planos (p. ex. troca por plano com maior prioridade)

Page 8: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 8

A Infra-estrutura RETSINA

Page 9: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 9

A Infra-estrutura RETSINA

• Ambiente de operação– Representam os computadores, sistema

operacional, infra-estrutura de rede, etc– Devem ser totalmente transparentes para os

agentes– RETSINA exite em Java, C++ / para Windows, Linux

e SunOS

• Infraestrutura de comunicação– Representam os canais de comunicação entre

agentes (camada de transporte)– Prevê o uso de canais síncronos e assíncronos– RETSINA usa os agentes Communicator

Page 10: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 10

A Infra-estrutura RETSINA

• Infra-estrutura de linguagem– Representam a linguagem usada nas mensagens

trocadas pelos agentes (FIPA ACL, KQML, etc)– Deve ser modular e alterável– RETSINA oferece KQML

• Serviços de gerenciamento– Representam serviços de instalação de agentes,

monitoramento de balanceamento de carga, log, etc

– Auxiliam o processo de inicialização dos agentes– RETSINA oferece os serviços Logger, Activity

Visualizer e Launcher

Page 11: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 11

A Infra-estrutura RETSINA

• Medidas de performance– Servem para otimizar a distribuição de tarefas

entre os agentes

– Muito baseado em algoritmos de tempo de resposta

– RETSINA não oferece suporte a performance

• Segurança– Lida com os problemas de segurança do sistema

– Oferece uma interface para comunicação com Autoridades de Certificação (?)

– RETSINA sabe falar SSL

Page 12: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 12

A Infra-estrutura RETSINA

• Mapeamento de nomes a locais de agentes– Serve para permitir a busca de um agente pelo seu

nome

– RETSINA oferece o ANS (Agent Naming Service) que permite a atualização dinâmica da localização dos agentes

• Mapeamento das funcionalidades dos agentes– Serve para permitir a busca de um agente por sua

funcionalidade

– RETSINA oferece o A-Match

Page 13: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 13

A Infra-estrutura RETSINA

• Interoperação– Serve para fazer a ligação entre um agente e a

infra-estrutura RETSINA

– Funciona como um broker entre o agente qualquer e o modelo da arquitetura

– Deve ser desenvolvida pelo programador do agente

– RETSINA oferece os Agentes "Middle"

Page 14: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 14

A Arquitetura Funcional do RETSINA

Page 15: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 15

Agentes de Interface

• Requisitam entrada do usuário do sistema multi-agentes

• Apresentam resultados aos usuários

• Freqüentemente são implementados como uma parte do agente de tarefa

• Podem representar um device

Page 16: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 16

Agentes de Tarefa

• Sabem o que fazer e como fazê-lo

• Responsáveis por delegar tarefas

• Podem requisitar a ajuda de outros agentes de tarefa

Page 17: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 17

Agentes “Middle”

• Agentes de infra-estrutura que ajudam na escalabilidade do sistema

• Serviços mais comuns– Serviço de nomes (white pages)

– Matchmaker (yellow pages)

– Broker

Page 18: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 18

RETSINA Matchmaker

• Permitem que os agentes encontrem uns aos outros– Pela funcionalidade, disponibilidade, etc

– Sem saber quem o onde o agente requisitado possa estar

• Permite a reconfiguração dinâmica do sistema

• Ajuda a manter a escalabilidade do sistema

• RETSINA oferece o A-Match

http://www-2.cs.cmu.edu/~softagents/a-match/index.html

Page 19: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 19

O Processo de Matching do A-Match

Page 20: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 20

Agentes de Informação

• Fazem a interface com as fontes de informação no sistema

• Normalmente ficam na fronteira entre o sistema e fontes de dados externas

• Representam dados e eventos

Page 21: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 21

Concluindo...

• RETSINA é uma infra-estrutura para o desenvolvimento de sistemas multi-agentes

• É fechado – não está disponível para download e testes

• Katia Sycara– [email protected]

Page 22: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Plataforma de Agentes CCM(ADM – Agent Deplyment Model)

Fábio Melo

LES

Page 23: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 23

O que é a Plataforma de Agentes CCM?

• Uma plataforma para a implementação de sistemas multi-agentes baseado no CCM (CORBA Compoment Model)

• Propósito– Componentização dos agentes

– Uso da infra-estrutura CORBA

Page 24: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 24

O CORBA Component Model

• Introduz o conceito de componente (core) e define suas interfaces

• Define 4 portas: facetas, receptáculos, fontes de eventos e leitores de eventos

Page 25: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 25

O CCM

• Facetas– Definem as possíveis interfaces que o componente

expõe para os demais componentes da aplicação

– Um componente deve ter uma referência principal e pode ter diversas facetas que dão suporte a diferentes interfaces e são encaradas como referências distintas ao componente

Page 26: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 26

O CCM

• Receptáculo– Define o ponto de relacionamento estático entre

componentes

– Assim, um receptáculo permite que um componente declare a sua dependência a uma referência

Page 27: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 27

O CCM

• Fontes e Leitores de Eventos– Implementam o mecanismo de interação publish-

subscribe

– Um componente é uma fonte de eventos quando declara seu interesse de publicar (para mais de um destino) ou emitir (para um único destino) um evento

– Um componente é um leitor de eventos quando tem o interesse em ser notificado quando um determinado evento ocorreu

– Fontes e leitores devem estar conectados

Page 28: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 28

A Plataforma de Agentes CCM (ADM)

• Baseado no CCM

• Sua definição de agente– Um agente é uma entidade que, em algum ponto

da execução do sistema, pode fazer atividades, responder a alguns eventos e gerar alguns eventos novos

Page 29: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 29

O Agente é uma Entidade

• Precisa de uma identidade (auto-representação) no sistema

• O componente core é o responsável por ser o núcleo do agente

• Armazena a referência principal do agente, seus atributos e gerencia seu estado

• É responsável ainda pelo reasoning do agente, tratamento de mensagens e gerenciamento de planos

Page 30: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 30

O Agente faz Atividades

• Atividades são implementadas por planos de ação (componentes plano)

• Deve-se definir componentes que serão os planos dos agentes

• Estes componentes serão ligados ao core do agente através dos receptáculos

Page 31: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 31

O Agente responde e gera Eventos

• As interfaces usadas para o envio e a recepção de eventos (mensagens) são as fontes e os leitores

• Já modelam interações assíncronas por natureza (derivado do modelo CORBA)

• Faz a ligação direta entre agentes que se comunicam

Page 32: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 32

Os Componentes Não-agentes

• Os componentes não-agentes (recursos/objetos) do sistema são implementados diretamente como interfaces ou struts (do CCM)

• -- FALAR MAIS AQUI

Page 33: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 33

Generalizando para Organizações

• O modelo apresentado serve para implementar um único agente

• Uma organização é implementada como um agente– O core identifica a organização

– Os agentes da organização estão em seus receptáculos

– A comunicação entre agentes dentro de uma mesma organização é feita diretamente entre suas fontes e leitores

– A comunicação entre agentes de organizações diferentes é feita através das fontes e leitores da organização

Page 34: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 34

Vantagens do uso de CCM

• Re-uso– Por exemplo de planos já que são implementados

como componentes isolados

• Adaptação dinâmica– Um agente pode se adaptar ao incluir ou remover

planos de seus receptáculos

• Modelo de comunicação– Publish-subscribe que é assíncrono e não impõe

uma linguagem de comunicação

Page 35: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 35

Outras Vantagens

• Características inerentes do CCM– Segurança

– Persistência

– Gerenciamento de transações

– Funções administrativas feitas pelo modelo• Registro

• Localização

Page 36: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 36

Exemplo de Implementação usando ADM

• Sistema de marketplace

• Rodadas de negociação– Anúncio de produtos

– Formação de grupos

– Lances

– Completar ou desistir da negociação

• Modelado com o ANote– Diagramas de Agente, Planejamento, Interação e

Ontologia mapeados para o ADM

Page 37: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 37

Exemplo de Implementação usando ADM

• Classes de Agentes implementadas como especializações do componente core

• Planos implementados como especializações do componente plano

• Interações implementados como fontes e leitores

• Recursos implementados como interfaces ou struts

• Organizações implementados como agentes

Page 38: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 38

Exemplo de Implementação usando ADM

Page 39: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 39

Exemplo de Implementação usando ADM

Page 40: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 40

Exemplo de Implementação usando ADM

Page 41: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 41

Exemplo de Implementação usando ADM

Page 42: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 42

Exemplo de Implementação usando ADM

• Componente core extensão da interface IAgent– Cria todas as características do agente como start

up, instanciação de planos e envio de mensagens

Page 43: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 43

Exemplo de Implementação usando ADM

• Componente plano extensão da interface IPlan– Definicção do método que implementa o plano

– Deve ter uma referência para o componente core de todos os agentes que podem executá-lo

Page 44: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 44

Exemplo de Implementação usando ADM

• Mensagem evento

• Recurso struct (ou interface)

Page 45: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 45

Concluindo...

• O ADM é uma plataforma para o desenvolvimento de sistemas multi-agentes– Implementa o modelo CCM

– Um agente• Componente core

• Componentes planos

• Fontes e leitores de envetos

– Uma organização• Como um agente

– Recursos (itens não-agentes)• Interfaces ou struts

Page 46: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

MAS Framework

José Alberto Sardinha

LEARN

Page 47: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 47

O que é MAS Framework?

• Um framework orientado a objetos para a construção de aplicações baseadas em agentes

• Sistemas multi-agentes em ambiente distribuídos

• Propósitos– Acelera o desenvolvimento de aplicações

– Faz re-uso de código

– Reduz a complexidade de desenvolvimento de sistemas baseados em agentes

Page 48: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 48

Motivação

• Inicialmente o MAS Framework foi desenvolvido influenciado pela metodologia GAIA– Definição de papéis de agentes

– Divisão entre protocolos de interação e serviços

• Evoluiu para um framework de agentes distribuídos de propósito geral– Papéis/tipos de agentes definidos através de

herança

– Infra-estrutura de comunicação baseada no IBM TSpaces

Page 49: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 49

O MAS Framework

• É composto por– Uma classe abstrata

• Agent

– Duas classes públicas• AgentCommunicationLayer

• ProcessMessageThread

– Quatro interfaces• AgentInterface

• InteractionProtocols

• AgentMessage

• AgentBlackboardInfo

Page 50: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 50

O MAS Framework

1 1

1 0..*

11

1 0..*

1

0..*

1

1

ThreadProcessMessageThread

-agentMsgPtr:AgentMessage-ip:InteractionProtocols

+ProcessMessageThread(agMsg:AgentMessage,ipTemp:InteractionProtocols)+run():void

java.io.Serializableinterface

AgentMessage

java.io.Serializableinterface

AgentBlackboardInfo

Runnableinterface

AgentInterface

+run():void

Agent

+traceLevel:int=0 -runnit:Thread

+Agent(nameTemp:String)+initialize():void+process(ag:AgentInterface):void+stopAgent():void+terminate():void+trace(msg:String):void

name:String

CallbackAgentCommunicationLayer

-listeners:Vector=new Vector()-host:String-msgTSName:String-msgTS:TupleSpace-blackboardTSName:String-blackboardTS:TupleSpace-seqNumEventReg:int-name:Stringip:InteractionProtocols

+AgentCommunicationLayer(hostTemp:String,nameTemp:String,ipTemp:InteractionProtocols)+addAgentBroadcastListener(AgentName:String):void+blockingReadBBInfo(key:String):AgentBlackboardInfo+blockingTakeBBInfo(key:String):AgentBlackboardInfo+call(eventName:String,tsName:String,seqNum:int,tuple:SuperTuple,isException:boolean):boolean+deleteAllBB():void-initBlackboard():void+readBBInfo(key:String):AgentBlackboardInfo-registerCallBack():void+removeAgentBroadcastListener(AgentName:String):void+removeBBInfo(key:String):void+removeBBInfo(key1:String,key2:String):void+scanBBInfo(key:String):Tuple+scanBBInfo(key1:String,key2:String):Tuple+sendBBInfo(key1:String,key2:String,info:AgentBlackboardInfo):void+sendBBInfo(key:String,info:AgentBlackboardInfo):void+sendBroadcast(msg:AgentMessage):void+sendMsg(agentName:String,msg:AgentMessage):void+stopCommunicationLayer():void

interfaceInteractionProtocols

+processMsg(msg:AgentMessage):void

Page 51: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 51

A Classe Agent

• Classe abstrata que define o template dos agentes da aplicação

• Define o nome de um agente

• Método initialize– Responsável pelo código de inicialização do agente

• Método terminate– Responsável pelo código de terminação do agente

• Métodos process e stopAgent– Responsáveis por iniciar e parar a execução de

serviços do agente

Page 52: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 52

A Interface AgentInterface

• Responsável por fazer as subclasses de Agent virarem threads

• Suas classes concretas devem implementar o método run que é responsável por iniciar as atividades (serviços) privados dos agentes

Page 53: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 53

A Interface InteractionProtocols

• É a interface que define como um agente irá se comunicar com os demais agentes da organização

• Todo código relativo à interação entre agentes deve ser colocado em sua classe concreta

• Sua classe concreta também deve implementar o método processMsg que é chamado toda vez que o agente receber uma mensagem

Page 54: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 54

As Interfaces AgentMessage e AgentBlackboardInfo

• A classe concreta de AgentMessage deve definir o formato das mensagens usadas no sistema

• A classe concreta de AgentBlackboardInfo deve definir o formato das mensagens usadas no blackboard TSpaces

• Assim, todas as informações necessárias para a comunicação dos agentes com o blackboard de interação fica encapsulada nestas duas classes

Page 55: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 55

A Classe ProcessMessageThread

• É a classe responsável por fazer o tratamento das mensagens recebidas por um agente

• O que ela faz– Cria uma nova thread para o tratamento de uma

mensagem

– Este thread chamará o método processMsg (da classe concreta de InteractionProtocols)

Page 56: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 56

A Classe AgentCommunicationLayer

• Classe que implementa as funcionalidades de uso do blackboard TSpaces

• addAgentBroadcastListener– Adiciona um agente a um grupo de receptores de

broadcast

• blockingReadBBInfo– Usado para ler uma informação do blackboard. Se

a informação ainda não está no blackboard quando este método for executado, a aplicação pára a sua espera

Page 57: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 57

A Classe AgentCommunicationLayer

• blockingTakeBBInfo– Usado para retirar uma informação do blackboard.

Da mesma forma que blockingReadBBInfo, se a informação ainda não está no blackboard, a aplicação pára

• deleteAllBB– Usado para remover toda informação do

blackboard

• removeAgentBroadcastListener– Remove um agente de um grupo de receptores de

broadcast

Page 58: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 58

A Classe AgentCommunicationLayer

• removeBBInfo– Remove uma informação do blackboard

• scanBBInfo– Procura uma informação (definida atravé de uma

query) no blackboard

• sendBBInfo– Envia uma informação para o blackboard

Page 59: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 59

A Classe AgentCommunicationLayer

• sendBroadcast– Envia uma mensagem para os agentes registrados

no grupo de receptores de broadcast

• sendMsg– Envia uma mensagem para um agente

• stopCommunicationLayer– Pára o serviço blackboard

Page 60: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 60

Hot e Frozen Spots

• Hot Spots– Agent

– AgentMessage

– AgentBlackboardInfo

– InteractionProtocols

– AgentInterface

• Frozen Spots– AgentCommunicationLayer

– ProcessMessageThread

Page 61: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 61

Instanciando o MAS Framework

• Para cada agente deve-se– Criar duas classes

– Uma que herda da classe abstrata Agent

– Esta classe deve ainda implementar a interface AgentInterface

– Outra que implementa a interface InteractionProtocols

Page 62: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 62

Exemplo de Instanciação

Page 63: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 63

1 0..*

1

0..*

1

1

1 111

1 0..*

ThreadProcessMessageThread

-agentMsgPtr:AgentMessage-ip:InteractionProtocols

+ProcessMessageThread(agMsg:AgentMessage,ipTemp:InteractionProtocols)+run():void

CallbackAgentCommunicationLayer

-listeners:Vector=new Vector()-host:String-msgTSName:String-msgTS:TupleSpace-blackboardTSName:String-blackboardTS:TupleSpace-seqNumEventReg:int-name:Stringip:InteractionProtocols

+AgentCommunicationLayer(hostTemp:String,nameTemp:String,ipTemp:InteractionProtocols)+addAgentBroadcastListener(AgentName:String):void+blockingReadBBInfo(key:String):AgentBlackboardInfo+blockingTakeBBInfo(key:String):AgentBlackboardInfo+call(eventName:String,tsName:String,seqNum:int,tuple:SuperTuple,isException:boolean):boolean+deleteAllBB():void-initBlackboard():void+readBBInfo(key:String):AgentBlackboardInfo-registerCallBack():void+removeAgentBroadcastListener(AgentName:String):void+removeBBInfo(key:String):void+removeBBInfo(key1:String,key2:String):void+scanBBInfo(key:String):Tuple+scanBBInfo(key1:String,key2:String):Tuple+sendBBInfo(key1:String,key2:String,info:AgentBlackboardInfo):void+sendBBInfo(key:String,info:AgentBlackboardInfo):void+sendBroadcast(msg:AgentMessage):void+sendMsg(agentName:String,msg:AgentMessage):void+stopCommunicationLayer():void

java.io.Serializableinterface

AgentBlackboardInfo

java.io.Serializableinterface

AgentMessage

Runnableinterface

AgentInterface

+run():void

Agent

+traceLevel:int=0 -runnit:Thread

+Agent(nameTemp:String)+initialize():void+process(ag:AgentInterface):void+stopAgent():void+terminate():void+trace(msg:String):void

name:String

interfaceInteractionProtocols

+processMsg(msg:AgentMessage):void

AgentBuyerIP

aclAgBuyer:AgentCommunicationLayeragBuyer:AgentBuyer

+AgentBuyerIP(name:String)+informListEncounteredItems(itemsEncountered:Vector):Vector+sendNegotiationParameters(proposal:Hashtable):Hashtable+negotiate():void+sendCounterProposal():void+sendUserMsg():void+sendNegotiationResult(itemsNegotiated:Vector):Vector+terminateBuying(transactionItem:Hashtable):String+informTermination():void+informTimeExpired():void+processMsg(msg:AgentMessage):void

AgentBuyer

itemsEncountered:VectorbuyProfile:Hashtableuser:HashtableagentUserName:StringagentBuyerName:StringbuyProfileName:MessagebuyProfileMsg:ProfilenegotiationParameters:Hashtableproposal:HashtableclosedProposal:HashtableitemsNegotiated:VectortransactionItem:HashtablenewValue:DoublenegotiationParameterList:Vectoridadd:StringtransactionItem:StringagBuyerIP:AgentBuyerIP

+AgentBuyer(name:String)+initialize():void+run():void+terminate():void+trace(msg:String):void+findItem(buyProfile:Vector):Vector+evaluateReceivedProposal(proposal:Hashtable):Hashtable

Page 64: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 64

Exemplo de Instanciação

import masframework.*;

public class Agent1 extends Agent implements AgentInterface { private boolean alive;

public Agent1(String _name, InteractionProtocols _interactionProtocols){ super(_name,_interactionProtocols); } public void initialize() { alive = true; } public void terminate() { alive = false; } public void trace(String msg, int level) { System.out.println(msg); }

Page 65: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 65

Exemplo de Instanciação

// Seqüência de Agent1

public void run() { while(alive) { try { trace("Agent1: executando", 1); ((Agent1IP)getInteractionProtocols()).sendMsgAgent2(); Thread.sleep(2000); } catch(Exception e){ System.out.println("Erro!"); } } }}

Page 66: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 66

Exemplo de Instanciação

import masframework.*;

public class Agent1IP extends InteractionProtocols { public void processMsg(AgentMessage msg) { }

public void sendMsgAgent2() { SimpleMessage msg = new SimpleMessage(); msg.content = "Oi"; getAgCommLayer().sendMsg("Agent2",msg); }}

Page 67: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 67

Exemplo de Instanciação

import masframework.*;

public class Agent2 extends Agent implements AgentInterface { private boolean alive;

public Agent2(String _name, InteractionProtocols _interactionProtocols) { super(_name, _interactionProtocols); } public void initialize() { alive = true; } public void terminate() { alive = false; } public void trace(String msg, int level) { System.out.println(msg); }

Page 68: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 68

Exemplo de Instanciação

// Seqüência de Agent2

public void run() { while(alive) { try{ trace("Agent2: running",1); Thread.sleep(2000); } catch(Exception e){ System.out.println("Erro!"); } } }}

Page 69: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 69

Exemplo de Instanciação

import masframework.*;

public class Agent2IP extends InteractionProtocols { public void processMsg(AgentMessage msg) { SimpleMessage simpleMessage = (SimpleMessage) msg; System.out.println("Mensagem recebida = " + simpleMessage.content); }}

import masframework.AgentMessage;

public class SimpleMessage implements AgentMessage { String content;

public SimpleMessage() { super(); }}

Page 70: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 70

Exemplo de Instanciação

import masframework.*;

public class Environment { public static void main(String[] args) {

// Cria o Agente 1 Agent1IP ag1IP = new Agent1IP(); AgentCommunicationLayer acl1 = new AgentCommunicationLayer( "localhost", "Agent1", ag1IP); ag1IP.setAgCommLayer(acl1); Agent1 ag1 = new Agent1("Agent1",ag1IP);

// Cria o Agente 2 Agent2IP ag2IP = new Agent2IP(); AgentCommunicationLayer acl2 = new AgentCommunicationLayer( "localhost", "Agent2", ag2IP); ag2IP.setAgCommLayer(acl2); Agent2 ag2 = new Agent2("Agent2", ag2IP);

Page 71: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 71

Exemplo de Instanciação

// Seqüência de Environment

// Inicia os agentes ag1.process(ag1); ag2.process(ag2); }}

Page 72: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 72

Exemplo de Instanciação

• Copiar a SimpleMessage.class para o diretório de classes do TSpaces

<%TSPACES_HOME%>\classes

• Iniciar o TSpaces

• Executar o Environment.class

Page 73: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 73

Exemplo de Instanciação

Page 74: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 74

Exemplo de Instanciação

Page 75: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 75

Concluindo...

• O MAS Framework é um framework para o desenvolvimento de sistemas multi-agentes– Possui classes para implementar agentes e suas

interações

– Um agente• Extensão de Agent

• Implementação de InteractionProtocols

– Infra-estrutura de comunicação• Baseada no IBM TSpaces

Page 76: RETSINA Plataforma de Agentes CCM MAS Framework Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br

Laboratório de Engenharia de Software (LES) – PUC-Rio 76