Complex systems simulations generally involve the interaction of different scientific fields. Human economies, ecosystems or dynamic computer networks are good examples. Since models and simulators already exist in those fields, designing the simulation as a society of interacting models and interacting simulators appears attractive. Indeed, following that way, we can reuse existing and well validated models from different scientific fields. Beyond the conceptual and technical issues to make the different models and simulators cooperate, a challenge is also to facilitate the design and implementation of these societies of interacting models and simulators.


Facilitate the design of complex simulations

We take the assumptions that we want to build a society of interacting models that already exist. As a consequence, the models may have been written each in a different formalism. However, we do not want rewrite a global model (made of all the interacting ones) in a single formalism. Moreover, we want to reuse the existing tools (i.e. the simulators). As a consequence, our goal is to reduce the overhead of modifying both the existing models and simulators. Our proposal is to apply the AOSE concepts of Agents and Artefacts to the modeling and simulation field. To be generic enough we only take very few hypothesis about the existing models and simulators we reuse. use a decentralized coordination model in order to escape from a global scheduler.

Coherence between models

A conceptual issue that arise when we couple several models, is that scales or dimensions in which a piece of data is represented could be different from a model to another. Moreover the representation can be discrete or continuous. As a consequence, in order for two models to interact (i.e. to exchange data), we may need to take several operations [Bonneaud] on the data flow.

Compatibility between simulators

A technical issue that arise when we couple several simulators, is that each simulator could implement a single piece of data in its own way (integer, float...) or some simulators may not implement all aspects of a given model.


When executing the models, we must be sure that local causality constraint is respected [Fujimoto]. Moreover, as we want to reduce the overhead of modifying both models and simulators, we propose to avoid the use of a global scheduler. That is, we want to make coordination in a decentralized way.


A model is a black box with input and output ports [Zeigler00].
We take the assumption that a simulator implements those functions.
init() Initialize the model (e.g. set initial parameters, set random seed...).
run() Execute the model (one simulation event, one simulation step, for a given simulation time interval...).
getOutputData() Return output data from the model output ports.
setInputData() Set input data to the model input ports.
getCurrentTime() Return the current simulation time.
getNextTime() Return the next simulation time. Don't need that function anymore (since revision 0.2) see the research report
stop() Manage the end of the simulation process (e.g. print results, close results files...) [optional].

Agent and Artefacts concepts in use

We propose to use the Agent and Artefact paradigm to solve the previous issues. Please refer to [Ricci08] if you are not familiar with the Agents and Artefacts concepts.

Model Agents

Their role is to manage the simulation process for a given model  + to manage the input/output data flows.
model agent symbol

Coupling artefact

Deal with the coherence and compatibility issues. Posses one input port (in which a model-agent can post the data to exchange) and at least one output port (in which a model-agent can read the exchanged data).
coupling artefact symbol

Model artefacts

Interfaces in order for the agents to interact on the model (init, exec, set input, get output).
model artefact symbol

How coordination occurs ?

We propose to use objective coordination. That is, coordination does not rely on a single entity but is provided by the surrounding environment. This method is well known in the field of situated multi-agent systems (stigmergy) or in parallel systems (shared memory). This provides a way to loosely couple and to coordinate the interacting processes. In our case, the simulators interact through the set of data they exchange. The simulation algorithm is explained in the research report


My own papers on the subject [SAC10,AAMAS10,Rapport]
Related papers [Ricci08][Zeigler00][Fujimoto][Bonneaud]