2009-11-03 16 views
12

Me gustaría simular algunos escenarios usando el paradigma multiagente , y parece que NetLogo y Repast son las herramientas más populares para eso.NetLogo vs. Repast Simphony?

Me gustaría saber si alguien ha tenido alguna experiencia con cualquiera de ellos y podría decirme más sobre ellos? Por ejemplo, me he dado cuenta de que hay una opción de modelado similar al fluxograma para Repast, pero creo que es bastante limitada. He revisado los tutoriales y la documentación en el sitio oficial, y parece que falta la documentación. Si bien hay algunos ejemplos con él, diría que ampliarlo para simular un ambiente para el que no ha sido preparado específicamente parece ser un objetivo inalcanzable en este momento, a pesar de que Repast obviamente es muy robusto y aparentemente capaz de manejarlo, dado lo suficiente familiaridad con eso.

Por otro lado, NetLogo tiene más ejemplos y en general me gustó más por su simplicidad, pero parece estar más centrado en la propagación simulada de enfermedades o modelos similares. Encontré un libro de programación que enseña Logo, así que creo que sería más fácil comenzar a usarlo también.

Actualmente, estoy pensando en simular botnets y IDS es como multiagentes. El problema, sin embargo, es que tendría que abstraer la red y las capas de transporte hasta cierto punto para poder hacerlo, así como generar tráfico entre los nodos. Repast es aparentemente más apropiado para esto, pero dada su complejidad y falta de documentación, estoy pensando en usar NetLogo. Si bien hay algunos ejemplos de NetLogo con aplicaciones tradicionales (por ejemplo, Tetris o Pac-Man), no estoy seguro de cuán apropiado sería para eso.

Respuesta

1

Puede simular el tráfico utilizando un tipo de agente llamado "paquete" que se generará y enviará de un agente llamado "bot" a otro agente llamado "bot" o "servidor". En lugar de enviar los paquetes a una dirección IP, los enviaría a un par de coordenadas X e Y.

Netlogo tiene un ejemplo de cómo un virus se propaga en una red, este podría ser un buen punto de partida.

2

Tuve más o menos el mismo problema hace unos meses cuando tuve que elegir un marco para mi simulación. Miro Repast, NetLogo, Swarm y Jade. NetLogo fue agradable y traté de escribir algunas aplicaciones de prueba simples, pero como quería usar Java como mi lenguaje de programación, NetLogo no era el mejor candidato. Repast tiene prácticamente todo lo que necesita para escribir simulaciones más grandes y hay muchos proyectos (especialmente en ciencias sociales) donde se usa Repast. Mis problemas con Repasts fueron: mala documentación de la API, parámetros que se pasan a métodos o constructores que nunca se usan y que no tienen ningún sentido en absoluto (eche un vistazo al código fuente) y muchos códigos repetitivos. Estoy usando Jade (http://jade.tilab.com/) ahora y estoy muy contento con él. La comunidad es buena y su lista de correo es MUY activa. De acuerdo, Jade es solo una biblioteca y un marco para el modelado basado en agentes. No obtendrá nada como esos editores visuales en Repast y tendrá que escribir su propia herramienta para visualizar los resultados.

Saludos

0

que nunca han tratado de NetLogo, pero me han tratado Repast-J y Simphony. Parece que Simphony es bueno, pero en este momento estoy atascado en cambiar el tipo de Edge de línea recta a curva. No hay suficiente documentación y ejemplos disponibles. Una vez que probé Mason que se basa en Java, también. Es similar a Repast-J, pero fue más rápido. Pero recientemente no hay mucho desarrollo en Mason. Me gustaría probar Jade más tarde.

12

Tengo una página web con una pareja dormida netlogo multiagent simulations.Utilizo netlogo para la enseñanza y he descubierto que, una vez que superas la curva de aprendizaje, puedes desarrollar simulaciones increíblemente rápidas. Las cosas que le llevarían 80 horas hombre en otros entornos llamados de agentes (Jade, Repast, que en realidad son solo bibliotecas de programación) se pueden hacer en 2 horas.

Por otro lado, netlogo no es realmente bueno para simulaciones que requieren una gran cantidad de detalles, como por ejemplo simular una red desde TCP/IP a HTTP. Eso solo requeriría grandes cantidades de código, independientemente del lenguaje de programación, y netlogo actualmente apesta si su programa termina teniendo más de 10 páginas. Habiendo dicho eso, la mayoría de la gente se sorprendería de lo que se puede hacer en 10 páginas de código de red.

10

Respuesta corta: que depende del paradigma de programación o lenguaje que desea utilizar, y el diseño que desea para sus agentes:

  • si quieres una entrada baja - lenguaje de alto techo que permite prototipos rápidos pero simulaciones sofisticadas, y están dispuestos a aprender un nuevo paradigma (evitando bucles) use NetLogo. Buena documentación.

  • Si desea hacer una aplicación real para usar en racimos paralelizados altamente o simplemente desea utilizar Java Groovy o si necesita una biblioteca específica de Java para su propósito, utilizar Repast o mejor Repast for High Performance Computing (pero evite ReLogo que es muy lento) Documentación leve

  • Si se desea modelar agentes cognitivos (en vez de reactiva) con las comunicaciones del FIPA, mejor usar Jason o mejor JaCaMo que apoya AgentSpeak + Java (por lo que también puede utilizar sus bibliotecas favoritas Java), y no hay maravilloso requerido. Mala documentación (muchas características y comandos no detallados y ejemplos incorrectos demasiado complejos no comentados).

Respuesta larga: responsabilidad: tengo más experiencia con NetLogo sino también utilicé Repast y algunos otros como Jason.

Básicamente, la diferencia entre NetLogo y Repast es que con NetLogo tendrá un marco más simple, pero tendrá que aprender a programar en un paradigma orientado a tortuga y parche, mientras que en Repast tendrá que aprende que + los mecanismos detrás de Java Groovy pero eventualmente obtendrás más flexibilidad. La velocidad no es realmente un criterio aquí (ver más abajo).

Para ser más claros, puede programar de manera eficiente en NetLogo si usa al máximo las funciones nativas de las tortugas y los parches. Por ejemplo, si se desea implementar A *, en lugar de implementar una lista de nodos, se debe utilizar directamente los parches y filtrarlos utilizando telas de esta manera:

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] 

Además, si usted no puede encontrar una manera de haga lo que quiera de manera eficiente, asegúrese de marcar if maybe an extension exists (consulte también here en Librerías y Herramientas) para su propósito, como la extensión de matriz ahora nativa que me permitió hacer un efficient neural network in NetLogo.

Por otro lado, Repast es potencialmente más flexible que NetLogo (ya que tiene acceso a toda la gama de bibliotecas Java), pero es un poco más complejo ya que debe saber cómo manejar Groovy.

Si solo está interesado en la velocidad, NO use ReLogo (sintaxis similar a NetLogo para Repast) que ha demostrado ser mucho más lenta que NetLogo (consulte el documento 2012 a continuación). En cualquier caso, su mejor opción sería probar una implementación con NetLogo utilizando los trucos anteriores, o si desea utilizar su aplicación para real posterior, también hay una distribución llamada Repast para computación de alto rendimiento que elimina la mayor parte del sobrecarga que vienen con objetos de tortugas y parches, y por lo tanto se puede usar para aplicaciones reales. A similar extension exists for NetLogo para calcular en clústeres con paralelización pero no es una distribución oficial.

Si desea mas informaciones sobre las diversas plataformas, aquí es una buena revisión de 2006:

Railsback, S. F., Lytinen, S. L., & Jackson, S. K. (2006). Agent-based Simulation Platforms: Review and Development Recommendations. SIMULATION, 82(9), 609-623.

y una versión actualizada de este documento en 2012 frente a 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.

/EDITAR: He citado a Jason pero no dio más detalles. Si desea modelar agentes cognitivos (en lugar de agentes reactivos), puede hacerlo en NetLogo utilizando el BDI extension no oficial que funciona bien pero es un poco limitado (pero es fácilmente extensible ya que es NetLogo puro), pero su mejor opción es usar un marco diseñado específicamente para modelar el agente cognitivo con soporte completo de AgentSpeak.

Jason es muy agradable ya que tiene acceso a un lenguaje AgentSpeak completo + JAVA para implementar el aspecto técnico. De hecho, puede hacer proyectos completos usando solo AgentSpeak (lo cual hice), pero también puede hacer más versiones orientadas a Java, depende de usted cómo quiera diseñar su programa, el resultado será más o menos el mismo. Esto le ofrece mucha flexibilidad en su flujo de trabajo de diseño.

Consejo: busque "Jason internal actions" en la documentación para obtener una buena descripción de los comandos AgentSpeak disponibles.

Además, si usted está interesado en Jason, que podría estar interesado en JaCaMo (= Jason + Cartago + Moise) que es el resultado de la cooperación de los tres autores de proyectos para hacer un marco agentes cognitiva de pleno derecho, que también puede modelar entornos complejos (con teoría de artefactos) y organizaciones de agentes múltiples (roles, grupos, misiones, etc.).

Un último framework que conozco pero que no tuve la oportunidad de probar es Mason que admite entornos 2D y 3D. Nunca tuve la oportunidad de probar este, así que no sé cómo se compara con los demás, pero puedes probarlo.

+0

Para obtener más información sobre Jason, sugiero utilizar el libro: Programación de sistemas multi-agente en AgentSpeak con Jason http://jason.sourceforge.net/jBook/jBook/Home.html –

0

Si ya se puede código en Java, también puede mirar en el siguiente documento para una comparación entre Repast, Swarm, Quicksilver, y VSEit, diferente libremente disponible programando las bibliotecas de apoyo de sociales agente científica simulación por ordenador basada

Tobias, Robert, and Carole Hofmann. "Evaluation of free Java-libraries for social-scientific agent based simulation." Journal of Artificial Societies and Social Simulation 7.1 (2004).

Repast es definitivamente más flexible que NetLogo pero la documentación no es muy detallada para Repast Sinfónica de

Cuestiones relacionadas