This an air traffic scenario simulator featuring an Agent-Based Model (ABM) and simulating different some concepts from air traffic management. It has been developped by the ELSA project, "Empirically grounded agent based models for the future ATM scenario", funded via the Work Package E of SESAR. It aims at studying some of the new concepts foreseen by SESAR.
More information about SESAR can be found here:
More information about the ELSA project and its results can be found here:
http://complexworld.eu/wiki/ELSA
First, create a directory where you see fit to host the code. Then download the code
either using git (preferred method) via https://github.com/ELSA-project/ELSA-ABM.git
. You can also download the code directly by clicking on the 'download zip' button on the right hand side and extract the archive.
Note that the code has only been tested on linux distributions like Ubuntu, and only marginally on MAC OS. In the following we assume that the user has a Debian-like distribution.
The code is mainly written in Python 2 so you should install it before anything else, using:
sudo apt-get install python
Then you should make sure that all the dependencies required are installed. The following python modules should be installed:
- scipy
- numpy
- shapely
- networkx
- basemap
- MySQLdb
- matplotlib
- descartes
- scikit-learn
You can do this using the following command (tested on Mint 17 and Ubuntu 14.04):
sudo apt-get install python-scipy python-numpy python-shapely python-networkx python-mpltoolkits.basemap python-matplotlib python-sklearn python-mysqldb
The package 'descartes' has to be installed separately using for instance pip:
sudo pip install descartes
If pip is not installed on your system, you can install it like this:
sudo apt-get install python-pip
You will need the swig package to do the interface between C and Python, which can be installed this way:
sudo apt-get install swig
Once the source code has been downloaded and the dependencies satisfied, you can run the setup.py in the main folder in command line:
./setup.py
It will prompt you for the path of the directory you want for the results generated by the code. It then compiles the C code, makes the python wrapper for the tactical level and generates the html documentation describing the Python code.
After that you can run some tests with:
tests/run_all_tests.py
The code is organized as follows:
- the abm_strategic folder contains an ABM simulating the strategic phase, including a network builder, airlines and flights objects, and a network manager allocating the airspace to the airlines.
- the abm_tactical folder contains a tactical model including a "mega-controller" with different rules of conflict resolution as well as a "shock generator".
- the interface folder contains very basic functions which allows to easily control the tactical model from Python.
- the libs folder gathers several hand-made libraries.
- the scripts folder contains some handy scripts which can be used as examples to produce results with the model
- the tests folder contains several scripts for unitary and manual tests.
- the doc folder gathers the documentation, in the form of html files describing the python code and pdf files for small tutorials.
If you are in a hurry, you can start right away your own script, importing the most important functions using:
from abm_strategic import *
and/or:
from abm_tactical import *
More details are available in the Getting_started.pdf file in the doc/ folder on how to use them. Automatically generated documentation is also available in the doc/ folder.
The installation has only been tested marginally on MAC OS. Everything should be easy for the tactical layer, because there are no dependencies. For the strategic, most of the modules are easily installable, using a package manager. The only exception is basemap, which is used by the code to draw some maps. The issue seems to be in the installation of a dependency of basemap, GEOS, but solutions exist online. The alternative is to comment all the import of basemap in the code, which are only used for post-processing. The rest of the setup should be the same.
The code is released under the General Public License version 3. See LICENSE.txt, COPYING.txt and AUTHORS.txt for more details.
The tactical part has been mainly written by Christian Bongiorno.
The strategic part, the airspace generator, the python interface of the tactical part, the scripts, the post-processing tools and the setup tools have mainly been written by Gérald Gurtner.
Other indirect contributors are: Rosario Mantegna, Salvatore Miccichè, Fabrizio Lillo, Luca Valori, Simone Pozzi, Marco Ducci.
We thanks Marc Bourgois for fruitful discussion and help.