Why a new platform?
For certain problems appropriate models may be built and desired research may be performed using available means - without specialized infrastructure (features of uniform motion may be explored using a battery-propelled toy car and a stopwatch, a toy car let down the slope may help in understanding motion with constant acceleration, etc.). However, the research on complex systems (e.g. factory assembly line) and phenomena (e.g. metal casting) often requires great effort that must be put on examining their determinants, defining conditions for experimental runs, and the observed features analysis. Therefore, appropriate strategies of performing experiments must be defined, requiring placing of sensors and reading them, statistical processing of the acquired data and computing their plausibility.
Unfortunately, paraphrasing Heisenberg’s uncertainty principle, by introducing sensors into the system (e.g. reading the temperature during casting), the conditions of experiments are changed, and readings of these sensors are affected by their presence. Also ‘live’ system analysis suffers from constrained possibilities of repeating the experiments with exactly the same conditions, which is required for statistical processing of acquired data.
Obviously, there exists a possibility of constructing mathematical models, which allow to formalize certain aspects of phenomena under interest, e.g. the process dynamics based on differential equations or Markov chains. Yet such models are usually quite complex and have limited (though non-disputable) applicability in pure theoretical analyses. Computer-based models and simulations support the researcher with powerful means to create a virtual environment and conduct experiments with a possibility to repeat the simulations under different conditions, generating vast amounts of data ready to be processed statistically for presentation. Thus, appropriately defined simulation may help in understanding systems or phenomena of interest, prior to performing real-life experiments.
As digitial computers are discrete-time machines per se, discrete-time simulation becomes a natural way of defining such models and implementing different supporting tools. Since it was possible to generalize typical elements of such models (e.g. objects, events, actions), dedicated software tools became available, most of them proprietary, but several open-source too. At the same time the idea of agency seems well suited for implementation of heterogeneous complex systems simulations, as the globally controlled algorithm is replaced with local perception and interactions among the agent, its neigbours in the environment and the environment itself. The resulting combination of the discrete and agent-based approach constitutes a base for a wide range of simulation systems.
Agent-based simulation frameworks
Among a variety of problems (sociological, biological, etc.) requiring simulation approach there are complex processes observed in populations consisting of a huge number of different, possibly autonomous individuals. For such problems macroscale models may be defined, which allow for understanding the dynamics of the emerged phenomena using appropriate mathematical apparatus, in order to perceive its certain features. Alternatively, mimicking the behaviour of single interacting entities, and observing the emerged phenomena in the whole population may be considered. Such entities, when situated in some environment, capable of perceiving the environment, interacting with themselves and the environment fall under the definition of autonomous agents.
Agency brings many improvements into the world of simulation, following the idea of decentralisation of control. Each agent may be autonomous, differently configured, utilising different means of discovering the features of the environment and its neighbours, utilising different algorithms and performing different actions in the system. Because of these, interesting added value may be taken for granted: building complex systems consisting of different, interacting beings will be natural when referring to agents as simulation objects.
As an example, one may consider economic modelling, which can, take into account new and, arguably, more precise characterisations of human beings. This way of modelling economic agents may become an alternative to more traditional mathematical models employed in economics. Those traditional descriptions of human beings normally exclude, for the sake of tractability, fundamental aspects such as qualitative descriptions of the agents’ goals and intentions, beliefs and other attributes of human reasoning (e.g., bounded rationality).
To recapitulate: the use of agents opens up new possibilities to introduce models very close to their real equivalents. At the same time the approach of agent-based simulation, because of its inherent logical decomposition and decentralisation of control, allows for building models featuring high flexibility and extensibility. Obviously all these features must be supported by dedicated software tools.
Technical issues
In agent-based simulation the problem of synchronisation of autonomous entities, usually acting in parallel becomes of vast importance. Classical issues known from the parallel programming, such as deadlocks or starvation must be avoided, that becomes a non-trivial task when considering simulations consisting of hundreds or even milions of agents. Technical problems would arise if the agents were implemented as independent threads, especially in large systems, involving distributed processing. Far better seems to inverse the problem of synchronisation, by following so called phase simulation approach in which there exists a synchronisation mechanism shared by a group of agents, which takes care of letting each regular agent (taking part in the simulation) do some activities (e.g., perform some query on the system state, change its state, register some action to be later performed by the synchronisation mechanism. In this way, complex parallel programming is changed into a kind of ‘round robin’ technique that does not pose problems in perceiving parts of the simulation as still autonomous (and acting in parallel, in, nomen omen, simulated way). Because of that, agent-based discrete-time simulation frameworks gained the attention of the authors.
Following the requirements of agency, other technical issues influencing the implementation should be considered, to make possible construction (or adaptation) of general-purpose agent-based simulation frameworks fulfilling the user’s needs:
- life cycle control (means for definition of an agent being and managing its life cycle in the system),
- communication facilities (means for inter-agent and agent-platform communication making possible interaction between agents and the system, and among the agents, even if they are placed in remote locations, as different computation nodes),
- organisation (possibility of introducing some structures into agent organisation, e.g., groups or even trees of agents), making possible mimicking behaviour of real societes or implementing various divide and conquer-like algorithms),
- distributed computing (for simulations which require running on computer clusters so the total time of experiment is reduced),
- exetensibilty (low coupling on different levels of implementation, following e.g., reusable software components paradigm, that help in modularisation and generalization of the framework application, making possible easy exchange of algorithm, agent, environment parts so that the platform may be easily reconfigured for different experiments, repeating simulations in different conditions, focusing on configuration instead of programming),
One may also consider the platform code status—is the code open-source, up-todate, cross-platform, making possible to quickly learn provided API, using as a support existing developer’s blogs or fora.