Het besparen van kerosine

Bedrijven zoals Jeppesen bieden oplossingen in deze ruimte, maar Scikit-decide, samen met een brandstofverbruiksmodel voor narrow- en wide-body vliegtuigen (ontwikkeld door een professor aan de TU Delft) en windgegevens van NOAA, biedt een open-source alternatief.

Scikit-decide is al zes jaar in ontwikkeling. Het is een framework voor reinforcement learning, geautomatiseerde planning en scheduling. Het project kan vliegroutes optimaliseren, personeelsroosters van luchtvaartmaatschappijen reorganiseren en paden voor droneswarms berekenen.

OpenAP is een model en toolkit voor vliegtuigprestaties, ontwikkeld door Dr. Junzi Sun. Dr. Sun heeft een PhD in luchtverkeersbeheer en istenure-assistent-professor aan de TU Delft in Nederland.

De solver voor optimale vliegroutes van Scikit-decide kan worden geconfigureerd om verschillende brandstofverbruiksmodellen te gebruiken. In dit artikel worden twee vliegroutes vergeleken met gebruik van de Airbus A320 en het brandstofverbruiksmodel van OpenAP.

Werkstation

Voor de berekeningen wordt gebruikgemaakt van de volgende hardware en software:

  • CPU: 5.7 GHz AMD Ryzen 9 9950X (16 cores, 32 threads; 1.2 MB L1, 16 MB L2, 64 MB L3 cache) met vloeistofkoeling in een Cooler Master HAF 700 behuizing.
  • RAM: 96 GB DDR5 (4.800 MT/s).
  • Opslag: Crucial T700 4 TB NVMe M.2 SSD (leessnelheid tot 12.400 MB/s) met heatsink.
  • Moederbord & Voeding: ASRock X870E Nova 90 met een 1.200-watt volledig modulaire Corsair voeding.
  • OS: Ubuntu 24 LTS via Microsoft's Ubuntu for Windows op Windows 11 Pro. (Keuze voor Windows vanwege betere driverondersteuning voor de Nvidia GTX 1080 GPU en native ondersteuning voor ArcGIS Pro).

Installatie van vereisten

Er wordt gebruikgemaakt van Python 3.12 en jq.

$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt update
$ sudo apt install jq python3-pip python3.12-venv

Vervolgens wordt een Python Virtual Environment ingericht om scikit-decide, het OpenAP-model en opentop (een toolkit voor vluchttrajecten, eveneens ontwikkeld door Dr. Sun) te installeren:

$ python3 -m venv ~/.flight_planning
$ source ~/.flight_planning/bin/activate
$ pip install 'scikit-decide[all]' 'openap[all]' opentop

Voor de data-analyse wordt DuckDB gebruikt met extensies voor H3, JSON, Lindel, Parquet en Spatial:

$ 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;

De kaarten in dit artikel zijn gemaakt met QGIS versie 4.2.1. Grensgegevens en plaatsnamen zijn afkomstig van Natural Earth; maritieme grenzen van Marine Regions.

Vliegtuigtypen in OpenAP

De OpenAP-repository bevat een uitgebreide dataset van verschillende vliegtuigen. Een analyse van de fabrikanten in de dataset laat het volgende zien:

  • Boeing: 17
  • Airbus: 13
  • Embraer: 5
  • Gulfstream: 1
  • Cessna: 1

Voorbeeld: Airbus A380-800

De eigenschappen van de Airbus A380-800 in de dataset omvatten onder andere:

  • MTOW (Maximum Take-Off Weight): 560.000 kg
  • MLW (Maximum Landing Weight): 386.000 kg
  • OEW (Operating Empty Weight): 277.000 kg
  • Ceiling (Maximum vlieghoogte): 13.100 m
  • Passagierscapaciteit: Maximaal 853, gemiddeld 620, minimaal 410.

Ook zijn er specifieke sleepcoëfficiënten (drag coefficients) beschikbaar voor zowel de 'clean' configuratie als bij gebruik van flaps.

Vliegtuigmotoren

De dataset bevat 427 motoren. De meest vertegenwoordigde fabrikanten zijn:

  1. GE Aircraft Engines (108)
  2. CFM International (94)
  3. Pratt & Whitney (85)
  4. Rolls-Royce plc (62)

De motoren zijn onderverdeeld in types:

  • TF (Turbofan): 322
  • MTF (Mixed-flow Turbofan): 98
  • TP (Turboprop): 5
  • PS (Piston): 1

De GE90-115B staat bovenaan de lijst qua maximale stuwkracht (max\_thrust: 513.900).

Luchthavens en Navigatie

De toolkit bevat gegevens van bijna 14.000 luchthavens, verdeeld over 236 landen. De landen met de meeste luchthavens in de dataset zijn Brazilië (BR), de Verenigde Staten (US) en Australië (AU). Daarnaast bevat de dataset navigatie-waypoints (fix.dat) en navigatiehulpmiddelen (nav.dat), zoals VOR-DME en NDB stations.

Casestudy: Toulouse naar Berlijn

Er is een optimale vliegroute gezocht van Toulouse-Blagnac Airport (LFBO / TLS) naar Berlin Brandenburg Airport (EDDB / BER) met een Airbus A320.

Bij het uitvoeren van de solver worden GRB2-bestanden met weergegevens van NOAA gedownload als deze nog niet aanwezig zijn. De solver gebruikt een A*-algoritme waarbij de kostenfunctie is ingesteld op brandstofverbruik (costfunction = "fuel") en de heuristiek op lazyfuel.

Resultaten van de solver:

  • Berekeningstijd: 0,28 seconden.
  • Aantal stappen: 19.
  • Totale vliegtijd: 7666,28 seconden.
  • Totaal brandstofverbruik: 5855,09 kg.

De vluchttrajecten tonen een klimfase tot ongeveer 30.000 voet, een kruisvluchtfase (cruise) op 30.000 tot 32.000 voet, gevolgd door een daling (descent).

Casestudy: Toulouse naar Warschau

Vervolgens is een route gezocht van Toulouse naar Warsaw Chopin Airport (EPWA / WAW). In dit scenario is het initiële doel voor de vlieghoogte veel hoger ingesteld.

Resultaten:

  • Berekeningstijd: 29,45 seconden.
  • Aantal stappen: 14.
  • Totale vliegtijd: 6153,66 seconden.
  • Totaal brandstofverbruik: 5600,17 kg.

Analyse: Hoewel Warschau 500 km verder weg ligt dan Berlijn, zorgde de snellere klim naar een hogere kruishoogte onder de gegeven windomstandigheden voor een directere route. De vlucht naar Warschau was bijna 45 minuten sneller en verbruikte slechts 76% van de brandstof die nodig was voor de vlucht naar Berlijn.

Vergelijking: Airbus A320 vs Boeing 737

Met behulp van OpenTop en OpenAP is het traject tussen Amsterdam Schiphol (EHAM) en Frankfurt (EDDF) vergeleken. Hierbij is een kostenbestand gebruikt om rekening te houden met contrails (condenssporen). De optimalisatiefunctie was: 0.3 brandstof + 0.7 grid_kosten.

ParameterAirbus A320Boeing 737
StatusSlaagdeSlaagde
Brandstofverbruik1625,6 kg1622,1 kg
Maximale hoogte19.891 ft21.968 ft
Vliegtijd35,8 min39,2 min
Iteraties179141
Reken-tijd (wall time)12,2 s9,9 s