2017-06-20 7 views
0

Mein Projekt ist es, Agenten zu erstellen, die Busse darstellen, um ein Leistungsfluss-System mit der Gauss-Seidel-Methode zu lösen. Die Schwierigkeit besteht jetzt darin, dass, da verschiedene Busse unterschiedliche Informationen enthalten, sie einander Informationen senden müssen, um die Berechnung durchzuführen. Meine Herangehensweise besteht darin, Variablen zu definieren, die bekannte Werte wie die Spannung in jedem Agenten repräsentieren, und sie dann bei Bedarf anderen Agenten zuzuführen. Da ich aber ganz neu im Programmieren bin, insbesondere bei JADE, habe ich Probleme, diese Agenten zum Austausch von Informationen zu bewegen. Wie implementiere ich das? Vielen Dank im Voraus.Jade Agenten Datenkommunikation

+0

Bitte zeigen Sie, was Sie versucht haben. Sonst ist es nicht wirklich möglich, eine gute Antwort auf diese Frage zu bekommen. – Ray

Antwort

0

Soweit ich weiß, "Gelben Seiten Service" wird Ihnen helfen. Sie sollten jeden Agenten während des Setups registrieren und diese bei Bedarf durchsuchen. Zum Beispiel (aus "Entwickeln von Multi-Agenten-Systemen mit Jade").

Anmeldung:

protected void setup() { 
... // Register the book-selling service in the yellow pages 
    DFAgentDescription dfd = new DFAgentDescription(); 
    dfd.setName(getAID()); 
    ServiceDescription sd = new ServiceDescription(); 
    sd.setType("Book-selling"); 
    sd.setName(getLocalName()+"-Book-selling"); 
    dfd.addServices(sd); 
    try { 
     DFService.register(this, dfd); 
    } catch (FIPAException fe) { 
     fe.printStackTrace(); } ... 
    } 

und die Suche:

DFAgentDescription template = new DFAgentDescription(); 
ServiceDescription sd = new ServiceDescription(); 
sd.setType("Book-selling"); 
template.addServices(sd); 
try { 
    DFAgentDescription[] result = DFService.search(myAgent, template); 
} catch (FIPAException fe) { 
    fe.printStackTrace(); 
} 
0

Für grundlegende Meldungen finden Sie in den linken das wird. Dies ist jedoch eine grundlegende Lösung und skaliert nicht gut. Passing ACL messages between jade remote platforms

Für eine saubere Lösung folgen Sie den folgenden Schritten:

  1. Register Agenten und Dienstleistungen mit dem Verzeichnis Facilitator (DF). Sie finden Empfehlungen, wie Sie dies in diesem Thread und anderen tun können. (Nachricht vom Agent, der den Dienst bereitstellt -> DF)
  2. Service und Agent von DF anfordern. Dies ist wiederum (Nachricht vom Agenten, der den Service anfordert -> DF) (DF-> antwortet mit Serviceanbieterinfo)
  3. Senden Sie eine benutzerdefinierte Nachricht an den Agenten, der den Dienst bereitstellt. In dieser Nachricht werden Sie Informationen einbetten.

ich verwenden in der Regel XML oder String-Manipulation:

AID r=new AID("[email protected]",AID.ISGUID); 
r.addAddresses("http://192.168.1.1:7778/acc"); 
acl.addReceiver(r); 
acl.setContent("time=10:30"); 
this.send(acl); 
System.out.println("\nMessage Sent to "+r); 
Verwandte Themen