Part I. Introduction
I-4. Introduction to NetLogo
This chapter gives an overview of NetLogo (Wilensky, 1999), the modeling platform that we use in this book to implement agent-based evolutionary models. Here we explain that NetLogo:
- is easy to learn,
- powerful,
- very well documented,
- allows the user to interact with the model while it is running,
- includes a tool (i.e., BehaviorSpace) that makes the automatic exploration of the parameter space of any model very easy,
- is open-source and free,
- can be run on multiple platforms and online,
- has an active and helpful community of users,
- there are excellent resources that can be used to learn it,
- includes several extensions that extend its basic functionalities,
- can be used to conduct experiments with real people, and
- can be linked with other software like R, Python, Mathematica or Matlab.
1. What is NetLogo?
NetLogo is a well-written, easy-to-install, easy-to-use, easy-to-extend, and easy-to-publish-online environment. The entry level is simple enough and the tutorials provided in the package are straightforward and clear enough that anyone who can read and is comfortable using a keyboard and mouse could create their own models in a short time, with little or no additional instruction. Sklar (2007, p. 7)
NetLogo is a modeling environment designed for coding and running agent-based simulations.[1]
Nowadays, there are many languages and software platforms that can be employed to create agent-based models,[2] and at the time of writing NetLogo is the most widely used. We recommend NetLogo and will use it throughout this book for the many reasons we outline below.
Easy to learn
NetLogo stands out as the quickest to learn and the easiest to use. Gilbert (2007, p. 49)
The language used to code models within NetLogo –which is also called NetLogo– has been designed following a “Low Threshold, No Ceiling” philosophy (Wilensky and Rand, 2015). All reviews of the software highlight how easy it is to learn. To be concrete, we would estimate that an average scholar without previous coding experience can learn the basics of the language and be in a position to write a simple agent-based model after 2-4 days of work. Someone with programming experience could reduce the estimated time to 1-2 days.
One characteristic that makes the NetLogo language easy to learn is that it is remarkably close to natural language. As a matter of fact, NetLogo language could perfectly be used as pseudo-code to communicate algorithms implemented in other languages.
Since NetLogo was designed to be easily readable, we believe that NetLogo code is about as easy to read as any pseudo-code we would have used. NetLogo also has the big advantage over pseudo-code of being executable, so the user can run and test the examples. (Wilensky and Rand, 2015, p. xiv)
NetLogo language is definitely simpler to use than e.g. Java or Objective-C, and can often reduce programming efforts significantly when compared with other languages.
Powerful
NetLogo has become a standard platform for agent-based simulation, yet there appears to be widespread belief that it is not suitable for large and complex models due to slow execution. Our experience does not support that belief. Railsback et al. (2017, abstract)
NetLogo is powerful in that it can accommodate reasonably large and complex simulations, and its execution speed is more than acceptable for most purposes. NetLogo can easily run simulations with several tens of thousands of agents.
Excellent documentation
NetLogo is by far the most professional platform in its appearance and documentation. Railsback et al. (2006, p. 613)
One of the reasons why NetLogo is so easy to learn is that it is very well documented. The user manual includes three tutorials to help beginners get started, an excellent programming guide, and a comprehensive dictionary with the definitions of all NetLogo primitives, including examples of how to use them. NetLogo also comes with an extensive library of models from different disciplines (e.g. art, biology, chemistry, computer science, mathematics, networks, philosophy, physics, psychology, and other social sciences) and several code examples which succinctly illustrate particular features and coding techniques.
Possibility to interact with the model at runtime
NetLogo is designed to allow the user to interact with the model during runtime in a variety of ways:
- By modifying parameter values at runtime, with immediate effect on the simulation. This feature is very convenient to assess the impact of different assumptions in the model and conduct exploratory work.
- By running commands in the middle of a run to e.g. create new agents, remove others, or make a subset of them take some action.
- By probing agents to see –and potentially set– the value of any of their individually-owned variables at any time.
Automatic exploration of parameter space
NetLogo includes a software tool named BehaviorSpace (Wilensky and Shargel, 2002) which greatly facilitates running a model many times, systematically varying the desired parameter values, and keeping a record of the results of each run. Besides, computational experiments set up with BehaviorSpace can be run from the command line, i.e. without having to open NetLogo’s graphical user interface. This feature is particularly useful for launching large-scale experiments in computer clusters.
Open-source and free
NetLogo can be downloaded for free at http://ccl.northwestern.edu/netlogo/. Its source code is publicly hosted on GitHub at https://github.com/NetLogo/NetLogo, where users can open issues to request the implementation of new features or to report bugs.
Multiplatform and online execution of models
NetLogo can run on Windows, Mac or Linux. Most modern computers will run NetLogo without any trouble. It can also be used online through NetLogo Web. NetLogo Web can also be used to create stand-alone versions of NetLogo models in HTML format. These self-contained versions can be run in any browser without having to install any software.[3]
Great support and active user community
NetLogo developers are always happy to receive feedback and enhancement requests (at feedback@ccl.northwestern.edu), and bug reports (at bugs@ccl.northwestern.edu). There is also an active community of NetLogo users who post their questions and help each other at the NetLogo Forum, the NetLogo-Users Google group and on StackOverflow.
Abundance of quality resources
At https://ccl.northwestern.edu/netlogo/resources.shtml you can find plenty of quality resources to learn NetLogo. These include references to textbooks, papers that make use of NetLogo, courses given at middle schools, high schools and Universities all around the world, competitions and tutorials. There are also many video tutorials on YouTube.
This reviewer, who has used NetLogo for both research and teaching at several levels, highly recommends it for instructors from elementary school to graduate school and for researchers from a wide range of fields. Sklar (2007, p. 8)
Extensions to fulfill specialised needs
Extensions are add-ons that extend the NetLogo language with new primitives created to fulfill specialised needs. Some of these extensions come bundled with NetLogo, some have been created by NetLogo developers but must be downloaded separately, and others have been created by third parties. Four representative examples of useful extensions that come with NetLogo are:
- The rnd extension, which provides efficient primitives to make random weighted selections, with or without replacement.
- The nw extension, which adds many primitives to generate networks, compute several network-related metrics, and import and export network data.
- The matrix extension, which adds a matrix data structure to NetLogo and several primitives to operate with it.
- The GIS (Geographic Information Systems) extension.
Useful to conduct experiments with real people and for participatory modeling
The NetLogo release includes HubNet (Wilensky and Stroup, 1999), a technology that enables users to communicate and interact with each other through NetLogo. Thus, Hubnet can be very useful to run participatory simulations and experiments, in which human users can be part of the simulation and interact among themselves and with artificial agents.
Happy to link with other software
NetLogo is now a powerful tool widely used in science and we recommend it strongly, especially for those new to modeling and programming but also for serious scientists with software experience. Lytinen and Railsback (2012)
NetLogo can be linked with advanced software tools like R (R Core Team, 2019), Python (Python Software Foundation, 2019), Mathematica (Wolfram Research, Inc., 2019) or Matlab (The MathWorks, Inc., 2019). Specifically, using an R package called RNetLogo (Thiele (2014); Thiele et al. (2012a, 2012b, 2014)), it is possible to run and control NetLogo models from R, execute NetLogo commands, and obtain any information from a NetLogo model. The connector PyNetLogo (Jaxa-Rozen and Kwakkel, 2018) provides the same functionalty for Python, and the so-called Mathematica link (Bakshy and Wilensky, 2007) for Mathematica. The Mathematica link comes bundled as part of the latest NetLogo releases.
Conversely, one can also call R, Python and Matlab commands from within NetLogo using the R-Extension (Thiele and Grimm, 2010), the NetLogo Python extension (Head, 2018) and MatNet (Biggs and Papin, 2013) respectively.
2. How to learn NetLogo
To make the most of this book, we recommend you get familiar with the NetLogo environment and with NetLogo programming. This will normally take from a few hours to a couple of days, depending on your programming skills, and can be accomplished doing the following tasks:
- Download and install NetLogo following the instructions at https://ccl.northwestern.edu/netlogo/. In this book we will be using NetLogo version 6.4.0.[4]
- Go through the three tutorials in the NetLogo user manual, i.e.
After having gone through the previous material, you will have obtained the required NetLogo background to follow this text without any problems. In the next chapter we review the main concepts of NetLogo and give an overview of the structure of most NetLogo models, using the Schelling-Sakoda model as an illustration.
- NetLogo was created by Uri Wilensky and is under continuous development at the Northwestern's Center for Connected Learning and Computer-Based Modeling. It is also important to acknowledge Seth Tisue, who "worked meticulously to guarantee the quality of the NetLogo software" (Wilensky and Rand, 2015, p. xxii) as lead developer for over a decade. ↵
- To our knowledge, the most up-to-date and comprehensive review of agent-based simulation software has been conducted by Abar et al. (2017), who compare 85 tools using a convenient tabular and chart format, and deem NetLogo both easy to use and also appropriate to execute medium/large-scale simulations. Another recent review that assesses and compares NetLogo with other platforms has been published by Kravari and Bassiliades (2015). There is also a wikipedia page set up by Nikolai and Madey (2009) which provides an up-to-date comparison of agent-based software toolkits. Finally, it is also possible to code agent-based models using general-purpose programming languages directly. In the context of evolutionary game theory, Isaac (2008) convincingly demonstrates how this can be easily done with Python. ↵
- This can be done by uploading any NetLogo model to NetLogo Web and exporting it as HTML. ↵
- Please, make sure you download version 6.1.0 or greater. NetLogo syntax changed significantly in version 6.0, and a little bit in 6.1.0. Version 6.4.0 introduced many new features in BehaviorSpace, but we will not be using these new features in this book. ↵