Skip to content
Charles edited this page Dec 22, 2022 · 163 revisions

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.

Sharing your extension

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.

Bundled extensions

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:

Other CCL extensions

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)

Community extensions

Auction

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

DBSCAN

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.

Dist

by Nicolas Payette

The dist extension makes it easy to plot frequency distributions and complementary cumulative distribution functions in NetLogo.

Vector View

by Ahmad Esmaeili

This extension enables exporting models' current view to a vector image file. The supported formats are EPS, PDF, and SVG.

FactBase

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).

Fuzzy Logic

by Luis R. Izquierdo & Marcos Almendres

Extension that facilitates the use of fuzzy sets and fuzzy logic within NetLogo.

NetLogo-FEBio

by Matt Biggs

An example code-base for integrating NetLogo with FEBio (a software package for finite element analysis).

OSC

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.

Queue

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.

SQL

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.

IODA

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)

CogLogo

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.

R

by Jan C. Thiele and Volker Grimm

Allows the interchange of data with R and the call of R functions from NetLogo.

BMPSprites

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.

Graphics

by J. McKenzie Alexander

Exposes a number of Java Graphics2D commands for drawing on the drawing layer.

MIDI

by Martin Dobiasch

Offers more complete support for MIDI than the bundled sound extension.

Pathdir

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.

Random Number Generators

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.

Mixed Integer Linear Program (MILP) Solver

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.

String

by James Steiner

Extends NetLogo to include several useful string-manipulation primitives (a la the Java standard library).

Arduino

by Zach Haga

Lets you use an Arduino board with NetLogo

numanal (numerical analysis)

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).

NetProLogo (NetLogo + Prolog)

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.

stats (some statistical procedures)

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.

uneof

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

gs (GraphStream)

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.

NetCDF

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.

MATLAB

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.

Soundx

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.

File

by Andreas Ihrig (alias RoboMod)

Provides new file interactions. So far implemented are filtering file extension for user dialog and reading/managing zip files.

Graph6

by Erika Suárez, Andrés Ricardo

Export a network to a graph6 format file.

OWL

by Gary Polhill

Export the state and structure of the model as an OWL ontology

Bitstrings

by Gary Polhill

Create and work with bitstrings (strings of 1s and 0s) in NetLogo models

ActiveMQ

by Fernando Ribeiro

Supports communication with Apache ActiveMQ.

Symbolic Dynamics

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.

For NetLogo 4.1 only

The following extensions are not yet available for NetLogo 5.x.

SynthExtension

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.

nlboris

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.

Multiview

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.

BDI and FIPA ACL

by Ilias Sakellariou, Petros Kefalas, and Ioanna Stamatopoulou

Supports development of goal-oriented agents that communicate using FIPA-ACL messages.

MySQL

by Yuelei Li

This extension for accessing MySQL databases can execute SQL commands such as select, insert, update, etc.

Random Number Generators

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)

jGE (Java Grammatical Evolution)

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)

Agentlist

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.

for NetLogo 4.0

see this separate page

Note that 4.0 extensions don't work with 4.1 or 5.0 (unless they are recompiled).

Clone this wiki locally