Agentes de Software
Introdução
Projeto de Sistemas de Software
Agenda
• Introdução
• O que são Agentes?
• Agente versus Objeto
• Sistemas Multiagentes
• Exemplos de Aplicações
• ES de Sistemas Multiagentes
• Plataforma Jade
© LES/PUC-Rio
2
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
© LES/PUC-Rio
3
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
© LES/PUC-Rio
4
O que são Agentes?
• Agentes e o Ambiente
Sensores
Processamento
autônomo
Efetuadores
© LES/PUC-Rio
Ambiente
Agente
5
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
© LES/PUC-Rio
6
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
© LES/PUC-Rio
7
Agente vs. Objeto
• Similaridade
– Entidades computacionais
– Encapsulam estado
– Realizam ações
– Se comunicam via troca de mensagens
© LES/PUC-Rio
8
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
© LES/PUC-Rio
9
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)”
© LES/PUC-Rio
10
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
© LES/PUC-Rio
11
Engenharia de Software de
Sistemas Multiagentes
Introdução
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
© LES/PUC-Rio
13
ES de Sistemas Multiagentes:
Motivação
• Sistemas Complexos
© LES/PUC-Rio
14
Tendências
• Sistemas distribuídos
• Sistemas extensíveis
• Crescimento da Internet
• Utilização de ontologias – Web Semântica
• Sistemas abertos
© LES/PUC-Rio
15
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
© LES/PUC-Rio
16
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
© LES/PUC-Rio
17
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?
© LES/PUC-Rio
18
Evolução dos Paradigmas de ES
Tempo
•
Linguagens Assembler
•
Abstração Funcional
•
Programação Estruturada
•
Orientação a Objetos
•
Componentes
•
...
•
Agentes de Software
© LES/PUC-Rio
Abstrações determinadas
pela arquitetura da máquina
Abstrações determinadas
pelo domínio do problema
19
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
© LES/PUC-Rio
20
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...
© LES/PUC-Rio
21
Exemplos
TAC (Trading Agent Competition) Classic
© LES/PUC-Rio
23
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.
Ag ente Us u疵 i o
Ag ente Vend ed or
Ag ente Fonte d e Da d os
1: Confirma compra DVD LG
2: Informa a venda
3: Envia confirma 鈬o
4: Confirma a venda
© LES/PUC-Rio
24
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.
Us u疵 i o
Ag ente Us u疵 i o
Ag ente Ve nd ed or
Ag ente Fonte d e Da d os
1: Informa a categoria dos clientes
2: Envia ofe rta bas ead o na es tra t馮ia
3: Avisa o u su疵io
© LES/PUC-Rio
25
Diagrama de Classes
Mei oDeC omunica ca o
+adicionarMensagem(Mensagem:msg):void
1
0..*
interface
Mens a g e m
Ag ente
C ommun ica ca o
+receberMensagem(msg:Mensagem):void
+enviarMenssagem(msg:Mensagem):void
conteudo:String
destino:String
tipo:String
Ag enteUs ua rio Ag enteVend ed orAg enteFonteDeDa d os
E ma il
C el ula r
1
E s tra teg i a Vend a
G ul os a
S・quer lucra r
<<Fa軋de>>
Ba ncoDe Da d os
C a ti v a nte P ond era d a
Faz de tudo para
ganhar o cliente
© LES/PUC-Rio
Cede se for
um bom cliente
26
Exemplo: Sequência implementação
Cenário 1
a g enteUs ua ri o
AgenteUsuario
mei oDeC omunica c a o
MeioDeComunicacao
a g enteVend ed
AgenteVendedor
Us ua rio
1: Comprar DVD
1.1: cria
mens a g e mDeC omp ra
Mensagem
1.2: setTipo("comprar"):void
1.3: setConteudo("produto=DVD"):void
1.4: setDestino("AgenteVendedor"):void
1.5: enviarMenssagem(mensagemDeCompra):void
1.5.1: adicionarMensagem(mensagemDeCompra):void
1.5.1.1: receberMensagem(mensagemDeCompra):void
© LES/PUC-Rio
27
Exemplo 2: Agenda Virtual
© LES/PUC-Rio
28
Agendamento de Compromissos 1/3
HS
: Usuário
: homeUsuario.jsp
:
cmdFormAgendamento
: Servlet
:
UsuarioFachada
exibirFormAgendamento( )
doGet( )
execute( )
listarContatos( )
listarCo
exibirFo
© LES/PUC-Rio
29
Agendamento de Compromissos 2/3
HS
: Usuário
: formAgendamento.jsp : Servlet
:
cmdAgendar
:
UsuarioFachada
: AgenteUsuario
solicitarAgendamento( )
doPost( )
[Env ia mensagem do tipo S_EVENTO
para AgenteSecretaria]
execute( )
agendar( )
enviarMsg( )
receb
exibirFeedBa
© LES/PUC-Rio
30
Agendamento de Compromissos 2.1/3
: AgenteUsuario
:
AgenteSecretaria
: Usuario
: Evento
lerInbox( )
tratarMs g( )
[Se f or um grupo de contato, v erif icar para cada integrante do grupo]
verificarConflitos ( )
verificarEventos( )
getData( )
[Se houv e conf lito, executar 3/3]
[Se não houv e conf lito]
[*para cada evento]
adicionarEvento( )
adicionarEvento( )
© LES/PUC-Rio
31
Agendamento de Compromissos 3/3
: AgenteUsuario
:
AgenteSecretaria
[Envia m ensagem do tipo S_NEGADA
para AgenteUsuario]
enviarMsg( )
receberMsg( )
lerInbox( )
[Se chegou mensagem nova]
tratarMsg( )
© LES/PUC-Rio
[Se mensagem do
tipo S_NEGADA]
32
Exemplo de Código
© LES/PUC-Rio
33
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
© LES/PUC-Rio
34
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
© LES/PUC-Rio
35
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
• Auto-adaptação e auto-organização
• Leski
http://wiki.les.inf.puc-rio.br/index.php/Sistemas_Multiagentes
© LES/PUC-Rio
36
Jade
Java Agent Development Framework
http://jade.tilab.com/
Versão atual: 3.5
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
© LES/PUC-Rio
38
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
© LES/PUC-Rio
39
Contêineres e Plataformas
© LES/PUC-Rio
40
A Plataforma
• O Jade segue o modelo da FIPA (Foundation for Intelligent
Physical Agents)
© LES/PUC-Rio
41
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
© LES/PUC-Rio
42
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
© LES/PUC-Rio
43
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
© LES/PUC-Rio
44
O Ciclo de Vida de um Agente
© LES/PUC-Rio
45
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
© LES/PUC-Rio
46
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
© LES/PUC-Rio
47
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: [email protected]:1099/JADE
– Entra no estado Ativo
• É executado o método setup()
– Método responsável por inicializar os comportamentos do
agente
© LES/PUC-Rio
48
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
© LES/PUC-Rio
49
Um Exemplo
© LES/PUC-Rio
50
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
© LES/PUC-Rio
51
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.");
}
}
© LES/PUC-Rio
52
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
© LES/PUC-Rio
53
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
© LES/PUC-Rio
54
O Esquema de um Comportamento
public class UmComportamento extends Behaviour {
public void action() {
while (true) {
// Código do Comportamento
}
}
public boolean done() {
return true;
}
}
© LES/PUC-Rio
55
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
© LES/PUC-Rio
56
A Execução de um Agente
© LES/PUC-Rio
57
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
© LES/PUC-Rio
58
A Hierarquia de Comportamentos
© LES/PUC-Rio
59
Esquemas de Comportamentos Simples
// OneShotBehaviour
public class MyOneShotBehaviour extends OneShotBehaviour {
public void action() {
// Executar a operação X
}
}
// CyclicBehaviour
public class MyCyclicBehaviour extends CyclicBehaviour {
public void action() {
// Executar a operação Y
}
}
© LES/PUC-Rio
62
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;
}
}
© LES/PUC-Rio
63
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
© LES/PUC-Rio
64
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"
© LES/PUC-Rio
65
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
© LES/PUC-Rio
66
A Comunicação entre Agentes
• A troca de mensagens é assíncrona e usa a FIPA ACL (Agent
Communication Language)
© LES/PUC-Rio
67
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
© LES/PUC-Rio
68
A Linguagem ACL - Exemplo
Mensagem ACL
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
)
© LES/PUC-Rio
Conteúdo da mensagem
69
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”
© LES/PUC-Rio
70
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?”
© LES/PUC-Rio
71
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);
© LES/PUC-Rio
72
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
}
© LES/PUC-Rio
73
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();
}
© LES/PUC-Rio
74
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();
}
© LES/PUC-Rio
75
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
© LES/PUC-Rio
76
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(); }
...
}
© LES/PUC-Rio
77
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");
}
© LES/PUC-Rio
78
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(); }
...
} );
...
}
© LES/PUC-Rio
79
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
© LES/PUC-Rio
80
FIM
Perguntas?
Download

Aula04-agentes2009-2 - (LES) da PUC-Rio