Kurze Antwort: es auf dem Programmierparadigma oder Sprache, die Sie verwenden möchten, hängt, und der Entwurf, den Sie für Ihre Agenten wollen:
Wenn Sie eine Low-Entry - High-Ceiling-Sprache, die schnelles Prototyping, aber ausgeklügelte Simulationen erlaubt und bereit ist, ein neues Paradigma zu lernen (Schleifen zu vermeiden), verwenden Sie NetLogo. Gute Dokumentation.
Wenn Sie eine echte Anwendung für hochparallelisierte Cluster erstellen möchten oder einfach Java Groovy verwenden möchten oder eine spezielle Java-Bibliothek für Ihren Zweck benötigen, verwenden Sie Repast oder besser Repast for High Performance Computing (aber vermeiden Sie ReLogo, das sehr langsam ist). Leichte Dokumentation.
Wenn Sie kognitive Agenten modellieren möchten (statt reaktiv) mit FIPA-Kommunikation verwenden besser Jason oder besser JaCaMo die AgentSpeak + Java unterstützt (so können Sie auch Ihre Lieblings-Java-Bibliotheken), und es gibt keine Groovy erforderlich. Schlechte Dokumentation (viele nicht detaillierte Funktionen und Befehle und schlechte, zu komplexe, nicht kommentierte Beispiele).
Lange Antwort: Disclaimer: Ich bin erfahreneren mit NetLogo aber ich habe auch Repast und ein paar andere wie Jason. Der Unterschied zwischen NetLogo und Repast besteht darin, dass Sie mit NetLogo ein einfacheres Framework haben, aber Sie müssen lernen, wie man in einem Turtle-and-Patch-orientierten Paradigma programmiert, während Sie in Repast müssen lerne das + die Mechanismen hinter Java Groovy, aber du wirst später mehr Flexibilität bekommen. Geschwindigkeit ist hier nicht wirklich ein Kriterium (siehe unten).
Um klarer zu sein, können Sie in NetLogo effizient programmieren, wenn Sie die nativen Funktionen der Schildkröten und Patches maximal nutzen. Zum Beispiel, wenn Sie A * implementieren, anstatt eine Liste von Knoten zu implementieren, sollten Sie direkt die patchs verwenden und filtern sie mit stopfen wie folgt aus:
ask patchs with [criteria1 = value and criteria2 = value2] [do-some-stuff]
ask patchs with-min [criteria][do]
let var [somevalue] of min-one-of patches [criteria]
Auch wenn Sie nicht, einen Weg finden Effizient zu tun, was Sie wollen, achten Sie darauf, if maybe an extension exists (überprüfen Sie auch here unter Bibliotheken und Tools) für Ihren Zweck, wie die jetzt native Matrix-Erweiterung, die mir eine efficient neural network in NetLogo machen.
Auf der anderen Seite ist Repast möglicherweise flexibler als NetLogo (da Sie Zugriff auf die gesamte Palette von Java-Bibliotheken haben), aber ein bisschen komplexer, da Sie wissen müssen, wie Sie mit Groovy umgehen.
Wenn Sie ausschließlich an Geschwindigkeit interessiert sind, verwenden Sie KEINE ReLogo (NetLogo-ähnliche Syntax für Repast), die viel langsamer als NetLogo gezeigt wurde (siehe 2012 Papier unten). In jedem Fall wäre es das Beste, entweder eine Implementierung mit NetLogo mit den oben genannten Tricks zu versuchen, oder wenn Sie Ihre Anwendung zu einem späteren Zeitpunkt verwenden möchten, gibt es auch eine Distribution namens Repast für High Performance Computing, die die meisten entfernt Überlastung, die mit Schildkröten und Patches Objekte kommen, und somit kann es für echte Anwendungen verwendet werden. A similar extension exists for NetLogo in Clustern mit Parallelisierung zu berechnen, aber es ist keine offizielle Verteilung.
Wenn Sie mehr Infos über die verschiedenen Plattformen wollen, hier ist ein schöner Rückblick 2006:
Railsback, S. F., Lytinen, S. L., & Jackson, S. K. (2006). Agent-based Simulation Platforms: Review and Development Recommendations. SIMULATION, 82(9), 609-623.
und eine aktualisierte Version dieses Papiers im Jahr 2012 den Umgang mit NetLogo vs ReLogo:
Lytinen, S. L., & Railsback, S. F. (2012, April). The evolution of agent-based simulation platforms: A review of netlogo 5.0 and relogo. In Proceedings of the Fourth International Symposium on Agent-Based Modeling and Simulation.
/EDIT: Ich zitiert Jason, aber keine weiteren Details. Wenn Sie kognitive Agenten (anstelle von reaktiven Agenten) modellieren möchten, können Sie das in NetLogo mit dem inoffiziellen BDI extension tun, das gut funktioniert, aber ein wenig eingeschränkt ist (aber es ist leicht erweiterbar, da es reines NetLogo ist), aber Ihre beste Wette ist zu verwenden ein Framework, das speziell entwickelt wurde, um kognitive Agenten mit voller Unterstützung von AgentSpeak zu modellieren.
Jason ist sehr nett, da Sie Zugriff auf eine vollständige AgentSpeak Sprache + JAVA haben, um die technische Seite zu implementieren. In der Tat können Sie ganze Projekte mit nur AgentSpeak (was ich getan habe), aber Sie können auch mehr Java-orientierte Versionen machen, es liegt an Ihnen, wie Sie Ihr Programm zu entwerfen, das Ergebnis wird mehr oder weniger das gleiche sein. Dies bietet Ihnen viel Flexibilität in Ihrem Design-Workflow.
Tipp: Suchen Sie in der Dokumentation nach "Jason internal actions", um eine gute Beschreibung der verfügbaren AgentSpeak-Befehle zu erhalten.
Auch wenn Sie an Jason interessiert sind, könnten Sie Interesse an JaCaMo (= Jason + Cartago + Moise), die das Ergebnis einer Zusammenarbeit von drei Projekten Autoren, ein vollwertiges kognitives Agenten-Framework, die auch modellieren kann komplexe Umgebungen (mit Artefakttheorie) und Multiagentenorganisationen (Rollen, Gruppen, Missionen, etc.).
Ein letzter Rahmen, den ich kenne, aber keine Chance hatte, ist Mason, der 2D- und 3D-Umgebungen unterstützt. Hatte nie eine Chance, dieses hier zu probieren, also weiß ich nicht, wie das mit den anderen verglichen wird, aber Sie können es ausprobieren.
Um mehr über Jason zu erfahren, empfehle ich, das Buch zu verwenden: Programmierung von Agentensystemen in AgentSpeak mit Jason http://jason.sourceforge.net/jBook/jBook/Home.html –