MACE
The Multi-Agent Computing Environment, version 3, in Java

Scientific study of multi-agent systems (MAS) requires infrastructure such as development testbeds and simulation tools for repeatable, controlled experiments with MAS structure and behavior. Testbeds and simulation tools are also critical for MAS education and development. A number of MAS testbeds currently exist, but to date none meets in a comprehensive way criteria laid out by many analysts for general, scientific, experimental study of MAS by a large community. Moreover, none really scales to very large MAS or exploits the power of modern distributed computing environments such as large multiprocessor clusters and computational grids. Because of this, and specifically to fulfill widespread need for tools supporting distributed collaborative scientific research in large-scale, large-grain MAS, we created the MACE3J system, a successor to the pioneering MACE testbed.

MACE3J is a Java-based MAS simulation, integration, and development testbed, with a supporting library of components, examples, and documentation. MACE3J currently runs on single- and multiprocessor workstations, and in large multiprocessor cluster environments. The MACE3J design is multi-grain, but gives special attention to simulating very large communities of large-grain agents. It exhibits a significant degree of scalability, and has been effectively used in fast simulations of over 5,000 agents, 10,000 tasks, and 10M messages, and on multiprocessor configurations of up to 48 processors.

Here is a graph showing scalable performance of MACE3J running 31 large-grain agents on the NCSA p690 32-node multiprocessor:


31 large grain MACE3J agents on 32-proc NCSA p690, 8/2003
[Experiments made and documented by Brant Chee]

The diagonal "reference" line is based on the average time for three single-agent runs on one processor - each such run takes approximately 3 seconds of CPU time. The reference line extrapolates this figure by number of agents, and does not count any increased synchronization overhead from multiple agents (which would just make the slope even steeper). This is the linear performance baseline. The actual performance for additional agents (1 agent per processor), averaged over three runs at each measurement point, is shown on the graph, and is nearly constant, which is the ideal.

The agents in this experiment are full MACE3J agents written in Java. For this scalability testing, each agent's principal function is integer matrix multiplication. Using a parameter to set the size of each matrix, we can vary the effective grain size of each agent for experimentation. In this experiment, the matrix size is 250x250. Note that these agents act independently of each other, and don't send messages---this design is only meant to test the scalability and concurrency properties of the MACE3J system.

In the experiments shown, each MACE3J simulation run executed each agent 100 times (that is, over 100 simulation clock ticks). Extrapolating from this experiment, we expect we could could run 1000 agents of this complexity over 1000 simulation ticks in approximately 1 hour on a dedicated IBM p690 with 32 processors. We are next experimenting with significantly more complex multi-agent models that have more interactions among agents, using the TaskModel and DIQSS problem architectures (See [Gasser and Kakugawa, 2002].

Kelvin Kakugawa is presently extending MACE under the Globus/Open Grid Services Infrastructure, to enable scalable MACE3J simulations using Grid technology.

Related papers: