Laboratoire d`Optimisation Globale CENA/ENAC Robustesse des
Transcription
Laboratoire d`Optimisation Globale CENA/ENAC Robustesse des
Établissement d'inscription : ENSEEIHT DEA Programmation et Systèmes Année : 2000 - 2001 Laboratoire d'Optimisation Globale CENA/ENAC Robustesse des solutions du problème d'allocation de créneaux par Thomas Rivière [email protected] Directeur de recherche : Jean-Marc Alliot Responsable du stage : Pascal Brisset Nom du projet : Marabout Dirigé par : Pascal Brisset Juillet 2001 Résumé : Le ciel européen est surchargé et le contrôle aérien est dépassé par la demande ce qui induit une accumulation des retards qui pénalise les usagers mais également les compagnies aériennes. L'organisme européen de régulation du trac (CFMU) qui a en charge l'aectation des créneaux de décollage n'est plus en mesure, actuellement, de produire des solutions satisfaisantes an d'éviter la surcharge de l'espace aérien. An de résoudre ces problème de surcharge, une nouvelle modélisation a été réalisée. Nous montrons ici ce qu'elle apporte par rapport aux méthodes déjà existantes et nous testons sa robustesse aux diérences observées entre l'heure théorique et l'heure réelle de départ des vols. École Nationale de l'Aviation Civile 7, avenue Édouard Belin 31055 Toulouse Table des matières 1 Introduction 1 2 La programmation par contraintes 2.1 2.2 Problème de satisfaction de contraintes (CSP) . . . . . . . . . . . 2.1.1 La description d'un problème : dénition des contraintes. 2.1.2 Satisfaction de contraintes. . . . . . . . . . . . . . . . . . 2.1.3 Un exemple classique de CSP : le drapeau canadien . . . . Programmation par contraintes et domaines nis . . . . . . . . . 2.2.1 Étiquetage . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Retour-arrière . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Arbre de recherche . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Consistance et arc-consistance . . . . . . . . . . . . . . . . 2.2.5 Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Description du problème dallocation de créneaux 3.1 3.2 Généralités sur le contrôle aérien . . . . . 3.1.1 Découpage de l'espace aérien . . . 3.1.2 La capacité . . . . . . . . . . . . . 3.1.3 Les plans de vol . . . . . . . . . . . 3.1.4 Les créneaux . . . . . . . . . . . . 3.1.5 Exemple d'une journée de trac . . Problèmes posés et solutions envisagées . 3.2.1 La CFMU . . . . . . . . . . . . . . 3.2.2 Module d'allocation de créneaux de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SHAMAN 4 Les solutions retenues pour le projet Marabout 4.1 4.2 Fenêtres sans recouvrement : modèle discret 4.1.1 Variables booléennes . . . . . . . . . 4.1.2 Contrainte globale de cardinalité . . Modèles continus . . . . . . . . . . . . . . . 4.2.1 Fenêtres glissantes . . . . . . . . . . 4.2.2 La contrainte de tri . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . 3 . 3 . 4 . 5 . 6 . 6 . 7 . 8 . 8 . 10 . 10 . 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 13 14 15 15 16 16 17 19 21 21 22 22 23 23 24 TABLE DES MATIÈRES 5 Mise en ÷uvre 5.1 5.2 5.3 Méthode à la SHAMAN . . . . 5.1.1 Les variables . . . . . . . . 5.1.2 Les contraintes . . . . . . . Stratégie de recherche et invariants 5.2.1 Stratégie de recherche . . . 5.2.2 Invariants [MH00] . . . . . Optimisation . . . . . . . . . . . . 6 Robustesse au bruitage des données 6.1 6.2 6.3 6.4 . . . . . . . . . . . . . . Résultats . . . . . . . . . . . . . . . . Inuence sur la charge instantanée . . Retard supplémentaire au décollage . . Méthodologie . . . . . . . . . . . . . . 6.4.1 Les impossibilités de régulation 6.4.2 Méthode discrète . . . . . . . . 6.4.3 Méthode continue . . . . . . . . 7 Conclusion 7.1 7.2 ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 26 27 27 27 29 30 31 31 32 32 36 36 38 39 43 Apports de la programmation par contraintes . . . . . . . . . . . . . . . . . . . 43 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Table des gures 2.1 2.2 2.3 2.4 2.5 Le problème du drapeau canadien . . . . . . . . . . . . . . . . Graphe des contraintes pour le problème du drapeau canadien Parcours d'un arbre de recherche . . . . . . . . . . . . . . . . Un graphe arc-consistant mais pas consistant . . . . . . . . . Arbre de recherche et propagation . . . . . . . . . . . . . . . 3.1 3.2 3.3 Les 20 routes les plus utilisées au dessus de la France . . . . . . . . . . . . . . . 13 Sectorisation de l'espace aérien français au niveau de vol 240 (7200m) . . . . . . 14 Centre de contrôle de Brest - 20 mai 1999 . . . . . . . . . . . . . . . . . . . . . 16 4.1 4.2 Fenêtre glissantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Contrainte de capacité appliquée aux vols ordonnés (δ = 30, capa = 20) . . . . 25 5.1 Décalage du dernier vol arrivé . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 Régulation avec les modèles Standard et Continu . . . . . . . Nombre instantané d'aéronefs présents dans un secteur test . . Répartition des retards sur l'année 1999 . . . . . . . . . . . . . Répartition des retards par aéroport sur l'année 199 . . . . . . Bruitage des modèles Standard et Continu . . . . . . . . . . . Exemple de pics de dépassement de capacité . . . . . . . . . . . Résultats du test continu : hauteur moyenne d'un dépassement Résultats du test continu : durée moyenne d'un dépassement . . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 . 7 . 8 . 9 . 10 . . . . . . . . 33 34 34 35 37 40 40 41 Chapitre 1 Introduction Malgré une diminution par rapport aux trois dernières années, l'an 2000 a connu une progression du trac aérien soutenue : avec près de 2 500 000 vols contrôlés, la croissance a atteint 5,2% en 2000 contre 8,0% en 1999, 7,3% en 1998 et 6,5% en 1997 [DNA01]. Dans ce contexte, le niveau des retards dus à l'encombrement de l'espace aérien est un problème majeur que les organismes de régulation du trac aérien doivent résoudre. En eet, les capacités des centres français de contrôle du trac aérien sont, de loin, dépassées par la croissance du nombre de vols, entraînant des retards toujours plus importants ; or ceux-ci tiennent une place prépondérante dans la liste des préoccupations des clients du contrôle aérien, c'est-à-dire les compagnies aériennes tant au niveau de l'image publique de ces compagnies qu'au niveau des pertes nancières, évaluées à 5 milliards d'Euros pour l'année 1999. C'est dans ces conditions que la Commission Européenne a déclaré [IP/99], le 1er décembre 1999, que les systèmes actuels de régulation du trac aérien étaient incapables de supporter les pointes de trac ni de s'adapter à la croissance prévue1 et a demandé aux états membres de rééchir à de nouvelles solutions an de résoudre le problème. Une partie de la régulation du trac aérien se fait quelques jours avant leur départ : c'est ce qu'on appelle l'allocation de créneaux. Il s'agit de retarder les heures de décollage des avions an de séquencer leurs passages dans les diérents secteurs de l'espace aérien contrôlé. Avec le nombre d'avions qu'il est possible de gérer sur une position de contrôle, les heures de départ des avions sont un des paramètres essentiels sur lequel les organismes de régulation peuvent jouer. L'idée du projet Marabout dirigé par Pascal Brisset au sein du Laboratoire d'Optimisation Globale (LOG), commun à l'École Nationale de l'Aviation Civile (ENAC) et au Centre d'Études de la Navigation Aérienne (CENA), est de résoudre le problème d'allocation de créneaux en utilisant la programmation par contraintes et en réinterprétant la dénition de limite de capacité, c'est à dire de la charge maximum qu'un contrôleur peut gérer. Ce projet a pour objectif, non pas de résoudre à lui tout seul les problèmes posés par l'augmentation du trac aérien mais de montrer qu'il existe d'autres manières de résoudre ces problèmes que celles utilisées aujourd'hui, notamment en interprétant les limites de capacités d'une manière diérente. Nous décrivons dans ce rapport les diérentes solutions susceptibles de résoudre le problème d'allocation de créneaux ainsi qu'une comparaison de leur résistance aux bruits engendrés par le fait qu'un nombre conséquent d'avions partent avec un retard non nul de l'aéroport (qu'il 1 Aujourd'hui encore, le même constat peut être fait. 1 CHAPITRE 1. INTRODUCTION 2 soit de 2 minutes ou bien de 45). Le chapitre 2 présente la programmation par contraintes en décrivant les règles qui la régissent et en donnant un exemple d'application. An de mieux cerner le problème d'allocation de créneaux, un rappel des notions de bases sur la gestion du trac aérien français est fait dans le chapitre 3 ainsi qu'un tour d'horizon des diérentes méthodes qui existent pour résoudre ce problème (notamment celle utilisée actuellement). Le chapitre 4 décrit les solutions retenues, le chapitre 5, la mise en ÷uvre d'une méthode de résolution et le chapitre 6 décrit et compare la robustesse des solutions retenues lorsque l'on bruite les heures de décollage. Enn, le chapitre 7 résume la contribution apportée par les nouvelles méthodes de résolution puis conclut sur les améliorations potentielles ainsi que sur les changements nécessaires à une meilleure régulation du trac aérien. Chapitre 2 La programmation par contraintes La programmation par contraintes est une technologie relativement récente puisqu'elle est apparue en tant que telle à la n des années 70 et au début des années 80 avec les langages Alice [Lau76], CONSTRAINT [SS80] et ThingLab [Bor81] puis Prolog II [CKC82] et CLP(R) [JM87]. Elle utilise des techniques aussi diverses que celles issues de l'intelligence articielle ou de la recherche opérationnelle. De nos jours, la programmation par contraintes est utilisée avec succès dans de nombreux domaines, notamment par l'industrie [Bar99]. Elle sert par exemple dans l'analyse du langage naturel (construction d'analyseurs), les systèmes de gestion de bases de données (pour maintenir et/ou rétablir la consistance des données), la biologie moléculaire (séquençage de l'ADN), l'ingénierie des systèmes électriques (détection d'anomalies), etc. La programmation par contraintes peut se diviser en deux étapes, en partie indépendantes [Sol99] : la description du problème (cf. section 2.1.1) ; la recherche de solution(s), avec ou sans optimisation (cf. section 2.1.2 & 2.2). 2.1 Problème de satisfaction de contraintes (CSP) 2.1.1 La description d'un problème : dénition des contraintes. De façon très générale, une contrainte correspond à l'énoncé d'une propriété relative à diérents objets [AS94]. Par exemple, le cercle est à l'intérieur du carré relie deux objets, sans spécier plus précisément leur position respective ou leurs coordonnées. Ainsi, si on déplace le carré ou le cercle, il est possible de maintenir le relation entre les deux objets. Bien sûr, an de pouvoir implémenter de telles relations, il faut les traduire sous forme plus mathématique. L'équation a + b = c ∗ a met alors en relation les variables a, b et c en limitant les valeurs qu'elles peuvent prendre simultanément, chacune des variables ayant un domaine de valeurs possibles. La résolution d'un problème (cf. section 2.1.2) revient à trouver des valeurs aux variables dans leur domaine respectif et qui satisfassent la contrainte, i.e. qui vérie l'équation. Les contraintes possèdent plusieurs propriétés intéressantes qui leurs permettent d'être très proche du langage naturel [Bar99] : les contraintes peuvent utiliser des informations partielles, c'est à dire qu'elles peuvent être utilisées sans connaître les valeurs exactes de leurs variables ; 3 CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 4 les contraintes sont non-directionnelles ; une contrainte réunissant deux variables x et y peut être vue comme une contrainte sur x impliquant une contrainte sur y et réciproquement ; les contraintes sont déclaratives, c'est-à-dire qu'elles indiquent une relation entre des objets sans donner de procédé de calcul pour maintenir cette relation ; les contraintes sont additives ; l'ordre dans lequel les contraintes sont posées importe peu, seul importe le fait que la solution les vérie toutes ; les contraintes sont rarement indépendantes ; généralement, elles partagent les mêmes variables. Les contraintes sont utiles dans de nombreux problèmes. On les retrouve notamment dans des problème d'ordonnancement ou de planication comme la génération d'emploi du temps qui doit prendre en compte les horaires de disponibilité des professeurs, des salles de classes et des élèves tout en respectant les volumes horaires impartis à chaque matière. La programmation par contraintes apparaît comme un moyen naturel de résoudre des problèmes dans des domaines extrêmement variés. 2.1.2 Satisfaction de contraintes. Les CSP (Constraint Satisfaction Programming) sont un concept de modélisation adapté aux problèmes de recherche de solution(s) et d'optimisation dont les contraintes sont diciles à satisfaire. Une contrainte représente ici une relation entre les variables du problème, telle que les contraintes binaires classiques comme X < Y et X 6= Y , ou des contraintes plus générales comme toutes les variables sont diérentes et les tâches T1 et T2 de durées respectives d1 et d2 ne peuvent pas être eectuées en même temps (contrainte disjonctive : (t1 + d1 < t2 ) ∨ (t2 + d2 < t1 ), où ti est la date de début de la tâche Ti ). Les variables du problème appartiennent à des domaines qui spécient les valeurs qu'elles peuvent prendre, et la résolution d'un CSP consiste à trouver une ou toutes les aectations de valeurs pour chaque variable telles que toutes les contraintes du problème soient simultanément satisfaites. Dans le cas d'un problème d'optimisation (cf. section 2.2.6), on cherchera la solution de coût optimal suivant un critère donné parmi les solutions admissibles. On peut à présent donner une dénition plus formelle d'un problème de satisfaction de contraintes [Hen95] : Un CSP est un triplet (X , D, C), où X est un ensemble de n variables Xi qui sont chacune associée à un domaine D(Xi ) de l'ensemble D telles que Xi ∈ D(Xi ) ∀i ∈ [[1, n]], et C est un ensemble de k contraintes cj sur les variables. Une contrainte cj sur les lj variables Xi1 , ..., Xilj (lj ∈ [[1, n]]) est un sous-ensemble du produit cartésien D(Xi1 ) × ... × D(Xilj ), et on note cj (vi1 , ..., vilj ) la valeur booléenne obtenue en instanciant les variables Xim (m ∈ [[1, lj ]]), qui est vraie si la contrainte cj est satisfaite et fausse sinon. Une solution d'un CSP est une valuation v1 , ..., vn ∈ D(X1 ) × ... × D(Xn ) des variables Xi (i ∈ [[1, n]]) telle que toutes les contraintes de C soient satisfaites : ^ cj (vi1 , ..., vilj ) j∈[[1,k]] De très nombreux problèmes dans des domaines très variés peuvent facilement être modélisés par un CSP et résolus par la programmation par contraintes : ordonnancement, planning CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 5 (comme celui des observations pour le télescope spatial Hubble [JM94]), graphisme, allocation de ressource, routage, diagnostique, télécommunications (par exemple le positionnement d'émetteurs-récepteurs pour des téléphones portables [BF97]), conception de circuit électronique, etc. Les méthodes de recherche d'une solution à un CSP peuvent être divisées en deux classes : celles qui explorent dans sa totalité l'espace des solutions complètes, et, par opposition celles qui n'explorent qu'en partie l'espace des solutions. Du point de vue théorique, la résolution d'un CSP est relativement aisée en utilisant l'exploration systématique de l'espace des solutions ; mais ceci n'est plus vrai lorsque l'on se place du point de vue de l'ecacité, ceci à cause de la taille de l'espace des solutions qui varie de façon exponentielle par rapport à la taille de l'ensemble des variables. Pourtant, si les méthodes de recherches systématiques (sans autres améliorations) peuvent être considérées comme simplistes et non ecaces, elles sont très importantes car elles sont à l'origine de bien des algorithmes, plus récents et plus performants. Un des algorithmes de base pour résoudre un problème de satisfaction de contraintes, eectuant une recherche systématique dans l'espace des solutions, est le generate-and-test (GT). L'idée de GT est simple : une valeur est associée à chaque variable, à l'intérieur de leur domaine respectif, de façon aléatoire. Si cette solution potentielle satisfait les contraintes, on a trouvé une solution au problème, sinon, on recommence, sans retirer la même combinaison. GT est un algorithme très peu ecace parce qu'il teste toutes les combinaisons possibles, y compris celles qui échouent. Cette non-ecacité est due au fait que le générateur de solutions potentielles ne possède aucune information sur les contraintes. Ainsi, on peut imaginer diérentes solutions pour améliorer GT (cf. section 2.2.2) : en réduisant au fur et à mesure les domaines des variables et limiter ainsi le nombre de solutions potentielles à tester ; en testant, en même temps qu'elle est générée, une solution potentielle an de détecter le plus tôt possible un éventuel échec dans le respect des contraintes et en utilisant le mécanisme de backtracking (voir section 2.2.2). 2.1.3 Un exemple classique de CSP : le drapeau canadien Un exemple trivial de CSP sur les domaines nis (cf. section 2.2) est le problème du drapeau canadien illustré par la gure 2.1, qui est un problème de coloration de carte1 [Bar97] : il s'agit de repeindre le drapeau du Canada à l'aide des deux couleurs d'origine, le rouge et le blanc, en sachant que deux parties limitrophes du drapeau ne doivent pas être de la même couleur, et que la feuille d'érable doit être rouge. On modélise très simplement ce problème en CSP : X = {T, X, Y, Z} D(T ) = {r} D = {D(T ), D(X), D(Y ), D(Z)} D(X) = D(Y ) = D(Z) = {r,b} c1 : X 6= Y c2 : Y 6= Z C c3 : T 6= Y où T , X , Y et Z sont les couleurs des parties représentées sur la gure 2.1 qui peuvent prendre les valeurs rouge r ou blanc b. 1 Le problème de coloration de carte peut être également vu comme un problème d'optimisation : étant donné une partition de la carte, colorier la carte avec le nombre minimum de couleurs tel que deux régions voisines ne soient pas de la même couleur. CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 6 Y X T Z Fig. 2.1 Le problème du drapeau canadien En utilisant l'algorithme generate-and-test dans le cas du drapeau canadien, on obtient |D(X1 ) × ... × D(Xn )| solutions potentielles et la première valuation qui satisfait les contraintes fournit la solution. Il existe des techniques bien plus ecaces pour résoudre les CSP comme le backtracking, ou le Branch & Bound (pour les problèmes d'optimisation) dont nous parlerons dans les sections suivantes. Certains de ces algorithmes sont issus de travaux de l'intelligence articielle sur la représentation des CSP par des graphes de contraintes : chaque variable est représentée par un n÷ud avec son domaine et chaque contrainte par un arc (voir gure 2.2 pour notre drapeau canadien). Pour les problèmes continus, des algorithmes comme le Simplexe [AS94] ou des techniques de programmation par intervalles sont utilisés. 2.2 Programmation par contraintes et domaines nis Les domaines des variables d'un problème de satisfaction de contraintes peuvent être de diérents types, ensembliste, continu ou encore ni. Certains systèmes, qui implémentent des CSP, utilisent les domaines ensemblistes ou continus mais nous nous limiterons ici aux domaines nis, qui permettent de résoudre une grande partie des problèmes posés et qui sont, à ma connaissance, les plus répandus. Les systèmes qui implémentent les CSP sur des domaines nis imposent donc que les variables prennent leurs valeurs dans des sous-ensembles nis de N et fournissent des prédicats spéciques, en plus des contraintes arithmétiques classiques (=, ≤, 6=,...), par exemple : alldifferent([X1 , ..., Xn ]) : toutes les variables X1 , ..., Xn doivent prendre des valeurs diérentes ; element(I, [E1 , ..., En ], V ) : le I ème élément de la liste [E1 , ..., En ] prend la valeur V (i.e. XI = V ) où I et V sont des variables du CSP ; gcc(N, [X1 , ..., Xn ], V ) (global cardinality constraint) : N éléments de la liste de variables [X1 , ..., Xn ] sont égaux à V (N et V sont xés). 2.2.1 Étiquetage Il existe plusieurs méthodes de résolution d'un CSP comme nous le verrons dans les sections suivantes ; mais quelle que soit la méthode utilisée, lors de la recherche de solution, il faut étiqueter une ou plusieurs variables. C'est l'étiquetage ou labelling. Cela consiste à attribuer aux variables une valeur (temporaire) prise dans leur domaine respectif. CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 7 {r,b} X {r,b} Y {r,b} Z T {r} Fig. 2.2 Graphe des contraintes pour le problème du drapeau canadien 2.2.2 Retour-arrière On peut considérer le retour-arrière ou backtracking comme une réunion des phases de génération et de test de l'algorithme generate-and-test. Les variables sont étiquetées les unes après les autres. Lorsque toutes les variables concernant une contrainte sont instanciées2 , la validité de cette contrainte est testée. Si la solution partielle viole une des contraintes du problème, on backtrack (c'est-à-dire que l'on eectue un retour-arrière) jusqu'à la dernière instanciation partielle qui ne viole pas les contraintes et qui possède une solution alternative à celle qui vient d'échouer. Plus explicitement, l'algorithme de backtracking élimine le sousespace du produit cartésien des domaines de variables qui pourrait être engendré à partir de la solution partielle qui viole une ou plusieurs contraintes. Ainsi, le backtracking ne parcourt pas toutes les solutions et explore donc moins de valuations que l'algorithme GT. Cependant sa complexité, dans le pire des cas reste exponentielle. 2 Certains écriront instantiées et les puristes écriront autre chose.... CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 8 Il existe des méthodes plus évoluées de backtrack comme le backjumping ou le backmarking et qui corrigent certains défauts comme la répétition d'une même violation de contrainte dûe au fait que l'algorithme ne mémorise pas les valeurs des variables qui ont entraîné l'échec [Bar99] ; mais la détection plus rapide de l'inconsistence des solutions partielles a été privilégié. 2.2.3 Arbre de recherche La recherche de solution passe par le parcours d'un arbre de recherche. La gure 2.3 montre un exemple simpliste avec deux variables x et y (sans tenir compte des contraintes qui les relient). Au premier point de choix, on peut choisir entre trois étiquettes pour x. Si on choisit x = 3, on doit eectuer un autre choix pour y . Si y = 1 échoue lors de la vérication des contraintes, on eectue un retour-arrière jusqu'au plus proche point de choix possédant une branche non encore explorée, et ainsi de suite jusqu'à ne plus avoir de point de choix disponible ou jusqu'à ce qu'on rencontre une solution. Point de choix x ∈ (3, 4, 5), y ∈ (1, 2) Solution possible x=4 x=3 x=5 y=1 échec y=2 échec Fig. 2.3 Parcours d'un arbre de recherche 2.2.4 Consistance et arc-consistance Avant même d'eectuer un recherche de solution, il peut être intéressant d'enlever des diérents domaines des variables les valeurs dont on est sûr qu'elles ne permettent pas de résoudre les contraintes. Par exemple, pour la contrainte x + y < 5, si le domaine de x est [1, 4] et celui de y [2, 3], il est certain que la valeur x = 5 ne permet pas d'aboutir à une solution. Instanciation consistante Étant donné un CSP P = (X, D, C), une instanciation A des variables de Y ⊂ X est dit consistante si et seulement si : ∀ci = (vi , ri ) ∈ C telle que vi ⊂ Y, A |= ci Autrement dit, une instanciation est consistante si elle ne viole aucune contrainte. CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 9 Solution d'un CSP Une solution S de P = (X, D, C) est une instanciation consistante des variables de X . On dit alors que l'instanciation S satisfait P (noté S |= P ). Consistance Un problème de satisfaction de contraintes est consistant si et seulement si il existe au moins une solution à ce problème. Les algorithmes d'établissement de la consistance sont issus des techniques de graphes. Un CSP est représenté par un graphe de contraintes où les n÷uds correspondent aux variables et les arcs sont étiquetés par les contraintes (cf. section 2.1.3). Ceci implique que le CSP doit être ramené à un CSP binaire, c'est-à-dire à un CSP n'ayant que des contraintes unaires 3 et/ou binaires. Les algorithmes d'établissement de la consistance sur les domaines nis ne sont en général pas complets pour des raisons d'ecacité : la satisfaisabilité de l'ensemble des contraintes n'est que partiellement testée, car elle est trop coûteuse en temps de calcul, et on vériera plutôt l'arc-consistance ou une approximation de l'arc-consistance. Il est à noter que les algorithmes d'établissement de la consistance sont déterministes alors que la recherche (cf. section 2.2.2) est non-déterministe. L'arc-consistance est une consistance locale et assure, étant données les deux variables Xi et Xj d'une contrainte binaire c, que, quelle que soit la valuation de Xj dans D(Xj ), il n'existe pas de valeur dans le domaine D(Xi ) qui viole la contrainte c,. L'arc-consistance est nécessaire pour avoir la consistance mais pas susante, comme le montre la gure 2.4 qui représente un CSP arc-consistant mais pas consistant : il est possible de prouver l'arc-consistance alors qu'on ne peux pas trouver de valuation qui vérie la consistance, c'est-à-dire qui vérie (X, Y, Z) ∈ [[0, 1]]3 et X 6= Y ∧ Y 6= Z ∧ Z 6= X Y {0,1} X {0,1} Z {0,1} Fig. 2.4 Un graphe 3 Une contrainte unaire est un domaine arc-consistant mais pas consistant CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 10 2.2.5 Propagation On peut utiliser indépendamment la technique de recherche systématique (section 2.1.2) ou de consistance (section 2.2.4) pour résoudre un problème de satisfaction de contrainte, mais cela donne de médiocres résultats. En fait, c'est une combinaison des diérentes techniques qui est utilisée. Une programme de satisfaction de contrainte suit, en général, le schéma suivant : Les variables sont dénies et un domaine de valeur leur est attribué. Les contraintes sont posées. On vérie alors leur arc-consistance. Si une contrainte est satisfaite (par n'importe quelle valuation), on l'eace ; si elle peut être satisfaite, elle est suspendue (voir ci dessous) ; sinon, elle échoue, et le problème n'a pas de solution. Une contrainte suspendue est associée à chaque variable intervenant dans cette contrainte. On recherche une solution selon le mécanisme étiquetage d'une variable ; vérication de l'arc-consistance des contraintes réveillées (c'est-à-dire associée à la variable que l'on vient d'étiqueter) puis réduction des domaines représenté par la gure 2.5. Si la vérication échoue, on peut alors eectuer un retour-arrière an d'explorer d'autres possibilités. Valuation partielle Point de choix Réduction de domaine par arc−consistance Fig. 2.5 Arbre de recherche et propagation Les contraintes se propagent ainsi en réduisant les domaines des variables. Ainsi, sur l'exemple du drapeau canadien (voir gures 2.1 et 2.2), quand la contrainte Z 6= T est considérée, le domaine D(Z) est réduit à {b}. Ceci réveille les contraintes associées à Z , i.e. X 6= Z et Z 6= Y , et les domaines de D(X) et D(Y ) sont alors réduits à {r} ; le problème a été résolu sans énumération (ce qui est un cas particulier). 2.2.6 Optimisation Pour la majorité des problèmes que l'on souhaite résoudre, on ne veut pas trouver une solution parmi d'autre mais une bonne solution. La qualité d'une solution est mesurée par rapport à un critère, lui-même calculé grâce à une fonction appelée coût f (X1 , ..., Xn ) ou CHAPITRE 2. LA PROGRAMMATION PAR CONTRAINTES 11 X1 , ..., Xn sont les variables du problème. Le but est alors de trouver une solution qui satisfait les contraintes du problème et qui minimise ou maximise la fonction de coût. La plupart de ces problèmes peuvent être représentés par un Constraint Satisfaction Optimisation Problem (CSOP), qui est la combinaison d'un CSP et d'une fonction d'optimisation qui attribue à chaque solution (instanciation de toutes les variables) un coût. Un des algorithmes les plus utilisés lors de la recherche d'une solution optimale est l'algorithme de Branch & Bound (B & B) et convient parfaitement aux CSOP. B & B utilise une contrainte qui relie la fonction de coût d'une solution partielle au coût minimal (resp. maximal) que l'on veut obtenir : minf (X1 , ..., Xn ) < Ck où minf (X1 , ..., Xn ) représente une borne inférieure (dans le cas d'une minimisation) du coût de la meilleure solution qu'il est possible d'engendrer à partir de la solution partielle . L'algorithme recherche des solutions en profondeur d'abord et se comporte, chronologiquement parlant, comme l'algorithme de backtracking mis à part que dès qu'une valeur est assignée à une variable, on vérie que la contrainte de coût est satisfaite. Si la contrainte n'est pas vériée, alors le sous-arbre qui dérive de cette valuation est abandonné. Initialement, la valeur de Ck est égale à plus (resp. moins) l'inni et au cours du calcul, il prend la valeur de la meilleure solution trouvée jusqu'ici. L'ecacité de B&B est déterminé par deux facteurs : la qualité de la fonction de coût et le moment où une bonne solution est trouvée. L'observation de problèmes résolus par cette méthode montre que c'est souvent la dernière étape vers l'optimum, c'est-àdire améliorer encore la solution, et part la même, prouver l'optimalité d'une solution qui coûte le plus cher dans les processus de résolution. Heureusement, dans la plupart des cas, les utilisateurs se satisfont de solutions approchées de l'optimum. On peut donc utiliser cet algorithme pour trouver une solution approchée de la solution optimale en xant un valeur de coût à atteindre. Dès que cette valeur est dépassée, une solution est rendue par l'algorithme (sans preuve d'optimalité). 2.2.7 Limitations La programmation par contraintes est très bien adaptée aux problèmes d'optimisation combinatoire très contraints et convient donc au problème d'allocation de créneaux comme nous allons le voir par la suite. Cependant, ce sont des méthodes énumératives et le temps de calcul peut devenir rédhibitoire si l'espace des solutions est trop grand. D'autre part, si on utilise la programmation par contraintes pour un problème d'optimisation, il faut que la fonction de coût ne soit pas trop complexe, car l'algorithme de Branch & Bound estime les bornes de la fonction de coût pour chaque sous-arbre. Chapitre 3 Description du problème dallocation de créneaux 3.1 Généralités sur le contrôle aérien Ce chapitre ne donne en aucun cas une présentation détaillée de l'état du trac aérien français aujourd'hui mais simplement un rappel des notions nécessaires à la compréhension du problème posé et des moyens mis en ÷uvre pour sa résolution. Les avions actuels peuvent voler par presque tout les temps, y compris lorsque la visibilité est telle que le pilote est incapable de voir l'environnement extérieur. An d'éviter tout risque de collision, chaque état s'est doté d'un service de contrôle aérien capable de guider les avions en toute sécurité. Pour permettre aux pilotes de se diriger dans l'espace, un certain nombre de balises radio ont été positionnées au sol. Ces balises (ADF, VOR, VOR-DME) émettent sur des fréquences répertoriées an d'être écoutées par les instruments à bord des avions. Ainsi, le pilote est capable de connaître sa position relative par rapport au sol et de diriger l'avion de balise en balise jusqu'à sa destination nale. Grâce aux techniques actuelles, aux points de passages dénis par les balises, il faut rajouter des points, dénis uniquement par leur coordonnées géographiques et/ou la distance et l'angle par rapport à de vraies balises, et choisis arbitrairement. Ces points de passage étant appelés waypoints. Pour être compréhensible par un contrôleur humain, le trac est organisé sur des routes aériennes, dénies à partir des waypoints, ce qui va générer un phénomène de concentration des avions sur les mêmes axes . Les études réalisées par [Rog00] montrent qu'un sixième du trac journalier européen utilise seulement vingt routes aériennes, représentées sur la gure 3.1. Tout ceci pose le problème de l'abordage (collision entre deux aéronefs). Ce sont les services du contrôle aérien qui ont en charge d'éviter de tels accidents. Les pilotes communiquent par radio avec les contrôleurs situés au sol. Ces derniers, disposant d'informations sur les avions grâce notamment à l'image radar, vont ainsi pouvoir détecter à l'avance les avions en conits et communiquer aux pilotes les man÷uvres à eectuer an d'éviter toute collision. On distingue deux types de contrôle exercés sur le trac aérien : le contrôle d'approche, à proximité des aéroports qui gère les phases de montée initiale et de descente nale ; le contrôle en route qui gère les avions entre les deux phases décrites ci-dessus. Nous nous limiterons ici au contrôle en route car c'est essentiellement sur celui-ci que vont 12 CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 13 Fig. 3.1 Les 20 routes les plus utilisées au dessus de la France s'exercer les diérentes régulations étudiées par la suite. 3.1.1 Découpage de l'espace aérien Il y a six centre de contrôle en route en France : Aix, Bordeaux, Brest, Reims, Paris-est et Paris-ouest1 . Chacun de ces centres est responsable d'une zone2 de l'espace aérien. Chacun de ces centres est découpés en briques élémentaires, de type polyèdre (en général cylindre vertical) appelé secteur (cf gure 3.2). Chaque secteur est déni par une altitude plancher, une altitude plafond, un contour et une capacité (cf section suivante). Le découpage de l'espace aérien, c'est-à-dire le nombre et la forme des secteurs, change au cours d'une même journée3 suivant un schéma d'ouverture quotidien. Ces changements consistent en un regroupement de plusieurs secteurs en un seul. Cette technique est utilisée lors des périodes de faible trac (par exemple la nuit) an de limiter l'utilisation des ressources 1 Physiquement 2 les deux centres de Paris n'en font qu'un seul. Ces zones se situent, à peu près, autour de chaque centre même si les techniques actuelles permettent de contrôler n'importe quel espace aérien de n'importe où. Ce découpage correspond plus à une volonté de décentralisation de la direction générale de l'aviation civile qu'à une réponse à des impératifs techniques. 3 Les briques élémentaires sont immuables. CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 14 Fig. 3.2 Sectorisation de l'espace aérien français au niveau de vol 240 (7200m) humaines et de maintenir une certaine charge de travail pour chaque secteur4 . Un secteur est géré par une équipe de deux contrôleurs, mais il n'y a qu'un seul contrôleur qui décide des man÷uvres à eectuer : Le contrôleur radar (ou tactique) est en contact avec l'avion. C'est lui qui gère les conits. Le contrôleur organique joue un rôle d'assistant. 3.1.2 La capacité La capacité d'un secteur exprime le nombre maximum de vols pouvant entrer dans ce secteur pendant un intervalle de temps donné (généralement une heure). Elle est sensé correspondre à la charge maximale qu'un contrôleur peut supporter. Elle varie donc en fonction de nombreux paramètres dont certains assez subjectifs comme le bon fonctionnement de tous les équipements du contrôleur, la disponibilité des routes aériennes, etc. La capacité d'un secteur pouvant varier au cours de la journée, nous appellerons secteurpériode un secteur de contrôle pendant un intervalle de temps particulier au cours duquel sa capacité est constante. Il a donc été envisagé, an de résoudre en partie les problèmes d'encombrement de l'espace aérien, d'augmenter la capacité globale du ciel français en réduisant la taille des secteurs. Il semble cependant que l'on soit arrivé à la limite de cette solution5 . En eet, en deçà d'une 4 Des études ont montré que les erreurs humaines sont plus importantes en dessous d'une certaine charge de travail. 5 Il semblerait, au vu de l'analyse France-Allemagne faite par la division RFM du CENA-Athis [MMK00] CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 15 certaine taille, le gain d'un découpage du secteur sera annihilé par l'augmentation de la charge du contrôleur dans ses contacts avec ses homologues des secteurs adjacents (charge de coordination) [Rog00]. D'autres solutions comme le Free Flight qui consisterait à faire voler les avions librement6 entre les aéroports, ne permettent pas d'armer aujourd'hui que cela augmentera la capacité. Même si tous les acteurs du trac aérien s'accordent pour dire que le mode actuel de calcul de la capacité est inadapté, aucune solution meilleure n'a été trouvée pour l'instant. An de résoudre l'encombrement de l'espace aérien, certains se sont tournés vers d'autres solutions, comme nous allons le voir par la suite. 3.1.3 Les plans de vol Pour permettre un bon contrôle de l'avion, les compagnies déposent auprès des autorités compétentes un plan de vol pour chaque avion. Celui-ci regroupe : le type de l'avion : les aéroports de départ et d'arrivée ; l'heure de départ souhaitée ; la route suivie (c'est-à-dire la liste des waypoints) ; le niveau de vol (l'altitude) souhaité. Le jour même, ces informations parviennent aux contrôleurs et leurs permettent d'anticiper l'entrée d'un avion dans les secteurs qu'ils contrôlent. Les chiers d'archives COURAGE répertorient les plans de vols déposés et réalisés7 . pour chaque journée de trac. Dans ces archives, on retrouve tous les avions qui ont été, au cours de leur vol, au moins une fois contrôlés par un des centres français. 3.1.4 Les créneaux Pour éviter que trop d'avions ne se présentent en même temps dans un même secteur et ainsi respecter les limites de capacité, l'option généralement choisie est de modier l'heure de décollage de certains vols. On impose donc aux avions de décoller à une heure donnée autre que celle demandée. Il est obligatoire de respecter l'heure imposée. On parle de créneau de décollage car une tolérance de 5 minutes avant et de 10 minutes après l'heure xée est admise. L'avion a donc une plage d'un quart d'heure durant laquelle il peut décoller. Si un avion manque son créneau il ne peut décoller avant d'en avoir obtenu un autre. Dans les faits, il arrive que les compagnies ne respectent pas leurs créneaux et que leurs avions décollent en dehors de la plage autorisée, ceci entraînant une perturbation de la régulation (cf section 6.3). que les secteurs allemands soient plus petits que leurs homologues français et que cela expliquerait leur plus grande capacité. La limite n'est peut être pas atteinte... 6 Chaque avion disposerait d'un outil de contrôle autonome embarqué permettant une résolution des conits [DAG99]. 7 Nous ne travaillerons qu'avec les plans de vols déposés car ils reètent la demande réelle des compagnies. Ce n'est que sur celle-ci qu'il est possible d'eectuer une régulation. Les plans de vol réalisés correspondent à ce qui s'est réellement passé. CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 16 3.1.5 Exemple d'une journée de trac La gure 3.3 donne un aperçu du schéma d'ouverture et du trac traversant le centre de contrôle de Brest pendant une journée entière. Chaque ligne correspond à une position de contrôle ouverte et les séparations verticales à des changements de valeur de la capacité. La courbe représente le nombre d'avions qui vont rentrer dans les 60 prochaines minutes. Dès les premières heures de la journée (en haut à gauche), seules trois positions sont ouvertes. On remarque que la courbe augmente à la n de ces cases ce qui indique une augmentation du trac à venir. Pour faire face à cette hausse, cinq secteurs les remplacent alors, puis quelques heures plus tard, 4 autres viennent se rajouter alors qu'un est supprimé (cela correspond à un dégroupement, inverse d'un regroupement) puis, le trac diminuant, des regroupements sont eectués en n de soirée. Cette gure ne montre en aucun cas la charge de travail d'un contrôleur mais s'intéresse à la réalisation d'un schéma d'ouverture en fonction de l'évolution du trac. NGA OQJ FZX GA N J OQ Z ZU ZS X FBRT A G 0h 3h 4h 9h 15h 19h 21h30 24h Fig. 3.3 Centre de contrôle de Brest : évolution du trac aérien lors de la journée du 20 mai 1999 3.2 Problèmes posés et solutions envisagées Chaque compagnie décide elle-même des plans de vols de ses avions et a une tendance forte à utiliser les routes les plus directes, ce qui conduit au résultat de la gure 3.1. Or, comme nous l'avons vu, la capacité de contrôle est limitée. Puisqu'il est dicile d'augmenter la capacité des diérents secteurs, il faut trouver des méthodes qui permettent de limiter le nombre d'avions présents dans un même secteur. An d'anticiper une variation de la charge CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 17 de contrôle et éviter que les contrôleurs se trouvent dans l'incapacité de gérer le trac qui leur est imparti, les acteurs de la gestion du trac aérien travaillent en ux entrant, c'est-à-dire en nombre d'avions qui vont entrer dans le secteur pendant une période de temps donnée. Cela s'appelle de la gestion des ux ou Air Trac Flow Management. La gestion des ux transcende les frontières des états. Par exemple, pour un aéroport comme Paris-Charles de Gaulle, l'approche se prépare dès la Belgique. C'est pourquoi le système européen est centralisé : c'est la CFMU8 . Cependant, chaque centre possède une FMP9 qui sert d'interface avec la CFMU. Les FMP lui communiquent les informations nécessaires à la gestion du trac comme les capacités, les diérents regroupements et les heures auxquelles ils sont eectués. De plus elles sont en contact permanent avec la CFMU an de suivre l'évolution, en temps réel, du trac aérien. 3.2.1 La CFMU La gestion du trac aérien, sur une région fortement morcelée comme l'Europe, prend une dimension supranationale. C'est dans ce contexte que l'agence EUROCONTROL a été créée. Elle a pour but de servir le développement du trac aérien en Europe, d'assurer sa sécurité, sa uidité et de développer des solutions aux problèmes communs. L'agence s'occupe, parmi d'autres choses, de la recherche et du développement en matière de contrôle aérien, de gérer les activités de coordination et d'harmonisation entre les états membres. Elle collecte les redevances, fournit les services du contrôle (centre de Maastricht) et par le biais de la CFMU rend les services de gestion des ux de trac. La CFMU est l'organe d'EUROCONTROL en charge de fournir les services ATFM10 . Elle attribue les créneaux de départ aux avions lors des périodes de fort trac. Elle donne ainsi la valeur du retard à respecter pour chaque avion par rapport à l'heure de décollage souhaitée par la compagnie et elle indique quels secteurs en sont la cause à des ns d'analyse. Le but de la CFMU La gestion des ux est un service complémentaire au service du contrôle. Il s'agit d'obtenir un trac optimal (c'est-à-dire le plus uide possible) à travers les zones et durant les périodes où la demande excède la capacité. Le but de la CFMU est de satisfaire, dans la mesure du possible, les demandes des compagnies, d'assurer une utilisation maximale de la capacité de contrôle, d'avoir le plus de exibilité dans la gestion du trac et d'ordonner les ux de trac. Cette gestion du trac n'est pas un but en soi mais un simple outil pour palier le manque de capacité des services de contrôle ; le but premier étant de mettre en place un service susant pour satisfaire la demande. Les phases de l'activité ATFM Les activités de la CFMU au niveau de la gestion des ux se répartissent en trois phases : stratégique ; pré-tactique ; tactique. 8 Central Flow Management Unit 9 Flow Management Position 10 Air Trac Flow Management CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 18 Stratégique La phase stratégique permet d'identier les principaux problèmes en termes de déséquilibre de l'ore (capacité) par rapport à demande et de mettre en place les actions nécessaires à la correction de ces déséquilibres. Cela se fait : par la collecte, l'étude de données et la publication de comptes-rendus ; par un processus de coordination internationale destiné à assurer la compatibilité et l'ecacité des eorts nationaux. La phase stratégique permet de donner les éléments et les conseils nécessaires aux états pour faire des ajustements quant à l'organisation de l'espace aérien, aux procédures de contrôle et à la gestion des eectifs. Pré-tactique La phase pré-tactique commence deux jours avant le jour des opérations. Elle consiste en : l'étude de la demande de plan de vol (réactualisée en continue) ; la comparaison de cette demande avec la capacité de contrôle disponible donnée par les FMP ; la mise en place de mesure ATFM pour l'ensemble de la zone régulée par la CFMU en accord avec chaque FMP. Tactique La phase tactique se déroule le jour des opérations. Il s'agit alors : de mettre en place les mesures de gestion décidées antérieurement ; de s'assurer que les problèmes de surcapacité sont résolus avec les mesures appropriées ; de s'assurer que les retards ou les restrictions de vol imposés sont utiles et minimaux. Pour réaliser cela, un contact permanent entre les services du contrôle (via les FMP) et la CFMU est nécessaire. Ainsi la CFMU a une vision suivie de l'état du trac actuel, ce qui permet de coordonner les actions an de maximiser l'utilisation de la capacité, de pouvoir réagir en cas de problème non détecté durant les phases précédentes, de surveiller les eets des mesures mises en place et les retards occasionnés. L'allocation de créneaux Les compagnies aériennes doivent déposer un plan de vol indiquant la route, l'heure de décollage souhaitée et divers renseignements concernant l'avion. C'est la collecte et l'étude de ces plans de vol qui permettent de prévoir et de gérer le trac, notamment en en déduisant l'heure d'entrée de chaque avion dans les diérents secteurs de l'espace aérien que chacun doit traverser au cours de son vol. Nous allons détailler ici le fonctionnement de CASA (Computer Assisted Slot Allocation). CASA est un système automatique et centralisé qui a en charge l'attribution des créneaux de décollage [Rog00]. Pour chaque zone régulée, CASA génère une liste de créneaux de passage disponibles dont le nombre est égal à la plage horaire divisée par la capacité. Ainsi, si un secteur de capacité horaire égale à 30 avions se trouve régulé, CASA crée une liste de créneaux d'entrée dans le secteur de deux minutes chacun (60 minutes divisées par la capacité) et cela pour toute la durée d'ouverture du secteur-période considéré. La liste ainsi générée va se remplir au fur et à mesure de l'arrivée des plans de vol. Si un avion souhaite passer dans un créneau déjà alloué à un autre vol, c'est l'avion qui aurait dû passer le premier en l'absence de régulation qui obtient le créneau. L'autre avion est reclassé CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 19 dans le créneau suivant. Si cette case est occupée alors le processus se répète. Il peut donc se produire une réaction en chaîne. Un vol peut décaler de proche en proche de nombreux avions. L'allocation obtenue est évolutive puisque chaque nouveau plan de vol peut bouleverser la liste. Pour l'instant, on ne parle que d'une pré-allocation des créneaux. Si un vol est annulé, la case qu'il occupe dans chaque liste est libérée et les autres vols peuvent ainsi voir leur situation évoluer. L'EOBT (Estimated O-Block Time) est l'heure à laquelle un avion a prévu de quitter le parking. Elle dière de l'heure de décollage par le temps mis par l'avion pour se rendre au seuil de piste. Deux heures avant l'EOBT d'un avion, le créneau de l'avion concerné est communiqué à la compagnie et au service de contrôle. A ce moment, le créneau ne peut plus être pris par un autre vol. Cependant, si la compagnie est dans l'incapacité de prendre ce créneau, elle doit demander un changement. L'allocation de créneaux faite par la CFMU, au contraire des autres modèles que nous allons voir est dynamique. Elle est recalculée en permanence an de tenter d'améliorer la situation lorsque cela est possible. En fait, la CFMU reproduit de manière automatisée ce que l'homme faisait manuellement. Bien que cette méthode apporte des résultats et permette une certaine régulation du trac aérien, elle comporte certains défauts, notamment lorsqu'un avion entre, au cours de son vol, dans plusieurs zones régulées parce que l'allocation se fait par rapport à l'heure d'arrivée sans retard dans le secteur considéré et donc ne tient pas compte des autres zones régulées. Il existe d'autres méthodes d'allocation de créneaux comme celle intégrée dans le projet SHAMAN11 développé au CENA-Athis [PM98, Riv01] ou encore, celle qui nous intéresse plus particulièrement, développé au Laboratoire d'Optimisation Global du CENA/ENAC [BB00] dont le but ultime est le même : retarder les avions au décollage pour qu'ils ne subissent pas de retard au cours du vol et ainsi permettre un meilleur écoulement du trac. 3.2.2 Module d'allocation de créneaux de SHAMAN SHAMAN est une plate-forme dans laquelle sont implantées des fonctionnalités permettant : la diusion sélective d'informations selon diérents niveaux de représentation (centres, secteurs, ux de trac) pour apprécier principalement la répartition de la demande de trac et l'utilisation de la capacité ; l'évaluation rapide des eets d'un ensemble de mesures de régulation tels que les choix de la conguration d'un centre de contrôle ou l'aectation, à certains ux de trac, de débit ou de délai maximal spécique. Les utilisateurs potentiels d'outils intégrant les fonctions développées dans SHAMAN sont, entre autres, la CFMU et les FMP en phase pré-tactique et pour l'analyse a posteriori. Shaman utilise en partie la programmation par contraintes (voir chapitre 2). Les heuristiques de recherche utilisées sont multiples et nous ne nous intéresserons ici qu'à celle qui donne les meilleures résultats : premier arrivé sur la contrainte la plus chargée, premier servi. Cette heuristique est très proche du mode de résolution utilisé par la CFMU. Quelle que soit l'heuristique choisie, chaque avion possède une variable de retard au décollage, un maximum de retard autorisé (en général 240 minutes) et son plan de vol est parfaitement connu. Le schéma d'ouverture des cinq centres de contrôle en route étant également 11 Le nom du projet Marabout est une traduction ML de SHAMAN... CHAPITRE 3. DESCRIPTION DU PROBLÈME DALLOCATION DE CRÉNEAUX 20 connu, chaque secteur ouvert est découpé en secteurs-périodes (en général par période d'une heure). La stratégie de résolution est l'implémentation séquentielle des variables de retard, l'ordre étant déni par l'heuristique utilisée. Dans le cas qui nous intéresse, on sélectionne le secteur-période le plus chargé par rapport à un indicateur de charge puis on repousse le passage du dernier vol entrant dans le secteur-période (si tous les retards sont nuls) dans le secteur-période suivant (voir section 5.2.1). Par exemple, dans un secteur-période de capacité égale à trois, quatre avions le traversant, le dernier vol est repoussé. On recommence jusqu'à la détection d'un échec ou d'une solution. La recherche d'une solution n'est donc qu'une simple instanciation des variables de retard, la programmation par contraintes n'ayant pour but que de vérier le respect des limites de capacités et de repérer plus rapidement les échecs éventuels. Si l'implémentation échoue, on considère qu'il n'y a pas de solutions ; ni backtrack ni optimisation n'est eectué dans la version actuelle utilisée au CENA. Les méthodes de résolutions qui ont été décrites ici ne sont que deux parmi d'autres mais représentent sans doute les deux projets les plus aboutis. La méthode que nous allons étudier dans la suite n'en est encore qu'au stade expérimental. Chapitre 4 Les solutions retenues pour le projet Marabout Dans toute la suite, on parlera abusivement de secteur pour désigner une position de contrôle, qui correspond soit à un secteur élémentaire, soit à un regroupement, et toujours de capacité constante pendant sa période d'ouverture (si un secteur change de capacité au cours de la journée, on le considère comme deux secteurs distincts). Plusieurs modèles ont été retenus par [BB00] pour la résolution du problème d'allocation des créneaux. Ces modèles dièrent par l'interprétation des contraintes de charge de secteur ; la capacité horaire pouvant être prise en compte de manière discrète, avec un intervalle de temps à choisir (ce qui ressemble au modèle utilisé dans SHAMAN section 3.2) ou bien continûment. Tous ont été implémentés avec FaCiLe, une bibliothèque de programmation par contraintes sur les domaines nis écrite en Objective Caml [Ler00] par les mêmes auteurs [BB01]. La description des modèles utilise les notations suivantes : S : l'ensemble des secteurs ouverts (ce qui correspond à l'ensemble des positions de contrôle), chacun avec un début (start) et une n (end) ; F : l'ensemble des vols ; tsi : l'heure à laquelle le vol i entre dans le secteur s si ce vol n'est pas retardé ; capas : la capacité du secteur s (au sens CFMU : nombre de vols entrant par heure) ; δ : la durée de la période unitaire pour la contrainte de capacité en minutes (pour la CFMU, δ = 60. Tous les modèles travaillent sur les variables de décision suivantes : Di : retard au décollage du vol i. Deux familles de modèles équivalents sont présentées. La première décrit les modèles discrets classiquement utilisés aujourd'hui [Mau96], la seconde, les modèles continus. 4.1 Fenêtres sans recouvrement : modèle discret Pour la première famille de modèles, nous considérons des périodes de charge successives et contiguës : P s = {ps0 , ps1 , ...} : périodes successives de longueur δ , chacune dotée d'un début (start) et d'une n (end). La première période commence avec l'ouverture du secteur : start(ps0 ) = start(s). 21 CHAPITRE 4. LES SOLUTIONS RETENUES POUR LE PROJET MARABOUT 22 Ces périodes correspondent aux secteurs-périodes utilisés dans SHAMAN si δ est égale à une heure (voir section 3.2) et chacune a une capacité constante. On peut donc écrire : P s = {[start(s), start(s) + δ[, [start(s) + δ, start(s) + 2δ[, ...} Ce choix de non-recouvrement de périodes de charge conduit à plusieurs modélisations possibles ; nous en présentons deux dans les sections suivantes, l'une utilisant des contraintes basiques, l'autre utilisant une contrainte globale. 4.1.1 Variables booléennes Le modèle Standard utilise des variables auxiliaires booléennes correspondant à la présence des vols dans les diérentes périodes : Bi,psj : le vol i entre dans le secteur s durant la période psj . Les contraintes correspondantes sont les suivantes : la première relie les variables auxiliaires aux variables de décision, la seconde exprime celle dûe aux capacités des diérents secteurs. ∀s ∈ S ∀psj ∈ P s ∀s ∈ S ∀psj ∈ P s Bi,psj ssi start(psj ) ≤ tsi + Di < start(psj ) + δ X Bi,psj ≤ capas i∈F L'inconvénient majeur de cette solution est le nombre important de variables auxiliaires, proportionnel au nombre de secteurs et au nombre de périodes. |{Bi,psj }| = |F| X end(s) − start(s) s∈S δ Pour restreindre l'usage de variables auxiliaires, la formulation suivante utilise une contrainte globale. 4.1.2 Contrainte globale de cardinalité Une contrainte globale de cardinalité (gcc) est spéciée avec les composants suivants : un ensemble de variables X = {X1 , ..., Xn } ; un ensemble de valeurs V = {V1 , ..., Vd } ; un ensemble de cardinaux (variables à domaine intervalle) C = {C1 , ..., Cd }. La contrainte globale de cardinalité contraint le nombre d'occurrences de valeurs de V parmi X . Plus formellement, la contrainte gcc(C, V, X) exprime ∀i |{x ∈ X|x = Vi }| = Ci [Rég96] a proposé un algorithme de propagation ecace et complet pour cette contrainte. La contrainte gcc permet de reformuler aisément le modèle Standard pour l'allocation de créneaux. L'idée de base est de calculer la période pendant laquelle un vol entre dans un secteur en fonction de son retard. Or dans le modèle standard, les périodes constituent une partition régulière du temps, ce qui permet de réduire ce calcul à une simple opération arithmétique : si les périodes successives de longueur δ sont numérotées 0, 1, ..., j, ... la période correspondant CHAPITRE 4. LES SOLUTIONS RETENUES POUR LE PROJET MARABOUT 23 à un temps t vaut bt/δc. On prend donc pour la gcc Vj = j et on contraint Cj à être inférieur à la capacité de la période j . Par exemple, pour un secteur ouvert pendant quatre heures et découpé en périodes d'une heure, on numérote les périodes 0, 1, 2 et 3. À chaque avion, on associe une variable qui donne le numéro de la période qu'il traverse. On doit donc avoir le nombre d'occurrences de 0, 1, 2 ou 3 parmi ces variables (qui correspond au nombre d'avions traversant la période) inférieur à la capacité. Avec une gcc, le modèle s'exprime en utilisant les variables et valeurs auxiliaires suivantes : Xis : index de la période de l'heure d'entrée du vol i dans le secteur-période s ; Vjs = j : index de la j ème période dans le secteur-période s ; Cjs = 0..capas : nombre de vols entrant dans le secteur-période s durant la j ème période. Pour chaque secteur-période, il sut alors de lier les variables auxiliaires aux variables de décision et de contraindre les variables auxiliaires avec une gcc. ∀s ∈ S, ∀i ∈ F ∀s ∈ S Xis = (tsi + Di )/δ gcc(C s , V s , X s ) Les arguments pour préférer l'usage d'une contrainte globale à un ensemble de contraintes élémentaires sont nombreux : le modèle est plus simple à écrire et plus facile à appréhender ; le nombre de contraintes et de variables est réduit, ce qui réduit d'autant la taille de l'arbre de recherche ; une propagation plus ecace peut être réalisée. 4.2 Modèles continus Les deux modèles précédemment décrits ont l'inconvénient d'être fortement discontinus. Ils contraignent seulement la charge du secteur au début de chaque période, c'est-à-dire par défaut uniquement 24 fois par jour. L'objectif de la fonction de coût étant de minimiser les retards, l'eet de bord attendu de cette modélisation est un nombre important de vols en début de période (même phénomène de pics que celui rencontré dans SHAMAN). Ceci est conrmé par les expérimentations (voir section 6.2). Pour remédier à ce biais, [BB00] proposent deux nouvelles formulations. La première est un simple ranement du modèle Standard, la seconde utilise une contrainte globale de tri sur un problème dual. 4.2.1 Fenêtres glissantes En conservant l'idée du modèle Standard, il est possible de dénir un modèle plus continu en considérant des périodes se chevauchant. Nous introduisons pour cela un paramètre supplémentaire (σ ) correspondant à l'intervalle de temps entre deux périodes successives : P s = {[start(s), start(s) + δ[, [start(s) + σ, start(s) + σ + δ[, ...} Ce modèle reprend évidemment le modèle Standard et lui est équivalent pour σ = δ . Il peut être mis en ÷uvre avec les mêmes variables booléennes auxiliaires. Malheureusement, l'astuce permettant d'utiliser la contrainte globale de cardinalité ne s'applique plus dans le cas général d'un σ quelconque car un vol est alors concerné par plusieurs périodes simultanément. CHAPITRE 4. LES SOLUTIONS RETENUES POUR LE PROJET MARABOUT 24 δ Standard Glissant σ Fig. 4.1 Fenêtre glissantes 4.2.2 La contrainte de tri Soit D un ensemble totalement ordonné. La contrainte de tri est la relation associée à la fonction standard de tri. Alors qu'une fonction de tri prend en argument une séquence de n éléments de D et retourne une autre séquence contenant les mêmes éléments ordonnés, la contrainte lie deux séquences de variables à domaine ni à valeur dans D. Formellement, la contrainte de tri sur les variables intervalle X1 ,...,Xn ,Y1 , ..., Yn dans un ensemble totalement ordonné (D, ¹) exprime (X1 , ..., Xn , Y1 , ..., Yn ) ∈ sort où ½ sort = (x1 , ..., xn , y1 , ..., yn ) ∈ D2n tel que (y1 , ..., yn ) est une permutation de (x1 , ..., xn ) et ∀i ≤ j, yi ¹ yj ¾ Exemple : soit X = {[0 − 13]; [6 − 10]; [10 − 11]; [4 − 16]; [4 − 6]} Y = {[1 − 3]; [5 − 10]; [6 − 9]; [11 − 17]; [10 − 15]} deux séquences de variables intervalle. La pose de la contrainte sort(X, Y ) conduit aux ranements suivant sur les bornes des intervalles : X = {[1 − 3]; [6 − 9]; 11; [11 − 15]; [5 − 6]} Y = {[1 − 3]; [5 − 6]; [6 − 9]; 11; [11 − 15]} [GC97] propose un algorithme ecace de ltrage pour cette contrainte. Il est remarquable que la complexité de cet algorithme complet (c'est-à-dire que la propagation eectuées sur les bornes des intervalles est maximale et donc que toutes les solutions possibles sont envisagées) de consistance ait une complexité optimale en O(n log n). L'algorithme est décrit en six étapes impliquant des structures de données relativement complexes (arbre binaire balancé, ...) et des tris standards. Le ranement n'est fait que sur les bornes des domaines des variables. CHAPITRE 4. LES SOLUTIONS RETENUES POUR LE PROJET MARABOUT 25 Pour ce problème, [BB00] utilise une contrainte de tri par secteur. Cette contrainte est posée sur des variables auxiliaires correspondant aux heures d'entrée des avions dans le secteur et à ces mêmes heures ordonnées : Tis : heure d'entrée du vol i dans le secteur s ; Sjs : heure d'entrée du j ème vol entrant dans le secteur s. Les contraintes de tri lient les variables de décision avec les variables auxiliaires. La contrainte de capacité est exprimée sur les variables auxiliaires uniquement (les heures d'entrée triées) : deux vols avec des heures d'entrée Sj et Sj 0 dans la séquence ordonnée tels que j + capa ≤ j 0 doivent être distants d'au moins δ minutes (cf. gure 4.2) : ∀s∀i ∈ F ∀s ∀s∀j ∈ {1, .., |F| − capas } Tis = tsi + Di sort(T s , S s ) s Sjs + δ ≤ Sj+capa s S11 + 30 ≤ S31 10ème 11ème 30ème 31ème S10 + 30 ≤ S30 Fig. 4.2 Contrainte de capacité appliquée aux vols ordonnés (δ = 30, capa = 20) La contrainte de capacité n'est pas tout à fait correcte car elle est posée même pour des paires de vols dont l'un entre avant ou après la période d'ouverture secteur. Elle doit donc être relaxée dans ce cas ; cela peut être réalisé simplement à l'aide de variables booléennes : ∀s ∈ S ∀j ∀s ∈ S ∀j ∈ {1, .., |F| − capas } Bjs ssi start(s) ≤ Sjs < end(s) s s s Sjs + δ ≤ Sj+capa s + (2 − Bj − Bj+capas ) ∗ δ La variable booléenne Bjs est la réication de la contrainte exprimant que le secteur s est concerné par le vol j . Si pour une paire de vols, un des deux vols est en dehors de la période d'ouverture, la contrainte de capacité est relaxée avec le second terme du membre droit de l'inégalité. L'utilisation d'une contrainte de tri a déjà été proposée par [Zho96] pour résoudre le problème job-shop1 . La contrainte d'utilisation unique d'une machine (de capacité unitaire) a un instant donné est alors facilement exprimée en contraignant la j ème tâche à nir avant le début de la (j + 1)ème . La formulation de la contrainte de tri de [BB00] dière donc de celle-ci par l'expression supplémentaire d'une capacité à travers les contraintes de précédence. 1 Job-shop est un problème d'ordonnancement : le but est de réaliser sur plusieurs machines diérentes tâches en un minimum de temps Chapitre 5 Mise en ÷uvre De même que les modèles décrits dans le chapitre précédent, la mise en ÷uvre qui suit utilise la librairie de programmation par contraintes FaCiLe. FaCiLe[BB01] est une librairie de programmation par contraintes semblable à ILOG Solver[Sol99] sur des domaines nis d'entiers, écrite en OCaml[Ler00]. Elle ore toutes les possibilités usuelles pour créer et manipuler des variables à domaine ni, des expressions arithmétiques et des contraintes (non obligatoirement linéaires). FaCiLe permet de construire aisément des contraintes et des buts (même récursif) en utilisant des fonctions OCaml d'ordre supérieur. 5.1 Méthode à la SHAMAN L'idée de cette mise en ÷uvre est de rajouter au projet Marabout une méthode d'allocation de créneaux utilisant la même heuristique que SHAMAN (voir section 3.2.2) : premier arrivé sur la contrainte la plus chargée, premier servi. Nous reprenons les mêmes notations que précédemment pour la description de ce modèle, c'est-à-dire : S : l'ensemble des secteurs-périodes, chacun avec un début (start) et une n (end) ; F : l'ensemble des vols ; tsi : l'heure à laquelle le vol i entre dans le secteur-période s si ce vol n'est pas retardé ; capas : la capacité du secteur-période s. 5.1.1 Les variables Le modèle fait intervenir trois types de variables : Di : le retard au décollage associé à l'avion i ; Cs : la charge du secteur-période s ; Rmax : le retard maximum qu'il est possible d'allouer à un avion. Mise à part les variables Cs qui sont dénies implicitement par la pose d'une contrainte (voir section 5.1.2), les variables de retard Di ainsi que le retard maximum sont dénies par : ∀i ∈ F, Di = [mini ; maxi ] Rmax = [0 ; maxr ] 26 CHAPITRE 5. MISE EN ×UVRE 27 où mini (respectivement maxi ) est le retard minimum (resp. maximum) qui peut être alloué à l'avion i et maxr , le retard maximum que l'on souhaite obtenir. Dans les problèmes traités par la suite, il y aura donc une variable de retard par avion (entre 6000 et 8000 suivant les journées) comprise, en général, entre 0 et 120 minutes, une seule variable de retard maximum comprise, de même, entre 0 et 120 minutes et une variable de charge par secteur-période (aux alentours de 2000 dans une journée). 5.1.2 Les contraintes La première contrainte vise à compter le nombre d'avions présents dans un secteur-période s en tenant compte du retard possible de chaque avion. On notera Eis l'heure d'entrée de l'avion i dans le secteur-période i. Eis = tsi + Di ∀s ∈ S, Cs = X ( starts ≤ Eis < ends ) | {z } i∈F variable booléenne Bis (5.1) (5.2) Les deux contraintes suivantes sont de type inéquation : le nombre d'avions présents dans un secteur-période doit être inférieur à la capacité de ce secteur ; ∀s ∈ S, Cs ≤ capas (5.3) tous les délais doivent être inférieurs au délai maximum autorisé1 . ∀i ∈ F, Di ≤ Rmax (5.4) Dans les problèmes traités par la suite, le nombre de contraintes (5.1) est proportionnel au nombre d'avions ainsi qu'au nombre de secteurs-périodes que chacun est susceptible de traverser (c'est-à-dire de 6000 à 8000 avions qui traversent potentiellement en moyenne un dizaine de secteurs-périodes ; celui des contraintes (5.4) est proportionnel au nombre d'avions et on pose autant de contraintes (5.2) ainsi que de contraintes (5.3) qu'il y a de secteurspériodes (aux alentours de 2000 pour une journée). A cela il faut rajouter le calcul des variables Bis dont le nombre est proportionnel au nombre d'avion et au nombre de secteurspériodes qu'ils sont susceptible de traverser. On a donc à peu près 10000 variables et 200000 contraintes pour une journée de trac, ce qui est très important. 5.2 Stratégie de recherche et invariants 5.2.1 Stratégie de recherche La stratégie de recherche employée ici est donc premier prévu sur le secteur-période le plus chargé, premier servi , c'est-à-dire que l'avion à repousser est choisi d'abord en fonction de la charge des secteurs-périodes puis, en fonction de son heure d'entrée dans le secteur choisi [PM98]. 1 Cette contrainte est triviale est ne sert que si la dénition des variables Di permet un retard plus important que le retard maximum que l'on souhaite autoriser. CHAPITRE 5. MISE EN ×UVRE 28 Solution potentielle On appelle solution potentielle la valuation au minimum de chaque variable, (c'est-à-dire que chaque variable est instanciée au minimum des valeurs possible de son domaine). La stratégie de recherche est guidée par cette solution potentielle. Elle consiste à sélectionner la contrainte la plus violée par cette solution potentielle et à tenter de résoudre le conit en eectuant la modication qui cause le retard minimum [MJPL94]. Charge potentielle d'un secteur-période La stratégie de recherche nécessite de pouvoir calculer la charge d'un secteur-période, c'est-à-dire le nombre d'avions qui entrent dans un secteur-période s si les variables de retard sont instanciées au minimum (ce qui est équivalent à la charge de la solution potentielle). X ∀s ∈ S, cps = (starts ≤ tsi + min(di ) < ends ) (5.5) i∈F Choix du secteur-période [PM98] Le choix du secteur-période se fait par rapport à un charge potentielle . Ce calcul est eectué à chaque évolution (réduction capacité de domaine des variables de retards). Ceci entraîne un coût important égal au nombre d'avions qui traversent potentiellement le secteur-période considéré (il faut vérier pour chaque avion sa présence dans le secteur), et ceci pour chaque indicateur de charge. Pour éviter tout calcul inutile, ces indicateurs sont donc, grâce aux invariants, maintenus et ne sont recalculés que si une modication les concernent. indicateur de charge Choix du vol Une fois le secteur-période choisi, on repousse hors contrainte le dernier vol arrivé. Si cela est impossible, on repousse celui juste avant (et ainsi de suite) (cf g 5.1). La gure 5.1 représente un secteur-période et les avions susceptibles d'y entrer, représentés par l'heure minimum (hsi = min(esi ) = tsi + min(di )) d'entrée dans ce secteur-période. Supposons que capas = 2. On repousse hors contrainte le dernier vol arrivé. esi starts esi+1 secteur-période s ends temps heure d'entrée de l'avion pour un retard instancié au minimum Fig. 5.1 Décalage du dernier vol arrivé Dans une première version, le calcul des charges potentielles était eectué après chaque évolution , c'est-à-dire chaque fois qu'une variable voyait son domaine réduit. Or le nombre d'équations est proportionnel au nombre d'avions ainsi qu'au nombre de secteurs-périodes (de l'ordre de 15000 dans les problèmes traités par la suite). ce qui entraîne un temps de calcul extrêmement long. An de réduire ce temps de calcul, nous avons fait appel aux invariants (voir section 5.2.2). Mise hors contrainte d'un avion La mise hors contrainte d'un avion se traduit par l'aectation d'un retard (si cela est possible) au moins égal à la diérence entre l'heure de CHAPITRE 5. MISE EN ×UVRE 29 fermeture du secteur-période dont on veut le repousser et l'heure d'entrée de cet avion dans ce secteur. On eectue ainsi une réduction du domaine de sa variable de retard. Recherche d'une solution La recherche d'une solution passe donc par la résolution des équations suivantes : ∀s ∈ S, cps ≤ capas Une fois toutes ces équations satisfaites, on sait que la solution potentielle est une solution eective. On instancie donc chaque variable (non réduite à une unique valeur) à son minimum. On a bien alors un ensemble de variables qui vérie les contraintes du problème. Le but est donc une conjonction entre cette instanciation et la stratégie de recherche utilisée. Si on n'eectue pas d'optimisation, la fonction de recherche utilisée s'arrête à la première solution trouvée. On s'aperçoit alors que dans le cas sans optimisation, on peut résoudre le problème sans utiliser la programmation par contraintes, celles-ci ne permettent en fait que de détecter plus rapidement les échecs. En revanche, les contraintes sont nécessaires si on veut optimiser le résultat. 5.2.2 Invariants [MH00] Les invariants permettent essentiellement de réduire les coûts de certaines opérations lorsque peu d'éléments de celle-ci varient. Par exemple, si on considère une somme de la forme : sum = a1 + ... + ai + ... + an Supposons que seul ai est modié en āi . Si on eectue à nouveau le calcul, le coût est de n. Les invariants permettent de réduire ce coût à 1 en eectuant le calcul suivant : sum = sum − ai + āi FaCiLe permet l'implémentation de références invariantes (notée ir ) modiables (ce qui permet le backtrack ainsi que la possibilité de dépendance entre plusieurs références invariantes (voir ci dessous). On peut dénir ces références invariantes de plusieurs manières : 1. par rapport à une constante c : ir := c 2. par rapport à d'autres références invariantes (irs) : ir := f (irs) 3. par rapport au domaine (ni) d'une variable X de FaCiLe : ir := min(X) CHAPITRE 5. MISE EN ×UVRE 30 Application Comme on l'a vu précédemment, le nombre de variables nécessaires à la réso- lution est très élevé. De plus, les calculs de charges potentielles sont nombreux et répétitifs. Or retarder un avion pour le faire passer dans un autre secteur-période ne modie pas toutes les variables du problème mais seulement un nombre limité. Les invariants vont donc nous permettre de maintenir des variables et de relations entre elles comme la somme des retards, les charges des secteurs-périodes et réduire ainsi le temps de calcul. Par exemple les charges potentielles dénies par l'équation (5.5) ne sont recalculés que lorsqu'un avion entrant potentiellement dans un secteur-période s voit le domaine de sa variable de retard modié. Le calcul ne fait qu'enlever 1 à cps si l'avion sort de s. Le coût de calcul d'une somme, grâce aux invariants, est donc constant (indépendant de la taille de la somme). 5.3 Optimisation Le critère retenu a été la minimisation du maximum des retards que l'on peut allouer à un avion, cela sans tenir compte de la somme des retards. En eet, une contrainte sur une somme n'est pas eective en terme de propagation car il est plus facile d'optimiser une seule variable que plusieurs reliées entre elles par une somme. FaCiLe permet d'eectuer une optimisation suivant l'algorithme de Branch & Bound (voir section 2.2.6) de deux façons diérentes : Sans backtrack ; c'est-à-dire que lorsqu'on a trouvé une solution, on recommence l'algorithme depuis le début en cherchant une solution de coût inférieur à celle déjà trouvé ; Avec backtrack ; c'est-à-dire qu'au lieu de recommencer depuis le début, lorsqu'on a trouvé une solution, on backtrack jusqu'à revenir à un point de choix possédant une branche susceptible d'aboutir à une solution de moindre coût. Chapitre 6 Robustesse au bruitage des données Seuls les tests du modèle discret, utilisant la contrainte globale de cardinalité et du modèle continu utilisant la contrainte de tri apparaissent ici ; les solutions du modèle glissant avec σ = δ et du modèle Standard étant équivalentes, on ne s'intéressera qu'au modèle Standard parmi les modèles discrets. De même, parce que l'on peut obtenir une certaine équivalence entre le modèle glissant avec σ petit et le modèle Continu utilisant la contrainte de tri, on se limitera à l'étude du modèle utilisant la contrainte de tri parmi les modèles Continus. De plus, le modèle à la SHAMAN a été abandonné car il ne permet pas de réguler un nombre susant de journées de trac comme il a été possible pour les autres modèles et n'a pas pu être comparé ici aux autres modèles. Tout les tests ont été menés avec une précision ² (unité de temps) de 5 minutes1 , sur des périodes unitaires δ pour la contrainte de capacité (taille d'un secteur-période) de 30 minutes et un retard maximum de 60 minutes. 6.1 Résultats Les tests eectués sur l'eet produit par les diérentes méthodes de régulation ne sont bien sûr pas complets, aucune variation sur les paramètres n'ayant été faite2 , et ne sont là que pour illustrer le comportement de ces deux méthodes. Dans cette section, la journée du 4 février 1999 a été retenue. Ce jour, 6124 avions ont été en contact avec les organismes français du contrôle aérien, ce qui correspond à une journée de trac moyen puisque d'après les dernières statistiques [DNA01] 6176 vols ont été contrôlés, en moyenne, par jour en 1999. Les résultats du tableau 6.1 montrent tout d'abord l'extrême diculté d'optimisation3 des résultats, ceci à cause du nombre énorme de variables et du peu de liberté laissée par les diérents paramètres (capacité, nombre d'avions, etc...). Ensuite, il apparaît une énorme diérence au niveau de la somme des retards. En eet, sur l'immense majorité des cas traités, le modèle Continu génère au moins deux fois plus de retard que le modèle Standard, le nombre d'avions non retardés étant également moins important pour le modèle Continu Malgré cela, la diérence essentielle entre ces deux modèles est qualitative. La gure 6.1 1 Une précision inférieure ne signierait rien car on travaille sur une prévision issue des plans de vols. Les avions ne volant pas exactement à la vitesse indiquée, il faut autoriser quelques inmes variations. 2 Une comparaison partielle ayant été faite par [BB00]. 3 L'optimisation a été faite par rapport à la somme des retards. 31 CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES Modèle Standard Standard, Optimum Continu Continu, Optimum Somme des retards en minutes Nombre d'avions de retard nul 14315 14210 34865 34740 5262 5255 4420 4553 32 Nombre d'avions de retard inférieur à 15 minutes (non nul) 527 534 871 871 Tab. 6.1 Retards et nombre d'avions retardés induits par la régulation pour la journée du 4 février 1999 montre la prévision de charge, c'est à dire le nombre de vols entrant pendant les δ prochaines minutes (ici δ = 30) pour un secteur contrôlé par le centre de Reims. La courbe en pointillé correspond au trac non régulé (horaires prévus), la courbe continue correspond à la meilleure solution trouvée et la ligne horizontale à la limite de capacité (ici égale à 14). À première vue, il apparaît que le modèle Standard ne régule presque aucun vol (d'où une somme des retards plus faible) et il faut vérier attentivement que la solution assure un passage sous la limite de capacité toutes les δ minutes. La courbe pour le modèle Continu montre un résultat plus probant et attendu : la charge prévue ne dépasse jamais la capacité. 6.2 Inuence sur la charge instantanée An de vérier la présence d'un phénomène de pic (évoqué section 3.2.2) il a paru intéressant, avant même de bruiter les solutions, d'observer le comportement des deux modèles lorsqu'ils sont stressés , c'est à dire soumis à un nombre important de vols désirant entrer en même temps. Ce test à été réalisé en se limitant à un unique secteur et en diminuant la capacité de 10% an de contraindre un plus grand nombre de vols. La gure 6.2 montre le biais engendré par le modèle Standard. Des pointes apparaissent à chaque début de période. Sachant qu'un vol qui doit être retardé est repoussé dans la prochaine période non saturée, les avions ont tendance à entrer en début de la période suivante, ce qui provoque ces pics. Tout en respectant les contraintes de capacité, la charge n'est pas uniformément répartie dans le modèle Standard alors que le modèle Continu n'a pas cet eet négatif. 6.3 Retard supplémentaire au décollage Comme on l'a vu précédemment (voir section 3.1.4), les avions reçoivent des créneaux de décollage. Ceci, ajouté au fait que beaucoup d'avions ne respectent pas ces créneaux et décollent en dehors des limites autorisées, entraîne une diculté supplémentaire dans la régulation. En eet, il est impossible de prévoir à l'avance si tel ou tel avion sera en retard et d'en tenir compte lors de la phase d'allocation des créneaux. C'est pourquoi nous allons observer ce bruit sur les heures de décollage et tenter de comprendre ses implications sur la prévision de trac. La gure 6.3 représente la répartition des retards pour les avions contrôlés par les centres de contrôle français et ayant décollés d'un aéroport français. Sur 407491 avions concernés, CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 20 33 Standard Non regule 18 16 14 12 10 8 6 4 100 20 120 140 160 180 200 Continu Non régulé 18 16 14 12 10 8 6 4 100 120 140 160 180 200 Standard (en haut) et Continu (en bas) : eet de la régulation sur nombre de vols entrant dans le secteur pendant les prochaines δ = 30 minutes en fonction du temps. Fig. 6.1 Régulation avec les modèles CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 34 Standard Continu 30 25 20 15 10 5 0 0 200 400 600 800 1000 1200 1400 Fig. 6.2 Nombre instantané d'aéronefs présents dans un secteur test : pointes de trac au début de chaque période seulement un peu plus de 11% (47380 avions) partent à l'heure prévue et 78% des vols (318780 avions) respectent leur créneau, ce qui implique qu'un avion sur cinq ne respecte pas la norme en vigueur. De plus, 4% des vols possèdent plus d'une demi-heure de décalage (de retard ou plus fréquemment d'avance) par rapport à l'horaire imposé. 50000 1999 45000 Nombre de vols 40000 35000 30000 25000 20000 15000 10000 5000 0 -60 -40 -20 0 20 40 60 Retard (en minutes) Fig. 6.3 Répartition des retards sur l'année 1999 : nombre d'avions en fonction du retard au décollage Si on regarde plus en détail la distribution des retards sur les grands aéroport français au CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 35 cours de l'année 1999, on s'aperçoit que cette répartition n'est pas du tout homogène (voir gure 6.4). 5000 Nice Lyon Marseille Toulouse 4500 4000 3500 3000 2500 2000 1500 1000 500 0 -20 8000 -10 0 10 20 30 40 Roissy-CDG Paris-Orly 7000 6000 5000 4000 3000 2000 1000 0 -60 -40 -20 0 20 40 60 Fig. 6.4 Répartition des retards par aéroport sur l'année 1999 : nombre d'avions en fonction du retard au décollage On peut peut-être expliquer ces diérences par les temps de roulage, plus faibles sur les petits aéroports et surtout complètement imprévisible à Paris-Charles de Gaulle. Tout ceci rend extrêmement dicile la prise en compte des retards dans l'évaluation d'une méthode d'allocation de créneaux. Les tests qui vont suivre ayant été réalisés sur les plans de vols déposés en 1999 : nous bruitons les avions de manière aléatoire (c'est-à-dire que les avions bruités sont choisis au hasard) tout en respectant la distribution eectivement relevée au cours de l'année (voir gure 6.3) et regardons la robustesse de ces deux modèles. CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 36 6.4 Méthodologie La complexité du problème d'allocation des créneaux et les diérences entre les méthodes de résolution rendent dicile l'évaluation de leur robustesse. Une seule méthode ne sut pas ; de même qu'il existe une méthode discrète et une méthode continue pour la résolution, deux méthodes d'évaluation, une discrète et une continue, ont été utilisées. Un des problèmes de cette évaluation est la façon dont on considère la capacité. De même que pour la résolution, on la considère comme une limite de ux entrant, c'est-à-dire comme la limite du nombre d'avions qui vont rentrer dans le secteur pendant les δ prochaines minutes. Les tests ont été réalisés sur les plans de vols déposés par les compagnies aériennes au cours de l'année 1999. Les mois retenus pour ces tests sont les mois janvier, février, novembre et décembre. Ces mois sont des périodes de trac moyen et sont assez stables quant au nombre d'avions journalier qui traversent l'espace aérien contrôlé par la France. De plus, les mois de très fort trac, que sont avril, juin et septembre, connaissant des pointes pouvant aller jusqu'à plus de 8000 vols quotidiens [DNA01] sont impossibles à réguler avec la dénition et les valeurs des limites de capacité utilisées et/ou avec le schéma d'ouverture utilisé par les centres de contrôle les jours considérés (voir section 6.4.1). Le bruitage des départs n'entraîne pas obligatoirement un dépassement de capacité dans tous les secteurs-périodes parce qu'un bruit positif de cinq minutes peut être compensé par un (ou plusieurs) autre bruit négatif et parce que tous les secteurs-périodes n'ont pas atteint leur limite de capacité. Ainsi à première vue, comme le montre la gure 6.5 qui reprend l'exemple du secteur de Reims de la gure 6.1, le bruitage a un eet plus important sur le modèle continu que sur le modèle standard, mais une analyse plus poussée tend à inrmer cet a priori. 6.4.1 Les impossibilités de régulation Le trac aérien est en constante augmentation et avec lui le nombre de journées connaissant un fort trac. D'après [DNA01], alors que l'année 1998 n'avait connue qu'une seule journée de plus de 7500 vols contrôlés, 1999 en a connu 38, dont 3 journées de plus de 8000 vols contrôlés et l'an 2000 en a connu 97 dont 19 de plus de 8000 vols. Or, à côté de cette évolution, les limites de capacités n'ont pas augmentées : la demande explose alors que l'ore reste la même. C'est la raison d'être principale de la recherche sur l'allocation des créneaux. Comme on l'a vu précédemment, les tests n'ont été réalisés que sur 4 mois de l'année 1999 (en se limitant aux journées dont les données disponibles au LOG sont complètes, c'est à dire dont les données regroupent celles des cinq centres de contrôle en route) parce qu'il est impossible de satisfaire les contraintes correspondant au schéma d'ouverture des journées de trac (du moins celle dont on a les données) situées entre mars et octobre. Pour la très grande majorité de ces journées, y compris certaines journées des quatre autres mois, l'échec est prouvé, c'est-à-dire qu'il n'existe pas de solution capable de satisfaire les contraintes : il était impossible de faire passer le trac de ces journées sans dépasser les capacités et/ou sans provoquer de retards supplémentaires en vol. Tout le problème est de savoir si cela est dû à un nombre restreint de secteurs (voir de secteurs-périodes) et/ou si ce sont toujours les mêmes secteurs qui génèrent ces échecs. Les résultats obtenus montrent que la majeure partie de ces journées peut être régulée avec une augmentation de 20 à 25% de la capacité. Pour certaines journées, de trac moyen (c'est-à-dire en dessous de 7500 vols contrôlés) une augmentation entre 5 et 10% sut, ce qui CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 20 37 Standard Standard bruité 18 16 14 12 10 8 6 4 100 20 120 140 160 180 200 Continu Continu bruité 18 16 14 12 10 8 6 100 120 140 160 180 200 Fig. 6.5 Bruitage des modèles Standard (en haut) et Continu (en bas) : eet du bruit sur nombre de vols entrant dans le secteur pendant les prochaines δ = 30 minutes en fonction du temps CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 38 correspond seulement à augmenter les capacités de une à deux unités. En revanche, pour certaines journée de très fort trac (supérieure à 8000 vols) même un augmentation de 25% ne sut pas. Malheureusement il est très dicile de savoir quelle est la cause de l'échec. En eet, la contrainte (correspondant à un secteur-période) responsable de l'échec dépend de la technique de recherche utilisée. Le but est de retarder les avions au sol pour ne pas les pénaliser durant leur vol. Mais si, lors de la phase de régulation, (c'est-à-dire deux jours avant le départ) un avion devant passer dans des secteurs A et B se voit régulé et donc retardé de x minutes à cause de A, il est possible qu'alors B ne puisse pas l'accueillir dans les temps impartis (B est donc le secteur responsable ), alors que si la recherche commence par le faire passer par B avec un retard y , l'échec sera peut être dû à A. Finalement, seule une méthode de résolution du problème d'aectation beaucoup plus ne et qui permettrait d'augmenter la capacité de chaque secteur indépendamment les uns des autres pourrait fournir une indication des augmentations de capacité à réaliser pour faire passer le trac sans dépassement de capacité et/ou sans retard supplémentaire en vol. Mais cela ne resterait qu'une indication car les secteurs interagissent les uns sur les autres. 6.4.2 Méthode discrète Cette méthode d'évaluation se calque sur la méthode de résolution discrète (voir section 4.1) quant à la vérication des contrainte. Ainsi, on vérie, pour chaque secteur-période, que la capacité est respectée en utilisant le même découpage par fenêtres glissantes que celui utilisé lors de la résolution discrète. Il est évident que la méthode d'allocation de créneaux continue qui utilise le contrainte de tri (voir section 4.2) vérie, sans bruitage, les contraintes de capacité discrètes. Résultats du bruitage En fait, de même que pour vérier si le modèle Standard satisfait toutes les contraintes, il faut regarder minutieusement si la courbe (en pointillé sur la gure 6.5 passe eectivement en dessous de la limite de capacité toute les δ minutes). Le tableau 6.2 donne les résultats moyens obtenus sur les quatre mois testés (voir section 6.4). Pour la résolution, on découpe tous les secteurs par périodes d'une demi-heure (δ = 30). En moyenne, le schéma d'ouverture des centres de contrôle français d'une journée de trac se découpe en 2000 secteurs-périodes. On notera également que le pourcentage moyen de dépassement de capacité ne tient compte que des secteurs-périodes où il y a un eectivement un dépassement de capacité. Contrairement à ce qu'aurait pu laisser penser la gure 6.5, les tests apparaissent plus favorables au modèle Continu. En fait, la comparaison nécessite une analyse au cas par cas des résultats. Comparaisons des diérents modèles Comme nous venons de le voir, les résultats des tests, réalisés par la méthode discrète, semblent meilleurs dans le cas Continu. La diérence la moins agrante est celle du pourcentage moyen de dépassement de capacité. En eet, la diérence entre les deux modèles est de l'ordre de 2%. Or, sur des capacités variant de dix à vingt avions par demi-heure, cette diérence est de l'ordre de 0,4 avion, ce qui n'est CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES Modèle Standard Janvier Février Novembre Décembre Modèle Continu Janvier Février Novembre Décembre %age moyen de secteurs-périodes surchargés 5.32 6.86 6.67 5.35 %age moyen des dépassements de capacité 14.62 14.49 15.38 14.67 4.39 5.37 5.11 4.26 13.05 13.17 12.57 12.79 Tab. 6.2 Résultats du test discret sur le bruitage du modèle modèle Continu (en bas) 39 Standard (en haut) et sur le pas signicatif. En fait, le dépassement moyen de capacité varie entre deux et trois avions en trop , quel que soit le modèle de calcul. En revanche, une diérence d'un à deux point sur le nombre moyen de secteurs-périodes qui connaissent un dépassement de capacité implique une diérence de 20 à 40 secteurs-périodes surchargés en plus, ce qui correspond, en considérant qu'il faut au maximum 80 positions de contrôle en route pour gérer le trac aérien en France à une demi-heure de surcharge supplémentaire par position de contrôle et par jour. Malheureusement, 5% d'augmentation du nombre de secteurs-périodes surchargés est un nombre conséquent puisqu'il correspond à peu près à 1-1,5 heures de surcharge journalière par position de contrôle. En fait la diérence des heuristiques est surtout qualitative puisque le modèle continu ne dépasse jamais la limite de capacité. 6.4.3 Méthode continue De même que la méthode discrète se calquait sur le modèle Standard, cette méthode d'évaluation se calque sur la méthode de résolution continue (voir section 4.2) quant à la vérication des contraintes. Ainsi, on vérie que la capacité est respectée en utilisant le même découpage par fenêtres glissantes avec chevauchement que celui de la résolution utilisant la contrainte de tri. Il est alors évident que la méthode d'allocation de créneaux Standard ne vérie pas, même sans bruitage, les contraintes de capacité continues. On ne testera donc, dans cette partie, que le modèle Continu. Cette fois ci, on va s'intéresser à la longueur des dépassements. En eet, un simple pic de dépassement isolé (voir le premier pic sur la gure 6.6) et un dépassement plus long sur la durée (voir gure 6.6) ne vont pas générer la même quantité de travail pour le contrôleur. Il est bien évident que ce dernier peut absorber assez facilement une surcharge poctuelle et plus dicilement une surcharge continue pendant une longue période de temps. CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 18 40 Continu bruité 16 14 12 10 8 6 4 2 0 170 175 180 185 190 195 200 205 210 Fig. 6.6 Exemple de pics de dépassement de capacité Résultats du bruitage Les gures 6.7 et 6.8 donnent les résultats moyens obtenus sur les quatre mois testés (voir 7section 6.4). La première gure correspond à la durée moyenne d'un dépassement et la seconde, à leur hauteur moyenne. Continu bruité Continu optimum bruité Standard non bruité 300 2 250 200 1.5 150 1 100 0.5 50 0 Continu bruité Continu optimum bruité Standard non bruité 2.5 Janvier Février Novembre Décembre 0 Janvier Février Novembre Décembre Continu avec et sans optimisation ainsi que sur le modèle Standard non bruité : à gauche, nombre moyen de pics par jour ; à droite, hauteur moyenne des pics de dépassement Fig. 6.7 Résultats du test continu sur le modèle De même que pour le test Standard (voir section 6.4.2) les positions de contrôle ouvertes données par le schéma d'ouverture sont découpées en secteurs-périodes d'une demi-heure. Le glissement des fenêtres correspond à un décalage toutes les cinq minutes, le même que celui utilisé lors de la résolution. L'optimisation du modèle Continu est celle réalisée sur la minimisation du retard maximum. Étant donné que le modèle Standard ne satisfait pas au test, même non bruité, il a CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 41 Continu bruité Continu optimum bruité Standard non bruité 12 10 8 6 4 2 0 Janvier Février Novembre Décembre Durée moyenne des pics 160 140 Durée ≤ 5 minutes Continu bruité Continu optimum bruité Standard non bruité 140 120 120 100 100 80 80 60 60 40 40 20 20 0 Janvier Février Novembre Décembre 0 Durée ≤ 5 minutes 140 120 100 80 80 60 60 40 40 20 20 Février Novembre Novembre Décembre Continu bruité Continu optimum bruité Standard non bruité 140 100 Janvier Février 160 120 0 Janvier 5 minutes < Durée ≤ 10 minutes Continu bruité Continue optimum bruité Standard non bruité 160 Continu bruité Continu optimum bruité Standard non bruité 160 Décembre 0 10 minutes < Durée ≤ 20 minutes Janvier Février Novembre Décembre 20 minutes < Durée ≤ 30 minutes Continu bruité Continu optimum bruité Standard non bruité 160 140 120 100 80 60 40 20 0 Janvier Février Novembre Décembre 4.5 Durée > 30 minutes Continu avec et sans optimisation ainsi que sur le modèle Standard non bruité : en haut, durée moyenne des pics de dépassement en minutes ; au milieu et en bas, nombre de pics en fonction de leur durée. Fig. 6.8 Résultats du test continu sur le modèle CHAPITRE 6. ROBUSTESSE AU BRUITAGE DES DONNÉES 42 paru intéressant de voir dans quelle mesure celui-ci ne vérie pas les contraintes continues. Analyse des résultats La première interprétation que l'on peut faire de ces résultats est que même si quantitativement ceux-ci ne sont pas probants (voir section 6.4.2), ils sont bien meilleurs au niveau qualitatif. En eet, peu de pics dépassent les vingt minutes et la hauteur moyenne des dépassements est inférieure à deux avions. Comme nous l'avons vu précédemment, le modèle Standard ne satisfait pas les contraintes continues ; la seule contrainte vériée par ce modèle impose que la charge des diérents secteurs passe en dessous de la limite de capacité toutes les δ minutes. Ainsi, en regardant les courbes, le modèle Continu bruité ressemble au modèle Standard non bruité. Les résultats des tests sont alors assez surprenant. En eet, le modèle Continu soumis à un bruit est meilleur que le modèle Standard non bruité en terme de taille et de quantité de pics. Si on s'intéresse d'abord au nombre de pics et à leur hauteur moyenne, c'est le modèle Continu qui en possède le moins et en plus, la hauteur moyenne de ses pics tourne autour de 1,75 avions alors que le modèle Standard à une moyenne aux alentours de 2,15. Et il en va de même pour les tests sur la longueur des dépassements : alors que pour le modèle Continu cette durée est proche de 9,3 minutes, celle du modèle Standard lui est de 1 minute supérieure. Le seul avantage de ce dernier est qu'il ne génère aucun pic de dépassement au dessus d'une demi-heure4 puisque par dénition du modèle, la courbe doit passer au dessous de la limite de capacité toutes les δ minutes et qu'ici δ = 30. Pour vérier que l'optimisation n'ait pas un eet pervers quant au nombre de pics et à leur hauteur (on aurait pu craindre un nombre de pics inférieur à 10 minutes plus important ainsi qu'une hauteur plus grande) le test a également été réalisé sur les solutions non optimisées : il n'y a, a priori, aucune corrélation entre le nombre et/ou la taille des pics et l'optimisation des solutions par rapport à la somme des retards. 4 Si on eectue le test sur le modèle Standard bruité, les résultats on a peu près le même ordre de grandeur, c'est-à-dire qu'ils ne sont ni pire ni meilleur, mais cette avantage disparaît. Chapitre 7 Conclusion L'allocation de créneaux pour l'ATFM est un problème d'optimisation combinatoire dicile très mal résolu par le système qu'utilise actuellement la CFMU. Néanmoins, même si la programmation par contraintes apporte des réponses meilleures, il n'en reste pas moins que trouver de nouvelles modélisations ne sut pas a résoudre tous les problèmes. 7.1 Apports de la programmation par contraintes Les diérents modèles testés ici n'accordent pas la même importance à la régularité de la charge de travail des contrôleurs. Le modèle Standard, utilisant les fenêtre contiguës, fournit des solutions peu réalistes car, bien qu'il permette de vérier les contraintes de capacité imposées par la CFMU, il ne tient absolument pas compte de la charge réelle des contrôleurs, mise en évidence par l'apparition de pics de trac. En revanche, le modèle Continu, à fenêtre glissantes, lisse la charge de travail des contrôleurs mais conduit à des solutions plus coûteuses en termes de somme des retards attribués. Enn, la robustesse des diérents modèles au bruit engendré par le non-départ à l'heure d'un nombre important d'avions ne permet pas de trancher en faveur d'un de ces deux modèles. S'il apparaît à première vue que le modèle Continu résiste mieux, les diérences dépendent de la façon dont on perçoit la notion de capacité, c'est-à-dire par fenêtres glissantes (modèle Continu) ou de manière discrète (modèle Standard). En fait, les résultats sont globalement mauvais : hausse importante (5%) du nombre de secteurs-périodes surchargés, somme des retards importante, nombre d'avions retardés élevé et une question reste sans réponse : Estil préférable de retarder beaucoup d'avions peu de temps ou de retarder peu d'avions pendant longtemps ? . En outre la taille et donc le nombre de variables liées au problème rend ce dernier dicile à optimiser, les gains étant généralement inférieurs au pourcent. On s'aperçoit donc bien qu'au delà de la diérence de modélisation, c'est la manière dont on perçoit la capacité d'un secteur de l'espace aérien qui crée la diérence. 43 CHAPITRE 7. CONCLUSION 44 7.2 Perspectives Tout d'abord, le problème majeur de la résolution du problème d'allocation des créneaux à l'aide de la programmation par contraintes est qu'il est très dicile de savoir quels secteurs sont responsables de la majorité des retards attribués puisqu'ils sont fonctions de la stratégie de recherche utilisée. Il faudrait donc pousser l'analyse plus loin et modier, au cas par cas, les limites de capacité de chaque secteur pour tenter de cerner les principaux secteurs responsables des retards. Ensuite, le bruit n'apparaît pas comme un élément extrêmement perturbateur puisque la taille moyenne des pics de dépassement varie autour des dix minutes et le nombre moyen d'avions en trop reste inférieur à deux. Bien entendu, le bruit est plus particulièrement ressenti dans les secteurs ayant atteint leur limite de capacité. Mais au nal, résoudre les problèmes de dépassement avec une plus grande marge par rapport à la limite de capacité autorisée par les instances du contrôle aérien permettrait, sans doute, une absorption totale de ce bruit. De plus, le fait que son incidence soit à peu près la même sur deux modèles diérents peut faire penser que ce n'est pas un élément dont il faut tenir compte de prime abord. Finalement, le résultat le plus probant est l'impossibilité (prouvée) de résoudre ce problème pour les journées dépassant (et même pour certaines égalant) le nombre moyen d'avions contrôlés par jour. Il apparaît donc que les schémas d'ouverture proposés par les centres de contrôle en route ne sont pas à même de permettre une bonne circulation du trac et que la résorption des retards, problème chronique du transport aérien, ne pourra se résoudre que par la modication de schémas d'ouverture alliée aux nouvelles méthodes de résolution. On pourrait également s'intéresser à une régulation plus dynamique, c'est-à-dire en rerégulant le trac au fur et à mesure de la journée en tenant compte des retards déjà observés et comparer le coût de ces régulations successives en fonction des modèles utilisés. Bibliographie [AS94] Jean-Marc Alliot and Thomas Schiex. Intelligence articielle et informatique théorique. Cépaduès éditions, 1994. [Bar97] Nicolas Barnier. Optimisation par hybridation d'un algorithme génétique avec la programmation par contraintes. Master's thesis, DEA IFP, INPT, 1997. [Bar99] Roman Barták. Constraint programming : In poursuit of the holy grail. In WDS99, Prague, June 1999. [BB00] Nicolas Barnier and Pascal Brisset. Allocation de créneaux pour la régulation du trac aérien. In Touraïvane, editor, Programmation en logique avec contraintes, pages 149164. Hermes, June 2000. [BB01] Nicolas Barnier and Pascal Brisset. FaCiLe : A Functional Constraint Library. ENAC/CENA, (http ://www.recherche.enac.fr/opti/facile), 2001. [BF97] Pascal Brisset and Thom Früwirth. Optimal planning of digital cordless telecommunications systems. In Proceedings of the Third International Conference on the Practical Application of Constraint Technology, pages 165176, Westminster Central Hall, London, UK, April 1997. The Practical Application Company Ltd. [Bor81] A. Borning. The programming language aspects of thinglab, a constraint-oriented simulation laboratory. ACM TOPLAS 3, 4, 1981. [CKC82] A. Colmerauer, H. Kanoui, and M. Van Caneghem. Prolog, bases théoriques et développements actuels. TSI, 2(4), 1982. [DAG99] Nicolas Durand, Jean-Marc Alliot, and Géraud Granger. Peut-on supprimer le contrôle au sol. La Recherche, avril 1999. [DNA01] DNA. Le trac aérien en 2000. DNA COM, avril 2001. Les dossiers DNA, supplément à la lettre de la Direction de la Navigation Aérienne. [GC97] Noelle Bleuzen Guernalec and Alain Colmerauer. Narrowing a 2n-block of sorting in O(n log n). In Principles and Practice of Constraint Programming. Springer-Verlag, 1997. [Hen95] Pascal Van Hentenryck. Constraint solving for combinatorial search problems : A tutorial. In Ugo Montanari and Francesca Rossi, editors, Principles and Practical of Constraint Programming, volume 976 of Lectures notes in computer science, pages 564587, Cassis, France, September 1995. Springer. [IP/99] IP/99/924. European commission : Fifteen countries, a single European sky, (http ://europa.eu.int/comm/pr_en.htm), 1999. [JM87] J. Jaar and S. Michaylov. Methodology and implementation of a CLP system. In J.L. Lassez, editor, 4th Int. Conf. Logic Programming. MIT Press, 1987. 45 BIBLIOGRAPHIE 46 [JM94] Mark D. Johnston and Glenn E. Miller. Intelligent scheduling, chapter SPIKE : Intelligent scheduling of Hubble Space Telescope observations. Morgan Kaufman, 1994. [Lau76] Jean-Louis Laurière. Un langage et un programme pour énoncer et résoudre des problèmes combinatoires. PhD thesis, Paris IV, 1976. [Ler00] Xavier Leroy. The Objective Caml System : User's and reference manual (http ://caml.inria.fr), 2000. [Mau96] Lionnel Maugis. Mathematical programming for the air trac ow management problem with en-route capacities. In in Proceedings of the 14th Triennial World Conference of the International Federation of Operational Research Societies, July 1996. [MH00] Laurent Michel and Pascal Van Hentenrick. Localizer. Constraints, 5(1&2), january 2000. [MJPL94] Steven Minton, Mark D. Johnston, Andrew B. Philips, and Philip Laird. Minimizing conicts : a heuristic repair method for constraint satisfaction and scheduling problems. In Eugene C. Freuder and Alan K. Mackworth, editors, Constraint-based Reasoning. MIT Press, 1994. [MMK00] L. Maugis, F. Médioni, and P. Kerlirzin. Étude du trac aérien en france et en allemagne. analyse macroscopique. Technical Report 00-94, CENA, 2000. [PM98] C. Plusquellec and S. Manchon. Description du module d'allocation de créneaux utilisant la programmation par contraintes implanté dans shaman. Technical report, CENA/RFM/NT97.105, 1998. [Rég96] Jean-Charles Régin. Generalized arc consistency for global cardinality constraint. In Proceedings of the Thirteenth National Conference on Articial Intelligence, 1996. [Riv01] Thomas Rivière. Allocation de créneaux à la Shaman avec FaCiLe. Technical report, CENA, 2001. [Rog00] Guillaume Roger. Optimisation de routes alternatives et évaluation des retards. Master's thesis, DEA PS, INPT, 2000. [Sol99] Solver. ILOG Solver 4.4 user's manual (www.ilog.fr), 1999. [SS80] G. L. Steele and G. J. Sussman. Constraints : A language for expressing almosthierarchical descriptions. Articial Intelligence, 14(1) :139, 1980. [Zho96] Jianyang Zhou. A constraint program for solving the job-shop problem. In Principles and Practice of Constraint Programming. Springer-Verlag, 1996.