Configuración del experimento de NetLogo

9

Estoy trabajando en un modelo en Netlogo y tengo problemas para entender cómo configurar un "experimento". En mi modelo, tengo una matriz que tiene todos los valores que me interesan (6 en total) y la matriz se actualiza cada vez que se cumple una condición (cada vez que se matan X tortugas) básicamente capturando una instantánea de la modelo en ese punto. Los valores anteriores en la matriz se borran, por lo que la matriz es una matriz 1x6, no una matriz 10000x6 con solo una línea que se actualiza para cada instantánea.

Lo que me gustaría hacer es configurar un experimento para ejecutar mi modelo varios cientos de veces, recolectando esta matriz cada vez para el primer número X de instantáneas o hasta que se produzcan los tics Y. ¿Pero no puedo ver una manera de hacerlo en la configuración del experimento?

¿Es esto posible, o tendría que crear 100x6 (100 instantáneas) y luego exportar esa matriz a un CSV de alguna manera?

Nunca he configurado un experimento en Netlogo, por lo que puede ser muy fácil de hacer o simplemente imposible.

Diesel
fuente
Hice una respuesta usando BehaviorSpace ya que creo que sería lo más fácil. Pero no hay ningún problema con la creación de un archivo csv y la adición de cada instantánea a medida que se crea. Es decir, no necesita tener una matriz de 100x6 y exportar eso. La razón por la que no recomiendo este enfoque es que también dice que desea varios cientos de ejecuciones separadas, y esto le daría un archivo csv separado para cada ejecución.
JenB

Respuestas:

3

Si entiendo su pregunta correctamente, entonces desea que se reporten 6 valores en tics específicos durante la ejecución. Esos ticks se eligen cumpliendo una condición en lugar de un cierto número de ticks. NetLogo tiene una herramienta de gestión de experimentos llamada BehaviorSpace. Es sencillo configurar sus cientos de ejecuciones (potencialmente con diferentes valores para cualquier entrada en controles deslizantes, etc.). No es tan sencillo emitir solo en ciertos ticks.

El cuadro de diálogo BehaviorSpace tiene una marca de verificación para cada marca o solo al final. Si lo tiene configurado en cada marca, entonces puede exportar sus seis números cada marca automáticamente. En su caso, es probable que sea más fácil hacer eso que intentar y solo generar resultados ocasionalmente. Podría agregar un séptimo reportero que sea verdadero / falso para determinar si la matriz se está restableciendo con esta marca. Entonces, todo lo que tiene que hacer en el procesamiento posterior es seleccionar las líneas donde ese séptimo reportero es verdadero.

Si desea ejecutar el modelo para exactamente N instantáneas, también necesitará configurar una variable global que se incremente en cada punto de instantánea. La configuración de BehaviorSpace usaría ese contador para la condición de detención.

JenB
fuente
2

No estoy seguro de entender su pregunta, pero por lo general tendrá una función de configuración y una función de ejecución, ¿correcto? Así que supongo que la estructura del código a continuación debería ser lo que estás buscando. No he usado netlogo en un tiempo, así que el código exacto de la matriz tendrá que averiguarlo usted mismo.

globals your-1by6-matrix your-100by6-matrix

to setup
  ;reset your experiment
end

to run
  ;run your experiment
end

to run100times
  repeat 100[
    setup
    run
    ;save your 1by6matrix into your 100by6matrix
  ]
  ;use your 100by6matrix to plot or export
end
Jumboman
fuente