2011-04-29 17 views
5

¿Cómo puedo incluir los procedimientos de un archivo Netlogo en otro? Básicamente, quiero separar el código de un algoritmo genético de mi función de fitness (bastante complicada), pero, obviamente, quiero que el reportero de fitness, que residirá en "fitness.nlogo", esté disponible en el código del algoritmo genético, probablemente "genetic.nlogo".Incluyendo un archivo fuente Netlogo en otro

Si se puede hacer, ¿cómo se importan los procedimientos y se ejecuta el código? ¿Es como Python, donde la importación de un módulo prácticamente ejecuta todo en el módulo, o como C/C++, donde el archivo está "unido" ciegamente?

Esto puede ser una pregunta estúpida, pero no pude encontrar nada en Google. La documentación de Netlogo dice algo sobre __includes, una palabra clave experimental que puede funcionar, pero no se explica mucho. Ningún ejemplo tampoco.

¿Alguna pista? ¿Debo ir con __includes? ¿Como funciona?

+0

Encontré mis respuestas experimentando. El archivo que se debe incluir se debe llamar "something.nls" y se incluye de esta manera en el archivo principal: '__includes [" something.nls "]'. No tengo idea de qué rutas explora para encontrarlo, pero funciona si el archivo incluido está en la misma carpeta que el archivo principal. Los espacios de nombres parecen estar unidos, como en C++. Además, 'tortugas-own [new-property]' se respeta si se encuentra en el archivo incluido. – CamilB

Respuesta

11

Para incluir un archivo que utiliza

__includes["libfile.nls"] 

Después de añadir esto y presionando el botón “Check”, un nuevo botón aparecerá al lado del menú desplegable Procedimientos. Allí puede crear y administrar múltiples archivos de origen.

libfile.nls es solo un archivo de texto que contiene el código de NetLogo. Es no un modelo de netlogo, que siempre termina en .nlogo, ya que un modelo de NetLogo contiene mucha otra información además del código de NetLogo.

Incluir un archivo es el equivalente a simplemente insertar todo su contenido en ese punto. Para hacer que funcione de una manera similar a los archivos de biblioteca reutilizables, se deben crear procedimientos que utilicen conjuntos de agentes y parámetros como variables de entrada para que sean independientes de las definiciones globales o de la configuración de la interfaz.

La función está documentada en el Manual del usuario de NetLogo en http://ccl.northwestern.edu/netlogo/docs/programming.html#includes.

+1

Has dado una explicación más corta pero más clara de lo que encontré al experimentar con __includes. Espero que la gente lea tu respuesta antes de mi comentario anterior. – CamilB

+0

En la pestaña 'código', hago clic en el menú desplegable' includes', luego en 'New source file'. Ahora se abre una nueva pestaña con 'Nuevo archivo'. ¿Cómo puedo nombrar este archivo? –

Cuestiones relacionadas