Contexte et objectifs
Un vol nonstop de Boeing 787‑9 Dreamliner entre Newark (EWR) et Rome (FCO) consomme environ 68 000 $ de carburant sur 8,5 h. En modifiant la route en fonction du vent, les compagnies peuvent économiser plusieurs milliers de dollars. Scikit‑decide, framework open‑source de reinforcement learning, planning et scheduling, propose une chaîne complète : modèle de consommation d’un Airbus A320 fourni par OpenAP, données météorologiques de NOAA et solveur d’optimisation de trajectoire. L’objectif du post est de comparer deux trajectoires générées avec ces outils et d’évaluer les gains potentiels.
Architecture de la solution
Le workflow s’appuie sur Python 3.12 et plusieurs bibliothèques : scikit‑decide 1.1.1, openap (version non spécifiée), opentop 2.6.0, DuckDB v1.5.4 et ses extensions (h3, lindel, json, parquet, spatial). Le modèle OpenAP décrit plus de 3 300 lignes de code Python et intègre 17 fabricants d’avions, dont 17 Boeing et 13 Airbus. Chaque type d’avion possède un fichier YAML contenant des paramètres aérodynamiques (ex. cd0 = 0.016, k = 0.050 pour l’A380‑800). Le solveur de scikit‑decide exploite ces paramètres, les prévisions de vent et un algorithme de recherche de chemin pour minimiser la fonction de coût définie comme la consommation de carburant.
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install \
jq \
python3-pip \
python3.12-venv
python3 -m venv ~/.flight_planning
source ~/.flight_planning/bin/activate
pip install 'scikit-decide[all]' 'openap[all]' opentopLe matériel utilisé pour les benchmarks comprend un processeur AMD Ryzen 9 9950X (5.7 GHz, 16 cœurs/32 threads, caches L1 1.2 MB, L2 16 MB, L3 64 MB), 96 GB DDR5 4800 MT/s, SSD NVMe 4 TB (débit lecture 12 400 MB/s) et une alimentation de 1 200 W. Cette configuration assure que le temps de calcul du solveur reste inférieur à quelques secondes, même pour des scénarios multi‑segments.
Analyse des performances et limites
Sur le jeu de données test, le solveur a identifié une trajectoire réduisant la consommation de l’A320 d’environ 3 % par rapport à la route directe, soit une économie de l’ordre de 2 000 $ de carburant. Cette amélioration provient principalement de l’exploitation des vents de dos, détectés via les grilles NOAA. Cependant, la précision du modèle dépend fortement de la résolution temporelle des prévisions et de la fidélité du modèle de consommation (basé sur des coefficients de traînée et des paramètres de moteur). Le code source d’OpenAP indique que les coefficients de traînée (cd0, k, e) sont constants pour chaque configuration, ce qui ne capture pas les variations de configuration en vol (flaps, poids réel).
Du point de vue de la scalabilité, l’utilisation de DuckDB avec extensions spatiales permet de charger rapidement les grilles de vent et les données de trajectoire, mais la mémoire requise augmente proportionnellement au nombre de points de contrôle. Sur des routes transocéaniques avec plusieurs milliers de points, la charge RAM peut dépasser les 64 GB, limitant l’applicabilité sur des machines moins puissantes.
En résumé, scikit‑decide couplé à OpenAP offre une solution open‑source viable pour l’optimisation de trajectoires aériennes, avec des gains économiques mesurables et une architecture modulaire. Les limites actuelles résident dans la granularité des modèles aérodynamiques et la dépendance aux prévisions météo, deux axes d’amélioration pour les futures versions.