Technology
Companies like Jeppesen have offerings in this area, however Scikit-decidetogether with a narrow- and wide-body fuel intake design constructed by a teacher at the Delft University of Technology and wind information from NOAA, provide an open source service.
Scikit-decide has actually remained in advancement for 6 years. It’s a structure for support knowing, automated preparation and scheduling. The job can optimise flight courses, re-organise airline company labor force schedules and compute drone swarm courses.
OpenAP is an airplane efficiency design and toolkit established by Dr. Junzi Sun. Dr. Sun has a PhD in air traffic management and, amongst numerous other things, teaches a course on the topic as a tenured assistant teacher at TU Delft in the Netherlands.
Scikit-decide’s ideal flight course solver can be set up to utilize various fuel intake designs. In this post, I’ll compare 2 flight courses flown utilizing the Airbus A320 and OpenAP’s fuel intake design.
Technology My Workstation
I’m utilizing a 5.7 GHz AMD Ryzen 9 9950X CPU. It has 16 cores and 32 threads and 1.2 MB of L1, 16 MB of L2 and 64 MB of L3 cache. It has a liquid cooler connected and is housed in a roomy, full-sized Cooler Master HAF 700 computer system case.
The system has 96 GB of DDR5 RAM clocked at 4,800 MT/s and a 5th-generation, Crucial T700 4 TB NVMe M. 2 SSD which can check out at accelerate to 12,400 MB/s. There is a heatsink on the SSD to assist keep its temperature level down. This is my system’s C drive.
The system is powered by a 1,200-watt, completely modular Corsair Power Supply and is rested on an ASRock X870E Nova 90 Motherboard.
I’m running Ubuntu 24 LTS through Microsoft’s Ubuntu for Windows on Windows 11 Pro. In case you’re questioning why I do not run a Linux-based desktop as my main workplace, I’m still utilizing an Nvidia GTX 1080 GPU which has much better chauffeur assistance on Windows and ArcGIS Pro just supports Windows natively.
Technology Setting up Prerequisites
I’ll utilize Python 3.12 together with jq in this post.
$ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install jq python3-pip python3.12-venv
I’ll establish a Python Virtual Environment and set up scikit-decide, together with the OpenAP open airplane efficiency design and OpenTop, a flight trajectory toolkit that was likewise established by Dr. Sun.
$ python3 -m venv ~/.flight_planning $ source ~/.flight_planning/bin/activate $ pip install 'scikit-decide[all]' 'openap[all]' opentop
The above will require a minimum of 8 GB of storage capability. These are the bundles that were set up.
$ pip install pipdeptree $ pipdeptree -d0
lz4==4.4.5 openevolve==0.3.2 opentop==2.6.0 pip==24.0 pipdeptree==4.2.5 plado==0.1.6 pygeodesy==26.9.9 pygrib==2.1.8 pyRDDLGym-gurobi==0.2 pyRDDLGym-jax==3.1 pyRDDLGym-rl==0.2 pytz==2026.3.post1 ray==2.37.0 rddlrepository==2.2 sb3_contrib==2.3.0 scikit-decide==1.1.1 scikit-image==0.26.0 tensorboardX==2.6.5 torch-geometric==2.8.0.post1 typer==0.27.2 unified-planning==1.2.0 up-enhsp==0.0.27 up_fast_downward==0.5.2 up-pyperplan==1.1.0 z3-solver==5.1.0.0
I’ll utilize DuckDB, in addition to its H3JSONLindelParquet and Spatial extensions in this post.
$ cd ~ $ wget -c https://github.com/duckdb/duckdb/releases/download/v1.5.4/duckdb_cli-linux-amd64.zip $ unzip -j duckdb_cli-linux-amd64.zip $ chmod +x duckdb $ ~/duckdb
INSTALL h3 FROM community; INSTALL lindel FROM community; INSTALL json; INSTALL parquet; INSTALL spatial;
I’ll establish DuckDB to fill every set up extension each time it releases.
.timer on .width 180 LOAD h3; LOAD lindel; LOAD json; LOAD parquet; LOAD spatial;
The maps in this post were rendered with QGIS variation 4.2.1. QGIS is a desktop application that operates on Windows, macOS and Linux. The application has actually grown in appeal in the last few years and has ~ 22M application launches from users all around the world every month.
The borders and name were sourced from Natural Earth. Maritime Boundaries were sourced from Marine Regions
Technology OpenAP’s Aircraft Types
I’ll initially clone the OpenAP repository.
$ git clone https://github.com/junzis/openap
Leaving out system tests and energy scripts, there are 3,369 lines of Python in this bundle.
OpenAP’s design depends on a great deal of datasets that are packaged with its codebase. These cover a variety of airplane. Below are the airplane producer counts.
$ grep -ho 'aircraft: .*[a-z] ' openap/data/aircraft/*.yml | cut -d' ' -f2 | sort | uniq -c | sort -rn
17 Boeing 13 Airbus 5 Embraer 1 Gulfstream 1 Cessna
These are the homes for the Airbus A380-800.
$ cat openap/data/aircraft/a388.yml
aircraft: Airbus A380-800 mtow: 560000 mlw: 386000 oew: 277000 mfc: 320000 vmo: 340 mmo: 0.89 ceiling: 13100 pax: max: 853 low: 410 high: 620 fuselage: length: 72.72 height: 8.41 width: 7.14 wing: area: 845 span: 79.75 mac: null sweep: 33.5 t/c: 0.08 flaps: type: single-slotted area: null bf/b: null lambda_f: 0.900 cf/c: 0.150 Sf/S: 0.150 cruise: height: 12800 mach: 0.85 range: 14800 engine: type: turbofan mount: wing number: 4 default: GP7270 options: A380-841: Trent 970-84 A380-842: Trent 972-84 A380-861: GP7270 drag: cd0: 0.016 k: 0.050 e: 0.855 gears: 0.012
These are its drag coefficients.
$ cat openap/data/dragpolar/a388.yml
aircraft: Airbus A380-800 clean: cd0: 0.016 k: 0.050 e: 0.855 gears: 0.012 flaps: lambda_f: 0.900 cf/c: 0.150 Sf/S: 0.150
These are some extra homes.
$ echo "import pandas as pd; print( pd.read_fwf('openap/data/wrap/a388.txt') .to_csv(index=False))" | python3 | ~/duckdb -c '.maxwidth 150' -c "SELECT * EXCLUDE(parameters), parameters: SPLIT(parameters, '|') FROM READ_CSV('/dev/stdin')"
┌──────────────────────┬────────────────┬───────────────────────────────────────┬────────┬────────┬─────────┬─────────┬──────────────────────────────┐ │ variable │ flight phase │ name │ opt │ min │ max │ model │ parameters │ │ varchar │ varchar │ varchar │ double │ double │ double │ varchar │ varchar[] │ ├──────────────────────┼────────────────┼───────────────────────────────────────┼────────┼────────┼─────────┼─────────┼──────────────────────────────┤ │ to_v_lof │ takeoff │ Liftoff speed │ 89.9 │ 75.4 │ 104.4 │ norm │ [89.93, 10.07] │ │ to_d_tof │ takeoff │ Takeoff distance │ 2.56 │ 1.35 │ 3.78 │ norm │ [2.56, 0.74] │ │ to_acc_tof │ takeoff │ Mean takeoff accelaration │ 1.35 │ 1.04 │ 1.66 │ norm │ [1.35, 0.19] │ │ ic_va_avg │ initial_climb │ Mean airspeed │ 88.0 │ 80.0 │ 96.0 │ norm │ [88.15, 5.64] │ │ ic_vs_avg │ initial_climb │ Mean vertical rate │ 5.65 │ 4.4 │ 8.94 │ gamma │ [4.76, 3.22, 0.65] │ │ cl_d_range │ climb │ Climb range │ 296.0 │ 200.0 │ 446.0 │ beta │ [3.23, 5.18, 179.46, 335.24] │ │ cl_v_cas_const │ climb │ Constant CAS │ 163.0 │ 155.0 │ 170.0 │ norm │ [163.39, 4.51] │ │ cl_v_mach_const │ climb │ Constant Mach │ 0.84 │ 0.8 │ 0.86 │ beta │ [12.23, 5.32, 0.72, 0.17] │ │ cl_h_cas_const │ climb │ Constant CAS crossover altitude │ 3.3 │ 1.3 │ 5.3 │ norm │ [3.29, 1.24] │ │ cl_h_mach_const │ climb │ Constant Mach crossover altitude │ 8.9 │ 8.2 │ 9.7 │ norm │ [8.94, 0.47] │ │ cl_vs_avg_pre_cas │ climb │ Mean climb rate, pre-constant-CAS │ 7.85 │ 5.95 │ 9.75 │ norm │ [7.85, 1.16] │ │ cl_vs_avg_cas_const │ climb │ Mean climb rate, constant-CAS │ 7.51 │ 5.2 │ 9.82 │ norm │ [7.51, 1.40] │ │ cl_vs_avg_mach_const │ climb │ Mean climb rate, constant-Mach │ 5.56 │ 3.23 │ 7.91 │ norm │ [5.57, 1.42] │ │ cr_d_range │ cruise │ Cruise range │ 4348.0 │ 892.0 │ 20565.0 │ gamma │ [2.81, 246.73, 2274.81] │ │ cr_v_cas_mean │ cruise │ Mean cruise CAS │ 136.0 │ 130.0 │ 145.0 │ beta │ [3.32, 5.27, 126.00, 29.75] │ │ cr_v_cas_max │ cruise │ Maximum cruise CAS │ 145.0 │ 134.0 │ 164.0 │ beta │ [2.02, 3.21, 130.38, 46.65] │ │ cr_v_mach_mean │ cruise │ Mean cruise Mach │ 0.84 │ 0.82 │ 0.86 │ norm │ [0.84, 0.01] │ │ cr_v_mach_max │ cruise │ Maximum cruise Mach │ 0.87 │ 0.85 │ 0.9 │ gamma │ [16.14, 0.80, 0.00] │ │ cr_h_init │ cruise │ Initial cruise altitude │ 11.55 │ 9.3 │ 12.23 │ beta │ [3.82, 1.66, 7.49, 5.01] │ │ cr_h_mean │ cruise │ Mean cruise altitude │ 11.73 │ 10.87 │ 12.28 │ beta │ [7.22, 3.92, 9.59, 3.14] │ │ cr_h_max │ cruise │ Maximum cruise altitude │ 12.06 │ 11.52 │ 12.6 │ norm │ [12.06, 0.33] │ │ de_d_range │ descent │ Descent range │ 310.0 │ 238.0 │ 528.0 │ gamma │ [4.73, 213.47, 25.87] │ │ de_v_mach_const │ descent │ Constant Mach │ 0.83 │ 0.8 │ 0.87 │ norm │ [0.83, 0.02] │ │ de_v_cas_const │ descent │ Constant CAS │ 154.0 │ 142.0 │ 167.0 │ norm │ [154.84, 7.74] │ │ de_h_mach_const │ descent │ Constant Mach crossover altitude │ 10.1 │ 8.6 │ 11.5 │ norm │ [10.06, 0.88] │ │ de_h_cas_const │ descent │ Constant CAS crossover altitude │ 6.6 │ 3.9 │ 9.4 │ norm │ [6.64, 1.69] │ │ de_vs_avg_mach_const │ descent │ Mean descent rate, constant-Mach │ -6.06 │ -11.9 │ -2.97 │ beta │ [3.43, 2.08, -15.98, 14.36] │ │ de_vs_avg_cas_const │ descent │ Mean descent rate, constant-CAS │ -8.36 │ -11.74 │ -4.97 │ norm │ [-8.36, 2.06] │ │ de_vs_avg_after_cas │ descent │ Mean descent rate, after-constant-CAS │ -5.48 │ -6.93 │ -4.02 │ norm │ [-5.48, 0.88] │ │ fa_va_avg │ final_approach │ Mean airspeed │ 73.0 │ 68.0 │ 77.0 │ norm │ [73.28, 3.02] │ │ fa_vs_avg │ final_approach │ Mean vertical rate │ -3.71 │ -4.13 │ -2.92 │ gamma │ [9.49, -4.74, 0.12] │ │ fa_agl │ final_approach │ Approach angle │ 2.9 │ 2.42 │ 3.38 │ norm │ [2.90, 0.29] │ │ ld_v_app │ landing │ Touchdown speed │ 70.0 │ 62.1 │ 78.0 │ norm │ [70.00, 5.52] │ │ ld_d_brk │ landing │ Braking distance │ 2.26 │ 0.73 │ 3.8 │ norm │ [2.26, 0.93] │ │ ld_acc_brk │ landing │ Mean braking acceleration │ -1.01 │ -1.51 │ -0.52 │ norm │ [-1.01, 0.30] │ └──────────────────────┴────────────────┴───────────────────────────────────────┴────────┴────────┴─────────┴─────────┴──────────────────────────────┘
These are the airplane type synonyms list.
$ ~/ duckdb -c "FROM READ_CSV('/dev/stdin')"
Discover more from PMN S.P.O.R.T.S - A PRIME MEDIA NETWORK BRAND
Subscribe to get the latest posts sent to your email.

