NetLogo

NetLogo is a multi-agent programmable modeling environment. It is used by many hundreds of thousands of students, teachers, and researchers worldwide. It also powers HubNet participatory simulations. It is authored by Uri Wilensky and developed at the CCL. You can also try it online through NetLogo Web.


Usage

The latest version of NetLogo (currently version 6.2.0) is made available with the commands below:

$ # First load the Java Module
$ module load Java/11.0.2
$ # Now load the Netlogo
$ module load NetLogo/6.2.0-64

After this any of the NetLogo commands can be run from the terminal prompt. The available commands are below:

$ # Run the GUI command to open the program interactively,
$ # ensure X11 forwarding is enabled in your SSH client.
$ netlogo-gui.sh

$ # Run the headless (no GUI command) for batch jobs with appropriate arguments substituting for $ARGS.
$ netlogo-headless.sh $ARGS

Note

NetLogo will use only a single core by default but can be parallelised using the included BehaviorSpace tool for performing parameter sweeps (loading one model run per core and queueing jobs for each core.)

See: https://ccl.northwestern.edu/netlogo/docs/behaviorspace.html

Command line options for the headless executable include:

  • --model <path>: pathname of model to open (required)

  • --setup-file <path>: read experiment setups from this file instead of the model file

  • --experiment <name>: name of experiment to run

  • --table <path>: pathname to send table output to (or - for standard output)

  • --spreadsheet <path>: pathname to send table output to (or - for standard output)

  • --threads <number>: use this many threads to do model runs in parallel, or 1 to disable parallel runs. defaults to one thread per processor.

  • --min-pxcor <number>: override world size setting in model file

  • --max-pxcor <number>: override world size setting in model file

  • --min-pycor <number>: override world size setting in model file

  • --max-pycor <number>: override world size setting in model file

Warning

NetLogo makes use of a hardcoded path for the models directory which will be incorrect by default. To correct this you can make a symlink to the models directory in your current working directory with the commands: [ ! -d "./models" ] && ln -s $EBROOTNETLOGO/app/models models

Without this, the models library menu item will not load correctly.


Interactive usage

After connecting to Bessemer (see Establishing a SSH connection), start an interactive session with the srun --pty bash -i command.

To use NetLogo interactively you must use the netlogo-gui.sh start script. To do so, run the following commands and the GUI will open:

$ module load Java/11.0.2
$ module load NetLogo/6.2.0-64
$ # Optional symlink if use of the models library is required.
$ # [ ! -d "./models" ] && ln -s $EBROOTNETLOGO/app/models models
$ netlogo-gui.sh

Batch usage

The following batch_smp_4_core.sh example is derived from the BehaviorSpace command line instructions provided in the NetLogo documentation: http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html#running-from-the-command-line

This uses the BehaviorSpace tool from NetLogo to perform a parameter sweep using 4 cores and 8GB of memory with the Wolf Sheep Simple 5 example model. Use of the BehaviorSpace tool is highly recommended to ensure good parallelism in multicore NetLogo jobs.

batch_smp_4_core.sh:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=4
#SBATCH --mem=8000
#SBATCH --job-name=NetLogo_BehaviorSpace_smp_4
#SBATCH --output=NetLogo_BehaviorSpace_smp_4
#SBATCH --time=00:10:00
#SBATCH --mail-user=a.person@sheffield.ac.uk
#SBATCH --mail-type=ALL
module load Java/11.0.2
module load NetLogo/6.2.0-64
[ ! -d "./models" ] && ln -s $EBROOTNETLOGO/app/models models
netlogo-headless.sh \
--model "./models/IABM Textbook/chapter 4/Wolf Sheep Simple 5.nlogo" \
--experiment "Wolf Sheep Simple model analysis" \
--table table_output.csv \
--spreadsheet spreadsheet_output.csv \
--threads $SLURM_NTASKS

The job is submitted to the queue by typing:

$ sbatch batch_smp_4_core.sh

And will generate the normal log output file in addition to table_output.csv and spreadsheet_output.csv in the current working directory.

Installation notes

Installation method

NetLogo version 6.2.0 was installed using Easybuild 4.4.0, build details can be found in /usr/local/packages/live/eb/NetLogo/6.2.0-64/easybuild/

The NetLogo configuration files (.cfg) at /usr/local/packages/live/eb/NetLogo/6.2.0-64/app/ have been amended to permit a larger default JVM “maximum Java heapsize” of 192GB RAM. For further details see: https://ccl.northwestern.edu/netlogo/docs/faq.html#how-big-can-my-model-be-how-many-turtles-patches-procedures-buttons-and-so-on-can-my-model-contain


Testing

Testing has been conducted by running an interactive session testing the ./models/IABM Textbook/chapter 4/Wolf Sheep Simple 5.nlogo example in addition to running the batch job using the BehaviorSpace methodology as above.


Modulefiles

The module file is on the system at /usr/local/modulefiles/live/eb/all/NetLogo/6.2.0-64.