Evolutionary Modelling Tools

Murat Yildizoglu


1 Introduction

Evolutionary modelling of economic dynamics uses simulations and it is strongly dependent on the programming experience and habits of each researcher. This induces a very high diversity of languages (going from the old APL to the newer Java) and environments (going from the quite portable GNU tools to very proprietary GUI environments like Visual C or Visual Cafe) used in the development of evolutionary models. This diversity, in its turn, implies a real difficulty in sharing the programming experience and in testing the results of different models by the peers. Another and more dynamic deficiency of this tradition is the non-cumulativeness in the development of the models: every new modeler chooses a particular language and s/he is confronted to the difficulty of writing every element of the simulation from the scratch (the model but also, the management of the simulations, their analysis, the GUI for input and output...). This is a very inefficient way of developing our paradigm. In the last few years we have seen the emergence of free tools that try to tackle this problem. These tools aim to provide a programming infra-structure (by providing libraries for building the interface, for managing the simulations and for saving/displaying/analyzing the results), in order to allow you to concentrate on the structure of your model. They generally are based on Object Oriented (OO) languages since this paradigm naturally includes the cumulativeness of the models. If you want to build upon an existing model, the inheritance mechanism can make easy the reuse of existing classes. In this page you will information about the packages that appear to be the most interesting ones from the point of view of my purely subjective evaluation. This subjective evaluation is nevertheless based on some objective dimensions, and I will try to share them with you. I hope this will help you in the choice of a fruitful programming environment for your models. At its present state, this page covers the following packages:
A set of libraries developed by the Santa Fe Institute (SFI)
A set of libraries developed by Marco Valente at IIASA-Vienna and at IKE-Aalborg.
A set of java(1.2) libraries developed by Miles T. Parker.
Non tested tools and libraries


SWARM is a set of free libraries developed at the Santa Fe Institute by Nelson Minar, Roger Burkhart, Chris Langton and Manor Askenazi. From the documentation:
``Swarm is a multi-agent software platform for the simulation of complex adaptive systems. In the Swarm system the basic unit of simulation is the swarm, a collection of agents executing a schedule of actions. Swarm supports hierarchical modeling approaches whereby agents can be composed of swarms of other agents in nested structures. Swarm provides object oriented libraries of reusable components for building models and analyzing, displaying, and controlling experiments on those models.'' (Overview.ps)
SWARM effectively provides a very complete set of libraries for managing the agents,the spatial structures for their environment, their activities, the aggregation of these activities and the analysis of their results. A simulation program based on SWARM schematically contains three types of objects (classes): First two types are relatively standard even if they should be adapted to the particular structure of your model. the last type contains the very agents of your model and you can enrichen them in a incremental way: beginning with very simple agents and adding more complex behaviour for agents that inherit from them.

2.1 Languages

SWARM is originally based on the Objective-C (ObjC) language in the sens that all basic classes of SWARM are written in this language. This is a particular flavour of the C language that is more strongly based on OO paradigm and that is able to dynamically type classes at the runtime. This is particularity makes the learning of SWARM slightly more difficult than from other systems that are based on standard C: Even if some economics departments teach C++, I don't know any that teaches, at the undegraduate level, the ObjC. On the other hand, if you already know C or Java, you can probably quickly learn the particularities of ObjC. Also, if you dont know any evolved language, you can as well begin with ObjC :-) SWARM Team has also developed recently a Java Native Interface (JNI) to SWARM libraries: If you already have a good understanding of the Java language, you can build on this knowledge and include the functionalities of the SWARM in your programs using the corresponding classes. But you will probably have to learn ObjC in order to correctly understand what these classes do. Nick Collier from the Social Science Research Computing (University of Chicago) has developped a plain java platform partly based on Swarm: Repast. There are also other projects for developping interfaces based on other standards. This document analyses some of them. It also discuss an interesting interface based on XML.

2.2 Operating systems

Following the preceding section, you will need an ObjC compiler if you want to use SWARM in its native language. GNU C compiler handles this language. You can use the original one provided in all LinuX distributions (and other Unix flavours), or you can use the Cygnus compiler for the MS-Windows system. You can download from the SWARM site binaries for different systems. The free Java compiler (Kaffee) allows for the use of the Java interface on Unix systems. SWARM is consequently quite portable. If you don't use a very exotic system, you should be able to install SWARM and a ObjC compiler.

2.3 Learning SWARM

You will find many tutorial resources at the SWARM site. I particularly recommend


Marco Valente has developed the Labarotory for Simulation Development (LSD) as part of his PhD. project first at IIASA and later at IKE. At its actual state, LSD is more limited than SWARM but it is specifically adapted for developping industry dynamics models inspired by Nelson & Winter (1982). But it is an open system and new functionality can be included by programming complementary functions. Recently LSD has become Open Source with a CVS server. LSD provides a graphical interface for putting in place the building blocks of the model. In this way, it is more user-friendly than SWARM. It is already a very nice system for teaching Nelson & Winter kind of models and some other canonical models are already implemented in LSD. If your research project is very close to this problematic, you can become efficient in LSD and obtain your first results quite quickly. LSD is based on an OO language but its proper logic is not really OO: you can not directly inherit from existing models but you can adapt their code quite quickly to your needs. The last version provides a new interface for managing all your models developed with LSD. You can freely donwload LSD from this page.

3.1 Language

LSD is written in C++ and you must develop your models using the same language. LSD uses the GNU compilers for Linux and the Cygwin compiler for MS-Windows. In this sens, it is sligthly less portable than SWARM. The Windows versions comes with a minimal subset of the Cygnus compiler and the setup is automatically done by the installation program. This eliminates a lot of installation problems (that frequently occur with each new version of Swarm, for example).

3.2 Operating systems

Following from the preceding paragraph, LSD can be used on MS-Windows and Linux systems.

3.3 Learning LSD

Marco and Esben have now developed a very extensive documentation and web site for LSD. The documentation comes in two parts: one for the direct users and one for the programmers who desire to develop their models.

4 Ascape

Miles T. Parker from the The Brookings Institution has a plain java platform partly similar to Swarm but more specifically oriented towards economic models: Ascape.

5 Others

I have found other tools on the web but have not find time to test them yet. I provide here their list with a small description taken from their web pages.

5.1 Cormas

This is a tool developped by CIRAD in France. The site is in French.
L'environnement de programmation CORMAS appartient à cette deuxième catégorie, avec une spécificité dans le domaine de la gestion des ressources renouvelables. Il offre un cadre de développement de modèles de simulation des modes de coordination entre des individus et des groupes qui exploitent ces ressources en commun.

5.2 MadKit

From the web page:
MadKit is a Java multi-agent platform built upon an organizational model. It provides general agent facilities (lifecycle management, message passing, distribution, ...), and allows high heterogeneity in agent architectures and communication languages, and various customizations.

5.3 Moduleco

From the webpage:
Moduleco is a "multi-agent" platform, at the crossroads between several disciplines, designed to simulate markets and organizations, social phenomenon and population dynamics.

My homesite

(c)Murat Yildizoglu, v.03 - Last changes: