Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-11-2010, 10:44   #1
marco-87
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 2
Chiarimento su JADE

Ciao a tutti sono Marco. Vorrei chiedervi un aiuto sulla piattaforma JADE. Io sto utilizzando JADE per la mia tesi di laurea, ma nelle fasi iniziali sono incappato in un problema, secondo me molto banale, che purtroppo mi ha bloccato il lavoro.
Vi spiego il mio problema: io ho la necessità di far comunicare gli agenti di due piattaforme diverse, per cui come esempio, ho creato un'agente per ciascun piattaforma e gli ho fatto scambiare un semplice messaggio INFORM con l'altro agente, che poi a sua volta risponde con un REPLY; dalla GUI di JADE attraveso l'opzione ADD PLATFORM VIA AMS AID ho aggiunto la piattaforma remota in entrambi i pc e ho mandato in esecuzione il codice ma le due piattaforme non comunicano, se però clicco sull'agente mittente e faccio SEND MESSAGE, definendo mittente, destinario e messaggio, i due agenti cominciano a comunicare.Ovviamente questo non è giusto perchè i due agenti dovrebbero comunicare automaticamente, come avviene tra agenti della stessa piattaforma, senza bisogno che io dia questo "input".Io non penso che sia un problema di codice, anche perchè è molto semplice, per cui penso che sia un problema risolvibile a livello di GUI,o relativo agli indirizzi di rete (come pensa il mio relatore) ma non riesco a trovare la soluzione. Credo che sia veramente una cosa da nulla, che però non mi permette di andare avanti.Vi invio il codice così se avete la possibilità di dargli un'occhiata potreste suggerirmi una soluzione.Vi ringrazio anticipatamente e spero che mi possiate essere d'aiuto.

import jade.core.AID;
import jade.core.Agent;
import jade.lang.acl.ACLMessage;

public class Mittente extends Agent{
protected void setup() {
System.out.println("Agente "+getLocalName()+" inizializzato");
addBehaviour(new Azione_mittente());
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
AID destinatario = new AID("destinatario",AID.ISLOCALNAME);
msg.addReceiver(destinatario);
msg.setContent("Ciao destinatario");
send(msg);
}
protected void takeDown() {
System.out.println("Agente "+getLocalName()+" terminato");
}
}


import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage

public class Azione_mittente extends CyclicBehaviour {
public void action() {
ACLMessage msg = myAgent.receive();
if (msg != null) {
System.out.println("Messaggio ricevuto da: "+msg.getSender().getLocalName());
System.out.println("Contenuto: "+msg.getContent());
}
else
block();
}
}

import jade.core.Agent;

public class Destinatario extends Agent{
protected void setup() {
System.out.println("Agente "+getLocalName()+" inizializzato");
addBehaviour(new Azione_destinatario());
}
protected void takeDown() {
System.out.println("Agente "+getLocalName()+" terminato");
}
}

import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;

public class Azione_destinatario extends CyclicBehaviour {
public void action() {
ACLMessage msg = myAgent.receive();
if (msg != null) {
String contenuto = msg.getContent();
if (contenuto.equalsIgnoreCase("Ciao destinatario")) {
System.out.println("Messaggio ricevuto da: "+msg.getSender().getLocalName());
System.out.println("Contenuto: "+msg.getContent());
ACLMessage reply = msg.createReply();
reply.setPerformative(ACLMessage.INFORM);
reply.setContent("Ciao mittente");
myAgent.send(reply);
}
}
else
block();
}
}
marco-87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2010, 18:26   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ti conviene modificare il post e ripubblicare il codice usando il tag CODE, ben identato, a beneficio dei lettori.
Per JADE purtroppo non so aiutarti.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v