Você está na página 1de 4

AGENTES EM JADE

NGELO COSTA & PAULO NOVAIS


SISTEMAS INTELIGENTES

2012

Este documento contm snippets de cdigo em Java de construo de agentes para serem usados na
plataforma Jade.

Contedo
1 Estrutura........................................................................................................................................... 1
2 Behaviours........................................................................................................................................ 1
Definio ............................................................................................................................................ 2
2.1 Dentro do setup ......................................................................................................................... 2
2.2 Dentro do setup (2) .................................................................................................................... 2
2.3 Fora do setup (Classe) ................................................................................................................ 3
2.4 Temporizado .............................................................................................................................. 3
3 Enviar Mensagens ............................................................................................................................. 3
3.1 Nova mensagem ........................................................................................................................ 3
3.2 Resposta .................................................................................................................................... 4
4 Receber Mensagens .......................................................................................................................... 4

1 Estrutura
public class <Nome> extends Agent {
public void setup() {
Behaviours
}
}

2 Behaviours

Definio

SimpleBehaviour: uma classe bsica que se pode estender de vrias maneiras e que muitas
vezes acaba por ser a melhor soluo quando outros Behaviours podem ter alguns truques
escondidos
CyclicBehaviour: Este Behaviour permanece activo enquanto o seu agente est vivo e ser
chamado depois de cada evento. Bastante til para lidar com a recepo de mensagens.
o TickerBehaviour: um Behaviour cclico que periodicamente executa algumas definidos
pelo usurio
OneShotBehaviour: Este executado uma vez e morre. Bom para execues nicas no
temporizadas
o WakerBehaviour: que executa algum cdigo do usurio uma vez em uma hora
especificada
o ReceiverBehaviour: que dispara quando um determinado tipo de mensagem
recebida (ou um tempo limite expira).
ParallelBehaviour: controla um conjunto de Behaviours-filhos que executam em paralelo. O
importante a condio de encerramento: podemos especificar que o grupo de crianas
termina quando todos so terminados
SequentialBehaviour: este Behaviour executa Behaviour -filhos, um aps o outro, e termina
quando o ltimo filho terminou.

in Agent
void addBehaviour( Behaviour )
void removeBehaviour( Behaviour )
in CompositeBehaviour
void addSubBehaviour( Behaviour )
void removeSubBehaviour( Behaviour )

2.1 Dentro do setup


public class <Nome> extends Agent {
public void setup() {
OneShotBehaviour ola = new OneShotBehaviour() {
public void action() {
System.out.println(Ol);
}
};
this.addBehaviour(ola);
}
}

2.2 Dentro do setup (2)


public class <Nome> extends Agent {
public void setup() {
addBehaviour (new OneShotBehaviour() {
public void action() {
System.out.println(Ol);
}

});
}
}

2.3 Fora do setup (Classe)


public class <Nome> extends Agent {
public void setup() {
addBehaviour (new ola());
}
private class ola extends OneShotBehaviour{
public void action() {
System.out.println(Ol);
}
}
}

2.4 Temporizado
Behaviour loop = new TickerBehaviour( this, 300 )
{
protected void onTick() {
System.out.println("Looper:" + myAgent.getLocalName());
}
});
addBehaviour( loop );

3 Enviar Mensagens
De notar que s as funes que so chamadas dentro do setup ou behaviour que podem enviar
mensagens

3.1 Nova mensagem


public class <Nome> extends Agent {
Agent myAgent;
public void setup() {
myAgent = this;
OneShotBehaviour ola = new OneShotBehaviour() {
public void action() {
System.out.println(Ol);
sendmsg(agente,ola);
}
};
this.addBehaviour(ola);
}

private void sendmsg(String agentName, String Content) {


AID receiver = new AID();
//Nome de agente que vai receber a menssagem
receiver.setLocalName(agentName);
//Cria mensagem de Informao
msg = new ACLMessage(ACLMessage.INFORM);
//Adiciona o receptor
msg.addReceiver(receiver);
//Adiciona o conteudo
msg.setContent(Content);
//Adiciona o time-stamp
msg.setReplyWith(System.currentTimeMillis() + "");
//Enviar Mensagem
myAgent.send(msg);
}
}

3.2 Resposta
private void sendmsg(ACLMessage msg, String Content) {
//Cria mensagem de resposta
ACLMessage reply = msg.createReply();
//Adiciona o conteudo
msg.setContent(<Content>);
//Adiciona o time-stamp
msg.setReplyWith(System.currentTimeMillis() + "");
//Enviar Mensagem
myAgent.send(msg);
}

4 Receber Mensagens
if ((msg = myAgent.receive()) != null) {
System.out.println(msg.getContent());
}
else {
block();
}