Krótka odpowiedź: to zależy od paradygmatu programowania lub języka, którego chcesz użyć, a także projektowania chcesz dla agentów:
Jeśli chcesz low-entry -wysokiego języka sufitu umożliwiającego szybkie prototypowanie, ale wyrafinowane symulacje i są skłonne nauczyć się nowego paradygmatu (unikanie pętli) używają NetLogo. Dobra dokumentacja.
Jeśli chcesz mieć rzeczywisty aplikację do używania na wysoko parallelized klastrów lub po prostu chcesz używać Java Groovy lub potrzebujesz konkretnej biblioteki Java dla celów użyj repast lub lepiej Repast for High Performance Computing (ale uniknąć ReLogo który jest bardzo powolny). Łagodna dokumentacja.
Jeśli chcesz modelować czynniki poznawcze (zamiast reaktywnego) z komunikacji Fipa, lepiej użyć Jason lub lepiej JaCaMo który obsługuje AgentSpeak + Java (więc można również wykorzystać swoje ulubione bibliotek Java), i nie ma Groovy wymagane. Zła dokumentacja (wiele nieszczegółowych funkcji i poleceń oraz złe, zbyt złożone, nie skomentowane przykłady).
Długa odpowiedź: Zastrzeżenie: Jestem bardziej doświadczony z NetLogo ale kiedyś również posiłek i kilka innych, takich jak Jason.
Zasadniczo różnica między NetLogo i Repast polega na tym, że dzięki NetLogo będziesz miał prostsze ramy, ale będziesz musiał nauczyć się programowania w paradygmacie zorientowanym na żółwia i łatę, podczas gdy w Repast będziesz musiał dowiedz się, że + mechanizmy stojące za Java Groovy, ale ostatecznie uzyskasz większą elastyczność. Prędkość nie jest tu tak naprawdę kryterium (patrz poniżej).
Aby być bardziej zrozumiałym, można wydajnie programować w NetLogo, jeśli używa się maksymalnie funkcji natywnych dla żółwi i łatek. Na przykład, jeśli chcesz wdrożyć A *, zamiast wdrażać listę węzłów, należy użyć bezpośrednio patchs i filtrować je przy użyciu pasz tak:
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]
także, jeśli nie może znaleźć drogę do sprawnie rób to, co chcesz, sprawdź: if maybe an extension exists (sprawdź także here pod Bibliotekami i narzędziami) w twoim celu, tak jak teraz macierzyńskie rozszerzenie macierzy, które pozwoliło mi wykonać efficient neural network in NetLogo.
Z drugiej strony, Repast jest potencjalnie bardziej elastyczny niż NetLogo (ponieważ masz dostęp do całej gamy bibliotek Java), ale nieco bardziej skomplikowany, ponieważ musisz wiedzieć, jak obsługiwać Groovy.
Jeśli interesuje Cię wyłącznie szybkość, NIE używaj ReLogo (składnia podobna do NetLogo dla Repast), która okazała się być dużo wolniejsza od NetLogo (zobacz artykuł z 2012 roku poniżej). W każdym przypadku najlepiej jest wypróbować implementację za pomocą NetLogo, korzystając z powyższych sztuczek, lub jeśli chcesz użyć aplikacji na później, istnieje również dystrybucja o nazwie Repast for High Performance Computing, która usuwa większość przeciążenia, które pochodzą z żółwi i łatek obiektów, a zatem może być stosowany do rzeczywistych aplikacji. A similar extension exists for NetLogo do obliczania w klastrach z równoległością, ale nie jest to oficjalna dystrybucja.
Jeśli chcesz więcej info o różnorodnych platformach, tu jest ładny przegląd 2006:
Railsback, S. F., Lytinen, S. L., & Jackson, S. K. (2006). Agent-based Simulation Platforms: Review and Development Recommendations. SIMULATION, 82(9), 609-623.
i zaktualizowana wersja tego dokumentu w 2012 roku do czynienia z 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.
/EDYCJA: Zacytowałem Jason, ale nie podałem żadnych szczegółów. Jeśli chcesz modelować agenty poznawcze (zamiast agentów reaktywnych), możesz to zrobić w NetLogo używając nieoficjalnego BDI extension, który działa dobrze, ale jest nieco ograniczony (ale jest łatwy do rozszerzenia, ponieważ jest to czysty NetLogo), ale najlepiej jest użyć framework zaprojektowany specjalnie do modelowania agenta poznawczego z pełną obsługą agenta AgentSpeak.
Jason jest bardzo ładne, ponieważ masz dostęp do pełnego języka AgentSpeak + JAVA w celu wdrożenia strony technicznej. W rzeczywistości można wykonywać całe projekty przy użyciu tylko agenta AgentSpeak (co zrobiłem), ale można również tworzyć więcej wersji zorientowanych na język Java, to od ciebie zależy, jak chcesz zaprojektować program, a wynik będzie mniej więcej taki sam. Zapewnia to dużą elastyczność w obiegu pracy projektowej.
Porada: wyszukaj "Jason internal actions" w dokumentacji, aby uzyskać dokładny opis dostępnych poleceń programu AgentSpeak.
Również jeśli interesuje Cię Jason, możesz być zainteresowany JaCaMo (= Jason + Cartago + Moise), który jest wynikiem współpracy trzech autorów projektów, aby stworzyć pełnoprawną strukturę agenta poznawczego, która może również modelować złożone środowiska (z teorią artefaktów) i organizacje z wieloma agentami (role, grupy, misje itp.).
Ostatnią ramą, którą znam, ale nie miałem okazji spróbować, jest Mason, która obsługuje środowiska 2D i 3D. Nigdy nie miałem okazji wypróbować tego, więc nie wiem, jak to się ma do innych, ale możesz go wypróbować.
Aby uzyskać więcej informacji o Jasonie, proponuję skorzystać z książki: Programowanie systemów wieloagentowych w AgentSpeak przy użyciu Jason http://jason.sourceforge.net/jBook/jBook/Home.html –