Cursos: Programación con NetLogo
Objetivos
El objetivo de este minicurso es el de proporcionar una aproximación rápida a la programación con NetLogo. Puede usarse como un primer paso para comprender desde un punto de vista técnico los ejemplos que se distribuyen en la Biblioteca de Modelos de la herramienta, así como la elaboración de pequeñas modificaciones para experimentar con ellos y adaptarlos a las necesidades del usuario. Debe tenerse presente que está más centrado en el uso de NetLogo como herramienta de programación que en la explicación de cómo funciona conceptualmente el modelado con sistemas multiagente.
En la bibliografía se pueden encontrar otros cursos y material similar con un nivel de detalle superior, se recomienda acudir a ellos en caso de necesitar un aproximación más profunda u orientada más al problema del modelado.
Introducción
NetLogo es un lenguaje de programación simple y adaptado al modelado/simulación de fenómenos en los que aparecen muchos individuos (agentes) interactuando, por ejemplo, en los fenómenos habituales que se dan en la naturaleza, las sociedades, o muchas áreas de las ciencias.
Entre sus características más destacadas están:
- es adecuado para modelar sistemas que evolucionan en el tiempo (especialmente, los denominados sistemas complejos),
- es adecuado para modelar las interacciones de centenares, o miles, de individuos y su entorno (personas, bacterias, insectos, organizaciones, nodos de un grafo, etc.),
- permite explorar la conexión existente entre las interacciones locales a nivel de individuo y los patrones globales que emergen de dichas interacciones y que se pueden medir como propiedades del sistema como unidad.
Es también un ambiente de programación fácil e intuitivo de usar para crear y probar nuevos modelos:
- Permite abrir y experimentar por medio de simulaciones.
- Permite crear modelos rápidamente para comprobar hipótesis sobre sistemas descentralizados.
- Viene con una gran biblioteca de simulaciones en ciencias naturales y sociales, que pueden ser usadas y modificadas.
- Los modelos se constryuen usando un lenguaje muy simple, que incluso es adecuado como primer lenguaje de programación, y que tiene inspiración en el paradigma funcional/declarativo (basado en el primitivo Logo).
- Posee una interfaz gráfica intuitiva y fácil de usar, donde es posible crear entornos interactivos para experimentar con los modelos.
- Dispone de un sistema de extensiones (plugins) que permiten ampliar las capacidades de la herramienta en diversas direcciones: desde ampliaciones del lenguaje con librerías matemáticas, de GIS, estadísticas o de estructuras de datos o de programación, hasta conexiones con otros lenguajes (R, Python, Matlab,...).
A pesar de todas las ventajas, no debe olvidarse que tiene ciertas limitaciones. El objetivo de NetLogo es proporcionar una herramienta de prototipado y desarrollo rápido de modelos de simulación, no de aplicaciones finales, por lo que está más cerca de una herramienta de exploración científica que de un lenguaje de programación estándar. Estas limitaciones se traducen, por ejemplo, en:
- No genera aplicaciones independientes, sino que los modelos creados deben ser ejecutados dentro del mismo entorno de desarrollo de NetLogo (o por línea de comandos desde la versión no gráfica).
- La generación de proyectos de cierta envergadura es una tarea incómoda en NetLogo, porque proporciona herramientas muy básicas para la división de código en módulos independientes.
- El usuario (ya programador) ha de superar una pequeña barrera inicial para resolver problemas con NetLogo, porque presenta algunas características conceptuales que lo diferencian ligeramente de los lenguajes de programación más comunes.
Contenido
El contenido del curso que se propone (que es dinámico e irá creciendo según sean las necesidades observadas en los estudiantes) se divide en dos bloques:
- Por una parte, encontramos los temas generales, que revisan las partes centrales del lenguaje de programación (algunas características serán similares a las que podemos encontrar en otros lenguajes de programación, mientras que otras serán específicas de este lenguaje).
- Por otra parte, hay un conjunto de temas específicos que contemplan particularidades que pueden ser de interés para algunos usos concretos.
- Finalmente, también se proporcionan enlaces a documentación de extensiones del lenguaje que pueden ser especialmente interesantes para el tipo de problemas que abordamos en estas entradas.
Generales | Específicos | Extensiones | |||
![]() |
Fundamentos | ![]() |
Interfaz | ![]() |
CSV |
![]() |
Estructuras | ![]() |
Experimentos | ![]() |
Matrices |
![]() |
Procedimientos | ![]() |
Ratón | ![]() |
Arrays |
![]() |
Listas | ![]() |
Table | ||
![]() |
Grafos | ![]() |
Networks | ||
![]() |
Python | ||||
![]() |
R |
Recursos Bibliográficos
- García Vázquez, J.C. y Sancho Caparrini, F. NetLogo: Una herramienta de Modelado
. 2016.
- Wilensky, U y Rand, B. Introduction to Agent-Based Modeling: Modeling Natural, Social and Engineered Complex Systems with NetLogo, 2015.
- Izquierdo, L. NetLogo 6.0 Quick Guide, 2017.
- Quesada, F. Introducción al Lenguaje NetLogo y la programación basada en agentes, 2018.