The following diagram shows the project structure of the ARS simulation environment, where the arrows represent the dependencies.
This project is the starting point for every simulation. Its job is to set up the simulation environment using the Mason Multiagent Simulation Framework, manage the creation of the entities and assign all the properties according to the scenario files. A simulation is started by running the class clsSimulatorMain. This can be achieved either by calling clsSimulatorMain directly with the appropriate parameters, or by running the scenario selector (clsScenarioSelector). The actual setup is performed by the module clsSimplePropertyLoader. This class reads and analyzes the scenario file, and manages the creation and linking of all entities, decision units and memories.
MASON is a JAVA multiagent simulation framework developed by a project group at George Mason University. It is included into the ARS simulation environment as a library, so its source code is not part of the ARS project.
This project contains all the entities that exist in the simulation environment, except the ARSIN and some ARSIN-related entities. The decision to create a separate project for the entities is based on the consideration that the ARSIN project holds only the base data structures, and the ARS-related objects. The entities within this project are
All the entities in this project are part of the entity hierarchy. The base classes of the hierarchy are found in the package entities.base in the EntityBase-Body-ARSIN project.
This project has two functions. First of all it provides the base modules and data structures for all objects that can be simulated. These modules are the entity base (abstract entitiys - see entity hierarchy), the bodies (and all its interfaces, sensors, actuators and attributes) and miscellaneous enums and tools. Secondly it contains the ARSIN and its related entities such as clsSmartExcrement and clsSpeech.
This project provides the basic data structures and classes for the decision units (DecisionUnits and AlternativeDecisionUnits) on the one hand, and the interfaces to use them on the other hand. It implements the abstract class clsBaseDecisionUnit on which all decision units set up. Moreover it accommodates miscellaneous enums and tools that are needed mostly by DecisionUnits.
DecisionUnits represents the actual ARS-engine and thereby implements the psychoanalytical model of the human mind. It provides the decision unit via the class clsPsychoAnalysis, which extends clsBaseDecisionUnit.
This project implements the classes and packages that form the memory of the ARS agent. The memory is the foundation of the ARSIN's decisions. Since the decision unit is the "consumer" of the memory, the memory access interfaces remain in the project DecisionUnits. During the simulation setup, a memory-instance is created and assigned to a decision unit which is then linked to the ARSIN.
AlternativeDecisionUnits implements all decision units that are not based on the ARS model. They are located in a dedicated project in order to seperate them from the psychoanalytic du's. Some examples are dumbmind, reactive, remotecontrol and rulebased.
This project contains the MASON inspectors for the decision units. Inspectors are a MASON toolkit, that allow to observe attributes of the simulated objects during simulation. Values that can be observed with a DecisionUnitMasonInspector are e.g. emotions (anxiety, anger, elation, joy etc.).
Same as DecisionUnitMasonInspectors except that it is used to display attributes of the entities and their bodys such as health, energy, position, id etc.
GeneralTools comprises miscellaneous tools that are of general nature and are used by several modules. An example is the class clsGetARSPath that returns the directory file system paths of some resources and projects.