|
|
#1 |
|
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(); } } |
|
|
|
|
|
#2 |
|
Senior Member
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) |
|
|
|
|
| Tutti gli articoli | Tutte le news | Tutti i download |
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:10.



















