# Arrival MANanager (AMAN)

## System description

AMAN is splitted up into four different components.
* aman-com defines the diffent message types
* aman-es implements an EuroScope plugin to communicate with [aman-sys](https://git.vatsim-germany.org/nav/aman-sys)
* aman-sys implements the backend system to plan an optimal arrival sequence for the different airports
* aman-web implements a web-interface to configure [aman-sys](https://git.vatsim-germany.org/nav/aman-sys) and visualize sequences

## Component description

AMAN uses [Protocol Buffers](https://developers.google.com/protocol-buffers)
for the message serialization and message definition between the EuroScope instance and the AMAN backend.

Additionally is [ZeroMQ](https://zeromq.org/) used for the communication abstraction layer.

This component provides the server backend with the planning and optimization system per airport.
It is designed as a python framework that can run on a webserver.
ZMQ based encryption and authentication methods are used to authenticate controllers.

## RHC-ACS-ASS Algorithm
Step 1: Initialization. Set up parameters for
the RHC, and set the current receding horizon k = 1.

Step 2: Find out all the M aircraft whose PLTs belong to
the kth receding horizon.

Step 3: Schedule the M aircraft in the kth receding horizon
by using an ACS.

Step 4: Assign the aircraft whose ALTs belong to kth scheduled window ω(k) to land on
the runway.

Step 5: Modify the PLT for those aircraft whose PLT belongs to ω(k) but the ALT does not belong to ω(k). The modification is to set their PLT to kTTI, making them belong to Ω(k + 1), such that they can be scheduled in the next receding horizon.

Step 6: Termination check. When all the aircraft have been assigned to land at the runway, the algorithm terminates. Otherwise, set k = k + 1 and go to Step 2 for the next receding horizon optimization.



In the preceding steps, Step 3 is the major process of the
algorithm. The flowchart is illustrated on the right side of Fig. 3,
and the details are given below.

Step 3.1: Schedule the M aircraft by the FCFS approach and
calculate the fitness value through (3). Calculate
the initial pheromone τ0 and set the pheromone for
each aircraft pair as τ0.

Step 3.2: For each ant, do the following.
    
    a) Determine the first landing aircraft s and construct the whole landing sequence using the state transition rule as (5) and (6).
    
    b) Perform the local pheromone updating as (9).

Step 3.3: Calculate the fitness of each ant and determine
the best solution. Moreover, the current best solution is compared with the historically best solution
to determine the historically best solution.

Step 3.4: Perform the global pheromone updating as (10).

# Additional libraries

* [ZeroMQ](https://github.com/zeromq) - GNU GPLv3
* [Protocol Buffers](https://github.com/protocolbuffers/protobuf) - BSD-3

# License

AMAN is released under the [GNU General Public License v3](LICENSE)
