Extensions
NetLogo's extensions facility allows NetLogo's capabilities to be extended from Java, Scala, and other JVM languages. See the Extensions section of the NetLogo User Manual and the guide to the Extensions API.
For other sorts of add-ons and tools for NetLogo, see Resources.
The CCL has authored a number of extensions that are bundled with NetLogo. Community members have also authored extensions. We encourage users to write their own extensions and share them.
We strongly encourage authors to share their extensions with the community. Even if your extension is not completely finished or documented, it may be still be useful to others. This wiki page is community-editable; please add your extension here. Better yet, you can make your extension easily accessible to the NetLogo community by getting it listed in the Extension Manager. For information on how to do that, see this page.
For descriptions of the extensions bundled with NetLogo, see the Extensions section of the NetLogo User Manual. Source code (Scala or Java) for the bundled extensions is hosted here on GitHub:
- Arduino
- Array
- Bitmap
- Control Flow
- CSV
- GIS
- GoGo
- LevelSpace
- Matrix
- Network
- Palette
- Profiler
- R
- Rnd
- Sound
- Table
- Time
- Vid
- View2.5D
Note: Due to low adoption for some of these extensions, we do not plan to update all of them to work with NetLogo 6. If you use one or more of the extensions listed in this table and would like to see it upgraded to 6.x, please send an email to our feedback address.
Name | Description | Author(s) | Info | Download |
---|---|---|---|---|
Custom-Logging | Allows for programmatic logging | Jason Bertsche | Info | Download 5.X |
eXtraWidgets | Allow creating tabs and putting custom widgets in them through code. | Nicolas Payette | Info | Download 5.x |
Goo | Manipulates the GUI widgets in NetLogo's Interface tab from NetLogo code. | Seth Tisue, Eric Russell | Info | Download 5.x |
Gradient | Introduces the scale primitive into NetLogo, for allowing the creation of color gradients. |
Daniel Kornhauser | Info | Download 5.x (see palette extension) |
Gst-Video | A video extension for NetLogo based on the open source media framework GStreamer. | Sam Cedarbaum, Jason Bertsche | Info |
Windows 5.x Mac OS 5.x |
K-Means | Allows basic k-means clustering | Nicolas Payette | Info | Download 5.x |
Landscapes | For creating continuous function optimization problem landscapes | Nicolas Payette | Info | Download 5.x |
Props | Allows you to read and write Java system properties from within NetLogo. | Jason Bertsche | Info | Download 5.x |
Python | Allows you to run Python code from NetLogo. It works with both Python 2 and 3, and should work with almost all Python libraries. | Bryan Head | Info | Download 6.x |
RayTracing | Interfaces with POV-Ray ray tracing rendering engine. | Rumou Duan, Forrest Stonedahl | Info | (see info 5.x) |
Rnd | Adds primitives for doing weighted random selection. | Nicolas Payette | Info | Download 5.x (bundled in NetLogo 6) |
Runs | Interacts with the (yet unreleased) Model Runs feature | Nicolas Payette | Info | Download |
Shell | Invokes external shell commands, reads and sets environment variables. | Eric Russell | Info | Download 5.x, Download 6.x |
Speech | Speech-synthesis for Mac OS X. | Andrei Scheinkman | Info | (see info) |
Test | Allows writing unit tests in NetLogo. | Josh Cough | Info | (see info) |
URL | Does HTTP GET and POST from NetLogo code. (Now superseded by the Web extension) | Forrest Stonedahl | Info | Download 5.x |
VRML | Creates VRML files from NetLogo. | Forrest Stonedahl | Info | (see info 5.x) |
Web | Allows you to import/export all sorts of NetLogo-specific data over HTTP, and overall allows you to make HTTP requests to your heart's content. | Jason Bertsche | Info | Download 5.x |
Wiimote | Interfaces with the Nintendo Wiimote. | Michelle Wilkerson-Jerde, Gregory Dam, Nathan Holbert | Info | (see info 5.x) |
by Mike Tamillow @ Unicorn Markets
Extension implementing a discrete-time auction to find an ideal price for all fills and execute fills during a market clearing event. Transactional currencies and assets are defined by the user allowing trades to be conducted where an asset in one market becomes a currency in another market. Currently, only supports the return of the traded market-price data and volume during the most recent clearing event. Advancements include digesting data in discrete time from continuous time, providing more detailed resultant data, giving users the option to keep or delete orders (currently deletes all every clear), and giving priority to standing orders on this criteria.
Auctions in multi-agent simulations are a field of study under Agent-Based Computational Economics and application to industry is the practice of Unicorn Markets
by Christopher Frantz
The extension dbscan
facilitates unsupervised clustering of agents and patches using the density-based clustering algorithm DBSCAN. Clustering can be performed based on specified agent/patch variables or by location.
by Nicolas Payette
The dist
extension makes it easy to plot frequency distributions and complementary cumulative distribution functions in NetLogo.
by Ahmad Esmaeili
This extension enables exporting models' current view to a vector image file. The supported formats are EPS, PDF, and SVG.
by Ruth Meyer
Extension providing a new data type: a structured set of data called a "fact base". A fact base can be thought of as a table of named columns (fields), where each row comprises an entry (fact).
by Luis R. Izquierdo & Marcos Almendres
Extension that facilitates the use of fuzzy sets and fuzzy logic within NetLogo.
by Matt Biggs
An example code-base for integrating NetLogo with FEBio (a software package for finite element analysis).
by Rodrigo F. Cadiz, Marco Colasso, Byron Christodoulou & Teodoro Dannemann
Updated for Netlogo 6.x. Provides primitives to send data from NetLogo models via OSC (Open Sound Control) to third party applications.
by Ruth Meyer
Extension providing a new data type: a queue with time-weighted statistics. This is a commonly used component in discrete event simulations, particularly in models of queueing systems.
by Jan Blom, Rene Quakkelaar and Mark Rotteveel
JDBC based extension for accessing databases using SQL queries. Supports MySQL and PostgreSQL out of the box, with generic support for other JDBC-compatible databases.
- info/downloads (for NetLogo 5.x and 4.1)
by Sebastien Picault and Philippe Mathieu
Provides a NetLogo implementation of the 'Interaction-Oriented' Methodology for the design of multiagent simulations. In this method, the behaviors involved in the model can be designed independently from the specificities of the agents, and expressed through abstract condition/action rules ('interactions' written in a text file), which are processed afterwards by a generic simulation engine. The way agents interact one with another is also described through a text file which is loaded during setup.
The package consists of:
-
a jar-based extension which defines all objects required for building an interaction-based simulation
-
a netlogo include file (.nls) which defines a simulation engine, compliant with the IODA approach
-
several programming examples
-
a detailed documentation with a step-by-step tutorial
-
infos/download (for NetLogo 5.x and 4.1)
by François Suro (suro@lirmm.fr)
Provides a NetLogo implementation of the Cogniton architecture, which focuses on the design of multiagent simulations of complex socio-cognitive systems.
by Jan C. Thiele and Volker Grimm
Allows the interchange of data with R and the call of R functions from NetLogo.
- info/downloads (for NetLogo 5.x, 4.1, and 4.0)
by Thomas Dickerson
Exposes tools for loading and working with rasterized sprite sheets. Supports scaling, "chromakey"-style tinting to make select regions match turtle colors, and flipping of sprites.
- info/downloads (for NetLogo 5.x)
by J. McKenzie Alexander
Exposes a number of Java Graphics2D commands for drawing on the drawing layer.
- info/downloads (for NetLogo 5.x)
by Martin Dobiasch
Offers more complete support for MIDI than the bundled sound extension.
- info/downloads (for NetLogo 5.x and 4.1)
by Charles Staelin
An extension for working with files and directories in NetLogo.
Pathdir provides tools for finding the name of the current model, the current working, user and model directories; creating, moving, renaming, identifying and deleting directories; and listing the contents of directories. Pathdir also allows one to find the size and modification date of files. Use Pathdir v3.1 for NetLogo 6.1, 6.2 and 6.3, Pathdir v3.0 for NetLogo 6.0, and Pathdir v2.0 for NetLogo 5.x.
- info/downloads (for NetLogo 5.x, 6.0 and 6.1, 6.2 & 6.3)
by Adam MacKenzie
An extension that allows for designation of multiple independent random number streams, and broadens the type of random distributions available for use.
- info/downloads (for NetLogo 5.x)
This is an extension that integrates functionality from the lp_solve MILP library into NetLogo. Optimizations can be in the form of max or min problems. The dual of maximization problems can also be solved. Distribution files include an example .nlogo file with explanations of syntax.
- info/downloads (for NetLogo 4.x, 5.x and 6.1)
by James Steiner
Extends NetLogo to include several useful string-manipulation primitives (a la the Java standard library).
- info/downloads (for NetLogo 5.x)
by Zach Haga
Lets you use an Arduino board with NetLogo
by Charles Staelin
The NumAnal extension contains methods for finding the roots of single equations (Brent) and multivariable systems of equations (Newton and Broyden), for optimizing (finding the minima of) single equations (Brent) and multivariable functions (BOBYQA, CDS, CGS, CMAES, DES and Simplex), for solving linear programming problems, for finding fixed points (Scarf), and for evaluating definite integrals (Romberg).
- info/downloads (for NetLogo 6.1)
by Juan Galán Páez
NetProLogo (NetLogo + Prolog) is a NetLogo extension that allows to run Prolog inside NetLogo in order to add the good Prolog features about reasoning to NetLogo agents (turtles, links and patches... or the observer). On May 2015 we have published a new version based on SWI-Prolog engine.
- info/downloads (NetLogo 5.x + SWI-Prolog 6.x).
by Charles Staelin
The “stats” extension provides basic statistical functions for data generated within NetLogo models. stats maintains an internal data table of observations on an arbitrary number of variables and allows the user to find such statistics for the data as the means, medians, quantiles, percentiles, standard deviations, and variance-covariance and correlation matrices; to regress one or more variables on another; and to forecast the value of any variable into the future based on past observations. Regression statistics include R2, Adjusted R2, F and the probability of F, and for each of the coefficients, the standard error, T statistic and probability of the T statistic. stats also provides values of and the areas under the normal, log-normal, student, binomial, gamma, beta and Chi-Square distributions, and, for some, their inverses.
Although stats can be used to analyze the overall results of a run of a model, it is intended mostly for the use of “smart” agents who gather and analyze data in order to make decisions. Agents can maintain their private data tables, or use tables shared as globals, or both.
- info/downloads (for NetLogo 6.1, 6.0 and 5.x)
by Marshall Abrams
When NetLogo is reading a file and encounters the end of the file, it assumes that this point in the file will always be the file's end, and that data will never be added. This extension adds the file-at-end-now? reporter, which can be used instead of NetLogo's file-at-end?. If new data is added to a file subsequent to an encounter with the end of file, calling file-at-end-now? allows NetLogo to read the new data.
Requires
- info/downloads (for NetLogo 5.x)
by Stefan Balev
This extension connects NetLogo to other applications supporting the NetStream protocol, such as GraphStream-based applications. NetLogo agents can use its primitives to send graph events. By receiving and processing these events, the external application can maintain and analyze a dynamic graph view of a NetLogo simulation. The nodes of this graph correspond to the turtles and its edges are the links between them. The agents can also receive graph events from external applications and use them to take their decisions.
- info/downloads (for NetLogo 5.x)
by David Kaplan
Extension for reading data from NetCDF files (.nc extension; often used for atmospheric or oceanographic data) into NetLogo. The extension is able to read data from multiple NetCDF files into nested NetLogo lists.
by Matt Biggs
Extension for accessing Matlab from a NetLogo script. Includes primitives for passing data back and forth between NetLogo and Matlab, and the evaluation of any valid Matlab commands, including running scripts and packages available in the user's Matlab environment.
by Eyal Ofeck, Sharona T. Levy , Orly Lahav
The soundx extension enables playing audio files concurrently. It also enables control of gain and pan. This ability can enrich a model with very nice sound effects, having full control of the stereo 'location'(left <-> right) of the sound and its volume which could give the user the feeling of depth or distance within the NetLogo spatial.
- info/downloads (for NetLogo 5.x)
by Andreas Ihrig (alias RoboMod)
Provides new file interactions. So far implemented are filtering file extension for user dialog and reading/managing zip files.
by Erika Suárez, Andrés Ricardo
Export a network to a graph6 format file.
by Gary Polhill
Export the state and structure of the model as an OWL ontology
by Gary Polhill
Create and work with bitstrings (strings of 1s and 0s) in NetLogo models
by Fernando Ribeiro
Supports communication with Apache ActiveMQ.
by Dave Dixon
This extension provides the capability to record state symbols, report state symbol statistics real-time, and output the symbolic trajectory in a form that allows comparison across multiple models or runs. Includes a version of the Heatbugs model from the NetLogo Library the includes symbolic dynamics monitors.
In symbolic dynamics, each unique state of the system is represented by a distinct symbol. In this implementation, the distinct symbols are short character strings similar to genome sequences. When a system goes through of series of states, the saved string of state symbols is called a symbol trajectory.
The symbolic dynamics extension adds a system-state viewpoint to a NetLogo simulation. The user defines one or more state variables, then saves the current state symbol. The extension also provides a number of real-time statistics about the symbol trajectory.
The following extensions are not yet available for NetLogo 5.x.
by Toby Gilham
Produces sound from NetLogo without using sound files or MIDI.
The extension currently allows for 2 different types of sound generation, simple tones with a duration and wave front interpretation. It is all written in Java and uses a separate thread to handle the sound generation.
- download (for NetLogo 4.1)
by Simon Lynch
Enables NetLogo agents to send messages to/from other NetLogo agents.
The download contains:
- a
README
file describing the other files used -
nlboris.jar
– the extension - two PDF files (a tutorial & a reference guide)
- three models which use the extension --- these are examples used in the tutorial to illustrate how the extension works
To get an overview please check the tutorial & the models.
- download (for NetLogo 4.1)
by Jan C. Thiele
Adds further windows for displaying patches.
It is possible to define a patch variable, which should be used for colorization. Therefore it can be used to visualize more than one patch-variable at a time (it can’t visualize turtles currently). The colorization can be actualized in each simulation step and there is a reduced set of right-mouse-click functions available (export to graphics file, inspect patch x y). The settings of the view about the size and number of patches is used for each extra view-window.
I used this stuff to visualize vegetation cover degrees of patches on different vertical layers in a forest and tested it with NetLogo v 4.1 and 4.1.1 (on Win XP and Ubuntu). The zip-file contains the extension, the source code, a html documentation and a simple example.
- download (for NetLogo 4.1)
by Ilias Sakellariou, Petros Kefalas, and Ioanna Stamatopoulou
Supports development of goal-oriented agents that communicate using FIPA-ACL messages.
- info/downloads (for NetLogo 4.1)
by Yuelei Li
This extension for accessing MySQL databases can execute SQL commands such as select, insert, update, etc.
- download (for NetLogo 4.1)
by Adam MacKenzie
Includes all of the core NetLogo probability distributions, as well as Negative Binomial and Beta distributions.
Broadens the scope of Dr. O'Sullivan's "Multiple Random Number Generator".
Usage is as follows:
-
rngs:init
clears all random number generators -
rngs:set-seed <stream_id> <seed>
creates a random number generator with identifier<stream_id>
with a seed value (positive integer) of<seed>
. Seeds of zero will be seeded from the system clock.
Probability distribution declarations are below. A random number generator must be created with the rngs:set-seed
command prior to use below.
-
rngs:rnd-float <stream_id> <range>
returns a uniform number between (0, range) -
rngs:rnd-norm <stream_id> <mean> <std-dev>
-
rngs:rnd-poisson <stream_id> <mean>
-
rngs:rnd-gamma <stream_id> <alpha> <lambda>
-
rngs:rnd-exponential <stream_id> <mean>
-
rngs:rnd-negbinomial <stream> <trials> <p(success)>
-
rngs:rnd-beta <stream_id> <alpha> <beta>
-
download (for NetLogo 4.1)
by Loukas Georgiou
Allows NetLogo users to get familiar with and use Grammatical Evolution in their models.
The jGE NetLogo v2.0 is a jGE (Java Grammatical Evolution) library extension for NetLogo 4.1. The jGE library (link) was the first implementation of Grammatical Evolution in Java.
Another goal of this extension is to allow people interested in Evolutionary Computation to use Evolutionary Algorithms (like Grammatical Evolution) directly within a modelling environment like NetLogo for the evolution of the morphology and behaviour of agents.
Just unzip the following archive to the extensions folder and you can use the Grammatical Evolution algorithm in your NetLogo models.
The zip archive includes also:
-
Documentation and Manual
-
Source code
-
Demonstration model
-
jGE Library
-
Demo BNF grammars
-
download (for NetLogo 4.1)
by FliegenderFisch
Converts an agentset to a list of agents with a simple primitive agentset-to-list
.
Note: I just figured out that one could do the same by using sort agentset
which reports a (sorted) list of agents. I will leave the file up for download in case someone is interested in this code as a start for his own extension.
- download (for NetLogo 4.1)
see this separate page
Note that 4.0 extensions don't work with 4.1 or 5.0 (unless they are recompiled).
- Extensions
- NetLogo Libraries
- Controlling API
- Extensions API
- 6.0 Extension and Controlling API Transition-Guide
- Optimizing NetLogo Runs
- Setting English as the Default Language when Running NetLogo
- Unofficial Features
- Advanced Installation
- Optimization List
- Java System Properties and how to use them
- NetLogo on ARM Devices
- Multiple Views via HubNet
- Branches
- Building
- Tests
- Windows Setup
- Continuous Integration
- Draft: How to Help
- Google Summer of Code Ideas List
- Syntax Highlighting
- Building with IntelliJ
- Code Formatting
- Localization
- File (.nlogo) and Widget Format
- Benchmarking
- Releasing
- Preparing the Models Library for Release
- Documentation
- NetLogo Bundled Java Versions
- JOGL
- Plugins API
- Architecture
- LazyAgentset
- Model Runs and Review Tab
- Model Runs: To Do and Code Overview
- Notes on in Radius
- Archived Branches
- The nlogox format
- Touch API Proposal
- Why isn't NetLogo "Parallel"?
- Potential Speedups
- Tortoise
- SimServer, WebStart, and NetLogo in Classrooms