F Behavior Space

En muchos de los casos que hemos visto aquí, el comportamiento del modelo depende de una variedad de parámetros: número de in- dividuos, proporciones, etc. Formalmente es lo que se conoce como el espacio de parámetros del modelo. El tamaño de este espacio se puede medir y una de sus medidas es el número de dimensiones que tiene, es decir, el número de parámetros que intervienen. También es impor- tante el tamaño y características del conjunto de valores que pueden tomar esos parámetros, ya que cada posible combinación de valores puede tener un comportamiento completamente distinto. Puede haber parámetros que tomen solo unos pocos valores distintos, mientras que otros pueden tomar infinitos valores 2 . Un ejemplo de lo anterior: supongamos que tenemos un modelo que depende de dos parámetros:

Tipo de individuo: que puede tomar 3 valores (0, 1 y 2). Edad del individuo: de la que sabemos que, simplemente, es un valor positivo. Aunque podemos extraer algunas restricciones co- mo, por ejemplo, una edad máxima de 100, hay infinitos valores entre 0 y 100, así que tomamos la decisión de discretizar la edad y considerar que solo pueden ser valores enteros.

Tras haber discretizado drásticamente el rango de valores para el segundo parámetro, el número de posibles combinaciones es 3 x 100 = 300 . A medida que incluimos más parámetros en el modelo 3 , nos acercamos a miles y cientos de miles de posibles combinaciones, que hacen impracticable una exploración manual para intentar encontrar comportamientos o fenómenos interesantes. La funcionalidad que ofrece BehaviorSpace es la de ejecutar mu- chas veces el modelo, modificando para cada ejecución sus parámetros y grabando los resultados que el usuario decida. Proporciona una for- ma de explorar secciones del espacio de posibles comportamientos y determinar, por ejemplo, qué combinaciones de configuraciones defi- nen comportamientos interesantes o compararlas entre sí para ver la influencia de los parámetros en la dinámica 4 . BehaviorSpace ofrece así una forma ordenada y metódica de rea- lizar la exploración del espacio de parámetros. Una exploración que, aunque la mayoría de las veces no podrá ser exhaustiva, si se diseña adecuadamente permitirá una aproximación más eficiente a la com- prensión del modelo, por ejemplo, mediante la ejecución sucesiva de experimentos con distintas ventanas: en una primera aproximación re- corremos el espacio de parámetros globalmente, pero sin mucho de- talle; una vez analizados los resultados iniciales, nos centramos en las zonas en las que el primer experimento haya mostrado algunas par- ticularidades especiales y generamos exploraciones parciales con más nivel de detalle; y así sucesivamente hasta que tengamos una compren- sión global del comportamiento del modelo. Además, los datos alma- cenados en cada experimento se graban en formatos que permiten ser analizados posteriormente con herramientas específicas de análisis de datos.

Nombre del experimento: que después servirá para reconocerlo en- tre la lista de experimentos, y también se incluirá en los resultados que se vayan almacenando durante su ejecución. Variación de variables: en esta zona indicaremos los parámetros

que vamos a modificar a lo largo de los experimentos y los diver- sos valores que tomarán. La forma de expresar ésta variación debe seguir alguno de los formatos siguientes: [ " v a r i a b l e " [ i n i c i o incremento f i n ] ] [ " v a r i a b l e " valor 1 valor 2 . . . valorn ] Por ejemplo: [“density” 10 25 57 89] hará moverse el parámetro density por los valores 10, 25, 57 y 89 (en ese orden), mientras que [“density” [10 20 50]] los hará moverse desde 10 a 50 de 20 en 20 (es decir, 10, 30 y 50). Las variables que se pueden cambiar son: todas las variables glo- bales que hayamos definido (incluidas aquellas que están asocia- das a controles del interfaz) y otras como max-pxcor , max-pycor , min-pxcor , min-pycor , world-width , world-height y random-seed 6 . Es importante entender cómo funciona el espacio de parámetros: los experimentos se ejecutarán con cada una de las posibles combi- naciones entre los valores de los parámetros tal y como se indica a continuación. Si se pone: [ x 1 2 ] [ y [ 10 1 12 ]] el espacio será (x,y)=(1,10),(1,11),(1,12),(2,10),(2,11),(2,12)

en este orden. Repetitions: Indica el número de repeticiones que se hará para ca- da punto del espacio de parámetros. Esta repetición puede ser im- portante si la evolución del modelo varía incluso para los mismos valores de los parámetros 7 . Measure runs: Indica qué valores mediremos en cada ejecución. Aquí se puede escribir cualquier reporte, por ejemplo: count turtles , y se pueden poner tantas medidas como se desee, una en cada lí- nea 8 . Measure runs at every step: Indica si las grabaciones de datos de- ben hacerse en cada paso del modelo o no 9 . Setup commands: Son los comandos que se usarán para iniciar el modelo en cada ejecución. Go commands: Los comandos que se usarán para ejecutar cada pa- so del modelo.

Stop condition: Permite introducir alguna condición de parada pa- ra cada ejecución 10 . También puede controlarse por medio de los procedimientos usados en Go commands. Se debe tener en cuenta que las medidas del ciclo en el que se produce la parada no se gra- ban, por lo que si se usa el control de parada en los procedimientos Go , es conveniente hacer la comprobación al principio del ciclo, no al final. Final commands: Son comandos adicionales que deben ejecutarse cuando cada ciclo de ejecución haya parado, por ejemplo para hacer algunos cálculos que también sea necesario almacenar cuando el modelo se haya detenido. Time limit: Permite fijar un número máximo de pasos en cada eje- cución. Si se desea que no haya máximo 11 basta poner el límite a 0 NetLogo proporciona un reporte que permite reconocer cómo van las ejecuciones de los experimentos desde el código, devolviendo qué ejecución del experimento es la actual: behaviorspce-run-number Ejecución de experimentos Para ejecutar un experimento basta seleccionarlo en el gestor de experimentos y pulsar sobre Run. La ventana de diálogo que aparece (figura 14.4) nos permite selec- cionar el formato en el que se almacenarán los datos. En general, se graba siempre el estado inicial del modelo tras ejecutar los comandos de setup, después se grabará en cada paso o al final de cada ejecución dependiendo de la opción Measure runs at every step seleccionada en el experimento. El formato Tabla genera una tabla en la que se escribe cada bloque en una fila y cada medida en una columna. Los datos se van grabando cuando se acaba cada ciclo de ejecución. Es un formato adecuado para importarlo en una base de datos o para manipularlo posteriormente con un paquete estadístico. El formato de hoja de cálculo (Spreadsheet) calcula el mínimo, máximo, media y valores finales de cada métrica, y después los almacena con cada bloque en una fila y cada medida en una columna. Este formato es apropiado para importarlo directamente en software de hojas de cálculo 12 ; se almacena en memoria y solo se graba al final, por lo que puede consumir una cantidad excesiva de memoria. En consecuencia, es aconsejable usar el formato de Tabla. Además, este diálogo nos permite seleccionar el número de experi- mentos en paralelo que se harán 13 . Se debe tener en cuenta lo siguien- te:

Aunque haya más de un experimento corriendo, solo uno de ellos se mostrará en pantalla. El resto se ejecutará en segundo plano. 2. El punto 1 implica que solo el experimento visible podrá ejecutar primitivas que hagan uso del interfaz gráfico (por ejemplo, grabar una película). 3. Como las ejecuciones paralelas no tienen por qué tardar lo mismo, el formato de tabla puede aparecer desordenado. 4. Si se usan todos los núcleos del ordenador, podría notarse una baja- da de rendimiento en otras tareas del ordenador mientras se ejecuta el experimento.

Cada experimento en paralelo consume la misma memoria 14 . Tras seleccionar el formato de salida, la herramienta pedirá un fi- chero donde almacenarlo (que por defecto tendrá extensión CSV). Mientras se ejecuta un experimento, aparece una ventana de título Running Experiment que ofrece información acerca de cómo está evo- lucionando el experimento. Si la opción Measure runs at every step fue seleccionada, se mostrará un gráfico con las medidas escritas du- rante la ejecución 15 . Si es necesario parar el experimento mientras está en ejecución, es mejor pulsar el botón Abort, porque de esta forma se grabarán todos los resultados generados. Actividad: Abre algunos de los modelos que conozcas bien (por ejemplo, alguno de los que ya hemos creado en el libro) y diseña experimentos que puedan arrojar luz acerca de alguna característica de su comportamiento.