IODA NetLogo Frequently Asked Questions

IODA NetLogo 2.2 User Manual   

Direct links to other parts of the IODA NetLogo Manual:General DocumentationTutorialDictionary

Your feedback is very valuable to us in enhancing the IODA NetLogo extension. Please send comments, suggestions, questions or bug reports to the authors.

Topics

General

Running

Programming

Interactions files

Matrix files

Misc

General

Why is this extension called IODA?

"IODA" stands for "Interaction-Oriented Design of Agent simulations".

How do I cite IODA in an academic publication?

Where and when was IODA created?

This methodology is born in the MultiAgent Research Team of the "Laboratoire d'Informatique Fondamentale de Lille" (LIFL, UMR CNRS 8022) at the University Lille 1, France. For more information on IODA please consult the IODA webpage.

What programming language was IODA written in?

Under what license is IODA NetLogo released? Is the source code available?

The IODA NetLogo extension is released under the GNU General Public License, version 3 (see http://www.gnu.org/licenses). It is free and open source. The Java source code is available in the ioda/src folder, and the simulation engine is in the IODA_2_1.nls file. We encourage users to report bugs or any suggestion for enhancing this extension, and share their IODA-based models with the NetLogo user community.

Running

What version of NetLogo is IODA NetLogo 2.2 compatible with?

The IODA NetLogo extension version 2.2 is fully compatible with NetLogo version 5.0. If you are using NetLogo 4.1.3, please use the 2.0 instead. The 2.2 version only incorporates API changes from NetLogo 4.1.3 to NetLogo 5.0, but does not use the new features (such as tasks) yet.

Is IODA NetLogo compatible with NetLogo 3D?

Not yet. Especially, the simulation engine (nls include file) has been designed to cope with 2D patches only. However, it should work with little code modification, both in Java classes and NetLogo include file.

Is the simulation slower with IODA?

Yes, a bit slower. This is due to several factors. First, the simulation engine makes use of the NetLogo run and runresult primitives, especially to instantiate abstract primitives (used in the definition of interactions) into concrete IODA primitives (depending on the breed of agents), for instance hungry? into wolves::hungry?. In the forthcoming version of IODA NetLogo (2.3 ?), the use of tasks should fix this problem.

In addition, the simulation engine itself defines its own scheduler, and the interaction selection process is not that simple. Especially, perception might be costly: for instance, if you have a large number of patches, you should treat them as a discrete portion of space, rather than as agents.

Yet, we the think that for simulations involving complex relations between several kinds of entities, the loss of performance is widely counterbalanced by the facility to design and change models.

Programming

Interactions files

What is the name of the file which defines interactions?

The name you want, since you can load any (syntactically correct) interactions file with the command ioda:load-interactions. Still, a name like "interactions.txt" is quite relevant.

Is the definition of interactions case-sensitive?

No. You can write keywords, interaction names and primitive names in uppercase or lowercase.

What is the syntax for defining an interaction?

The syntax is the following (as mentioned in the file interactions.txt in the tutorials/0-template folder):

[EXCLUSIVE|PARALLEL] INTERACTION <name>
[TRIGGER <tr1> ... <tr_n>]
[...]
[TRIGGER <tr'1> ... <tr'_n>]
[CONDITION <cond1> ... <cond_n>]
[...]
[CONDITION <cond'1> ... <cond'_n>]
[ACTIONS <act1> ... <act_n>]
END

What is absolutely required is the interaction name. All other elements are optional.
The basics of interactions are described in this section of the tutorial. The difference between exclusive and parallel interactions is explained in there.
When you specify triggers and conditions, one trigger line (at least) and one condition line (at least) must be fulfilled so as to allow the interaction to occur. A trigger (or condition) line is fulfilled if and only if all primitives of the line report true. Thus, if you need to define alternative conditions or triggers, e.g. a year is a leap year if it is divisible either by 400, or by 4 but not by 100 (cf. tutorials, folder 4b-leap years), you can express this logical disjunction by using two CONDITION clauses.
Actions are performed in the specified sequence.

Matrix files

What is the name of the file which defines interaction and update matrices?

The name you want, since you can load any (syntactically correct) matrix file with the command ioda:load-matrices. Still, a name like "matrix.txt" is quite relevant.

Are the interaction matrix or the update matrix case-sensitive?

No. You can write breed names, interaction names and other keywords in uppercase or lowercase.

Misc

How do I export my model as an applet?

In order to make your applet work, you need to put the following files in the same directory:

Contact Information

Authors: Sébastien Picault and Philippe Mathieu

Email: ioda (at) univ-lille1.fr

Web Site: http://www.lifl.fr/SMAC/projects/ioda

Terms of Use

Valid HTML
  4.01 Strict

All contents © 2008-2013 Sébastien PICAULT and Philippe MATHIEU – SMAC Research Team
Laboratoire d'Informatique Fondamentale de Lille (LIFL), UMR CNRS 8021
University Lille 1 – Cité Scientifique, F-59655 Villeneuve d'Ascq Cedex, FRANCE.

The IODA NetLogo extension is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The IODA NetLogo extension is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with IODA NetLogo extension. If not, see http://www.gnu.org/licenses.