One of the things we’ve been working on at the Oxford-Man Institute for a couple of years now is the Multi-Agent eXchange Environment, or MAXE for short. It’s a simulator for multi-agent systems written mainly with flexibility and performance in mind.
MAXE was written in C++, with extra care taken to make sure that its internals consume as little memory and computational time as possible. This is of major advantage when compared to many other simulators written in managed or interpreted languages, as those often tend to run into performance issues due to the lack of detailed oversight over the computational resources required by simulations.
Being familiar with the current trends in the field, we understood that C++ is rarely the language of choice for multi-agent simulation, and for that reason we introduced the option of scripting agent behaviour in Python and running it in combination with other agents written in C++. Both C++ and Python agents interact with the same interface, which allows the scaling of simulations growing from small prototyping workbenches to large release environments to be done with ease.
Aiming to fulfill our ambition of creating a flexible simulator we designed MAXE to be highly modular – its architecture could perhaps be likened to that of microkernels in operating system design theory. Only the vital parts of the simulator, namely the message dispatch, time counting, and thread scheduling, are handled by the MAXE’s core. The rest of the standard simulation tasks, such as logging, is handled by dedicated agents, simple implementations of whom are available as a part of a basic database of agents distributed with the simulator.
To create a simulation, one only needs to specify an XML configuration file populating the simulation environment with agents of various types and setting their starting attributes.
This file can then easily be inspected to make further changes without the need of re-compiling C++ files or making adjustments to Python scripts detailing the agent programmes, and can be re-used with ease between projects. This further aids prototyping, making it easy to stop a simulation that has evolved in an undesirable way and quickly correct the culprit setting with just a system-default text editor.
MAXE has been compiled for and tested on all major platforms. Installation files, instructions, a detailed quick-start guide, and a host of documented example agents can all be found on the project’s GitHub page.