This repository contains the code for the paper titled Multi-aircraft attention-based model for perceptive arrival transit time prediction published in Advanced Engineering Informatics.
To set up the environment, ensure you have Python version >3.10 installed. You can create a Conda environment and install the required packages using the following steps:
- 
Create a Conda environment: conda create -n eta python=3.10 
- 
Activate the Conda environment: conda activate eta 
- 
Install the required packages: pip install -r requirements.txt 
To train the model, use the following command:
python train.py --batch_size 512 --epoch 30The flight data has been processed and split into training and test datasets. Each data point contains the following fields:
- Time: Timestamp.
- Flights: String-encoded array describing all flights' info at the timestamp, with each flight represented by 18 features:
- 1 Latitude: Latitude of the aircraft (e.g., airport latitude: 22.3080).
- 2 Longitude: Longitude of the aircraft (e.g., airport longitude: 113.9185).
- 3 Altitude: Altitude in feet, divided by 30,000.
- 4-5 Heading angle: Sine and cosine of the heading angle.
- 6 Ground speed: Ground speed in knots, divided by 500.
- 7 Vertical speed: Vertical speed in ft/s, divided by 3,000.
- 8 Runway: 1 if runway 07, else 0.
- 9 Holding: 1 if the aircraft is in a holding pattern, else 0.
- 10 Will hold: Holding duration (minutes) from now to landing, if any.
- 11 Go around: 1 if the aircraft missed the previous landing and is going around, else 0.
- 12-15 Aircraft type (one-hot): 'J':3, 'H':2, 'M':1, 'L':0.
- 16-18 Distance category (one-hot): 2 if distance > 4100 km, 1 if 1500 km < distance ≤ 4100 km, 0 otherwise.
 
- in_donut: Whether the aircraft is in the donut airspace (relevant when considering only the donut airspace).
- transit_time: Ground truth remaining transit time to be predicted, in seconds.
- sknt: Wind speed in knots, normalized as (sknt - 10) / 5.
- drct: Wind direction in degrees (to be processed to sine and cosine).
- vsby: Visibility in miles, normalized as (vsby - 5.935911) / 0.881571.
- gust: Wind gusts in knots, divided by 70.
- skyc: Maximum sky coverage of the four observed levels, mapped as:
- 'CLR', 'M', 'NSC': 0
- 'FEW': 1
- 'SCT': 2
- 'BKN': 3
- 'OVC': 4
 (to be one-hot encoded bydatapoint.py)
 
- wx: Present weather code, one-hot encoded based on the code array:
 ['+', '-', 'SH', 'TS', 'RA', 'BR', 'VCSH', 'VCTS']
Please download data from this repository and place them in folder data.
If you use this code in your research, please cite the paper:
@article{nguyen2025multi,
  title={Multi-aircraft attention-based model for perceptive arrival transit time prediction},
  author={Nguyen, Chris HC and Liem, Rhea P},
  journal={Advanced Engineering Informatics},
  volume={64},
  pages={103067},
  year={2025},
  publisher={Elsevier}
}