MAS Engines - ParaPhraseAGH/erlang-mas GitHub Wiki

The engine is the central part of the application. It uses callbacks provided by the client which define a particular usecase and runs the simulation. It is also responsible for collecting and logging statistics desired by the client.

Each simulation run is performed in a few instances at the same time. These instances are called islands and each contains an independent population which forms a subject for the simulation. Some agents can be randomly migrated between these islands which usually improves the performance.

Each simulation can be run in a different parallelisation model.

sequential

In this model all the islands and interactions are run in one process sequentially. This is a highly synchronous method yielding good results on a single core, however it is usually outperformed by other models when added computing units.

hybrid

Hybrid model uses one process per one island, therefore each population can be simulated independently and migration is implemented through message passing.

concurrent

This is a highly asynchronous model, where every agent is a separate process. Agents communicate with each other through message passing and interact through dedicated arenas. It is much more fine-grained than other models and thus often behaves differently.

skel

Skel is a sequential model parallelised using the skel library. The granulation of this variant is roughly the same as the hybrid one, however it is implemented differently thus often gives different results.