MASON and Distributed MASON

MASON 22 is a fast agent-based simulation library core in Java, designed to be the foundation for large custom-purpose Java simulations, and also to provide more than enough functionality for many lightweight simulation needs. MASON contains both a model library and an optional suite of visualization tools in 2D and 3D.

MASON has many extensions, notably Distributed MASON for cloud and cluster deployment, and GeoMason, which adds GIS, along with MASON DES, which adds Discrete Event Simulation facilities. Many recent enhancements to MASON and GeoMASON, including the development of Distributed MASON, were funded by NSF Grant 1727303.

MASON was designed by Sean Luke, Gabriel Catalin Balan, Keith Sullivan, and Liviu Panait, with help from Claudio Cioffi-Revilla, Sean Paus, Daniel Kuebrich, Joey Harrison, Dave Freelan, Anzal Khan, Raven Russell, and Ankur Desai.

Distributed MASON is a joint effort of George Mason University (USA) and Università degli Studi di Salerno (Italy) and was developed by Haoliang Wang, Ermo Wei, Rajdeep Singh Lather, Matteo D'Auria, Giuseppe D'Ambrosio, Daniele De Vinco, Rajhersh Patel, Lilas Dinh, Ryan Moffatt, Zach Osman, Carmine Spagnuolo, and Sean Luke, with help from Andrew Crooks, Vittorio Scarano, and Bob Simon.

What's New in 22

  • MASON Discrete Event Simulation (DES) Extension are officially released.
  • Improvements and bugfixes to MASON to support the DES Extension.

Download MASON and Distributed MASON

As a Jar File
The mason.22.jar file is MASON's binary distribution. You can run it by double-clicking on it if you like, or just drop it in your CLASSPATH and run java sim.display.Console. Be sure to get the manual and also download and install the libraries as discussed below. The L-Systems demo relies on files which don't come with the jar file. You can download them as lss.zip.
Support Libraries
  • Add the following libraries to your CLASSPATH to allow MASON to produce movies, charts, and PDF files. If you want to build MASON from scratch, you'll also need these installed. Certain libraries are LGPL, so we also provide library source code here.
  • 3D Libraries To use MASON in 3D, you must install Java3D. Nowadays Java3D is an open source project which sits on top of JOGL, an OpenGL library for Java. You wil need to install Java3D 1.6 (not 1.7), which consists of four libraries: j3dcore.jar, j3dutils.jar, vecmath.jar, and jogamp-fat.jar. You can obtain these libraries from the JOGAMP website (see also this blog entry) or you can grab them from a little zip file we put together here. Then you need to put these jar files in your CLASSPATH. On the Mac, I just stick them in /Library/Java/Extensions
MASON Source Repository
Need the bleeding edge? MASON's repository is at Github, under the project name mason.
Previous Releases
mason.21.jar mason.20.jar mason.19.jar mason.18.jar
mason17.zip mason16.zip mason15.zip
mason14.zip mason13.zip mason12.zip
mason11.zip mason10.zip mason9.zip
mason8.zip mason7.zip mason6.zip
mason5.zip mason3.zip mason1.zip
Installing Distributed MASON As a Jar File
The distributed-mason.1.jar file is Distributed MASON's binary distribution. Distributed MASON's source is in the MASON repository under contrib/distributed

Distributed MASON requires that you install certain items first:

  • MASON (of course)
  • OpenMPI, which you must build in a special way (with Java bindings) and install. The easiest way to build and install it is to follow the instructions in the MASON manual. See Section 14.3: Setting Up the Distributed MASON Environment.
  • The distributed-libraries.zip file contains three Jar files: jackson-core-2.5.3.jar, objenesis-2.1.jar, and fst-2.56.jar, which collectively provide fast serialization facilities for Distributed MASON. All three of these jar files must be added to your CLASSPATH.

Documentation and Help

Manual
MASON has an over 450-page PDF manual which includes a full documentation of the system plus a 14-part tutorial, and extensive descriptions of Distributed MASON.
Class Documentation
MASON's classdocs are available online
Mailing Lists and Addresses
Questions about using MASON? First, try reading the archives of the MASON-INTEREST-L mailing list. If you can't find your answer there, you might then try joining the list and posting your question. (Alternatively, send mail to listserv@listserv.gmu.edu with the words subscribe MASON-INTEREST-L in the body of the message. Likewise, to unsubscribe, use unsubscribe MASON-INTEREST-L)

Only if you can't join the list for some technical reason, you may ask the developers directly by sending email to mason-help —at— cs.gmu.edu.

Extensions

MASON Discrete Event Simulation (DES) Extensions
This module makes it possible to use MASON as a full-fledged DES toolkit, and to run DES and Agent-based simulations simultaneously in the same model.
GeoMason: Geospatial Support for MASON
This module adds to MASON extensive support for GIS, using the Java Topology Suite.
Distributed MASON
This experimental module is working towards extending MASON to distributed and cloud-computing architectures over MPI.
D-MASON
A distributed implementation of MASON designed to run over cluster and cloud-computing architctures. D-MASON is stable and is the predecessor to Distributed MASON.
ECJ
A high-performance, extensively featured stochastic optimization and metaheuristics toolkit in Java, with which MASON was designed to dovetail. If you're hoping to let the computer discover design solutions to your complex agent-based models, or to automate their calibration, ECJ is the right tool for it. The MASON manual discusses the contrib/optimize package, which simplifies the combination of ECJ and MASON to do automated, large-scale model calibration.
Social Networks in MASON
(also available in the MASON repository as contrib/socialnetworks)

This module is our own homegrown (and speedy, but hardly as well-tested as JUNG) social network package. It provides a fair number of social network statistics and other measures, building off of MASON's Network class. Download the module as socialnets.zip. Also available as contrib/socialnets in the MASON source distribution

Rigid Body 2D Physics Simulator Package
by Christian Thompson cthomps7 —at— gmu.edu
(available in the MASON distribution under contrib/physics2d)

This module adds a simple, pure-Java constraint-based rigid body physics engine to MASON.

MASON Web Tutorial 1: Parameterize Your Simulation
s Lsearn one approach to loading parameters into MASON at runtime.
MASON Web Tutorial 2: Build an Applet Out of MASON
How we make applets out of MASON for fun and profit.
Building and Running MASON on NetBeans
Very straightforward.
Building and Running MASON on Eclipse
For the Mac. For early versions of Eclipse on Windows, it's very slightly different; but this tutorial should help.
Converting MASON movies to small, properly running ones using iMovie.
2006 WCSS MASON Tutorial slides, libraries, code, and documentation.
A walk-through of constructing a Schelling model. This code is now part of the MASON demo applications.
2008 WCSS MASON Tutorial slides, libraries, code, and documentation.
A reconstruction of student playground cliques. This code is now part of the MASON demo applications.
Mason-Tools
Roman Seidl's collection of extensions to improve MASON.