Evolutionary Modelling Tools
Murat Yildizoglu
yildi[a_t]u-bordeaux4.fr
IFREDE-E3i
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:
- SWARM
- A set of libraries developed by the Santa Fe Institute (SFI)
- LSD
- A set of libraries developed by Marco Valente at IIASA-Vienna
and at IKE-Aalborg.
- ASCAPE
- A set of java(1.2) libraries developed by Miles T. Parker.
- Others
- 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):
- A ModelSwarm that creates and controls the activites of agents
in the model;
- An ObserverSwarm that collects information from the agents
(observations) and outputs them to a file or to graphs. these graphs
are nearly automatically generated by this module, using the
corresponding elements from the SWARM library;
- Classes for different agents in the model (firms, consumers) and
for some aggregate agents (markets, industries, economies) that
regroups actions and aggregate properties (market price,
concentration index of the industry).
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.
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.
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.
You will find many tutorial resources at the SWARM site. I particularly recommend
- the SIMPLEBUG tutorial by Chris Langton and the Swarm development team;
- the Swarm user manuel by Paul Johson.
- the Swarmfest 1999 tutorial by Benedikt Stefansson (also download his Swarm course at UCLA);
- The Swarm documentation is of course a must have;
- Even if you install the binaries, you should download and consult the sources as well: they contain the must up-to-date and explicit information once you have learned the ObjC language using the following document;
- The ObjC manual from the Apple site.
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.
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).
Following from the preceding paragraph, LSD can be used on MS-Windows and Linux systems.
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.
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.
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.
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.
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.
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: