Introduction
We have built a series of tools that enable building and running simulations of organisations using the framework detailed in our technical notes . For consistency across all modules provided, the tools are all built on node.js in Typescript. The code is available on our Github page under an MIT license.
As outlined in our methodology pages, the tools provided here implement the mathematics behind our framework, allowing for in silica experiments of our ideas about emergence, controllability, control drivers and performance of organisations. Solution of the framework’s equations requires stochastic simulation over a large parameter space, therefore the code is written in modular form so that multiple instances of the simulation can be run in parallel.
Architecture
The overall system as it stands today is composed of seven Typescript packages, as shown in the diagram below.
The packages are in three groups based on their functionality:
- Infrastructure: the foundation classes, interfaces and constants on which the system depends. The infrastructure packages are also published on npm for ease of use.
- Organisation models: implementations of and extensions to the core classes that model the dynamics of different organisations and can be used to “plug and play” different types of organisations using the underlying mathematical framework
- Data pipeline: applications that schedule, run simulations, store results and display output
To implement new organisation models, analysts need to build on the aethon-arion-core and aethon-arion-pipeline that define the core classes DTOs of the model. The simulations and results can then be processed by the pipeline.
Code packages
A description of each package follows below.
Documentation for each package is a work in progress and will be added on the Github docs page of each package.
aethon-arion-core
This package defines the classes on the core concepts page of our technical notes, namely the Board
, Agent Set
, Plant
and Reporting
System. These are wired together within an Organisation
class, which is initialised and contained within a Simulation
class, constituting the entry point of the model. The package also includes the implementation of the Agent Priority Model.
aethon-arion-core
defines the core logic, information flows and step sequence of a simulation. Key properties and methods of these core classes, such as the methods for state transitions of each object on each simulation step, are left abstract
, in order to allow implementation specific to different types of organisation models downstream in the package tree.
aethon-arion-pipeline
This package builds on aethon-arion-core
and defines the DTO classes, interfaces, key constants and types required by the data pipeline, which is implemented over an http API.
Key properties and methods of these core classes are left abstract
, in order to allow implementation specific to different types of organisation models downstream in the package tree.
aethon-arion-c1
This package implements all abstract classes, interfaces and methods in aethon-arion-core
and aethon-arion-pipeline
to model a consensus-driven organisation.
aethon-arion-node
This package is the main runtime daemon for an instance of the simulation. To increase simulation throughput, multiple instances of the simulation can be run on one machine using PM2. The simulation nodes connect to aethon-arion-server
via an http API, fetching new run jobs and submitting results for storage and analysis.
aethon-arion-db
This package implements the DTOs and other classes required in aethon-arion-pipeline
using TypeORM in order to implement persistence at the server. It can be used to run custom queries and analysis on the raw results of the database, as well as to seed databses.
aethon-arion-server
This executable package implements a simple server that schedules, dispatches and saves the results from simulation configurations that are run by instances of aethon-arion-node
. aethon-arion-server
implements the API required by aethon-arion-pipeline
. It is built with Nest.js.
The implementation is basic and e.g. does not currently have authentication. Obviously, alternative and more robust implementations can be written in e.g. Amazon Lambda, but it should be noted that, for stochastic convergence, results can be data-intensive and therefore costly in a public cloud environment.
aethon-arion-analyst
This package is an Angular application that provides a user-friendly front-end to the API. It includes tools for creating new simulations, monitoring their progress and running analysis of the results. It is built with extension in mind, and new modules can be added for new organisation models beyond C1 to enable custom visualisation for different model types.
Contact
Feel free to contact us if you would like to learn more about the software, how it can be of help or how you could get involved. Pull requests are welcome.