Jade - Apresentação - Wiki LES PUC-Rio

Propaganda
JADE:
Java Agent Development
Environment Framework
http://jade.tilab.com/
Versão atual: 4.3.3
10/12/2014
O que são Agentes?
29/06/2017
@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
29/06/2017
@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
29/06/2017
@LES/PUC-Rio
4
O que são Agentes?
Características:
 Autonomia:
• Operar sem controle direto de humanos ou de outros agentes
 Reatividade:
• Reagir a estímulos
 Pró-atividade:
• Tomar decisões para ajustar-se a metas definidas
 Interatividade:
• Comunicação




Adaptação
Aprendizado
Racionalidade
Mobilidade
29/06/2017
@LES/PUC-Rio
5
O que são Agentes?
Características: JADE








Autonomia
Reatividade
Pró-atividade
Interatividade
Adaptação
Aprendizado
Racionalidade
Mobilidade: poder desenvolver o programa em
uma máquina e ser executada em outra
29/06/2017
@LES/PUC-Rio
6
JADE
Jade é um middleware para o desenvolvimento de
sistemas multi-agentes, que suporta:
 Um modelo assíncrono de programação de agentes
 Comunicação entre agentes de uma mesma plataforma
ou de plataformas diferentes.
6/29/2017
@LES/PUC-Rio
7
JADE
Jade é também uma plataforma para execução de
agentes, que inclui:
 Um ambiente de execução (container) onde os agentes
JADE "vivem" e possam ser executados.
 Uma biblioteca de classes de desenvolvimento de
agentes.
 Um conjunto de ferramentas gráficas que permite a
administração e o monitoramento das atividades dos
agentes em execução.
6/29/2017
@LES/PUC-Rio
8
Contêiner e Plataforma
Contêiner
 Instância de um ambiente Jade
 É onde os agentes executam
Plataforma
 Conjunto de contêineres ativos
29/06/2017
@LES/PUC-Rio
9
Contêineres e Plataformas
29/06/2017
@LES/PUC-Rio
10
Contêineres e Plataformas
Cada instância de agente é identificada
por um agent identifier (AID)
 Um ID global é aquele que representa o
identificador do agente em toda a plataforma
• <nome_local>@<nome-plataforma>
 Um ID local refere-se ao conjunto de
informações que representam o agente em seu
container
29/06/2017
@LES/PUC-Rio
11
Plataforma
O Jade segue o modelo da FIPA
(Foundation for Intelligent Physical
Agents)
29/06/2017
@LES/PUC-Rio
12
Plataforma
 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
29/06/2017
@LES/PUC-Rio
13
Plataforma
 Oferece o serviço
de páginas
amarelas na
plataforma
29/06/2017
@LES/PUC-Rio
14
Plataforma
Sistema JADE suporta
a comunicação entre
vários agentes FIPA e
fornece uma
implementação padrão
da comunicação
linguagem FIPA-ACL, o
que facilita a
comunicação entre os
agentes e permite a
detecção de serviços do
sistema.
29/06/2017
@LES/PUC-Rio
15
Plataforma
29/06/2017
@LES/PUC-Rio
16
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
comportamentos
29/06/2017
@LES/PUC-Rio
17
A Classe Agent
A classe base para a definição de agentes
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...)
29/06/2017
@LES/PUC-Rio
18
A Classe Agent
Oferece um conjunto de métodos para a
implementação do comportamento do
agente
A classe Agent oferece um scheduler (não
acessível ao programador) que gerencia
automaticamente o agendamento dos
comportamentos
29/06/2017
@LES/PUC-Rio
19
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
 Inicialização do agente ou a partir de um
comportamento
29/06/2017
@LES/PUC-Rio
20
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
29/06/2017
@LES/PUC-Rio
21
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
29/06/2017
@LES/PUC-Rio
22
A Execução de um Agente
29/06/2017
@LES/PUC-Rio
23
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
29/06/2017
@LES/PUC-Rio
24
A Hierarquia de
Comportamentos
29/06/2017
@LES/PUC-Rio
25
Comportamentos Simples
OneShotBehaviour
 Modela comportamentos que só devem
executar uma vez e que não podem ser
bloqueados (parar o comportamento até que
algum evento ocorra)
CyclicBehaviour
 Modela comportamentos atômicos que devem
ser executados eternamente
29/06/2017
@LES/PUC-Rio
26
Comportamentos Compostos
SequentialBehaviour
 Executa seus sub-comportamentos seqüencialmente e
termina quando todos estes estiverem terminados
ParallelBehaviour
 Executa seus sub-comportamentos concorrentemente e
termina quando uma condição particular sobre o
conjunto de sub-comportamentos é alcançada
FSMBehaviour
 Executa seus sub-comportamentos como uma Máquina
de Estados Finita (FSM). Quando uma tarefa acaba, sua
saída é usada para se calcular a transição para a
próxima tarefa. O comportamento termina quando uma
tarefa final é executada
29/06/2017
@LES/PUC-Rio
27
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
}
}
29/06/2017
@LES/PUC-Rio
28
A Comunicação entre
Agentes
29/06/2017
@LES/PUC-Rio
29
A Comunicação entre
Agentes
A troca de mensagens é assíncrona e usa
a FIPA ACL (Agent Communication
Language)
29/06/2017
@LES/PUC-Rio
30
Enviando Mensagens
Deve-se criar e montar um objeto
ACLMessage e chamar o método send()
do agente
 Esta mensagem de exemplo representa um pedido de um agente para
o outro, onde o solicitante deseja obter o preço (que será armazenado
na variável p) de um computador com processador Celeron e 256 MB
de memória.
29/06/2017
@LES/PUC-Rio
31
Recebendo Mensagens
Para 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
}
29/06/2017
@LES/PUC-Rio
32
Troca de mensagem entre os
agentes
29/06/2017
@LES/PUC-Rio
33
O Serviço de Páginas
Amarelas – Agente DF
29/06/2017
@LES/PUC-Rio
34
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
29/06/2017
@LES/PUC-Rio
35
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(); }
...
29/06/2017}
@LES/PUC-Rio
36
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");
}
29/06/2017
@LES/PUC-Rio
37
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[i].getName();
}
catch (FIPAException fe) { fe.printStackTrace(); }
...
} );
...
}
29/06/2017
@LES/PUC-Rio
38
Referência
Manual do Jade. Disponível em
http://jade.tilab.com/doc/tutorials/noEngli
sh/ManualJadePortuguese.pdf. Acesso em
Agosto de 2015.
29/06/2017
@LES/PUC-Rio
39
Download