- Accueil POM
Transcription
- Accueil POM
Master sciences de la modélisation, de l’information et des systèmes Spécialité Sureté du logiciel et calcul à haute performance Établissement : École nationale de l’aviation civile Laboratoire : Laboratoire d’optimisation globale (ENAC/DTI-SDER) Sujet du mémoire : Résolution de conflits par régulation en vitesse et ordonnancement Février à juillet 2006 à Toulouse Auteur : Maı̂tre de stage : Directeur de recherche : Pierre-Selim Huard Nicolas Durand Jean-Marc Alliot [email protected] [email protected] [email protected] Résumé : Dans ce mémoire nous aborderons le problème de résolution de conflits du trafic aérien. Afin de résoudre les conflits on modifiera légèrement les vitesses des avions. Les solutions présentées dans ce mémoire s’appuyeront sur des techniques d’ordonnancement et de programmation par contraintes. Mots clés : - Résolution de conflit - Régulation en vitesse - Trafic aérien - Ordonnancement Programmation par contraintes Optimisation combinatoire FaCiLe Remerciements Je remercie Jean-Marc Alliot qui m’accueilli dans son laboratoire et qui m’a donc permi de survivre pendant ces 6 mois de stage grâce à l’aide providenciel d’un généreux donateur : la SDER. Je remercie également Nicolas Durand pour ses précieux conseils dans l’orientation de mon travail et aussi pour son aide sur les questions administratives avec lesquelles j’ai toujours été en difficulté.Je remercie Nicolas Barnier et Pascal Brisset, car c’est eux qui m’ont montré la voie. Ils ont commencé par me montrer la vrai nature de Caml, pour quelques années plus tard pouvoir m’initier à la programmation par contraintes. Merci. Je remercie aussi Jean-Baptiste Goettland, l’expert1 en évitement de mur, et CharlesEdmont Bichot qui ont tenté de m’apprendre l’art du Blast, malheureusement pour eux je crois que je ne serais jamais un grand artificier. Je ne peux pas non plus oublier Nicolas Archambault, un bandit notoire et Thomas Rivière, le cow-boy qui à eux deux terrorisaient les élèves, mais pas trop. N’oublions pas nos voisins du laboratoire d’économie avec qui nous refaisons le monde tous les midi. J’exprime ma gratitude aux membres du LOG et du LEEA que je n’ai pas encore remercier : Kévin Guittet qui aurait sans doute joué la coupe du monde si il ne s’était pas fait mal à l’épaule ; Nicolas Gruyer qui n’est pas pret d’arrêter de fumer ; Estelle Malavolti-Grimal qui esperons le trouvera la bonne technique pour verser le thé avant que je ne parte ; Nathalie Lenoir la globtrotteuse du groupe ; si votre machine est lente le matin c’est que Xavier Olive n’est pas loin ; et pour finir Cyril Allignol qui va peut-être de découvrir les soirées parisiennes2 Enfin je remercie mes camarades de promotion, et tout ceux qui ont du me supporter pendant ces dernières années, parce que c’est pas évident. 1 2 On a coutume de prétendre que le cordonnier est souvent le plus mal chaussé. Mais on aimerait tous vivre des soirées belles à Sienne. 3 Table des matières Remerciements 3 Introduction 9 1 Ordonnancement en programmation par contraintes 1 Programmation par contraintes 1.1 Introduction . . . . . . . . . . . . . . . . . . . 1.2 Définitions . . . . . . . . . . . . . . . . . . . . 1.2.1 Problème de satisfaction de contraintes 1.2.2 Consistance d’un CSP . . . . . . . . . 1.3 Résolution . . . . . . . . . . . . . . . . . . . . 1.3.1 Recherche systématique . . . . . . . . 1.3.2 Consistances locales . . . . . . . . . . 1.4 Programmation par contraintes . . . . . . . . 1.4.1 Propagation des contraintes . . . . . . 1.4.2 Heuristiques d’instanciation . . . . . . 1.4.3 Optimisation . . . . . . . . . . . . . . 1.4.4 Les domaines continus . . . . . . . . . 2 Ordonnancement 2.1 Introduction . . . . . . . . . . . . 2.2 Modélisation . . . . . . . . . . . . 2.2.1 Tâches non-interruptibles 2.2.2 Relations temporelles . . . 2.2.3 Les ressources . . . . . . . 2.3 Ordonnancement disjonctif . . . . 2.3.1 L’Edge-finding . . . . . . 2.3.2 Not-first, not-last . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 14 14 14 15 15 17 18 18 19 19 19 . . . . . . . . 21 21 22 22 22 22 23 23 25 6 TABLE DES MATIÈRES 2.3.3 2 La résolution de problèmes disjonctifs . . . . . . . . . . . . . . . . . Régulation en vitesse 27 29 3 Contexte du trafic aérien 3.1 Introduction . . . . . . . . . . . . . . . . . . . . 3.2 Gestion du trafic aerien (ATM) . . . . . . . . . 3.3 Complexité du problème de résolution de conflit 3.4 Résolution automatique de conflit . . . . . . . . 3.4.1 Approche centralisée, ou autonôme . . . 3.4.2 Quelques approches théoriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 32 33 34 34 35 4 Résolution de conflits 4.1 Introduction . . . . . . . . . . . . . . . . . 4.1.1 Critères d’optimalité . . . . . . . . 4.1.2 Les manoeuvres . . . . . . . . . . . 4.2 Route directe simple . . . . . . . . . . . . 4.2.1 Détection de conflits . . . . . . . . 4.2.2 Résolution par PPC . . . . . . . . 4.2.3 Résolution par ordonnancement . . 4.2.4 Résultats . . . . . . . . . . . . . . 4.3 Route directe avec changements de vitesse 4.3.1 Définitions . . . . . . . . . . . . . . 4.3.2 Modélisation du problème . . . . . 4.3.3 Contraintes . . . . . . . . . . . . . 4.4 Route standard . . . . . . . . . . . . . . . 4.4.1 Détection de conflits . . . . . . . . 4.4.2 Résolution par ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 37 38 38 38 41 43 45 46 46 47 47 47 48 48 . . . . 51 51 52 53 54 5 Anticipation 5.1 Influence de la fenêtre d’anticipation sur la 5.2 Incidence entre les trajectoires . . . . . . . 5.3 Taille du problème . . . . . . . . . . . . . 5.4 Conclusions . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . qualité . . . . . . . . . . . . de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimisation 6 Différents critères d’optimisation 6.1 Les critères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Les résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 57 57 58 61 7 TABLE DES MATIÈRES 7 Utilisation d’un algorithme glouton 7.1 L’algorithme glouton . . . . . . . . . . . 7.2 Ordronnancement . . . . . . . . . . . . . 7.2.1 Parcours exhaustif . . . . . . . . 7.2.2 Utilisation d’heuristiques . . . . . 7.2.3 Comparaison entre heuristiques et 7.2.4 Parcours en temps borné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . parcours exhaustif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 63 64 64 65 65 66 Conclusion 67 Annexes 71 A Glossaire A.1 Unités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Aeronautique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 71 71 72 B Liste des défintions 73 Introduction Les services du contrôle de la navigation aérienne font face depuis plus de quarante ans à une augmentation du trafic aérien. Parallèlement les avions sont équipés de moyens de navigation de plus en plus performants (FMS, GPS), permettant aux avions de tenir de façon de plus en plus précise des trajectoires. Par contre le contrôle aérien a lui peu évolué depuis trente ans. Pour améliorer la capacité du contrôle aérien, on a essentiellement revu le découpage de l’espace aérien en secteur de taille plus petite. Ces redécoupages ont permis jusqu’à maintenant d’augmenter la quantité de trafic contrôlée. Mais on ne pourra pas réduire indéfiniment la taille des secteurs, en effet plus on réduit la taille des secteurs plus les contrôleurs passent de temps à coordonner3 les avions d’un secteur à un autre. L’une des méthodes envisagées pour aider le contrôleur est d’effectuer une sorte de pré-contrôle où la machine changerait légèrement les vitesses des avions afin de rendre le « trafic chanceux » pour le contrôleur. Ainsi le contrôleur aurait moins de conflits à gérer, et pourrait donc gérer plus d’avions à la fois. Pour assister les contrôleurs, différentes approches sont à l’étude concernant la résolution automatique de conflit en utilisant des algorithmes génétiques (méthode stœchastique), des réseaux de neurones, ou encore des approches s’appuyant sur la programmation par contraintes. Les méthodes stochastiques s’adaptent bien aux problèmes de grandes tailles, mais elles ne garantissent pas l’optimalité des solutions, tandis que la programmation par contraintes garantit l’optimalité des solutions. Ici nous proposerons des méthodes pour effectuer des résolutions de conflits à l’aide de régulations en vitesse et de programmation par contraintes. Dans ce mémoire on montrera l’importance de l’ordre des avions lors de régulations en vitesse ce qui nous conduira à donner des méthodes s’appuyant sur l’ordonnancement des avions. 3 Chaque contrôleur prévient le contrôleur du secteur suivant de l’arrivée d’un avion dans son secteur. 9 Première partie Ordonnancement en programmation par contraintes 11 Chapitre 1 Programmation par contraintes Constraint programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming : the user states the problem, the computer solves it. E. Freuder, Constraints, vol. 2 n◦ 1 . 1.1 Introduction La programmation par contraintes est un paradigme apparu à la fin des années 70, au début des années 80. Il allie l’efficacité des méthodes de recherche opérationnelle et la généricité des algorithmes d’intelligence artificielle. La programmation par contraintes est utilisée dans de nombreux domaines tels que la résolution de problèmes d’optimisation fortement combinatoires, les problèmes d’ordonnancement, d’allocation de ressource ou encore à la résolution de conflit dans le domaine du trafic aérien [Barnier 02, Feydy 05a, Feydy 05b]. La résolution d’un problème en utilisant les méthodes de programmation par contraintes se fait en deux étapes. On commence par modéliser le problème, c’est-à-dire que l’on définit l’espace d’état de nos solutions (domaines et contraintes). Ensuite on passe à l’étape de résolution avec ou sans critère d’optimisation. L’une des clés de la programmation par contraintes est que les contraintes peuvent être utilisées de façon active pour réduire la taille de l’espace de recherche : on parle de propagation des contraintes. Dans ce chapitre on commencera par définir les Problèmes de Satisfaction de Contraintes (ou CSP), on parlera ensuite des méthodes de résolution des CSP, et on finira par présenter la programmation par contraintes. 13 14 1.2 1.2.1 CHAPITRE 1. PROGRAMMATION PAR CONTRAINTES Définitions Problème de satisfaction de contraintes La résolution d’un Problème de Satisfaction de Contraintes (ou CSP) se fait en attribuant aux variables du problème une valeur satisfaisant toutes les contraintes. On parle d’étiquetage (ou labeling). Définition 1 (Domaine fini) On appelle domaine d’une variable x, l’ensemble de cardinal fini Dx des valeurs possibles de x. Définition 2 (Contrainte binaire en extension) Soit x, y des variables de domaine Dx et Dy . Soit R ⊂ Dx × Dy . Une contrainte binaire c = (x, y, R) est définie par les 2 variables sur laquelle elle porte et par la relation R, spécifiée en extension par l’ensemble des valeurs que peuvent prendre simultanément x et y. L’expression de contraintes en extension est peu expressive et impossible à utiliser sur des domaines continus : il est impossible d’écrire sur un support fini tous les éléments d’un ensemble de cardinal infini. C’est pourquoi on utilise également des contraintes en intension définies à l’aide d’une formule mathématique ou logique. Exemple 1 Soit x, y dans N. Soit la contrainte : c = (x, y, {(0, 0), (1, 0), (1, 1), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (3, 3), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4)}) On peut définir c en intension comme la contrainte : (y ≤ x) ∧ (x ≤ 4) Ce qui représente le domaine Dx × Dy de la Fig. 1.1. Définition 3 (CSP sur les domaines finis avec contraintes binaires) Un CSP est défini par un triplet P = (X , D, C) où X est un ensemble de variable, D est l’ensemble des domaines associés aux variables de X et C un ensemble de contraintes binaire portant sur les variables de X 1.2.2 Consistance d’un CSP Définition 4 (Instanciation partielle) Soit un CSP P = (X , D, C). Une instanciation partielle I de P est défini par un couple I = (XI , V) où XI est l’ensemble des variables instanciées (⊂ X ) et V les valeurs prises par les variables instanciées. Définition 5 (Instanciation totale) Soit un CSP P = (X , D, C). Une instanciation totale est une instanciation partielle I = (XI , V) telle que XI = X 15 1.3. RÉSOLUTION Fig. 1.1 – Le domaine défini par Dx × Dy Notons fc la fonction de satisfaction de la contrainte c = (x, y, R). On note I(x) la valeur de la variable x dans l’instanciation I V rai si (I(x), I(y)) ∈ R fc (I) = F aux sinon Définition 6 (Satisfaction) On dit que I satisfait la contrainte c si et seulement si fc (I) = V rai. On notera I |= c Remarque 1 On dit que mathcalI viole la contrainte c si fc (I) = F aux. Définition 7 (Support) Soit x et y deux variables de domaines Dx et Dy . On dit que xi ∈ Dx a un support dans Dy si pour toutes contraintes c liant x et y, il existe une valeur yk ∈ Dy telle que xi et yk ne viole pas la contrainte c. Définition 8 (Instanciation consistante) Une instanciation I = (XI , V) est consistante1 si et seulement si ∀c ∈ C telle que x, y ∈ XI , I |= c où c = (x, y, R) 1.3 1.3.1 Résolution Recherche systématique Générer et tester La résolution de CSP peut se faire à l’aide de plusieurs méthodes [Kumar 92] comme générer-et-tester (GT). Dans ce cas on va générer toutes les instanciations totales possibles 1 On trouve aussi dans la litterature le terme de cohérence pour parler de la consistance 16 CHAPITRE 1. PROGRAMMATION PAR CONTRAINTES et vérifier lesquelles satisfont les contraintes (i.e. lesquelles sont consistantes). Mais ce type de méthode n’utilise pas la connaissance des Q contraintes pour générer les solutions, on étudie donc un nombre très important de cas ( x∈X card(Dx )) Exemple 2 Soient les variables entières x, y ∈ {1, 2, . . . , 100} et les contraintes suivantes x ≤ y − 1 et y ≤ 2. En faisant un « générer et tester » on étudierait les 10000 cas possibles pour s’apercevoir que seulement 1 cas x = 1 et y = 2 alors qu’en appliquant la deuxième contrainte on s’aperçoit directement que y ∈ {1, 2} ; si on choisit y = 1 alors on ne peut pas trouver d’instanciation consistante pour x donc la solution est x = 1 et y = 2. En utilisant les contraintes dans notre recherche on a très fortement réduit le nombre de cas étudiés (2 cas contre 10000). Retour arrière La méthode par retour arrière (BT) est plus efficace que la méthode « générer et tester » pour résoudre des CSP. On instancie les variables séquenciellement. Une fois que toutes les variables liées par une contrainte ont été instanciées on peut vérifier si la contrainte est satisfaite. Et si une instanciation partielle viole (ne satisfait pas) une contrainte, alors on effectue un retour arrière : on remet en question le dernier choix effectuer, i.e. on essaye une nouvelle valeur pour la dernière variable instanciée (voir Fig. 1.2). Mais cette méthode bien que meilleure que « générer et tester », souffre de mauvaise performance (complexité exponentielle). Le principal phénomène est le thrashing : répéter plusieurs fois le même échecs dans différentes parties de l’arbre. x ∈ {V rai, F aux} y ∈ {1, 2, 3} z ∈ {1, 2, 3} x = V rai y=1 $ % $ % $ % $ % x = F aux ! ! ! ! y=2 y=3 & ' ( ) & ' ( ) z=1 z=2 z=3 échec " # " # " # " # point de choix retour arrière Fig. 1.2 – Développement d’un arbre de recherche 1.3. RÉSOLUTION 1.3.2 17 Consistances locales À chaque point de choix du retour arrière pour éviter le phénomène de thrashing, on peut assurer certaines formes de consistances locales. Il existe différentes sortes de consistances locales, certaines étant plus faibles que d’autres (certaines consistances permettent de faire moins de déduction que d’autres). Généralement les consistances les plus fortes sont les plus coûteuses à assurer. C’est pourquoi on utilise différentes consistances selon les problèmes et les contraintes utilisées. Définition 9 (Arc-consistance) Un arc orienté (x, y) du graphe associé à un CSP P = (X , D, C), correspondant à une contrainte c = (x, y, R) ∈ C, est arc-consistant si et seulement si toutes les valeurs du domaine de x ont un support dans le domaine de y. L’algorithme Revise (Algorithme 1) permet de s’assurer de la consistance d’un arc. Algorithme 1 Revise (arc: (x,y)) change ← F aux pour tout vx ∈ Dx faire si il n’existe pas de vy ∈ Dy telle que (vx , vy ) ∈ R(x,y) alors Dx ← Dx \{vx } change ← V rai fin si fin pour renvoyer change Les problèmes de trashing dues à des contraintes unaires se résolvent en retirant les valeurs ne satisfaisant pas la contrainte du domaine de la variable. Définition 10 (Arc-consistance d’un CSP binaire) Soit un CSP P = (X , D, C). P est arc-consistant si et seulement si pour tout c = (x, y, R) ∈ C, les arcs (x, y) et (y, x) sont arc-consistants. Remarque 2 Attention, l’arc-consistance est une notion locale, alors que la consistance est une notion globale. Une instanciation arc-consistante n’est pas obligatoirement consistante (c’est une condition nécéssaire). Exemple 3 (CSP arc-consistant mais non consistant) Soit x, y, z ∈ {0, 1} et la contraintes x 6= y ∧ y 6= z ∧ z 6= x. Ce CSP est arc-consistant, mais n’est pas consistant. Assurer l’arc-consistance d’un CSP peut s’avèrer coûteux. En effet à chaque fois que l’on modifie un arc, il faut revoir tous les arcs suceptibles d’être affectés par cette modification ; on utilise pour cela des algorithmes comme AC3 (Algorithme 2) ou d’autres variantes. 18 CHAPITRE 1. PROGRAMMATION PAR CONTRAINTES Algorithme 2 AC3 (CSP: (X , D, C)) S Q ← (x,y,R)∈C {(x, y), (y, x)} tant que Q = 6 ∅ faire (x, y) ∈ Q Q ← Q\(x, y) si REV ISE(x, y) alors S Q ← Q {(z, x), ∃c = (x, z, R), z 6= y} fin si fin tant que Remarque 3 Soit m le nombre de contraintes, soit dmax la borne superieure des cardinaux des domaines des variables, soit T la complexité temporelle de l’algorithme AC3. Alors T ∈ O(md3max ) [Kumar 92]. Remarque 4 La complexité temporelle optimale des algorithmes de maintients d’arc-consistance est en O(md2max ). La complexité spatiale optimale est elle en O(mdmax ) [Kumar 92]. Définition 11 (Arc-B-Consistance) (Ou encore Bound-Consistency) Soit un CSP P = (X , D, C). P, soit c = (x, y, R) ∈ C une contrainte binaire, l’arc (x, y) est arc-B-consistant si et seulement si les bornes du domaine de x ont un support dans le domaine de y qui satisfait c. L’arc-B-consistance est moins couteuse à assurer que l’arc-consistance. C’est souvent le bon compromis pour la propagation des contraintes arithmétiques. 1.4 1.4.1 Programmation par contraintes Propagation des contraintes Pour résoudre un CSP on peut utiliser les techniques systématiques de recherche de solution, ou encore utiliser les techniques s’appuyant sur la consistance des contraintes [Bartak 99]. Mais généralement on utilise plutôt une combinaison des deux approches. Un solveur de CSP, agira de la façon suivante : 1. définitions des variables, et affectation de leurs domaines ; 2. définitions des contraintes ; 3. vérification de la consistance de chaque contrainte et réduction de domaines si nécéssaire (on parle aussi de propagation de contrainte) ; 4. si cette contrainte est satisfaite pour toute instanciation alors on l’enlève, si elle peut être satisfaite alors on la suspend, sinon elle échoue et le problème n’a pas de solution ; 5. on instancie une variable, et on réveille toutes les contraintes qui lui sont associées, on réduit les domaines, si on ne trouve pas d’inconsistance on recommence, sinon on effectue un retour arrière. 1.4. PROGRAMMATION PAR CONTRAINTES 1.4.2 19 Heuristiques d’instanciation Le choix de l’ordre des variables à instancier peut s’avérer très important. Généralement, on préfère commencer par les variables qui ont le plus de chance de renvoyer un échec, pour échouer au début de l’arbre de recherche, on parle de first-fail. Il est courant d’instancier en premier les variables les plus contraintes, on espère alors faire de plus importantes réductions de domaines. Une autre heuristique que l’on utilise fréquemment est d’instancier la variable de plus petit domaine, ce qui doit permettre de détecter plus tôt les inconsistances. 1.4.3 Optimisation Dans la majorité des cas, on ne cherche pas simplement à obtenir une solution au problème posé, mais plutôt une bonne solution. On mesure la qualité de chaque solution à l’aide d’un critère (appelé coût). Le but alors est de trouver une solution qui satisfasse le problème tout en minimisant (ou maximisant) le coût de la solution. Pour cela on utilise généralement un algorithme de type « Branch and Bound ». À chaque instanciation partielle on évalue la solution partielle et on vérifie que la meilleure solution que l’on pourra générer à partir de cette instanciation partielle est meilleure que des solutions trouvées précédemment. 1.4.4 Les domaines continus Dans [Feydy 05a], on trouve une méthode pour étendre FaCiLe (la librairies de programmation par contraintes) aux domaines continus. Cette méthode s’appuye sur l’arithmétique des intervalles, chaque nombre flottant est représenté par un intervalle ce qui permet de s’assurer que les réductions inférées incluent toujours toutes les solutions. Nous utiliserons cette extension dans le chapitre 4 pour écrire les contraintes qui portent sur des valeurs réelles (ou flottantes). Chapitre 2 Ordonnancement 2.1 Introduction L’ordonnancement est défini comme l’organisation dans le temps de certaines tâches compte tenu de contraintes temporelles (délais, précédences) et de contraintes portant sur la disponibilités des ressources requises [Baptiste 01][Barták 03]. On considérera un ensemble de tâches (ou activités) {A1 , . . . , An } et un ensemble de ressources {R1 , . . . , Rm }. Chaque activité s’execute en un certains temps et utilise certaines ressources, et chaque ressource a une certaine capacité qui ne doit pas être dépassée. On appelle machine les ressources dont la capacité est 1. De plus il peut y avoir des contraintes entre plusieurs activités (laquelle s’executera en premier, etc.), et on ajoute souvent un critère d’optimisation tel que : – Finir la dernière tâche au plus tot (Makespan) – Minimiser le retard maximum – Minimiser la somme des retard Exemple 4 (Emploi du temps) Réaliser un emploi du temps revient à organiser les cours d’une promotion avec un certains nombres de professeurs et un nombre de salles limités. On devra de plus faire attention à programmer les cours dans un ordre cohérent. On fait souvent la distinction entre les problèmes d’ordonnancement disjonctif où deux tâches ne peuvent pas être executées en même temps et les problèmes d’ordonnancement conjonctif. Dans le cas de l’ordonnacement disjonctif, les ressources sont des machines. On parle de problèmes d’ordonnacement préemptif si les activités sont interruptibles. Dans la suite de ce document lorsqu’on parlera d’ordonnancement sans préciser c’est qu’on parlera d’ordonancement non-préemptif. Dans ce chapitre on présentera les problèmes d’ordonnancement comme des problèmes de statisfaction de contraintes[Fromherz 01]. 21 22 2.2 2.2.1 CHAPITRE 2. ORDONNANCEMENT Modélisation Tâches non-interruptibles Pour chaque tâche (ou activité) Ai d’un problème d’ordonnancement on définit trois variables : – start(Ai ) : date de début de la tâche Ai , – end(Ai ) : date de fin de la tâche Ai , – proc(Ai ) : temps d’execution de la tâche Ai . Les activités étant non-interruptibles le temps d’execution est égal à la différence entre la date de fin de l’activité et la date de début de l’activité : proc(Ai ) = end(Ai ) − start(Ai ) Notons ri la date de début au plus tot de l’activité Ai et di sa date de fin au plus tard. [ri , di ] est la fenêtre temporelle dans laquelle doit s’executer Ai . De même, notons eeti la date de fin au plus tôt de l’activité Ai et lsti sa date de début au plus tard. Nous avons donc en terme de contraintes : proc(Ai ) = end(Ai ) − start(Ai ) ri ≤ start(Ai ) ≤ lsti eeti ≤ end(Ai ) ≤ di 2.2.2 (2.1) (2.2) (2.3) Relations temporelles Des relations de précédences entre les tâches peuvent être défini de façon simple par des contraintes linéaires. On exprimera que Aj commence après la fin de Ai de la façon suivante : end(Ai ) ≤ start(Aj ). On utilise l’arc-B-consistance (voir définition 11) pour propager ce type de contraintes ; intuitivement ce type de contraintes n’agit que sur les bornes des domaines, l’arc-B-consitance est suffisante. 2.2.3 Les ressources Les ressources représentent les moyens techniques (salles, outils, etc.) ou humains permettant la réalisation d’une tâche. On notera cap(R) la capacité de la ressource R, et cap(Ai , R) la quantité de ressources R dont Ai a besoin pour s’executer. Dans le cas des activités non-interruptibles à tout instant t on ne peut pas utiliser plus de ressources pour exectuer des activités que la quantité de ressources disponible : X cap(Ai , R) ≤ cap(R) (2.4) Ai :start(Ai )≤t≤end(Ai ) Définition 12 (Machine) Une machine est une ressource de capacité unaire, c’est-à-dire que cap(R) = 1. 2.3. ORDONNANCEMENT DISJONCTIF 2.3 23 Ordonnancement disjonctif Si deux activités nécessites la même machine pour s’executer alors leur execution ne pourra pas se faire en parallèle, et l’une des deux tâches s’executera après l’autre. On parle d’ordonnancement disjonctif. On peut généraliser à n tâches, on aura alors n·(n−1) couples 2 de tâches disjointes. Pour deux tâches Ai et Aj disjointes on a : end(Ai ) ≤ start(Aj ) ∨ end(Aj ) ≤ start(Ai ) 2.3.1 (2.5) L’Edge-finding L’Edge-finding sert à propager les contraintes de capacités. Il permet de réduire la taille de l’espace de recherche en cherchant si une tâche peut s’executer en premier ou non dans un ensemble de tâches (respectivement en dernier ou non). Soit Ω un ensemble d’activités. On note Ai Aj (Ai Aj ) la tâche Ai s’execute avant (après) la tâche Aj . De même Ai Ω (Ai Ω) signifie que Ai s’execute avant (après) toutes les activités Ω. Si la durée entre le début au plus tôt de Ω et la fin au plus tard de Ω∪{Ai } est inferieure au temps d’execution de Ω ∪ {Ai }, alors Ai s’execute avant Ω. Si la durée entre le début au plus tôt de Ω∪{Ai } et la fin au plus tard de Ω est inferieure au temps d’execution de Ω ∪ {Ai }, alors Ai s’execute après Ω. On ∀Ω, ∀Ai 6∈ Ω : dΩ∪{Ai } − rΩ < pΩ + pi ⇒ Ai Ω dΩ − rΩ∪{Ai } < pΩ + pi ⇒ Ai Ω (2.6) (2.7) ce qui permet de propager ∀Ω, ∀Ai 6∈ Ω : Ai Ω ⇒ end(Ai ) ≤ min∅6=Ω0 ⊆Ω (dΩ0 − pΩ0 ) Ai Ω ⇒ start(Ai ) ≥ max∅6=Ω0 ⊆Ω (rΩ0 + pΩ0 ) (2.8) (2.9) Remarque 5 L’algorithme d’Edge-Finding effectue des déductions différentes que les contraintes standards de disjonction. Chacune des deux méthodes réussissant des déductions différentes de l’autre, on peut les utiliser sur un même problème. Proposition 1 Soit T (n) la complexité temporelle l’algorithme d’Edge-Finding (algorithme 3), alors T (n) ∈ O(n2 ) 24 Algorithme 3 Edge-Finding pour i = 1 à n faire ri0 := ri fin pour pour k = 1 à n faire P := 0 C := −∞ H := −∞ pour i = n à 1 faire si di ≤ dk alors P := P + pi C := max(C, ri + P ) si C > dk alors Pas d’ordonnancement possible, exit fin si fin si Ci := C fin pour pour i = 1 à n faire si di ≤ dk alors H := max(H, ri + P ) P := P − pi sinon si ri + P + pi > dk alors ri0 := max(ri0 , Ci ) fin si si H + pi > dk alors ri0 := max(ri0 , C) fin si fin si fin pour fin pour pour i = 1 à n faire ri := ri0 fin pour CHAPITRE 2. ORDONNANCEMENT 25 2.3. ORDONNANCEMENT DISJONCTIF 2.3.2 Not-first, not-last L’algorithme Not-first, not-last consiste à determiner si une tâche Ai ne peut pas s’executer en premier (ou en dernier) dans un ensemble de tâches Ω∪{Ai }. Si il ne le peut pas on dit qu’il est Not-first (respectivement Not-last) ce que l’on note ¬(Ai Ω) (respectivement ¬(Ai Ω)). Si la durée entre le début au plus tôt de Ai et la fin au plus tard de la dernière tâche de Ω est inférieure au temps d’execution de Ai et Ω, alors Ai ne peut pas s’executer en premier dans Ω ∪ {Ai }. Si la durée entre le début au plus tôt des tâches de Ω et la fin au plus tard de la tâche Ai est inferieure au temps d’execution de Ai et Ω, alors Ai ne peut pas s’executer après Ω. On a donc ∀Ω, ∀Ai 6∈ Ω : dΩ − ri < pΩ + pi ⇒ ¬(Ai Ω) di − rΩ < pΩ + pi ⇒ ¬(Ai Ω) (2.10) (2.11) Et on propage ∀Ω, ∀Ai 6∈ Ω : ¬(Ai Ω) ⇒ start(Ai ) ≥ minA∈Ω (eetA ) ¬(Ai Ω) ⇒ end(Ai ) ≤ maxA∈Ω (lstA ) (2.12) (2.13) Exemple 5 Soit trois tâches A1 , A2 , A3 disjointes. – A1 de durée 3, commençant au plus tôt à 0 et finissant au plus tard à 7. – A2 de durée 2, commençant au plus tôt à 0 et finissant au plus tard à 4. – A3 de durée 2, commençant au plus tôt à 0 et finissant au plus tard à 5. 0 1 2 3 4 5 6 7 Fig. 2.1 – Propagation de la règle Not-first La règle Not-first, nous permet de déduire que l’activités A1 ne peut pas s’exectuer en première. On en déduit donc que A1 ne peut pas commencer avant t = 2. La règle Not-Last permettrait de même de déduire que A3 ne peut pas s’excuter en dernière et donc que A3 doit finir au plus tard à t = 4. 26 CHAPITRE 2. ORDONNANCEMENT Pour la mise en oeuvre de cette algorithme on suppose que les (Ai )i=1...n sont triées par ordre croissant de deadline (fin au plus tard), c’est à dire que si i ≤ j alors di ≤ dj . Le tri se fait en O(n log n). On pose Ω(j, k) l’ensemble d’indice m ∈ {1, . . . , k} tel que rj + pj ≤ rm + pm . On définit : pΩ(j,k) si j ≤ k (2.14) Si,j = −∞ sinon ∆j,k = minl≤k (dl − Sj,l ) (2.15) Algorithme 4 Not-first pour i = 1 à n faire ri0 := ri fin pour pour j = 1 à n faire Calcule (∆j,k )k∈[1,n] pour i = 1 à n faire si ri + pi < rj + pj alors si ri + pi > ∆j,n alors ri0 := max(ri0 , rj + pj ) fin si sinon si ri + pi > ∆j,i−1 or ri > ∆j,n alors ri0 := max(ri0 , rj + pj ) fin si fin pour fin pour pour i = 1 to n faire ri := ri0 fin pour Proposition 2 La complexité temporelle T (n) de cet l’algorithme Not-first appartient à O(n2 ) Preuve. Il suffit de démontrer que le temps de calcul de (∆j,1 , . . . , ∆j,n ) est en O(n). Le calcul des Sj,k et ∆j,k se fait en temps constant à partir des valeurs de Sj,k−1 et ∆j,k−1. Ensuite il reste à vérifier que rj + pj ≤ rk + pk . Remarque 6 On peut trouver des algorithmes d’Edge-Finding, et Not-first / Not-last avec des complexité en O(n log n) [Vilim 05] 2.3. ORDONNANCEMENT DISJONCTIF 2.3.3 27 La résolution de problèmes disjonctifs Le principe du ranking est d’ordonner les tâches d’une machine et d’en déduire des réductions de domaine à l’aide de contraintes de précédences. Un schéma classique de résolution est : 1. Sélectionner une machine dans la liste des machines où les tâches ne sont pas complètement ordonnées. 2. Sélectionner une tâche à exécuter en premier parmi les tâches non ordonnées, ajouter la contrainte de précédence correspondante ; on garde les autres tâches comme des alternatives pour le retour-arrière. 3. Itérer l’étape 2 jusqu’à ce que toutes les activités de la machine choisies soit ordonnées. 4. Itérer les étapes 1 à 3 jusqu’à ce que toutes les activités de toutes les machines soient ordonnées. Dans beaucoup de problème d’ordonnacement, certaines ressources sont plus chargées que d’autres, on dit qu’elles sont plus critiques. Il est important de commencer par résoudre le problème pour les ressources les plus critiques. On pourra choisir cette heuristique comme heuristique de ranking. Deuxième partie Régulation en vitesse 29 Chapitre 3 Contexte du trafic aérien Le but premier du contrôle du trafic aérien est d’assurer la sécurité du trafic et donc d’éviter les abordages entre les aéronefs opérant dans le système, puis d’optimiser les flux de trafic. 3.1 Introduction Le but principale du controle du trafic aérien (ATC) est d’assurer la séparation entre les aéronefs afin d’éviter les abordages en l’air ou au sol1 . Dans un deuxième temps le controle du trafic aérien doit gérer efficacement le trafic afin de limiter la congestion et les retards. Le rôle du contrôleur est de guider les avions de façon à assurer la sécurité des vols en maintenant une séparation réglementaire entre chaque aéronefs. Deux avions sont en conflit lorsque la séparation n’est plus respectée. On parle de conflit potentiel si les trajectoires des avions permettent une perte de séparation. Pour l’aider dans son travail le contrôleur utilise un écran radar (voir Fig. 3.1) qui lui indique les positions des avions ainsi que les informations principales du vol (altitude, vitesse, indicatif avion) En cas de perte de séparation, il existe des filets de sauvegardes au sol (STCA) et à bord (ACAS/TCAS, et GPWS). Afin de résoudre les conflits éventuels le controleur donne des clairances aux pilotes. Les clairances ne sont pas des ordres, il s’agit d’instructions et d’autorisations de circuler dans certaines conditions. Si le pilote les respecte, il est sur que la sécurité de son vol est assurée (en terme de trafic, cela n’empêche pas les pannes). On distingue trois différentes catégories de contrôle : 1 L’abordage de deux 747 sur l’aeroport de Teneriffe restant le deuxième plus gros drame de l’aéronautique après les attentats du 11 septembre 2001. 31 32 CHAPITRE 3. CONTEXTE DU TRAFIC AÉRIEN Fig. 3.1 – Image radar 1. Le contrôle au sol (TWR pour Tower ou Tour de contrôle) gère le contrôle des mouvements sur l’aéroport. 2. Le contrôle d’approche (APP) s’occupe essentiellement du séquencement des avions pour l’atterissage. L’approche gère aussi les avions après leurs décollages qui se fait généralement en suivant des circuits standards. 3. Le contrôle en-route (ACC pour Air Traffic Control Center) concerne le reste du trafic. 3.2 Gestion du trafic aerien (ATM) Avec une croissance annuelle de 5 % depuis plus de 20 ans, certaines zones de trafic de l’Europe de l’ouest ou de l’Amérique du nord sont saturées. Aujourd’hui il y a chaque jour environ 26000 vols sur l’espace aérien européen, ce qui représente un retard cumulé d’environ 30000 minutes ; l’objectif d’Eurocontrol étant d’atteindre un retard de moins d’une minute par vol [Pozzi 03]. La gestion du trafic aérien ou l’ATM regroupe la partie contrôle (ATC) et la partie gestion des flux (ATFM). La gestion des flux de trafic se fait à différent niveau : – À long terme (au plus 6 mois), il s’agit d’organiser les routes en fonction des flux de trafic que l’on prévoit. On s’occupe entre autre de la gestion des accords entre trafic civil et trafic militaire (on parle de FUA pour Flexible Use of Airspace2 ). – La pré-régulation consiste à organiser une journée de trafic à 48h, 24h ou le jour j en fonction du trafic des jours précédants, et des plans de vol déposés, la majorité des plans de vol est alors connue (beaucoup de compagnie dépose leurs plans de vol de façon systèmatique tous les 6 mois). En Europe c’est le role de la CFMU à 2 Certaines zones militaires sont ouvertes au trafic civil lorsqu’elles ne sont pas réservées par les militaires. 3.3. COMPLEXITÉ DU PROBLÈME DE RÉSOLUTION DE CONFLIT 33 Bruxelle. On effectue des ajustements le jour même en fonction des conditions météo, des crénaux non utilisés, etc. . – Le niveau tactique qui fait intervenir les contrôleurs (ATCo) est géré par secteur. La durée moyenne de traversée d’un secteur est de l’ordre de 15 minutes. Les contrôleurs sont prévenues quelques minutes à l’avance de l’arrivée d’un avion dans leur secteur par, entre autre, la création d’un STRIP3 (sur certains secteur la coordination n’est pas automatique, elle se fait alors par téléphone). – Le niveau d’urgence qui n’intervient qu’en cas de dysfonctionnement du système de contrôle. Au sol, on parle de filet de sauvegarde (STCA) ; ce dernier permet de détecter les conflits proches, en calculant la trajectoire futur des avions. Par contre le filet de sauvegarde ne donne pas de solution au contrôleur. À bord, le TCAS permet de résoudre les conflits à 2 avions en donnant une résolution dans le plan vertical. 3.3 Complexité du problème de résolution de conflit De nos jours, beaucoup de systèmes à bord des avions sont automatisés, par contre, le contrôle du trafic aérien reste fait par des humains. Ceci est dû en partie à la difficulté de modéliser le trafic en particulier les incertitudes, et à la difficulté de résolution du problème qui est fortement combinatoire et qui fait d’ailleurs très certainement parti de la classe de problème NP-difficile. * + * + 5Nm , - , - , - , - , - , - , - , - , - , - , - , - , - , - , - , - 1000f t Fig. 3.2 – Séparations verticale et horizontale On dit que deux avions sont en conflit si leur séparation horizontale est inférieure à 5Nm et si leur séparation verticale est inférieure à 1000f t (voir Fig. 3.2). 3 Le STRIP est une bandelette de papier avec les indicatifs de l’aéronefs, et son plan de vol (liste des balises à passer). 34 CHAPITRE 3. CONTEXTE DU TRAFIC AÉRIEN Définition 13 (Conflit potentiel) Pour une fenêtre temporelle de prévision de trajectoire donnée, on appelle conflit potentiel entre deux avions tout conflit détecté pendant la durée de la prévision et ce, en tenant compte des incertitudes sur les trajectoires. Soit R la relation « est en conflit potentiel avec ». On appelle cluster la fermeture transitive de cette relation, c’est-à-dire que si A R B et B R C, alors A, B et C seront dans le même cluster. La notion de cluster (voir Fig. 3.3), définit une notion de sous problème à résoudre. Pour résoudre un problème il suffit de le résoudre pour chaque cluster. parties des trajectoires en conflit Avion C Cluster (A,B,C) Avion B Avion isolé D Avion D Avion A Fig. 3.3 – Exemple de cluster Dans un cluster de n avions on compte jusqu’à n(n−1) 2 conflits. On peut montrer que n(n−1) l’ensemble des solutions dans le plan horizontal contient 2 2 composantes connexes [Durand 96], ce qui veut dire que si l’on utilise des méthodes locales il faut autant d’exécutions que de composantes connexes. 3.4 3.4.1 Résolution automatique de conflit Approche centralisée, ou autonôme On peut résoudre les conflits de façon centralisée, ou comme le contrôleur humain nous avons une vision globale des avions dans une certaine zone, ou de façon autonôme, dans ce 3.4. RÉSOLUTION AUTOMATIQUE DE CONFLIT 35 cas c’est chaque avion qui a une vision restreinte à son voisinage qui va tenter de résoudre les conflits qui le concerne à la façon du TCAS (on rappelle que le TCAS est un système de bord qui donne des manoeuvres dans le plan vertical si il y a risque d’abordage entre deux aéronefs). Nous utiliseront une approche centralisée, ce qui permet d’obtenir des solution globalement meilleures. 3.4.2 Quelques approches théoriques Les méthodes neuronales Dans [Gaudière 95, Médioni 98] un algorithme génétique est utilisé pour l’apprentissage d’un réseau de neurones qui agit sur les commandes d’un avion afin d’éviter un conflit.L’extension de la méthode au cas de conflits à trois avions est difficile. Arithmétique des intervalles Frédéric Médioni [Médioni 98] utilise une méthode d’optimisation globale déterministe utilisant l’arithmétique d’intervalle et un algorithme de type Branch and Bound pour trouver les solutions optimales d’un conflit impliquant quelques avions. Un modèle simple de manœuvre est défini : l’avion altère son cap de 30 degrés à gauche ou à droite à un instant t0 donné, avant de revenir sur sa trajectoire sous le même angle à un instant t1 . Si la méthode s’avère efficace pour les petits conflits (moins de 4 avions), le nombre des variables devient très rapidement un facteur limitatif pour des conflits plus importants. Par ailleurs, le modèle utilisé ne peut pas prendre facilement en considération les contraintes opérationnelles telles que les incertitudes sur les tenues de vitesses, de taux de montée et de descente. Algorithmes génétiques Le projet CATS4 , initié par le CENA5 , a vu le jour en 1996. Dans sa thèse, Nicolas Durand a montré que le problème de résolution de conflits peut devenir très complexe dès lors que le nombre d’avions impliqués dépasse trois ou quatre avions. Une étude théorique assez importante a pu montrer que si l’on refuse la notion de priorité et que l’on recherche l’optimum global du problème, les techniques d’optimisation classiques ont peu de chance d’aboutir. Il a pu exhiber une méthode d’optimisation à base d’algorithmes génétiques qui permet de résoudre des conflits impliquant jusqu’à une vingtaine d’avions. Il définit ainsi la notion de cluster d’avion, fermeture transitive de conflits élémentaires (impliquant deux avions seulement). La méthode utilisée, stochastique, ne permet pas de prouver l’optimalité de la solution exhibée ni de prouver l’absence de solutions si aucune solution n’est trouvée. 4 5 Complete Air Traffic Simulator ou CAML Air Traffic Simulator Centre d’Études de la Navigation aérienne 36 CHAPITRE 3. CONTEXTE DU TRAFIC AÉRIEN Automatisation du trafic au sol Dans [Gotteland 04] Jean-Baptiste Goettland utilise des algorithmes génétiques pour optimiser le trafic au sol dans les grands aéroports, car l’une des principale cause de retard est imputable à la circulation au sol des avions. Méthode utilisant la programmation par contraintes Thibaut Feydy présente dans [Feydy 05a] deux méthodes de résolution de conflit à l’aide de programmation par contraintes. La première, s’apparentant à un TCAS dans le plan horizontal, donne une résolution en cap afin que les avions s’évitent et permet de résoudre des problèmes jusqu’à 15 avions. Dans la seconde, les avions reviennent sur leurs trajectoires d’origine ; ce second modèle étant beaucoup plus complexe que le premier son implémentation ne permet de résoudre optimalement que des problèmes à 2 ou 3 avions. Chapitre 4 Résolution de conflits 4.1 Introduction Dans ce chapitre on présentera plusieurs méthodes pour résoudre automatiquement les conflits entre plusieurs avions à l’aide de résolution en vitesse. L’un des buts de la résolution de conflits à l’aide de régulation en vitesse [Archambault 04a] est de faire du contrôle subliminale [Villiers 04] afin de rendre le « trafic chanceux » pour le controleur. Pour atteindre ce but, il faut que les résolutions données soient faibles, afin de respecter les performances des avions. Les méthodes qui seront présentées s’appuyeront sur la programmation par contraintes, ce qui permettra d’assurer l’optimalité des solutions. La régulation en vitesse a l’avantage de garder le support des trajectoires, mais nécessite une bonne tenue de vitesse et un temps d’anticipation variable en fonction de l’angle entre les trajectoires. Définition 14 (Point de conflit) Nous appelons point de conflit entre deux avions en conflit potentiel, le point de croisement de leurs trajectoires. On notera ci,j le point de conflit entre l’avion i et l’avion j. 4.1.1 Critères d’optimalité Nous devons choisir des critères d’optimalité qui nous permettrons de comparer la qualité des solutions. On pourra par exemple choisir : – minimiser la moyenne des délais par avions (engendrés par le control), – minimiser le maximum des délais, car si l’on minimise la moyenne on peut se retrouver à pénaliser fortement un vol, et pas du tout les autres, – minimiser la variation moyenne des vitesses, – minimiser la variation maximale des vitesses, – minimiser les coûts des compagnies aériennes (consommation en carburant, retards qui peuvent avoir des impactes sur les correspondances, etc.). 37 38 CHAPITRE 4. RÉSOLUTION DE CONFLITS Les coûts réels d’un vol étant très difficile à estimer, la consommmation des avions dépendant du niveau de vol par exemple, on a donc choisit de s’interesser aux délais et aux variations des vitesses. 4.1.2 Les manoeuvres Dans ce chapitre on présentera trois modèles différents, deux modèles où les aéronefs volent en route directe (suivant une demi-droite), et un modèle ou les avions volent en suivant des routes standards (suivant un plan de vol). Pour les trois modèles nous ne considéront que les avions stables (qui ne changent pas de niveau de vol). Les modifications des vitesses seront faites sur la vitesses sol. 4.2 Route directe simple Dans cette section, les avions se déplacent en route directe de leur point de départ à leur point d’arrivée. On ne considerera que les avions stable à leur niveau de vol, ce qui nous donnera un modèle 3D (coordonnées dans le plan horizontal, et temps). On représentera chaque avion par : – sa position d’origine (x0 , y0 ), – sa vitesse (constante après pour t > 0), – son cap (constant). 4.2.1 Détection de conflits Pour détecter si deux avions seront en conflit dans le plan horizontal, il faut verifier si il existe un instant t tel que la distance entre ces deux avions sera inferieure à la séparation standard (soit à 5Nm). → → Soit − p1 (t) et − p2 (t) les vecteurs positions des avions A1 et A2 . On définit Ai et vi comme la position intiale et la vitesse de l’avion Ai . On a : −−→ − → → p1 (t) = OA1 + t− v1 − − → − → → p (t) = OA + t− v 2 2 2 on pose alors : −−−→ − A1 A2 = → r − → − → − → v2 − v1 = vr On écrit alors que la distance entre les deux avions doit être superieure à la séparation standard D : 39 4.2. ROUTE DIRECTE SIMPLE Fig. 4.1 – détéction de conflit entre deux avions → → → → (− r + t− vr )2 ≥ D 2 ⇐⇒ vr2 t2 + 2− r ·− vr t + r 2 − D 2 ≥ 0 (4.1) La résolution de cette équation du second dégré donne les valeurs de t durant lesquelles les deux avions sont en conflit. Nous allons décrire les cas dans lesquels il n’y a pas conflit entre les deux avions : – soit le polynôme du second degré n’a pas de racine réelle, – soit les racines sont négatives, c’est un cas d’éloignement. Premier cas : Le discriminant de l’équation du second degré est négatif ou nul, ce qui signifie que l’équation a au plus une racine. Si il n’y a pas de racine réelle il n’y a aucun conflit possible. Si il y a une racine double, alors le conflit éventuel n’existe qu’en un point (de durée nulle) ; on considerera alors qu’il n’y a pas conflit. → → ∆0 = (− r ·− vr )2 − vr2 (r 2 − D 2 ) ≤ 0 On pose dans le plan horizontal : → ∀i ∈ {1, 2}, − vi = vi cos(θi ) vi sin(θi ) rx ry et : − → r = 40 CHAPITRE 4. RÉSOLUTION DE CONFLITS Ce qui nous permet d’écrire le déterminant sous la forme d’un polynôme en v1 , v2 : α · v12 + β · v22 + γ · v1 · v2 ≤ 0 (4.2) Où les coéfficients α, β, et γ sont : α= D 2 − rx 2 − ry 2 + rx 2 · cos(θ1 )2 + 2 · rx · ry · cos(θ1 ) · sin(θ1 ) + ry 2 · sin(θ1 )2 β= D 2 − rx 2 − ry 2 + rx 2 · cos(θ2 )2 + 2 · rx · ry · cos(θ2 ) · sin(θ2 ) + ry 2 · sin(θ2 )2 γ = −2 · (D 2 − rx 2 − ry 2 ) · cos(θ1 − θ2 ) − 2 · rx 2 · cos(θ1 ) · cos(θ2 ) − 2 · rx · ry · cos(θ2 ) · sin(θ1 ) −2 · rx · ry · cos(θ1 ) · sin(θ2 ) − 2 · ry 2 · sin(θ1 ) · sin(θ2 ) Second cas : Dans le cas où le discriminant est strictement positif, alors il y a exactement 2 racines t1 et t2 . Pour qu’il n’y ait pas conflit il faut que t1 et t2 soient négatifs ce qui revient à dire que le conflit est passé, c’est-à-dire que l’on se trouve dans un cas d’éloignement (voir Fig. 4.2). Fig. 4.2 – Cas d’éloignement t1 et t2 sont négatif si et seulement si t1 + t2 ≤ 0 (au moins une des racines est négative) et t1 t2 ≥ 0 (les deux racines sont de même signe). On a donc : → → (− r ·− vr ≥ 0) ∧ (r 2 − D 2 ≥ 0) Ce qui se développe en : (v2 (rx cos θ2 + ry sin θ2 ) − v1 (rx cos θ1 + ry sin θ1 ) ≥ 0) ∧ (rx2 + ry2 − D 2 ≥ 0) (4.3) Remarque 7 Si t1 et t2 sont de signes opposés alors au temps t = 0 les avions 1 et 2 sont déjà en conflit. 41 4.2. ROUTE DIRECTE SIMPLE 4.2.2 Résolution par PPC On se place dans le plan horizontal, l’ensemble des variables de décision V = {vi , i ∈ 1..n} sont les normes des vitesses des avions. La méthode de détéction de conflit vue précédemment permet de données un critère globale pour dire si il y a conflit entre deux avions ou non. Maintenir ce critère pour chaque paire d’avions permet alors de résoudre les conflits. Ce qui donne en terme de contraintes : (α · v12 + β · v22 + γ · v1 · v2 ≤ 0) _ (λ · v1 + µ · v2 ≥ 0) ∧ (rx2 + ry2 − D 2 ≥ 0) (4.4) Remarque 8 Cette contrainte est codée sur les domaines continus, en effet les coéfficients de cette contraintes font intervenir des formules trigonomètriques, nous ne pouvons pas utiliser les nombres entiers. Il suffit donc pour résoudre le conflit de définir les vitesses des avions comme variables (sur un domaine fini), et de poster la contrainte 4.4 à notre librairie de résolution de contraintes (FaCiLe). FaCiLe trouvera alors la solution optimale par rapport au critère d’optimisation que l’on aura choisi. Stratégies de recherche La résolution de conflits à n-avions est un problème fortement combinatoire. Il est difficile de résoudre rapidement de façon efficace des conflits sans une bonne stratégie de recherche de solution. La première stratégie de recherche utilisée consiste à instancier en premier les variables ayant le plus petit domaine. Cette stratégie de type first-fail, part du principe qu’il est interessant de découvrir rapidement qu’une valeur ne satisfait pas les contraintes, plutôt que de le découvrir à la fin. La stratégie précédente améliore la rapidité, mais ne permet pas de résoudre de gros problèmes. Nous sommes restés bloquer sur un conflit à 5 avions sur un cercle1 . Nous avons alors décidé de commencer par donner un ordre entre les avions (entre les avions risquant d’être en conflit de croisement), et de profiter de la connaissance de l’ordre de passage des avions pour réduire les domaines des vitesses des deux avions. Comme le montre [Nguyen 04], on peut calculer la durée qui doit séparer le passage de deux avions au point de croisement de leur trajectoire pour qu’il n’y ait pas conflit. On note αij l’angle formé par les trajectoires de Ai et Aj , tiij (resp. tjij ) l’instant auquel la trajectoire de l’avion Ai (resp. Aj ) coupe celle de l’avion Aj (resp. Ai ). Iiji (resp. Iijj est la distance séparant l’avion Ai (resp. Aj ) de l’avion Aj (resp. Ai ) lorsque ce premier passe au point d’intersection de leurs trajectoires (voir figure 4.3). 1 n-avions sur un cercle est très certainement l’une des situations les plus complexe lorsqu’on fait de la résolution en vitesse 42 CHAPITRE 4. RÉSOLUTION DE CONFLITS Ai αi,j . / 2 0 1 2 2 2 . / 2 2 2 2 2 2 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 2 2 2 3 3 3 Ij,i 2 2 3 3 2 2 2 2 2 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 0 1 Aj Fig. 4.3 – Interval entre deux avions on a : |tiij − tjij | Iijj Iiji = = vj vi Pour trouver |tiij − tjij | il suffit de calculer Iiji , pour cela écrivons la position des avion Ai et Aj à l’instant t : vi · t – la position de l’avion Ai , 0 (vj · t − Iiji ) cos αij – la position de l’avion Aj (vj · t − Iiji ) sin αij Le carré de la distance de Ai à Aj vaut : 2 2 − −−→ ||AiAj ||2 = vj · t − Iiji cos αij − vi · t + vj · t − Iiji sin αij 2 = vi2 + vj2 − 2vj vj cos αij t2 + 2Iiji (vi cos αij − vj ) t + Iiji Posons : A = vi2 + vj2 − 2vj vj cos αij B = 2Iiji (vi cos αij − vj ) C = Iiji 2 On a donc : − −−→ ||AiAj ||2 = At2 + Bt + C (4.5) 43 4.2. ROUTE DIRECTE SIMPLE où A > 0 car A = (vi − vj )2 + 2vi vj (1 − cos αij ) > 0 (on ne considère pas les face-à-face et les rattrapages). L’équiation 4.5 est minimale pour la racine − B . Pour qu’il n’y ait pas A conflit il faut que ce minimum soit supérieur ou égal à D la séparation standard. Soit : B2 +C A q D ⇒ Iiji = vi2 + vj2 − 2vi vj cos(αij ) vi |sin(αij )| D − = d’où : |tiij − tjij | q D = vi2 + vj2 − 2vi vj cos(αij ) vi vj |sin(αij )| (4.6) On notera rij la valeur minimale que doit prendre |tiij − tjij | pour qu’il n’y ait pas conflit entre les avions Ai et Aj . Avec l’hypothèse Ai passe en premier au point d’intersection des trajectoires de Ai et Aj on a la contrainte : tiij + rij ≤ tjij Soit q djij diij D 2 2 + vi + vj − 2vi vj cos(α) ≤ vi vi vj |sin(α)| vj 4.2.3 (4.7) Résolution par ordonnancement Le principe de la résolution de conflit par ordonnancement est de créer pour chaque paire d’avion en conflit une tâche qui materialisera le passage de l’avion au point de conflit. Ces deux tâches ne pourront pas s’executer en même temps, et le temps d’execution de chaque tâche permettra d’assurer la séparation entre les aéronefs. Enfin le fait de trouver le temps de début de chacune des tâches nous permettra de trouver la vitesse des aéronefs. Pour detecter les conflits potentiels entre deux avions i et j il suffit de verifier si pour toutes les valeurs possibles de (vi , vj ) il en existe une ou il y a conflit. Modélisation du problème Pour chaque conflict potentiel entre deux avions i et j on créera deux tâches disjointes (qui ne peuvent s’executer en même temps) : – Ei,j : L’avion i passe au point de conflict alors que l’avion j n’y passe pas, – Ej,i : L’avion j passe au point de conflict alors que l’avion i n’y passe pas. On note D la séparation réglementaire. La durée de ces deux tâches doit permettre d’assurer la séparation entre les 2 avions. La durée de Ei,j est égale à rij . 44 CHAPITRE 4. RÉSOLUTION DE CONFLITS A3 A1 A2 Fig. 4.4 – Exemple de cluster à 3 avions Remarque 9 Le simple fait que les tâches Ei,j et Ej,i soient disjointes permet de résoudre le conflit entre les deux avions. En effet cela permet de maintenir la séparation D entre les deux avions [Nguyen 04]. Notons di,j la distance de l’avion i au point d’intersection de sa trajectoire avec celle de l’avion j, alors start(Ei,j ) verifie : start(Ei,j ) = di,j vi (4.8) Contraintes temporelles Soit Ei,j et Ei,k deux tâches consécutives d’un même avion i. Supposons que Ei,j doivent s’executer en premier, alors : start(Ei,k ) = start(Ei,j ) + di,j,k vi (4.9) où di,j,k est la distance séparant les points d’intersections. Stratégies de recherche Il est important de commencer par donner un ordre de passage à chaque paire d’avions en conflit, en effet cela permet de réduire les domaines des vitesses. Pour cela nous utilis- 4.2. ROUTE DIRECTE SIMPLE 45 erons l’algorithme de ranking de FaCiLe. Ensuite on pourra faire l’ordonnancement des tâches et donc d’instancier la date du début de chacune de ces tâches. Instancier le début d’une tâche revient à instancier la vitesse d de l’avion en question. En effet start(Ei,j ) = vi,ji . Nous avons donc choisit d’instancier directement les vitesses des avions plutôts que d’instancier les dates de début (dont le domaine est généralement plus grand). On remarque que les algorithmes d’Edge-Finding et Not-First (ou Not-Last) ne sont pas efficace sur ce problème ; en effet, il n’y a seulement que deux tâches en concurrence sur chaque machine, et on ne peut pas vraiment prévoir trop à l’avance qu’une tâche ne pourra pas s’executer en premier sur une machine (ou en dernier). Ces algorithmes dont la complexité temporelle est en O(n2 ), apporteront en fait peu de déductions interessantes dans notre modèle. 4.2.4 Résultats On a testé l’efficacité des différents modèles étudiés sur un problème de n avions sur un cercle (figure 4.5). Il y a donc n(n−1) conflits à résoudre. 2 Fig. 4.5 – n avions sur un cercle On observe que : – La méthode par PPC (sans ranking) permet de résoudre le problème jusqu’à 4 avions soit 6 conflits. – La méthode par PPC et ranking permet de résoudre le problème jusqu’à 7 avions soit 21 conflits. – La méthode par ranking et ordonnancement permet de résoudre le problème jusqu’à 10 avions soit 45 conflits. On remarque que le ranking joue une grande influence dans la résolution de ce problème. En effet choisir l’ordre de passage des avions permet de casser les symétries du problème et de réduire les domaines des variables. 46 4.3 CHAPITRE 4. RÉSOLUTION DE CONFLITS Route directe avec changements de vitesse 4.3.1 Définitions Dans cette partie nous ne nous limiterons plus à un seul changement de vitesse par aéronefs. Nous verons une méthode permettant de faire pour chaque avion un changement de vitesse par conflit. xi (2) ci (1) xi (0) Fig. 4.6 – Points de conflit Pour chaque avion, on définit le tableau Ii = {xi (0), xi (1), . . .} de ses points de conflit (figure 4.6) avec d’autres trajectoires. Pour chaque point de conflit xi (j) on définit le point x0i (j) à partir duquel le conflit est terminé au plus tard (il se trouve à un distance de sinDα du point de croisement, avec α l’angle entre les trajectoires en conflit). On définit alors l’ensemble V = {vi (0), vi(1), . . .} des vitesses d’un avion (figure 4.7) où vi (k) est la vitesse de l’avion i sur le segment [x0i (k − 1), x0i (k)]. Remarque 10 On considère que x0i (0) = xi (0) et sont confondus avec la position initiale de l’avion. x0i (0) x0i (1) xi (0) vi (0) x0i (2) xi (1) vi (1) xi (2) vi (2) Fig. 4.7 – Différents changements de vitesse pour un avion vi (0) 47 4.4. ROUTE STANDARD 4.3.2 Modélisation du problème Pour chaque point de conflit, disons entre l’avion i et l’avion j, on définit 2 tâches disjointe : – Ei,j : L’avion i passe au point de conflict alors que l’avion j n’y passe pas, – Ej,i : L’avion j passe au point de conflict alors que l’avion i n’y passe pas. Comme nous l’avons déjà vu la durée de la tâche Ei,j est égale à celle de la tâche Ej,i et vaut : q D rij = vi (ki )2 + vj (kj )2 − 2vi (ki )vj (kj )cos(α) vi (ki )vj (kj )|sin(α)| où ki et kj sont les indices des ségments sur lesquels se trouvent les avions i et j. 4.3.3 Contraintes Soit le pourcentage maximum de changement de vitesse pour un aéronefs. On a alors : ∀(i, j), (1 − ) · vi (0) ≤ vi (j) ≤ (1 + ) · vi (0) ∀(i, j), (1 − ) · v( i)(j) ≤ vi (j + 1) ≤ (1 + ) · vi (j) Si la trajectoire de l’avion i et de l’avion j se coupe en xi (k) (= ci,j ), alors on définit deux tâches disjointes : Soit Ei,j et Ei,k deux tâches consécutives de l’avion i. On note xi (n) et xi (n + 1) les points de croisement correspondant (di,n,n+1 est la distance entre ceux deux points). On a alors : Si di,n,n+1 < Alors D sin αi,j + D sin αi,k vi,n = vi,n+1 et start(Ei,k ) = start(Ei,j ) + Sinon start(Ei,k ) = start(Ei,j ) + 4.4 di,n,n+1 vi,n D di,n,n+1 sin αi,j − D + vi,n sin αi,j vi,n+1 sin αi,j (4.10) (4.11) Route standard Dans cette partie on cherche à représenter la trajectoire de chaque avion de façon assez fidèle, en la discrétisant. Chaque avion est représenté par une suite de point. Chaque point étant espacé dans le temps d’un interval de temps fixe (de 8 ou 15 secondes). 48 CHAPITRE 4. RÉSOLUTION DE CONFLITS > = > ? = ? < : ; < : ; 8 9 8 9 6 7 6 7 4 5 4 5 Fig. 4.8 – Modèle de trajectoire en conflit 4.4.1 Détection de conflits On notera Wi (resp. Si ) l’ensemble des points de la trajectoire de l’avion i (resp. l’ensemble des vitesses) (voir Fig. 4.8). Définition 15 (Trajectoire) Une trajectoire est une suite de couples (position, vitesse) ∈ Wi × Si . Dans ce cas précis la détéction des conflits potentiel se fait point à point. il suffit de verifier : – soit que les deux points sont séparés horizontalement de plus de 5Nm (la séparation standard), – soit que les deux aéronefs ne pourront se trouvé en ces points en même temps. 4.4.2 Résolution par ordonnancement On modélise chaque point de passage d’un aéronefs par une tâche. Afin de résoudre les conflits, pour chaque paire d’avions, les points de passage pouvant être en conflit sont modélisés par des tâches disjointes c’est-à-dire que l’avion i ne pourra pas être sur un point qui est dans un rayon de moins de 5Nm de l’avion j (voir Fig. 4.9). – le début de la tâche correspond au passage du point par l’avion, – le temps d’execution de la tâche est le temps que l’avion met pour aller de ce point au prochain point, – la fin de la tâche correspond elle à l’arrivée de l’avion au point suivant. Pour chaque point de la trajectoire d’un avion i on fait calcul la liste des points où l’avion j ne doit pas se trouver (pour respecter les séparations). 49 4.4. ROUTE STANDARD 5Nm Fig. 4.9 – Modèle de point en conflit Contraintes On notera Pi (j) la tâche correspondant au passage de l’avion i au point j. On remarquera donc que ∀j = 1 . . . n − 2, start(Pi (j + 1)) = end(Pi (j)) ⇔ start(Pi (j + 1)) = start(Pi (j)) + proc(Pi (j)) De plus si l’avion i et l’avion j sont en conflit au point ki et kj : (Pi (ki) Pj (kj )) ∨ (Pi (ki ) Pj (kj )) On note Ci,j (k) l’ensemble des points de la trajectoires de l’avion S j en conflit avec le point k de la trajectoire de l’avion i. L’ensemble des tâches Ci,j (k) {Pi (k)} forment un ensemble de tâches disjointes (elles s’executent sur la même machine). On remarque aussi que soit Pi (k) s’exécute après toutes les tâches de Ci,j (k) ou avant toutes les tâches de Ci,j (k) : Ci,j (k) Pi (k) ∨ Pi (k) Ci,j (k) Résultats Sur des données de trafic réel nous arrivons à résoudre des conflits à deux avions, mais la combinatoire du problème nous empêche de résoudre des problèmes plus gros. Cette 50 CHAPITRE 4. RÉSOLUTION DE CONFLITS méthode est tout de même très interessante car sur une journée de trafic la majorité des conflits sont des conflits à deux avions. Chapitre 5 Anticipation Dans ce chapitre nous allons nous intéresser aux problèmes d’anticipation. En effet, pour résoudre un conflit de façon efficace il un faut temps d’anticipation variable selon l’angle de conflit et la complexité du conflit. Nous allons ici étudier les temps d’anticipation nécessaire à la régulation en vitesse, en supposant que les avions arrivent à tenir parfaitement leur trajectoires 4D. Nous verrons donc dans ce chapitre l’influence de l’anticipation sur la qualité des solutions, et l’influence de l’angle entre les trajectoires des avions, et de la taille du problème à résoudre sur la taille de la fenêtre d’anticipation. 5.1 Influence de la fenêtre d’anticipation sur la qualité de la solution Pour mesurer l’importance de l’anticipation sur la résolution optimale nous nous sommes placés dans l’hypothèse la plus pénalisante, c’est-à-dire les deux avions doivent arriver au point de croisement de leur trajectoire (ou point de conflit) au même instant, et nous avons fait varier la distance au point de conflit (au moment de la résolution). Ce qui nous donne comme hypothèse : – Les avions volent à 420kt avant la résolution – Les avions sont à égale distance du point de conflit. – Les routes sont séparés d’un angle de 20◦ On observe logiquement sur la Fig. 5.1 que plus les avions sont éloignés du point de conflit, plus l’amplitude de la manoeuvre en vitesse est faible. On s’aperçoit aussi que sur cette exemple, si on veut avoir des régulations de l’ordre de 2% (ce qui équivaut à 8kt ou 15km/h pour une vitesse de 400kt), il faut un temps d’anticipation d’environ 17 minutes, soit en terme de distance une distance de 120Nm (plus de 220km) avant le point de conflit. 51 52 CHAPITRE 5. ANTICIPATION 5.5 5 4.5 4 3.5 3 2.5 2 1.5 40 60 80 100 120 140 160 Fig. 5.1 – Résolution (en %) en fonction de la distance au point de conflit (en Nm) 5.2 Incidence entre les trajectoires Pour mesurer l’influence de l’angle entre les trajectoires sur la distance d’anticipation du conflit nous avons fixé une amplitude de régulation acceptable à 2%. 700 600 distance 500 400 300 200 100 0 20 40 60 80 100 120 140 160 angle Fig. 5.2 – Fenêtre d’anticipation en fonction de l’angle pour deux avions à 420kts Comme le montre la Fig. 5.2 plus l’angle est grand entre les avions, plus la taille de la fenêtre d’anticipation doit être grande. En effet, plus les avions sont proche d’une situation de face-à-face, plus le problème est difficile à résoudre ce qui implique qu’il faut plus de temps (ou de distance) pour résoudre le problème. 53 5.3. TAILLE DU PROBLÈME Dans cet exemple pour un angle entre 10◦ et 100◦ , il nous faut une fenêtre d’anticipation de 18 à 28 minutes. Ces résultats sont cohérent avec les résultats de Nicolas Durand qui montre dans [Durand 96] que la fenêtre d’anticipation doit généralement être supérieur à 20 minutes pour obtenir des régulation pas trop importantes. La résolution de conflit par modification des vitesses des aéronefs pour des avions dont l’angle entre les trajectoires est élevé donne de mauvais résultats, il faudra donc envisager d’autres méthodes dans ces cas là [Feydy 05b, Granger 02, Chansou 95, Durand 96] 5.3 Taille du problème Pour tester l’influence du nombre d’avions sur l’amplitude de la régulation maximale, nous avons utilisé le problème de n avions sur un arc de cercle (figure 4.5). Les avions ont initialement la même vitesse, et leur trajectoire sont séparées d’un angle de 20◦ . Ce problème est un problème difficile : tous les avions sont en conflits deux à deux Pn−1 ( k=1 k conflits au total), de plus le problème est symétrique (on peut échanger l’avion i et l’avion n + 1 − i sur le cercle sans changer le problème). Résultats On observe (figure 5.3) que l’amplitude maximum de résolution, pour des problèmes de tailles raisonnables (conflits de 2 à 7 avions), est linéaire avec le nombre d’avions en conflit. Ce résultat peu paraitre décourageant pour effectuer des résolutions de conflit en vitesse, cependant la taille d’un cluster en nombre d’avions n’est pas équivalent à la complexité du cluster ; un meilleur indicateur serait le nombre de conflit, ou la durée total des conflits : dans le cas des n avions sur un cercle il y a n(n−1) conflits. 2 20 18 16 resolution max en % 14 12 10 8 6 4 2 2 3 4 5 6 7 nombre d’avions Fig. 5.3 – Regulation maximum en fonction du nombre d’avions 54 5.4 CHAPITRE 5. ANTICIPATION Conclusions En premiers nous avons constaté qu’il faut une fenêtre d’anticipation très grande (plus de 20 minutes) pour résoudre des conflits à l’aide de régulations en vitesse. Cela veut dire que l’on dispose d’outils permettant de prédire précisemment la trajectoires en 4D et que les FMS tiennent aussi précisémment que possible les trajectoires demandées. Nous avons vu que nous ne pouvont pas résoudre efficacement des conflits où l’angle entre les avions est élevé. Le cas des avions en face à face lui ne peut clairement pas être résolu à l’aide de régulation en vitesse, on choisira plutôt dans ce cas là de résoudre le conflit à l’aide de changements de cap ou d’altitude. Troisième partie Optimisation 55 Chapitre 6 Différents critères d’optimisation Dans ce chapitre, nous avons essayer de comparer les différents critères d’optimisation vu au chaptire 4. Dans ce précédent chapitre nous avions décidé de nous interesser aux variations en vitesse, et en particulier à la moyenne1 et au maximum des variations. 6.1 Les critères Soit Ω = {A1 , A2 , . . . , An } un ensemble de n avions, où vi0 (respectivement vi ) est la vitesse de l’avion Ai avant (respectivement après) la régulation. Écart maximal C’est le premier critère que l’on a envisagé, car c’est le critère qui peut paraı̂tre le moins injuste. en effet on essaye de pénaliser le moins possible l’avion qui sera le plus pénalisé. |vi − vi0 | i∈{1,...,n} vi0 coutmax (Ω) = max Écart moyen C’est le deuxième critère que l’on a envisagé, pour trouver des solutions globalement meilleures que celles trouvées avec le critère précédent. coutsomme (Ω) = 1 n X |vi − vi0 | vi0 i=1 La moyenne des variations est équivalente à la somme des variations 57 58 CHAPITRE 6. DIFFÉRENTS CRITÈRES D’OPTIMISATION Écart maximal, puis écart moyen Ce troisième critère, nous permet de prendre en compte l’écart maximal puis l’écart moyen ce qui permet de classer les solutions équivalentes trouvées avec coutmax . Ce critère permettra de qualifier la qualité des solutions de façon « plus précise » que coutmax . |vi − vi0 | coutmax,somme (Ω) = n · max i∈{1,...,n} vi0 2 n X |vi − vi0 | + vi0 i=1 Somme des carrés des écarts L’utilisation de la somme des carrés des écarts en tant que fonction objectif pénalise plus vite les mauvais éléments que le critère coutsomme . On espère donc avoir une meilleure efficacité (en temps de calcul) avec ce critère. 2 n X |vi − vi0 | coutsquare (Ω) = vi0 i=1 6.2 Les résultats n avions sur un cercle – La vitesse des avions est de 420kt. – La distance au point d’impact est de 150Nm. Ce premier exemple nous a servi à voir de façon qualitative comment réagissaient les différents critères. On s’aperçoit que les temps de calcul des solutions (Tab. 6.1) sont différents selon les critères utilisés : cela est dû au fait qu’il est plus ou moins simple de borner certain critère par rapport à d’autres. Par exemple la fonction max permet généralement de couper plus vite dans l’arbre de recherche d’un algorithme de Branch and Bound que la fonction somme. Comme on peut le voir sur la Fig. 6.1 les 3 critères sont très proches en ce qui concerne les valeurs des solutions trouvées. Ceci est vraisemblablement dû aux nombreuses symétries du problème. Cette expérience nous a donc permis de mettre en évidence les différences d’efficacité des différents critères en terme de temps de calcul mais ne nous permet pas de conclure par rapport aux autres points que l’on souhaitait évaluer. n avions Afin de casser des symétries dans le problème précédent on décide, de rajouter du bruit aux positions d’origine des avions par rapport à l’expérience précédente. De même la vitesse 59 6.2. LES RÉSULTATS 160 max somme max et somme 140 variation maximale en /1000 120 100 80 60 40 20 0 2 3 4 5 6 nombre d’avions 7 8 9 10 900 max somme max et somme 800 somme des variations en /1000 700 600 500 400 300 200 100 0 2 3 4 5 6 7 8 9 10 nombre d’avions Fig. 6.1 – n avions sur un cercle : coût des meilleurs solutions 60 CHAPITRE 6. DIFFÉRENTS CRITÈRES D’OPTIMISATION 35 max somme max et somme maximum des variations en /1000 30 25 20 15 10 5 0 2 2.5 3 3.5 nombre d’avions 4 4.5 5 80 max somme max et somme 70 somme des variations en /1000 60 50 40 30 20 10 0 2 2.5 3 3.5 4 4.5 nombre d’avions Fig. 6.2 – n avions : coût des meilleurs solutions 5 61 6.3. CONCLUSIONS nb d’avions 2 3 4 5 6 7 8 9 10 max somme 0 0 0 0.2 0.2 8.3 2.1 135 3.6 1870 57 ∞ 405 ∞ 1322 ∞ 4465 ∞ max et somme somme des carrés 0 0.03 0 0.18 0.9 2.75 2.7 19.43 13 499.89 80 5223 722 ∞ 1243 ∞ ∞ ∞ Tab. 6.1 – Temps de calcul des solutions avec différents critères de l’avion est soit de 410kt soit de 420kt. Nous avons ensuite réalisé la moyenne sur des échantillons de 100 individus. Cette expérience met en évidence des différences significatives entre les différents critères (voir Fig. 6.2). Le critère coutmax,somme s’avère presque aussi efficace pour minimiser la somme des variations que de coutsomme et est bien plus rapide. 6.3 Conclusions Les critères coutmax et coutmax,somme s’avèrent beaucoup plus efficace en terme de temps de calcul que coutsomme et coutsquare . Cela est dû au fait que l’on peut minorer facilement une évaluation partielle de la fonction max par le maximum des valeurs déjà instanciées, ce qui n’est pas faisable avec la fonction somme. Le fait de sommer sur les carrés des écarts permet de réduire ce phénoméne. En prenant la somme des puissances n-ème des écarts on gagne encore plus en vitesse de calcul, mais malheureusement, on dépasse rapidement le maximum des entiers en OCaml. Le critère d’optimisation coutmax,somme semble être un bon compromis entre vitesse de calcul et qualité de la solution, effet ce critère pénalise autant l’avion le plus pénalisé que coutmax et pénalise moins en moyenne les autres avions. Chapitre 7 Utilisation d’un algorithme glouton Dans ce chapitre, nous allons présenter un algorithme permettant de trouver une solution admissible rapidement. Le coût de cette solution pourra ensuite être utilisé comme borne supérieure du coût du problème de résolution de conflit. 7.1 L’algorithme glouton Un « algorithme glouton » est un algorithme qui fait le meilleur choix a priori à chaque point de choix. On espère ainsi se rapprocher de l’optimum global. Dans ce chapitre, nous allons présenter un algorithme de type « 1 contre n » : on calcule séquentiellement les trajectoires des avions en prenant en compte les trajectoires précédemment calculées. L’algorithme 5 permet de tester si avec la vitesse vi la trajectoire de l’avion i n’est pas conflictuelle avec les trajectoires des i − 1 avions précédents dont on a déjà choisi la vitesse. Algorithme 5 Tester (vitesse: vi , indice: i) test ← V rai conf lit(x, y) : est le prédicat l’avion x et l’avion y sont en conflit. pour j = 1 à i faire test ← test ∧ ¬(conf lit(i, j)) fin pour L’algorithme 6 tente d’affecter à chaque avion la vitesse (avec la variation minimale) qui lui permet de ne pas être en conflit avec les avions déjà traités. Remarque 11 La complexité temporelle de l’algorithme 6 est en O(n2 ), alors que les méthodes optimales présentées au chapitre 4 ont des complexités temporelles exponentielles. 63 64 CHAPITRE 7. UTILISATION D’UN ALGORITHME GLOUTON Algorithme 6 Glouton pour i = 1 à n faire ∆v ← 0 vi ← vi0 tant que V rai faire ∆v ← ∆v + 1 vi ← vi0 + ∆v si T ester(vi , i) alors sortir de la boucle tant que fin si vi ← vi0 − ∆v si T ester(vi , i) alors sortir de la boucle tant que fin si fin tant que fin pour 7.2 Ordronnancement L’ordre des avions dans la résolution est un facteur primordial (voir chapitre 4) pour l’efficacité de la solution. En effet, un mauvais choix en ce qui concerne l’ordre des avions peut donner une solution peu efficace ou dans le pire des cas la résolution peut ne pas aboutir. Le but est de trouver le meilleur ordre possible. Pour cela on peut soit parcourir de façon exhaustive les n! ordres différents, soit s’appuyer sur des heuristiques telles que le nombre de conflits, la manœuvrabilité, le numéro CAUTRA (identifiant du vol dans le système CAUTRA) de l’avion. En général, on utilise la combinaison de plusieurs heuristiques pour pouvoir comparer les avions entre eux. On les utilise de façon séquentielle, un peu comme « un ordre lexicographique ». Nicolas Archambaut et Nicolas Durand utilise le numéro CAUTRA comme dernières heuristiques [Archambault 04b], ce qui permet d’assurer que l’on obtient un ordre total entre tous les avions. 7.2.1 Parcours exhaustif Dans un premier temps, nous avons essayé la méthode par parcours exhaustif de tous les ordres possibles (voir Tab. 7.1). Ainsi on est certain de tester l’ordre qui minimise le critère d’évaluation. 65 7.2. ORDRONNANCEMENT nombre d’avions 2 3 4 5 6 7 8 9 nombre d’ordres 2 6 24 120 720 5 040 40 320 362 880 temps de résolution 0 0 0.02 0.13 1.51 14.27 160 ∞ Tab. 7.1 – Parcours exhaustif des différents ordres. 7.2.2 Utilisation d’heuristiques Le parcours exhaustif s’avère trop coûteux, ce qui était sans doute prévisible du fait que le nombre d’ordres augmente très rapidement (il y a exactement n! ordres différents). Il est donc impossible de parcourir tous les ordres, nous allons donc essayer de classer les avions à l’aide des heuristiques suivantes par exemple : – t : temps au premier conflit, – m : manœuvrabilité de l’aéronef, – c : nombre de conflits, – id : numéro de CAUTRA. À partir des heuristiques (h0 , h1 , . . . , hn ), on peut définir la relation d’ordre ≺ sur l’ensemble Ω = {A0 , A1 , . . . , Am } des avions du problème de la façon suivante : Ai ≺ Aj si il existe k tel que pour tout p < k : hp (Ai ) = hp (Aj ) et hk (Ai ) < hk (Aj ) Remarque 12 Il suffit que l’une des heuristiques définisse une relation d’ordre total sur Ω pour que ≺ définisse une relation d’ordre total sur Ω. Pour obtenir un ordre total, on utilise une combinaison des plusieurs heuristiques avec id comme dernière heuristique. 7.2.3 Comparaison entre heuristiques et parcours exhaustif Pour effectuer nos comparaison nous avons utilisé les heuristiques suivantes : – t, m, c, id – t, c, m, id – m, t, c, id – m, c, t, id – c, t, m, id – c, m, t, id 66 CHAPITRE 7. UTILISATION D’UN ALGORITHME GLOUTON On a comparé les résultats obtenus grâce au parcours exhaustif et à l’utilisation d’heuristiques. Nous avons regroupé dans le tableau Tab. 7.2 le meilleur résultat obtenu à l’aide d’une des 6 heuristiques testées et le meilleur résultat obtenu à l’aide du parcours exhaustif de tous les ordres. On s’aperçoit que les heuristiques utilisées ne sont pas très efficaces dès que la taille du problème augmente. taille du cluster 2 avions 3 avions 4 avions exhaustif 16.91 18.83 22.98 heuristiques 17.18 21.58 31.31 % erreur 1.5 14.6 36.2 taille du cluster 2 avions 3 avions 4 avions exhaustif 16.91 22.83 40.48 heuristiques 17.18 25.53 49.16 % erreur 1.5 11.8 21.5 Tab. 7.2 – Comparaison ordonnancements : le premier tableau est fait avec coutmax et le second avec coutsomme Les heuristiques choisies ne semblent pas être de très bonnes qualités, et le parcours exhaustif est lui trop coûteux en temps de calcul, c’est pourquoi nous avons envisagé d’utiliser un parcours en temps borné, c’est-à-dire que l’on fixe le temps de parcours des différents ordres possibles. 7.2.4 Parcours en temps borné On s’aperçoit (voir Tab. 7.3) que l’utilisation de l’algorithme glouton n’est pas efficace sur des petits clusters mais qu’elle permet de réduire fortement le temps de calcul sur des clusters de taille importante (à partir de 8 avions). taille du cluster 7 avions 8 avions 9 avions sans avec 33 36 627 155 1347 322 Tab. 7.3 – Temps de résolution du problème n avions sur un cercle de rayon 160Nm sans ou avec utilisation d’algorithme glouton (et parcours en temps borné = 5s) Conclusion Cette étude a permis d’envisager des méthodes exactes pour la résolution de conflit par régulation en vitesse. Dans la première partie du document nous avons présenté les méthodes de résolution de problème d’ordonnancement à l’aide de programmation par contraintes. Dans la deuxième partie, nous avons présenté des méthodes de résolution de conflits en vitesse par ordonnancement. Dans cette partie nous avons mis en évidence le lien étroit entre l’ordonnancement et la résolution de conflits par régulation en vitesse. La programmation par contraintes nous a permis de garantir l’optimalité des solutions trouvées. Nous avons ensuite pu étudier certaines limites de la régulation en vitesse. On a montré que plus l’angle entre les avions était élevé plus la régulation était grande (le problème n’a pas de solution pour les cas de face-à-face ou de rattrapage). Nous avons aussi mis en avant le fait qu’il faille une grande fenêtre d’anticipation pour pouvoir résoudre de façon efficace ce problème, ce qui implique la nécessité d’une grande précision sur la prévision des trajectoires des avions. Enfin l’amplitude des régulations augmentant linéairement avec le nombre d’avions d’un cluster, la fenêtre d’anticipation doit augmenter elle aussi avec le nombre d’avions du problème pour garantir que l’on aura des solutions acceptables. Enfin nous avons coupler notre programme de résolution avec l’utilisation d’un algorithme glouton qui nous permet de trouver une première solution admissible. À l’aide de cette solution admissible, on peut réduire la taille des domaines des variables de décision et majorer le critère d’optimisation. Nous n’avons pas évoqué les problèmes d’incertitude sur les tenues de vitesse des avions. Il est clair que si les avions ne peuvent tenir leur vitesse de façon précise, la régulation en vitesse devient difficile. Nous avons très souvent considéré les conflits dans le pire des cas, à savoir lorsque les deux avions sont supposés passer par le point d’intersection de leurs trajectoires au même instant. Il est clair que si deux avions sont déjà partiellement séparés, une régulation en vitesse peut permettre de les séparer complètement facilement. Néanmoins, plus l’anticipation de la régulation en vitesse est grande, plus l’incertitude joue un rôle important ; à 460kts une erreur de 1% pendant une demi-heure équivaut à une distance de 2.3Nm ce qui explique pourquoi les contrôleurs utilisent peu la régulation en vitesse pour séparer les avions. 67 Annexes 69 Annexe A Glossaire A.1 Unités – 1 mile nautique (Nm) = 1.852km – 1 pied (f t) = 0.3048m A.2 Aeronautique ACAS : Airborne Conflict Avoidance System. Désigne les systèmes d’anti-collision embarqué sur les aéronefs. ATC : Air Traffic Control ou control de la navigation aérienne. ATCo : Air Traffic Controler ou controleur de la navigation aérienne. ATFM : Air Traffic Flow Management désigne la gestion des flots de trafic. ATM : Air Traffic Management ou gestion du trafic aérien. CAUTRA : Coordonnateur AUtomatique du TRafic Aérien. Système assurant les t raitements et la diffusion des plans de vol aux contrôleurs. Clairance : Autorisation donnée par le contrôleur à un pilote pour le roulage, le décollage, atterissage Conflit : Risque de perte de séparation CFMU : Central Flow Management Unit. Cellule européenne de régulation des f lux de trafic. CRNA : Centre en-Route de la Navigation Aérienne. Il y en a 5 en France métropolitaine : Aix-en-provence, Athis-Mons, Bordeaux, Brest, et Reims. CCR : Centre de Contrôle Régional. DGAC : Direction Général de l’Avition Civile ENAC : École Nationale de l’Aviation Civile ERASMUS : En Route Air traffic Soft Management Ultimate System projet européen d’automatisation du trafic (à l’aide par exemple de contrôl subliminal) EUROCONTROL : European Organisation for the Safety of Air Navigation. Organ 71 72 ANNEXE A. GLOSSAIRE isme Européen chargé de la gestion du trafic aérien en Europe. FMS : Flight Management System. Ordinateur de bord permettant de gérer le plan de vol du pilote automatique. FUA : Flexible Use of Airspace, principe de collaboration civil/militaire pour une meilleur utilisation de l’espace aérien. GPS : Global Positionning System. Système de positionnement par satellite p rovenant du département de la défense américaine. GPWS : Ground Proximity Warning System. Ce système emet une alerte sonore dans le cockpit en cas de proximité dangereuse avec le sol. LEEA : Laboratoire d’Économie et d’Économétrie de l’Aérien. Structure d e recherche commune à l’ENAC et à la SDER. LOG : Laboratoire d’Optimisation Globale. Structure de recherche commune à l’ENAC et à la SDER. SDER : Sous Direction Études et Recherche appliquée STCA : Short Term Conflict Alert. C’est le filet de sauvegarde des controleurs aériens, il avertit le contrôleur en cas de rapprochement dangereux d’aéronefs par une alerte visuelle matérialisée sur l’interface radar. Strips : Supports papier de format prédéfini permettant le suivi d’un avio n par les contrôleurs. TCAS : Trafic Conflict Avoidance System. Système anti-collision embarqué A.3 Informatique CP : Constraint Programming CSP : Constraint Satisfaction Problem PPC : Programmation par Contraintes Annexe B Liste des défintions 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Domaine fini . . . . . . . . . . . . . . . . Contrainte binaire en extension . . . . . . CSP sur les domaines finis avec contraintes Instanciation partielle . . . . . . . . . . . Instanciation totale . . . . . . . . . . . . . Satisfaction . . . . . . . . . . . . . . . . . Support . . . . . . . . . . . . . . . . . . . Instanciation consistante . . . . . . . . . . Arc-consistance . . . . . . . . . . . . . . . Arc-consistance d’un CSP binaire . . . . . Arc-B-Consistance . . . . . . . . . . . . . Machine . . . . . . . . . . . . . . . . . . . Conflit potentiel . . . . . . . . . . . . . . Point de conflit . . . . . . . . . . . . . . . Trajectoire . . . . . . . . . . . . . . . . . . 73 . . . . . . . . . . binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 14 14 15 15 15 17 17 18 22 33 37 48 Bibliographie [Alliot 98] Jean-Marc Alliot et Nicolas Durand. Faces : A free flight autonomous and coordinated embarked solver. 2nd USA/EUROPE ATM R & D seminar. 1998. [Alliot 03] Jean-Marc Alliot et Dominique Colin de Verdière. L’ATM : 20 ans d’effort et perspectives. Rapport technique, CENA, novembre 2003. [Archambault 04a] Nicolas Archambault. Speed uncertainty and speed regulation in conflict resolution. Rapport technique, LOG (CENA ENAC) / EEC, 2004. [Archambault 04b] Nicolas Archambault et Nicolas Durand. Scheduling heuristics for on board sequential air conflict solving. 23rd DASC. 2004. [Baptiste 01] Philippe Baptiste, Claude Le Pape et Wim Nuijten. ConstraintBased Scheduling, Applying Constraint Programming to Scheduling Problems. Kluwer’s INTERNATIONAL SERIES, 2001. [Barnier 02] Nicolas Barnier. Application de la programmation par contraintes à des problèmes de gestion du trafic aérien. Thèse : Thèse doctorat informatique de l’INP Toulouse, 2002. [Bartak 99] R. Bartak. Constraint programming : In pursuit of the holy grail, 1999. [Barták 03] Roman Barták. Constraint based scheduling : An introduction for newcomers. 7th IFAC Workshop on Intelligent Manufacturing Systems. 2003. [Chansou 95] Olivier Chansou. Utilisation des Algorithmes Génétiques pour la Résolution de conflits aériens. Rapport DEA : Rapport DEA IFP., 1995. [Durand 96] Nicolas Durand. Optimisation de trajectoires pour la résolution de conflits. Thèse : Thèse doctorat informatique INPT, 1996. [Durand 03] Nicolas Durand et Geraud Granger. A traffic complexity approach through cluster analysis. ATM2003. 2003. 75 76 BIBLIOGRAPHIE [Feydy 05a] Thibaut Feydy. Programmation par contraintes sur les domaines continus, mise en oeuvre et application à la gestion du trafic aérien. Rapport DEA : École Nationale de l’Aviation Civile, 2005. [Feydy 05b] Thibaut Feydy, Nicolas Barnier, Pascal Brisset et Nicolas Durand. Mixed conflict model for air traffic control. Principles and Practice of Constraint Programming (CP 2005). 2005. [Fromherz 01] Markus P.J. Fromherz. Constraint based scheduling. American Control Conference. 2001. [Gaudière 95] Gervais Gaudière. Résolution de Conflits Aériens par Réseaux de Neurones. Rapport DEA : Rapport DEA IFP., 1995. [Gotteland 04] Jean-Baptiste Gotteland. Optimisation du trafic au sol sur les grands aéroports. Thèse : Thèse doctorat informatique de l’INPT, 2004. [Granger 02] Géraud Granger. Détection et résolution de conflits aériens : modélisations et analyse. Thèse : Thèse doctorat informatique de l’Ecole Polytechnique, 2002. [Kumar 92] Vipin Kumar. Algorithms for constraint satisfaction problems : A survey. AI Magazine, 1992, vol 13, p 32–44. [Médioni 98] Frédéric Médioni. Méthode d’optimisation pour l’évitement aérien : systèmes centralisés, systèmes embarqués. Thèse : Thèse doctorat informatique de l’Ecole Polytechnique, 1998. [Nguyen 04] Huy-Hoang Nguyen. Coordination des Avions pour la resolution de Conflits : Une Approche Basee sur le Graphe de PERT Disjonctif. Thèse : Universite de Technologie de Compiegne, 2004. [Pozzi 03] Sandro Pozzi. 2002, the year that revolutionised european airspace architecture. Skyway, the EUROCONTROL Magazine, 2003, vol 7, n◦ 28. [Vilim 05] Petr Vilim, Roman Bartak et Ondrej Cepek. Extension of O(n log n) filtering algorithms for the unary resource constraint to optional activities. Constraints, An International Journal, 2005, vol 10, n◦ 4. [Villiers 04] Jacques Villiers. ERASMUS : Une voie conviviale pour franchir le mur de la capacité. Rapport technique, ITA, 2004.