Techniques d'optimisation - Tome 2: Optimisation discrète et fonctionnelle 9782759827749

Cet ouvrage en deux tomes propose un panorama des techniques d’optimisation continue, discrète et fonctionnelle. Ce deux

216 71 10MB

French Pages 478 Year 2022

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Préface
Introduction
Table des matières
1. Programmation linéaire mixte
2. Optimisation discrète
3. Optimisation fonctionnelle
4. Contrôle optimal
5. Méthodes numériques en contrôle optimal
Index
Bibliographie succincte
Recommend Papers

Techniques d'optimisation - Tome 2: Optimisation discrète et fonctionnelle
 9782759827749

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Techniques d’optimisation Tome 2 Optimisation discrète et fonctionnelle

Max CERF

Imprimé en France

ISBN (papier) : 978-2-7598-2773-2 – ISBN (ebook) : 978-2-7598-2774-9 Tous droits de traduction, d’adaptation et de reproduction par tous procédés, réservés pour tous pays. La loi du 11 mars 1957 n’autorisant, aux termes des alinéas 2 et 3 de l’article 41, d’une part, que les « copies ou reproductions strictement réservées à l’usage prive du copiste et non destinées à une utilisation collective », et d’autre part, que les analyses et les courtes citations dans un but d’exemple et d’illustration, « toute représentation intégrale, ou partielle, faite sans le consentement de l’auteur ou de ses ayants droit ou ayants cause est illicite » (alinéa 1er de l’article 40). Cette représentation ou reproduction, par quelque procédé que ce soit, constituerait donc une contrefaçon sanctionnée par les articles 425 et suivants du code pénal. © EDP Sciences, 2022

J’adresse mes plus sincères remerciements aux personnes qui m’ont aidé à réaliser ce livre, en particulier : France Citrini pour en avoir accepté la publication aux éditions EDP ; Nathalie Legros pour sa relecture du texte et l’amélioration de la présentation ; Sophie Hosotte et Magalie Jolivet pour leur assistance au processus éditorial ; Thomas Haberkorn pour sa vérification minutieuse du contenu scientifique, et pour les innombrables astuces numériques qu’il m’a partagées ; Emmanuel Trélat pour sa préface, sa relecture et ses conseils d’exposé, mais aussi pour notre collaboration de longue date et la compétence que j’ai acquise à ses côtés ; Claude Blouvac† mon professeur de lycée qui m’a mis en 1982 sur la voie des mathématiques et qui aurait été très heureux de voir cet ouvrage.

Préface

Les algorithmes sont omniprésents dans notre monde moderne. Ils nous indiquent les trajets optimaux, préviennent et évaluent les risques, fournissent des prévisions, anticipent ou assistent nos décisions. Ils sont devenus des éléments essentiels de notre quotidien. Ces algorithmes reposent la plupart du temps sur des processus d'optimisation et consistent à minimiser ou maximiser un critère sous certaines contraintes, nous indiquant ainsi des solutions faisables et plus intelligentes que d'autres, permettant de planifier au mieux un processus à exécuter. Il existe de très nombreuses méthodes d'optimisation, basées sur des heuristiques diverses et variées, parfois simples et intuitives, parfois plus élaborées et nécessitant des développements mathématiques fins. C'est à travers cette jungle d'algorithmes, résultant de dizaines d'années de recherches et développements, que Max Cerf nous guide avec toute son expertise, son intuition et son pragmatisme. Max Cerf est ingénieur senior à ArianeGroup depuis 30 ans. Spécialiste reconnu de trajectographie, il élabore et optimise les trajets des engins spatiaux, sous de multiples contraintes. Il a ainsi acquis et développé une connaissance très complète des meilleurs algorithmes en optimisation continue, en optimisation discrète (sur des graphes), en contrôle optimal. C'est de plus un pédagogue exceptionnel, avec un véritable talent à expliquer de manière limpide et intuitive des concepts parfois compliqués. Avec ce double ouvrage, il offre un guide inestimable au lecteur non spécialiste qui souhaite comprendre ou résoudre des problèmes d'optimisation de la manière la plus efficace possible. Emmanuel Trélat, Sorbonne Université, Paris

Introduction

L’optimisation mathématique est en développement constant depuis les années 1950 et l’apparition des premiers ordinateurs. Devant la variété des algorithmes et des logiciels disponibles, il est parfois difficile pour un non spécialiste de s’y retrouver. L’objectif de ce livre en deux tomes est de donner un aperçu d’ensemble du domaine. Il s’adresse aux étudiants, enseignants, ingénieurs et chercheurs désireux d’acquérir une connaissance générale sur les techniques d’optimisation mathématique. L’optimisation vise à contrôler les entrées (variables) d’un système, d’un processus ou d’un modèle pour obtenir les sorties souhaitées (contraintes) au meilleur coût. Selon la nature des entrées à contrôler, on distingue l’optimisation continue, discrète ou fonctionnelle. L’optimisation continue (chapitres 1 à 5 du tome I) traite des problèmes à variables réelles. Le chapitre 1 expose les conditions d’optimalité dans le cas de fonctions différentiables ainsi que le calcul numérique de dérivées. Les chapitres 2, 3 et 4 donnent un panorama des méthodes d’optimisation sans gradient, sans contraintes et avec contraintes. Le chapitre 5 est consacré à la programmation linéaire continue, avec les méthodes du simplexe et de point intérieur. L’optimisation discrète (chapitres 1 et 2 du tome II) traite des problèmes à variables entières. Le chapitre 1 concerne la programmation linéaire en variables mixtes par les méthodes de coupes ou les méthodes arborescentes. Le chapitre 2 présente un panorama des problèmes combinatoires, leur modélisation par des graphes et les algorithmes spécialisés aux problèmes de chemin, de flot ou d’affectation. L’optimisation fonctionnelle (chapitres 3 à 5 du tome II) traite des problèmes en dimension infinie. L’entrée à contrôler est une fonction et non plus un nombre fini de variables. Le chapitre 3 introduit les notions de fonctionnelle et de calcul des variations. Le chapitre 4 présente les problèmes de contrôle optimal et les conditions d’optimalité. Le chapitre 5 est consacré aux méthodes numériques (intégration d’équations différentielles, méthodes directes et indirectes). Dans chaque chapitre, les développements théoriques et démonstrations se limitent à l’essentiel. Les algorithmes sont accompagnés d’exemples détaillés en vue de faciliter leur compréhension.

Table des matières 1. Programmation linéaire mixte 1.1

1.2

1.3

1.4

1.5

1.6

Formulation 1.1.1 Problème linéaire en variables mixtes 1.1.2 Techniques de linéarisation 1.1.3 Techniques de réduction Méthodes de coupes 1.2.1 Coupe sur une variable 1.2.2 Coupe sur le coût 1.2.3 Méthode de Gomory 1.2.4 Coupe intégrale 1.2.5 Coupe mixte Méthodes arborescentes 1.3.1 Énumération implicite 1.3.2 Séparation 1.3.3 Évaluation 1.3.4 Stratégie d’exploration Applications 1.4.1 Problème du voyageur de commerce 1.4.2 Problème d’affectation 1.4.3 Problème de coloration 1.4.4 Problème de flot 1.4.5 Problème du sac à dos Problème quadratique 1.5.1 Méthode arborescente 1.5.2 Convexification 1.5.3 Problème d’affectation quadratique Conclusion 1.6.1 Les points essentiels 1.6.2 Pour aller plus loin

1 2 2 4 10 12 12 14 15 21 23 31 31 31 33 51 58 58 62 66 68 71 73 73 75 80 81 81 82

2. Optimisation discrète

83

2.1

84 84

Problème combinatoire 2.1.1 Graphe

2.2

2.3

2.4

2.5

2.6

2.7

2.1.2 Parcours d’un graphe 2.1.3 Complexité Problème de chemin 2.2.1 Algorithme de Ford 2.2.2 Algorithme de Bellman 2.2.3 Algorithme de Dijkstra 2.2.4 Algorithme A* 2.2.5 Algorithme de Demoucron et Floyd Problème d’ordonnancement 2.3.1 Méthode PERT 2.3.2 Méthode MPM 2.3.3 Marges Problème de flot 2.4.1 Algorithme de Ford-Fulkerson 2.4.2 Algorithme de Roy-Busacker-Gowen Problème d’affectation 2.5.1 Problème de flot équivalent 2.5.2 Méthode hongroise 2.5.3 Justification théorique Heuristiques 2.6.1 Problème d’empilement 2.6.2 Problème d’emboîtement 2.6.3 Problème de recouvrement 2.6.4 Problème de coloration 2.6.5 Problème du voyageur de commerce Conclusion 2.7.1 Les points essentiels 2.7.2 Pour aller plus loin

87 91 95 95 98 107 110 124 128 129 132 136 138 138 144 149 149 152 159 163 164 165 166 168 172 175 175 175

3. Optimisation fonctionnelle

177

3.1

178 178 178 179 180 181 184 184 196

3.2

Formulation 3.1.1 Fonctionnelle 3.1.2 Voisinage 3.1.3 Variation 3.1.4 Minimum 3.1.5 Problème standard Conditions d’optimalité 3.2.1 Conditions nécessaires de minimum faible 3.2.2 Conditions suffisantes de minimum faible

3.3

3.4

3.5

3.6

3.2.3 Conditions nécessaires de coin 3.2.4 Conditions nécessaires de minimum fort 3.2.5 Récapitulatif Contraintes 3.3.1 Contrainte finale 3.3.2 Contrainte intégrale 3.3.3 Contrainte courante Forme canonique 3.4.1 Changements de variables 3.4.2 Variables canoniques 3.4.3 Équation de Hamilton-Jacobi-Bellman 3.4.4 Application à la mécanique Système dynamique 3.5.1 Formulation d’état 3.5.2 Stabilité 3.5.3 Système linéaire 3.5.4 Problème aux deux bouts Conclusion 3.6.1 Les points essentiels 3.6.2 Pour aller plus loin

205 214 218 219 219 226 232 234 234 237 241 244 248 248 250 256 264 267 267 267

4. Contrôle optimal

269

4.1

270 270 272 281 292 304 304 311 315 323 333 337 337 338 341 346 352

4.2

4.3

Conditions d’optimalité 4.1.1 Problème de contrôle 4.1.2 Principe du minimum 4.1.3 Méthode variationnelle 4.1.4 Problème aux deux bouts Contraintes 4.2.1 Contraintes terminales 4.2.2 Contraintes intérieures 4.2.3 Contraintes courantes 4.2.4 Problème linéaire quadratique 4.2.5 Contrôle robuste Extrémales 4.3.1 Définitions 4.3.2 Extrémale anormale 4.3.3 Extrémale singulière 4.3.4 Extrémale voisine 4.3.5 Commande en retour d’état

4.4

4.5

4.3.6 Équation de Hamilton-Jacobi-Bellman Conditions d’optimalité d’ordre 2 4.4.1 Problème de minimum auxiliaire 4.4.2 Conditions suffisantes de minimum 4.4.3 Arcs singuliers Conclusion 4.5.1 Les points essentiels 4.5.2 Pour aller plus loin

356 362 362 368 372 389 389 390

5. Méthodes numériques en contrôle optimal

391

5.1

392 393 396 398 398 405 411 415 418 419 420 423 423 424 426 429 431 431 433 440 440 450 455 455 455

5.2

5.3

5.4

5.5

5.6

5.7

Transcription 5.1.1 Équations différentielles 5.1.2 Méthodes directes et indirectes Méthodes de Runge-Kutta 5.2.1 Formules de quadrature 5.2.2 Analyse d’erreur 5.2.3 Conditions d’ordre 5.2.4 Méthodes emboîtées Méthodes d’Adams 5.3.1 Méthodes d’Adams-Bashford 5.3.2 Méthodes d’Adams-Moulton Méthodes de collocation 5.4.1 Conditions de collocation 5.4.2 Points de collocation 5.4.3 Collocation de degré 3 5.4.4 Collocation de degré 5 Méthodes directes 5.5.1 Discrétisation 5.5.2 Approche variationnelle Méthodes indirectes 5.6.1 Méthode de tir 5.6.2 Approche variationnelle Conclusion 5.7.1 Les points essentiels 5.7.2 Pour aller plus loin

Index Bibliographie

Programmation linéaire mixte

1

1. Programmation linéaire mixte La programmation linéaire mixte concerne les problèmes linéaires où certaines variables sont réelles et d’autres sont entières ou binaires. De nombreux problèmes concrets se formulent par un problème linéaire mixte. Les méthodes de résolution reposent essentiellement sur l’algorithme du simplexe. La section 1 concerne la formulation du problème. Les techniques de linéarisation transforment un problème non linéaire à variables réelles en un problème linéaire équivalent à variables mixtes plus simple à résoudre. Les techniques de réduction diminuent la dimension du problème en fixant des variables et en éliminant des contraintes. Ces prétraitements accélèrent la résolution numérique. La section 2 présente les méthodes de coupes qui consistent à résoudre le problème relaxé en variables réelles, puis à ajouter des contraintes pour forcer une solution entière. Ces contraintes de coupes réduisent progressivement le domaine admissible. Elles peuvent être générées par différentes approches. Pour des problèmes de grandes tailles, le nombre de coupes peut devenir prohibitif et ces méthodes sont généralement utilisées en complément de méthodes arborescentes. La section 3 présente les méthodes arborescentes qui explorent l’arbre des combinaisons possibles. L’exploration consiste à fixer progressivement les variables binaires ou entières et à estimer la meilleure solution possible résultant de ce choix. L’estimation peut être obtenue rapidement grâce aux propriétés de l’algorithme du simplexe dual. Avec une stratégie d’exploration adaptée au problème, il est possible d’obtenir la solution entière en explorant seulement une petite fraction de l’ensemble des combinaisons possibles. La section 4 présente les applications de la programmation linéaire mixte à des problèmes classiques : voyageur de commerce, affectation, coloration, flot, sac à dos. Bien que ces problèmes puissent être résolus efficacement par des algorithmes dédiés, la formulation linéaire garde son intérêt, car elle permet d’ajouter facilement des contraintes spécifiques au problème à résoudre. La section 5 présente la programmation quadratique mixte. Les méthodes arborescentes s’appliquent comme en programmation linéaire, à condition de rendre le problème convexe pour pouvoir le résoudre de manière sûre et rapide.

2

Techniques d’optimisation

1.1 Formulation Cette section introduit la formulation standard d’un problème linéaire en variables mixtes, les techniques de linéarisation de problèmes non linéaires et les techniques de réduction pour éliminer des variables et/ou des contraintes avant la résolution.

1.1.1 Problème linéaire en variables mixtes La forme standard d’un problème linéaire en variables mixtes est la suivante.

Ax = b  min z = c x sous x j  , j  JE x  x j  0 , j  JC  T

, A

mn

, b

m

, c

n

(1.1)

Le vecteur x n représente les n variables du problème. - Les indices JE correspondent aux variables entières. - Les indices JC correspondent aux variables réelles (ou continues) positives. Le problème relaxé associé au problème (1.1) est obtenu en considérant toutes les variables comme réelles (les contraintes d’intégrité sont relaxées).

Ax = b min z = cT x sous  x  x j  0 , j  JE

JC

(1.2)

Le problème relaxé étant moins contraint que le problème en variables entières, sa solution est meilleure et fournit un minorant du coût minimal du problème (1.1). Il est tentant de résoudre le problème relaxé, puis d’arrondir les variables devant être entières. Mais cette solution arrondie peut être non admissible ou très éloignée de la vraie solution en variables mixtes comme le montre l’exemple suivant.

Exemple 1-1 : Solution du problème relaxé et du problème mixte (d’après [R5]) Considérons le problème en variables entières : min z = −10x1 − 11x2 sous 10x1 + 12x2  59

x1 ,x2

 x = 5,9 → z = −59 . La solution réelle est :  1  x2 = 0 x = 1 → z = −54 (trouvée par énumération). La solution entière est :  1  x2 = 4

Programmation linéaire mixte

3

Cherchons à arrondir la solution réelle.

x = 6 → z = −60 . Le point entier le plus proche serait :  1  x2 = 0 Ce point n’est pas admissible (la contrainte inégalité n’est pas respectée). x = 5 → z = −50 . • Le point entier admissible le plus proche est :  1  x2 = 0 Ce point arrondi est éloigné de la solution entière exacte, bien que de coût proche. •

La Figure 1-1 montre la contrainte en trait plein, la solution continue C, la solution entière E et la ligne de niveau de la fonction coût passant par la solution entière E.

Figure 1-1 : Solution relaxée et solution entière

Dans certains cas, il est utile de reformuler le problème en variables binaires. Toute variable entière bornée x comprise entre 0 et m peut être remplacée par p + 1 variables binaires (y0 , y1, , yp ) associées à l’écriture de x en binaire. x = yp yp−1...y1y0 = yp 2p + yp−1 2p−1 + ... + y1 21 + y0 20

avec m  2p+1

base 2

Pour les variables binaires, on notera dans la suite : U = 0 ; 1 .

(1.3)

4

Techniques d’optimisation

La solution d’un problème linéaire continu est un sommet du polytope des contraintes, associé à l’une des Cmn bases possibles (tome I section 5.1.2). Cette caractérisation simple de la solution permet de construire des algorithmes de résolution efficace comme le simplexe ou les méthodes de points intérieur. Avec des variables mixtes, la solution est intérieure au polytope des contraintes et n’admet pas de caractérisation simple. Pour ces problèmes appelés NP-complets, il n’existe pas d’algorithme de résolution en temps polynomial. Il est donc important de simplifier le problème par les techniques présentées ci-dessous.

1.1.2 Techniques de linéarisation Certaines expressions non linéaires peuvent se linéariser au prix de variables et de contraintes supplémentaires. Ces reformulations permettent d’appliquer les algorithmes de programmation linéaire mixte à des problèmes initialement non linéaires. Cette section basée sur la référence [R1] présente les techniques de base. Produit de deux variables binaires Le produit de deux variables binaires s et t se linéarise en introduisant une variable réelle supplémentaire f et quatre contraintes inégalité.



sU f = s.t avec tU

équivaut à

f  s f  t s + t − f  1  f  0

Vérification : on examine toutes les combinaisons possibles de s et t. •

f  0 f  t 0f 0 f =0 Cas s = 0     t − f 1 0  t 1 t  U , t libre  f  0



Cas t = 0  calculs similaires au cas s = 0 ci-dessus





f  1 f  1 s =1 • Cas    1 f 1  f =1 t =1 2 − f 1  f  0 La valeur de f représente bien le produit s.t dans tous les cas.



(1.4)

Programmation linéaire mixte

5

Produit d’une variable binaire et d’une variable réelle bornée Le produit d’une variable binaire s et d’une variable réelle x comprise entre x L et xU se linéarise en introduisant une variable réelle f et quatre contraintes inégalité.

s  U  f = s.x avec  x   xL  x  xU

équivaut à

f f f  f

 s.xU  x − (1 − s).xL  x − (1 − s).xU  s.xL

(1.5)

Vérification : on examine toutes les valeurs possibles de s.

f  0 f  x − xL 0  f  0 f = 0 • Cas s = 0       x − x  f  x − x f  x − xU U L   xL  x  xU libre  f  0  f  x U f  x x  f  x f = x • Cas s = 1       x  f  x f x U  L  xL  x  xU libre  f  xL La valeur de f vaut bien 0 ou x selon la valeur de s.

Approximation linéaire d’une variable réelle bornée Une variable réelle x comprise entre 0 et x U peut être approchée à  près par une combinaison linéaire de m variables binaires (si )i=1 à m de la forme : m

x   2i−1 si i =1

x   avec (si )i=1 à m  U , m = E  log2 U  + 1   

(1.6)

Vérification

x x La variable E   est entière et inférieure à 2m (car x  xU et log2 U  m ).   m x Son écriture en binaire est de la forme : E   =  2i−1 si .    i=1 m x Notons : y = E   =  2i−1 si .  i =1

6

Techniques d’optimisation

Cette variable y est combinaison linéaire des variables binaires (si )i=1 à m et vérifie :

x−y x x−y x = − E   0  1  0  x − y       La variable y est donc bien une approximation de x à  près.

Variable ou fonction à valeurs discrètes Une variable x prenant un ensemble de m valeurs discrètes x1 ; ;xm  peut être remplacée par m variables binaires (si )i=1 à m et une contrainte égalité. m

x =  xisi

avec

i =1

m

s = 1 , s  U i

i =1

i

(1.7)

La contrainte impose qu’une seule des variables si vaut 1, donnant à x la valeur xi. f (x) prenant un ensemble de m De manière similaire, une fonction f : x  valeurs discrètes f1 ; ;fm  peut être remplacée par m variables binaires (si )i=1 à m et une contrainte égalité. m

f(x) =  fisi

m

s = 1 , s  U

avec

i =1

i =1

i

i

(1.8)

Variable nulle ou supérieure à un seuil Supposons que la variable réelle x prend soit la valeur 0, soit des valeurs entre x L et xU. Ces contraintes se linéarisent en introduisant une variable binaire s et deux contraintes inégalité. x = 0  ou 0  xL  x  xU

équivaut à

 x  s.xL   x  s.xU s  U

Vérification : on examine toutes les valeurs possibles de s. •

Cas s = 0 



x0 x0

 x=0

 x  xL Cas s = 1    xL  x  x U  x  xU La valeur de x est soit 0, soit comprise entre x L et xU selon la valeur de s. •

(1.9)

Programmation linéaire mixte

7

Variables entières prenant des valeurs distinctes Supposons que deux variables entières x et y sont bornées et doivent prendre des valeurs différentes. Ces contraintes se linéarisent en introduisant une variable binaire s et quatre contraintes inégalité. x  y   x, y    x  xU , y  yU

équivaut à

 x  y + 1 − (yU + 1).s   y  x + 1 − (xU + 1).(1 − s)  x  xU , y  yU , s  U 

(1.10)

Vérification : on examine toutes les valeurs possibles de s.  x  y (car x, y entiers) x  y + 1  Cas s = 0   y  x − xU → toujours vérifié,car y  0 et x  x U  x  xU , y  yU → toujours vérifié,car x  0 et y  yU  x  y − yU   y  x (car x, y entiers) • Cas s = 1   y  x + 1  x  xU , y  yU Les valeurs de x et y sont différentes, avec x  y si s = 0 , ou x  y si s = 1 .



Variable appartenant à l’union d’intervalles Supposons que la variable réelle x doit appartenir à l’union de m intervalles. x  [a1;b1 ] [a2 ;b2 ] ... [am ;bm ] avec a1  b1  a2  b2  ...  am  bm

(1.11)

Ces contraintes se linéarisent en introduisant m variables binaires (si )i=1 à m et 2m + 1 contraintes inégalité. x

m i =1

[ai , bi ]

équivaut à

 x  aisi + a1 (1 − si )   x  bisi + bn (1 − si ) m  si = 1 , (si )i=1 à m  U   i=1

(1.12)

Vérification La contrainte de somme impose qu’une seule des variables s i vaut 1, toutes les autres valant 0. Notons j le numéro de la variable non nulle.

8

Techniques d’optimisation

Examinons les conséquences sur les contraintes (1.12). x  a j    a j  x  bj • sj = 1  x  bj

 x  a1 si = 0 , i  j    a1  x  bn → toujours vérifié  x  bn On obtient bien x [a j ;bj ] pour l’intervalle sélectionné par sj. •

Vérification de p contraintes parmi m Supposons que p contraintes : gi (x)  0 doivent être satisfaites parmi m et que les fonctions gi sont bornées : x , gi (x)  gUi . Ces contraintes se linéarisent en introduisant m variables binaires (si )i=1 à m et m + 1 contraintes inégalité. gi (x)  0 , i = 1 à m

équivaut à

gi (x)  si .gUi m  s  m − p , (s ) i i i =1 à m  U  i =1

(1.13)

Vérification La contrainte sur la somme des si impose qu’au moins p variables si sont nulles. • Cas sj = 0  gi (x)  0 •

Cas sj =1

 gi (x)  gUi

On obtient bien p contraintes satisfaites parmi les m contraintes inégalité.

Implication entre contraintes Considérons deux contraintes inégalité sur des fonctions de variables réelles. f (x)  a g(y)  b

avec x , fL  f (x) avec y , g(y)  gU

(1.14)

La fonction f est bornée inférieurement, la fonction g est bornée supérieurement. Les contraintes (1.14) sont liées par l’implication : « Si f (x)  a , alors g(y)  b » qui se linéarise en introduisant une variable binaire s et deux contraintes inégalité.

( f(x)  a

 g(y)  b )

équivaut à

f(x)  a + (fL − a).s  g(y)  b + (gU − b).(1 − s) s  U

(1.15)

Programmation linéaire mixte

9

Vérification L’implication signifie que soit f (x)  a et g(y) libre, soit g(y)  b et f (x) libre. • Cas s = 0  f (x)  a et g(y)  gU • Cas s =1  g(y)  b et fL  f (x) On obtient bien l’une ou l’autre des deux possibilités traduisant l’implication.

Maximum de m fonctions bornées Supposons que la fonction f est définie comme le maximum de m fonctions bornées. La borne supérieure commune de ces fonctions est notée gU .

f (x) = max gi (x) i =1,...,m

avec x , gLi  gi (x)  gU

(1.16)

Cette expression de f se linéarise en introduisant m variables binaires (si )i=1 à m , une variable réelle f et 2m + 1 contraintes inégalité.

f (x) = max gi (x) i =1,...,m  x , gLi  gi (x)  gU

équivaut à

 f  gi (x) + si (gU − gLi ) f  g (x) m i  si = m − 1 , (si )i=1 à m  U  i=1

(1.17)

Vérification La contrainte de somme impose qu’une seule des variables s i vaut 0, toutes les autres valant 1. Notons j le numéro de la variable nulle. Examinons les conséquences sur les contraintes (1.17). f  g j (x)    f = g j (x) • sj = 0 f  g j (x)

f  gi (x) + (gU − gLi ) si = 1 , i  j    gi (x)  f f  gi (x) On a f  gi (x) , i = 1 à m avec égalité f = gj (x) pour la fonction associée à sj. •

10

Techniques d’optimisation

Minimum de m fonctions bornées Supposons que la fonction f est définie comme le minimum de m fonctions bornées. La borne inférieure commune de ces fonctions est notée gL .

f (x) = min gi (x) i =1,...,m

avec x , gL  gi (x)  gUi

(1.18)

Cette expression de f se linéarise en introduisant m variables binaires (si )i=1 à m , une variable réelle f et 2m + 1 contraintes inégalité.

f (x) = min gi (x) i =1,...,m  x , gL  gi (x)  gUi

équivaut à

 f  gi (x) − si (gUi − gL ) f  g (x) m i  si = m − 1 , (si )i=1 à m  U  i=1

(1.19)

Vérification La contrainte de somme impose qu’une seule des variables s i vaut 0, toutes les autres valant 1. Notons j le numéro de la variable nulle. f  g j (x)    f = g j (x) • sj = 0 f  g j (x)

f  gi (x) − (gUi − gL ) si = 1 , i  j    f  gi (x) f  gi (x) On a f  gi (x) , i = 1 à m avec l’égalité f = gj (x) pour la fonction associée à sj. •

1.1.3 Techniques de réduction Un problème linéaire mixte comporte généralement un grand nombre de variables et de contraintes. Une analyse préalable permet de fixer certaines variables et/ou d’éliminer certaines contraintes. Cette section inspirée de la référence [R1] présente les techniques usuelles pour réduire la taille du problème. Bornes sur les variables Supposons que la variable x n est bornée : xL  x  xU , et considérons une contrainte inégalité de la forme : g(x) =  a jx j + ai xi  b ji

(1.20)

Programmation linéaire mixte

11

En calculant la valeur minimale de g sur les variables autres que xi :

gL = min g(x) =  a jxUj +  a jxLj xLj  x j  xUj ji

a j 0 ji

a j 0 ji

(1.21)

on peut déduire des bornes sur la variable xi dues à la contrainte inégalité (1.20).

b − gL  si ai  0  xi  a i (1.22) ai xi  b −  a jx j  b − gL   b − gL ji  xi  si ai  0 ai  En procédant ainsi pour tous les couples (variable – contrainte inégalité), on peut resserrer les bornes xL , xU sur les variables. Ce traitement est à réaliser de préférence avant la recherche de bornes sur les contraintes présentée ci-dessous. Bornes sur les contraintes Considérons une fonction linéaire : g(x) = aT x . Si la variable x n est bornée : xL  x  xU , on peut calculer les valeurs extrêmes que peut prendre la fonction g.

g(x) =  a jx j j

gL = min g(x) =  a jxUj +  a jxLj xL  x  x U  a j 0 a j 0   g(x) =  a jxLj +  a jxUj gU = xmax L  x  xU a j 0 a j 0 

(1.23)

Ces valeurs extrêmes permettent de vérifier avant la résolution si une contrainte portant sur g est faisable, infaisable ou redondante. • La contrainte égalité : g(x) = aT x = b est faisable si gL  b  gU . •

La contrainte inégalité : g(x) = aT x  b est faisable si gL  b .



La contrainte inégalité : g(x) = aT x  b est redondante si gU  b .

Si une contrainte est détectée comme infaisable, le problème n’a pas de solution. Une contrainte détectée comme redondante peut être supprimée. Fixation de variables binaires En fixant alternativement chaque variable binaire à 0 puis à 1, et en calculant la borne sur les contraintes comme ci-dessus, on peut détecter certaines infaisabilités qui permettront de fixer la variable binaire à 0 ou à 1. Cette fixation de variables permet souvent de réduire de façon importante la taille du problème avant d’entamer sa résolution.

12

Techniques d’optimisation

1.2 Méthodes de coupes Les méthodes de coupes consistent à résoudre une suite de problèmes relaxés en ajoutant progressivement des contraintes inégalité jusqu’à obtenir une solution entière.

1.2.1 Coupe sur une variable Considérons un problème linéaire en variables entières noté (PLE).

Ax = b min z = cT x sous  n x x 

(1.24)

Les contraintes x  n sont appelées contraintes d’intégrité. Le problème relaxé noté (PLR) est obtenu à partir de (PLE) en remplaçant les contraintes d’intégrité par des contraintes de positivité.

min z = cT x sous x



Ax = b x0

(1.25)

Ce problème linéaire standard se résout par la méthode du simplexe (tome I section 5.1). Sa solution correspond à une base optimale B. Le tableau du simplexe noté T représente la forme canonique du problème (PLR) dans cette base. xB I T= 0

xN B N b cNT − z −1

→ xB + B−1Nx N = b → cNT x N = z − z

x = b → solution  B  xN = 0

(1.26)

Si par chance les variables xB sont toutes entières, le problème (PLE) est résolu. Supposons que la variable de base xi n’est pas entière.

La forme canonique (1.26) donne l’expression des variables de base xB en fonction des variables hors-base xN . xi +  aij x j = bi , i  B jN

(1.27)

Remarque sur la notation La notation N ci-dessus désigne l’ensemble des indices hors-base, à ne pas confondre avec l’ensemble des entiers naturels.

Programmation linéaire mixte

13

Notons respectivement E(y) et F(y) la partie entière et fractionnaire d’un réel y.



E(y)  y  E(y) + 1 , E(y)  F(y) = y − E(y)

(1.28)

Les variables x devant être positives, on déduit de (1.27) l’inégalité : xi +  E(aij )x j  bi

(1.29)

jN

Les variables x devant être entières, le premier membre de (1.29) doit être entier. On peut alors remplacer le second membre de l’inégalité par l’entier inférieur sans changer l’ensemble des solutions. xi +  E(aij )x j  E(bi )

(1.30)

jN

Remplaçons dans cette inégalité la variable de base xi par son expression canonique (1.27) en fonction des variables hors-base xN : xi = bi −  aij x j . jN

On obtient en regroupant les termes avec la partie fractionnaire définie par (1.28) :

 F(a )x jN

ij

j

 F(bi )

(1.31)

Cette inégalité est appelée coupe ou troncature sur la variable xi . La solution entière du problème (PLE) doit satisfaire cette nouvelle inégalité. Si la solution du problème relaxé xi = bi n’est pas entière, l’inégalité (1.31) n’est pas satisfaite, car les variables hors-base sont nulles (xN = 0) et le second membre est strictement positif. On peut alors reprendre la résolution du problème relaxé en ajoutant la contrainte (1.31) pour exclure la solution xi = bi non entière. Cette contrainte se reformule en introduisant une variable d’écart positive y.

−TN xN + y = −

 = F(aij )  0 avec  j  = F(bi )  0

(1.32)

En revenant à (1.30), la nouvelle contrainte se met sous la forme : xi +  E(aij )x j + y = E(bi ) jN

(1.33)

qui montre que la nouvelle variable y est nécessairement entière (car les autres termes sont tous des entiers). La section 1.2.3 explique comment ajouter cette contrainte dans l’algorithme du simplexe en partant de la solution de base déjà trouvée.

14

Techniques d’optimisation

1.2.2 Coupe sur le coût On peut également ajouter une coupe sur la valeur du coût s’il doit être entier. Supposons que le coût z de la solution relaxée (1.26) n’est pas entier. (1.34)

E(z)  z

La forme canonique (1.26) donne l’expression du coût z en fonction des variables hors-base xN . z −  cj x j = z

(1.35)

jN

Les variables x devant être positives, on déduit de (1.35) l’inégalité : z −  E(cj )x j  z

(1.36)

jN

Les variables x et le coût z devant être entiers, le premier membre de (1.36) doit être un entier supérieur à z . Si z n’est pas entier, on peut remplacer le second membre par l’entier supérieur sans changer l’ensemble des solutions. z −  E(cj )x j  E(z) + 1

(1.37)

jN

Remplaçons dans cette inégalité le coût z par son expression canonique (1.35) en fonction des variables hors-base xN : z = z +  cjx j . jN

On obtient en regroupant les termes avec la partie fractionnaire définie par (1.28) :

 F(c )x j

jN

j

 1 − F(z)

(1.38)

Cette inégalité est une coupe ou troncature sur le coût. Si le coût du problème relaxé z = z n’est pas entier, l’inégalité (1.38) n’est pas satisfaite, car les variables hors-base sont nulles et le second membre est strictement positif. On peut alors reprendre la résolution du problème relaxé en ajoutant la contrainte (1.38) pour exclure la solution précédente. Cette inégalité se reformule en introduisant une variable d’écart positive y.

 = F(cj )  0 −TN xN + y = − avec  j  = 1 − F(z)  0

(1.39)

En revenant à (1.37), la nouvelle contrainte se met sous la forme : z −  E(cj )x j − y = E(z) + 1 jN

(1.40)

qui montre que la nouvelle variable y est nécessairement entière (car les autres termes sont tous des entiers).

Programmation linéaire mixte

15

1.2.3 Méthode de Gomory Une coupe sur une variable ou sur le coût ajoute au problème relaxé une nouvelle variable entière y et une nouvelle contrainte égalité (1.32) ou (1.39) de la forme : (1.41)

−TN xN + y = −

Le problème relaxé précédent a été résolu par la méthode du simplexe (tome I section 5.1.4). Sa forme canonique dans la base optimale B donne le tableau T. xB I T= 0

xN B N b cNT − z −1

 x = b  0 , xN = 0 → solution  B  cN  0

(1.42)

Ajoutons la nouvelle variable y et la nouvelle contrainte (1.41) dans le tableau.

xB

y

xN

I T' = 0

0 1

B−1N − TN

b −

0

0

cNT

−z

(1.43)

On observe que le nouveau problème est directement sous forme canonique dans x = b  0 la base formée des variables (xB , y) . La solution de base est :  B .  y = −  0 La variable y est négative, car la solution relaxée précédente ne satisfait pas la contrainte de coupe ajoutée. La base (xB , y) n’est donc pas primal-admissible. Elle est en revanche dual-admissible, car les coûts réduits sont positifs : cN  0 . On peut donc appliquer l’algorithme du simplexe dual (tome I section 5.1.8) directement à partir de la base (xB , y) et du tableau T’.

Figure 1-2 : Méthode de Gomory

16

Techniques d’optimisation

La méthode de Gomory (1958) schématisé sur la Figure 1-2 page précédente consiste à résoudre le problème relaxé initial par l’algorithme du simplexe primal. Si la solution relaxée n’est pas entière, une contrainte de coupe est ajoutée et le nouveau problème est résolu par l’algorithme du simplexe dual. L’ajout de coupe est réitéré jusqu’à obtenir une solution entière. L’exemple suivant illustre l’application de la méthode de Gomory pour la résolution d’un problème linéaire en variables entières.

Exemple 1-2 : Méthode de Gomory

 3x1 + 2x2  6  Considérons le problème linéaire : min z = − x2 sous −3x1 + 2x2  0 x1 ,x2  x1  , x2  Ce problème est mis sous forme standard en ajoutant 2 variables d’écart x3 , x4 . Les contraintes inégalité ne comportant que des termes entiers, les variables x3 , x4 sont également entières.  3x1 + 2x2 + x3 = 6  min z = − x2 sous −3x1 + 2x2 + x4 = 0 (problème P0) x1 ,x2  x1 , x2 , x3 , x4  x3 ,x4 La première étape consiste à résoudre le problème relaxé P 0r obtenu en remplaçant les contraintes d’intégrité par des contraintes de positivité. Étape 0 : résolution du problème relaxé P0r par le simplexe primal Tableau initial de P0r Base : (x3 , x4 )

x = 6 Solution de base :  3  x4 = 0 Le problème est directement sous forme canonique dans la base (x3 , x4 ) qui est admissible. On résout le problème relaxé P 0r par l’algorithme du simplexe primal.

Programmation linéaire mixte

17

Pivotage 1 : entre x4 et x2 Nouvelle base : (x3 , x2 )

x = 6 Solution de base :  3  x2 = 0 Pivotage 2 : entre x3 et x1 Nouvelle base : (x1, x2 )

 x1 = 1  Solution de base :  3  x2 = 2 On obtient la solution du problème relaxé P 0r. Cette solution n’est pas entière à cause de x2 . L’étape suivante consiste à générer une coupe excluant la solution 3 x2 = , puis à résoudre le nouveau problème relaxé avec la contrainte de coupe. 2 Étape 1 : résolution du problème relaxé P1r avec une coupe sur x2 Pour générer une coupe sur x2 , on part du tableau solution du problème P 0r. 1 1 3 La 2e ligne donne x2 en fonction de (x3 , x4 ) : x2 + x3 + x4 = (égalité E1) 4 4 2 On génère une inégalité à partir de (E 1). 1 1 3 (E1 )  x2 + E   x3 + E   x4  E    x2  1 4 4 2 1 1 3 En remplaçant x2 donné par (E1), on obtient : − x3 − x4  1 − 4 4 2 1 1 1 que l’on réécrit avec une variable d’écart x5 : − x3 − x4 + x5 = − (coupe C1) 4 4 2 Le nouveau problème relaxé P1r est formé à partir de P0r auquel on ajoute la variable x5 et la contrainte C1. Le tableau du simplexe de P 1r est formé à partir du tableau solution de P0r en ajoutant une colonne pour x5 et une ligne pour C1.

18

Techniques d’optimisation

Tableau initial de P1r Base : (x1, x2 , x5 ) Solution de base :  x1 = 1   x2 = 3/ 2  x5 = −1/ 2 Le problème est directement sous forme canonique dans la base (x1, x2 , x5 ) . Cette base n’est pas primal-admissible (x5  0) , mais elle est dual-admissible (coût réduits positifs). On résout le problème relaxé P1r par l’algorithme du simplexe dual. Rappelons que le pivotage dual consiste à choisir : - en variable entrante la première variable de base négative : be  0 , e  B - en variable sortante la première variable hors-base à s’annuler : s → max jN aej 0

cNj aej

Pivotage 1 : entre x5 et x3

Nouvelle base : (x1, x2 , x3 ) Solution de base :  x1 = 2 / 3   x2 = 1  x3 = 2 On obtient la solution du problème relaxé P1r. Cette solution n’est pas entière à cause de x1 . L’étape suivante consiste à générer une coupe excluant la solution 2 x1 = , puis à résoudre le nouveau problème relaxé avec la contrainte de coupe. 3 Étape 2 : résolution du problème relaxé P2r avec une coupe sur x1

Pour générer une coupe sur x1 , on part du tableau solution du problème P 1r. 1 2 2 La 1re ligne donne x1 en fonction de (x4 , x5 ) : x1 − x4 + x5 = (égalité E2) 3 3 3 On génère une inégalité à partir de (E 2).  1 2 2 (E2 )  x1 + E  −  x4 + E   x5  E    x1 − x4  0  3 3 3

Programmation linéaire mixte

19

2 2 2 En remplaçant x1 donné par (E2), on obtient : − x4 − x5  0 − 3 3 3 2 2 2 que l’on réécrit avec une variable d’écart x6 : − x4 − x5 + x6 = − (coupe C2) 3 3 3 Le nouveau problème relaxé P2r est formé à partir de P1r auquel on ajoute la variable x6 et la contrainte C2. Le tableau du simplexe de P 2r est formé à partir du tableau solution de P1r en ajoutant une colonne pour x6 et une ligne pour C2. Tableau initial de P2r Base : (x1, x2 , x3 , x6 ) Solution de base :  x1 = 2 / 3  x2 = 1 x = 2  3  x6 = −2 / 3 Le problème est directement sous forme canonique dans la base (x1, x2 , x3 , x6 ) . Cette base n’est pas primal-admissible (x6  0) , mais elle est dual-admissible (coût réduits positifs). On résout le problème relaxé P2r par l’algorithme du simplexe dual. Pivotage 1 : entre x6 et x4 Nouvelle base : (x1, x2 , x3 , x4 )

 x1 = 1  x = 1 Solution de base :  2 x =1  3  x4 = 1 On obtient la solution du problème relaxé P 2r. Cette solution est entière et donne donc la solution du problème P0. Son coût est z = −1 . La Figure 1-3 page suivante montre l’interprétation géométrique des coupes dans l’espace des variables d’origine (x1, x2 ) . Ces coupes éliminent successivement les solutions non entières S0 et S1 (Tableau 1-1) pour aboutir à la solution entière S2.

20

Techniques d’optimisation

 3x + 2x2  6 Problème initial : min z = − x2 sous  1 x1 ,x2 −3x1 + 2x2  0 Équations des coupes - Coupe C1 : x2  1 - Coupe C2 : x1 − x4  0

 x1 − (3x1 − 2x2 )  0  − x1 + x2  0

Point S0 S1 S2

x1 1 2/3 1

x2 3/2 1 1

z −3/2 −1 −1

Tableau 1-1: Solutions successives Figure 1-3 : Représentation des coupes

L’efficacité de la méthode de Gomory dépend du choix et de l’ordre des coupes. Si plusieurs coupes sont possibles, on peut choisir celle produisant l’accroissement maximal du coût lors du premier pivotage. Reprenons le tableau T T’ (1.43) obtenu en ajoutant une coupe : −N xN + y = − .

xB

y

I T' = 0

0 1

0

0

xN B−1N b − TN − cNT

(1.44)

−z

La variable y est la seule variable de base négative. Elle sort de la base au premier pivotage dual pour être remplacée par la première variable hors-base à s’annuler. cj La variable entrante x j est déterminée par : max . jN − j − 0 j

Ce pivotage entraîne la variation de coût :

−z → − z −

cj − j

( − )

 z =

cj j

0

(1.45)

Programmation linéaire mixte

21

Cette formule donne l’accroissement de coût lors du premier pivotage associé à la coupe choisie (valeurs de  ,  ). Elle peut être utilisée pour sélectionner la coupe initialement la plus efficace, même si cela ne garantit rien sur l’efficacité finale. Si la coupe porte sur le coût, les coefficients  sont donnés par (1.39) :

j = F(cj ).

La variable entrante étant telle que : j  0 , son coût réduit est non nul : cj  0 . L’accroissement du coût lors du premier pivotage est donné par :

z =

cj j



 = F(cj )  0 avec  j  = 1 − F(z)  0

(1.46)

Cet accroissement est strictement positif. On démontre que la méthode de Gomory atteint une solution entière en un nombre fini de coupes, à condition que celles-ci induisent un accroissement strict du coût du problème relaxé. La coupe sur le coût réalise cette condition. Malgré cette propriété théorique de convergence, le nombre de coupes nécessaire peut être exponentiel. Par ailleurs, la méthode est sensible aux erreurs d’arrondi. Il faudra par exemple décider si une solution x = 1,0001 doit être considérée comme entière ou nécessite l’ajout d’une coupe. Ces difficultés numériques rendent la méthode inefficace sur des problèmes de grandes tailles. En revanche, le principe d’ajouter des coupes est utile en complément des méthodes arborescentes présentées en section 1.3. Ces coupes contraignent le problème relaxé et permettent de trouver de meilleurs minorants du coût optimal. Les coupes sur les variables ou sur le coût sont appelées coupes simples. Selon le problème, il est possible de générer des coupes plus fortes présentées ci-après.

1.2.4 Coupe intégrale Reprenons le problème linéaire en variables entières (PLE) et supposons que les coefficients des matrices/vecteurs A, b et c sont des entiers relatifs.

Ax = b min z = cT x sous  n x x 

avec A 

mn

, b

m

, c

n

(1.47)

La solution du problème relaxé se met sous forme canonique :

xB = B−1b − B−1NxN

(1.48)

où B est la sous-matrice de A associée à la base optimale et N la sous-matrice de A associée aux variables hors-base xN .

22

Techniques d’optimisation

La matrice B étant à coefficients entiers, son déterminant d = det(B) est entier et 1 son inverse B−1 est de la forme : B−1 = B' , où B’ est une matrice à coefficients d entiers. La solution du problème relaxé (1.48) est donc rationnelle de la forme :

xi = bi −  aijx j = jN

 i −  ij x j , i  B d jN d

(1.49)

où les coefficients ij , i ,d sont tous des entiers. Notons [y]d l’entier congru à y modulo d compris entre 0 et d − 1 .

0  [y]d  d − 1 (1.50) avec  k  Pour tout entier p premier avec d, la solution entière du problème (1.47) doit satisfaire les inégalités suivantes appelées coupes intégrales. [y]d  y [d]  y = [y]d + kd

[p ] x jN

ij d

j

 [pi ]d , i  B

(1.51)

Démonstration (voir [R15]) La variable de base xi donnée par (1.49) doit prendre une valeur entière k.   xi = i −  ij x j = k   i −  ijx j = kd d jN d jN

Multiplions chaque membre par un entier p premier avec d : pi −  pij x j = pkd. jN

p = [pi ]d + k1d En exprimant pi et pij modulo d :  i , pij = [pij ]d + k2 jd l’égalité précédente donne : [pi ]d −  [pij ]d x j = Kd jN

où K = pk − k1 +  k2 jx j est entier (car les variables x j sont entières). jN

On a par ailleurs : [pi ]d  d − 1  [pi ]d − [pij ]d x j  d − 1  Kd  d − 1  K  0 [p ]  0 jN  ij d d'où l’on déduit l’inégalité : [pi ]d −  [pij ]d x j = Kd  0 . jN

Programmation linéaire mixte

23

La solution de base définie par (1.49) est donnée par :

xN = 0 , xi =

i , iB d

(1.52)

Si cette solution n’est pas entière, alors i n’est pas divisible par d et [p i ]d  0 (car p est premier avec d). L’inégalité (1.51) n’est pas vérifiée et permet d’exclure cette solution non entière. On peut définir de manière similaire des coupes intégrales sur le coût si celui-ci doit être entier. La forme canonique du coût se met sous forme rationnelle :

z = z −  cjx j = jN

  −  j xj d jN d

(1.53)

et la coupe obtenue est similaire à (1.51) avec (,  j ) remplaçant (i , ij ) . Les coupes intégrales (1.51) permettent de générer un ensemble d’inégalités en faisant varier l’entier p premier avec d = det(B) . La coupe a priori la plus efficace est celle pour laquelle le second membre [p i ]d est le plus grand.

1.2.5 Coupe mixte Considérons maintenant un problème linéaire en variables mixtes (PLM).

Ax = b  min z = cT x sous  x j  , j  JE x  x j  0 , j  JC 

avec A 

mn

, b

m

, c

n

(1.54)

Les indices JE correspondent aux variables entières. Les indices JC correspondent aux variables réelles (ou continues) positives. La solution du problème relaxé s’exprime sous la forme canonique : xi +  aij x j = bi , i  B

(1.55)

jN

On répartit les variables hors-base ( j  N) en 4 sous-ensembles. - Les variables entières sont réparties en J+E et J−E . - Les variables réelles sont réparties en JC+ et JC− . Ces sous-ensembles sont définis selon les signes des coefficients comme suit :

 =  j N

 , F(a )  F(b )

J+E = j  N JE , F(aij )  F(bi ) J−E

JE

ij

i

, JC+ =  j  N JC , aij  0

, JC− =  j  N JC , aij  0

(1.56)

24

Techniques d’optimisation

La solution du problème (1.54) doit satisfaire les coupes mixtes suivantes.

1 − F(aij )

 F(a )x +  F(b ) 1 − F(b ) x jJ−E

ij

j

jJE+

i

i

j

(1.57)

F(bi ) +  aij x j −  aij x j  F(bi ) , i  B JE jJC+ jJC− 1 − F(bi )

Démonstration (voir [R15]) Supposons d’abord que chaque sous-ensemble J+E , J−E , JC+ , JC− ne comporte qu’une seule variable hors-base et considérons la forme canonique d’une variable de base x0 devant être entière. Cette forme canonique s’écrit comme l’égalité E 1 suivante.

x , x , x  x0 + a1x1 + a2 x2 + y1 − y2 = b0 avec  0 1 2 + − + − JE JE JC JC  y1 , y2  0 (égalité E1)  x0 + a1x1 + a2 x2 − y2  b0 car y1  0

et F(a2 ) − F(b0 ) + F(a1 ) JE

JE

 x0 +  E(a1 ) + F(a1 ) x1 + E(a2 ) + 1 − (1 − F(a2 ) ) x2  b0 + y2

 x0 + E(a1 )x1 + E(a2 ) + 1 x2  b0 + y2 + 1 − F(a2 ) x2 car F(a1)x1  0 Le premier membre de l’inégalité ci-dessus est un entier noté z.

z = x0 + E(a1 )x1 + E(a2 ) + 1 x2 

 z − b0  y2 + 1 − F(a2 ) x2

(inégalité I1)

Si z  E(b0 ) , l’inégalité I1 est satisfaite. En effet, le premier membre est négatif et le second membre est positif car x2  0 , y2  0 . Si z  E(b0 ) + 1 , on transforme l’inégalité I1 comme suit :

z − E(b0 ) + 1 + 1 − F(b0 )  y2 + 1 − F(a2 ) x2



z −  E(b0 ) + 1 y + 1 − F(a2 )  x2 +1  2 en divisant par 1 − F(b0 ) qui est positif 1 − F(b0 ) 1 − F(b0 )

 z −  E(b0 ) + 1 + 1 

y2 + 1 − F(a2 )  x2 1 − F(b0 )

z −  E(b0 ) + 1 z  E(b0 ) + 1   z −  E(b0 ) + 1 car  −  1 F(b ) 1 1 − F(b0 ) 0  y + 1 − F(a2 )  x2  z  E(b0 ) + 2 (inégalité I2) 1 − F(b0 )

Programmation linéaire mixte

25

On remarque que I2 établie pour z  E(b0 ) + 1 est aussi vérifiée pour z  E(b0 ) . Revenons aux variables initiales : z = x0 + E(a1 )x1 +  E(a2 ) + 1 x2

 x0 + E(a1 )x1 +  E(a2 ) + 1 x2  E(b0 ) +

y2 + 1 − F(a2 )  x2 1 − F(b0 )

 1 − F(a2 )  1  x0 + E(a1 )x1 + E(a2 ) + 1 − y2  E(b0 )  x2 − 1 − F(b0 )  1 − F(b0 )  Remplaçons x0 = b0 − a1x1 − a2 x2 − y1 + y2 donné par l’égalité E1.   1 − F(a2 )  1   b0 +  E(a1 ) − a1  x1 + E(a2 ) − a2 + 1 −  x2 − y1 + 1 −  y2  E(b0 ) 1 − F(b0 )    1 − F(b0 )  1 − F(a2 ) F(b0 )  F(a1 )x1 + F(b0 ) x2 + y1 + y2  F(b0 ) (inégalité I3) 1 − F(b0 ) 1 − F(b0 ) Dans l’égalité E1 considérée au début de la démonstration : - y1  0 est une variable hors-base réelle + aijx j telle que aij  0 (ensemble JC+ ) ; - y2  0 est une variable hors-base réelle − aijx j telle que aij  0 (ensemble JC− ). L’inégalité I3 correspond donc bien à l’inégalité (1.57) pour la variable de base x0 lorsque chaque sous-ensemble J+E , J−E , JC+ , JC− ne comporte qu’une seule variable. Dans le cas où les sous-ensembles J+E , J−E , JC+ , JC− comportent plusieurs variables, la démonstration précédente s’applique à l’identique en remplaçant les termes en x1, x2 ,y1, y2 par les sommes correspondantes sur J+E , J−E , JC+ , JC− . On obtient alors la forme générale (1.57) qui s’applique à chaque variable de base devant être entière. 1 − F(aij ) F(bi )   F(aij )x j +  F(bi ) x j +  aijx j −  aijx j  F(bi ) , i  B JE − + + − 1 − F(bi ) jJE jJE jJC jJC 1 − F(bi )

La solution de base définie par (1.49) est donnée par :

xN = 0 , xi = bi , i  B

(1.58)

Si cette solution n’est pas entière, alors F(bi )  0 . L’inégalité (1.51) n’est pas satisfaite et permet d’exclure cette solution non entière. Les coupes mixtes (1.57) sont définies directement à partir du tableau du simplexe et s’appliquent à tout problème linéaire en variables mixtes. L’exemple suivant compare l’efficacité des coupes simples, intégrales et mixtes.

26

Techniques d’optimisation

Exemple 1-3 : Coupes simples, intégrales et mixtes (d’après [R15])

−6x1 + 4x2  1  6x1 − 8x2  9 Considérons le problème : min z = − x1 − x2 sous  x1 ,x2 2x1 + 4x2  13  x  1  , x2  Ce problème est mis sous forme standard en introduisant 3 variables d’écart x3 , x4 , x5 . Les contraintes ne comportant que des termes entiers, les variables d’écart sont également entières. −6x1 + 4x2 + x3 = 1  6x − 8x2 + x4 = 9 min z = − x1 − x2 sous  1 (problème P0) x1 ,x2 2x + 4x2 + x5 = 13  1 x3 ,x4 ,x5  x1 , x2 , x3 , x4 , x5  Le problème relaxé P0r associé au problème P0 est résolu par le simplexe primal. Tableau initial de P0r Base : (x3 , x4 , x5 )

 x3 = 1  Solution de base :  x4 = 9  x5 = 13 Pivotage 1 : entre x3 et x2 Nouvelle base : (x2 ,x4 ,x5 ) Solution de base :  x2 = 1/ 4   x4 = 11  x5 = 12 Pivotage 2 : entre x5 et x1

Nouvelle base : (x2 , x4 , x1 ) Solution de base :  x2 = 5 / 2   x4 = 20  x1 = 3/ 2

Programmation linéaire mixte

27

Pivotage 3 : entre x4 et x3 Nouvelle base : (x2 , x3 , x1 ) Solution de base :  x2 = 3/ 2   x3 = 16  x1 = 7 / 2 La solution du problème relaxé P0 n’est pas entière à cause de x1 et x2 . Le dernier tableau du simplexe donne la forme canonique de la solution en fonction des variables hors-base (x4 , x5 ) .

1 1 7   x1 + 10 x4 + 5 x5 = 2  1 3 3  x2 − x4 + x5 = 20 20 2 

→ égalité E1 → égalité E2

La Figure 1-4 montre dans le plan (x1, x2 ) le domaine admissible limité par les trois contraintes et les deux axes. La solution relaxée correspond au sommet du polytope situé en R. Il existe 5 solutions entières dans le domaine admissible (repérées par les points), la solution entière optimale est en E. Solution relaxée

 x = 3,5 → z = −5 R : 1  x2 = 1,5 Solution entière

x = 2 → z = −4 E:  1  x2 = 2 Figure 1-4 : Solution relaxée et solution entière Les égalités E1 et E2 sont maintenant utilisées pour générer successivement des coupes simples, intégrales ou mixtes afin de comparer leur efficacité.

28

Techniques d’optimisation

Coupes simples Les coupes simples sont de la forme :

 F(a )x jN





ij

j

 F(bi ) .

1 1 1 x4 + x5   x1  3 10 5 2 On ajoute une variable d’écart et la nouvelle contrainte de coupe au tableau solution de P0, puis l’on résout le nouveau problème par le simplexe dual.  x1 = 3 La nouvelle solution relaxée est :  x = 1,75 → z = −4,75  2 19 3 1 x4 + x5   6x1 − 7x2  10 Une coupe sur x2 donne : 20 20 2 On ajoute une variable d’écart et la nouvelle contrainte de coupe au tableau solution de P0, puis l’on résout le nouveau problème par le simplexe dual.  x1 = 3, 45 La nouvelle solution relaxée est :  x = 1,53 → z = −4,98  2 Une coupe sur x1 donne :

Ces coupes simples sont tracées en pointillés sur la Figure 1-5. Elles réduisent très peu le domaine admissible et améliorent faiblement la solution relaxée.

Figure 1-5 : Coupes simples

Programmation linéaire mixte

29

Coupes intégrales Les coupes intégrales sont de la forme :

[p ] x jN

ij d

j

 [pi ]d avec un entier p

premier avec d. d est le déterminant de la matrice de base B et correspond au dénominateur des équations E1 ou E2. 1 1 7 → x4 + 2x5  5 d = 10 • Pour une coupe sur x1 : x1 + x4 + x5 = 10 5 2 Si l’on prend p = 1 : p = 1 → x4 + 2x5  5  x1  3 On retrouve la coupe simple précédente sur x1 . •

1 3 3 x4 + x5 = → x4 + 17x5  10 d = 20 20 20 2 p = 1 → x4 + 17x5  10  2x1 + 3x2  11

Pour une coupe sur x2 : x2 − Si l’on prend p = 1 :

 x = 3,38 → z = −4,79 La nouvelle solution relaxée est :  1  x2 = 1, 41 Si l’on prend p = 3 : p = 3 → 3x4 + 11x5  10  2x1 + x2  8  x = 3,17 → z = −4,83 La nouvelle solution relaxée est :  1  x2 = 1,67 Ces coupes intégrales sur x2 sont tracées en pointillés sur la Figure 1-6. Elles réduisent très peu le domaine admissible et améliorent faiblement la solution.

Figure 1-6 : Coupes intégrales

30

Techniques d’optimisation

Coupes mixtes Les coupes mixtes sont de la forme :

 F(a )x +  jJE−

ij

j

F(bi ) (1 − F(aij ) )

jJE+

1 − F(bi )

x j  F(bi ) .

Les variables hors-base sont ici entières : JE = 4 , 5 , JC =  . •



1 1 7 1 x4 + x5 = → F(a14 ),F(a15 )  F(b1 ) = 10 5 2 2 1 1 1 x4 + x5   x1  3 J−E = 4 , 5 , J+E =  → 10 5 2 On retrouve la coupe simple précédente sur x1 . 1 3 3 1 Coupe sur x2 : x2 − x4 + x5 = → F(a25 )  F(b2 ) =  F(a24 ) 20 20 2 2 3 1 1 → x5 + x4   6x1 + 2x2  19 J−E = 5 , J+E = 4 20 20 2  x = 2,5 → z = −4,5 La nouvelle solution relaxée est :  1  x2 = 2 Coupe sur x1 : x1 +

Cette coupe mixte sur x2 est tracée en pointillés sur la Figure 1-7. Elle restreint davantage l’ensemble admissible que les couples simples ou intégrales et produit une amélioration plus forte de la solution relaxée.

Figure 1-7 : Coupes mixtes

Programmation linéaire mixte

31

1.3 Méthodes arborescentes Les méthodes arborescentes explorent l’ensemble des combinaisons possibles de valeurs entières. L’évaluation de solutions relaxées permet d’éliminer des sousensembles et évite le parcours complet de l’arbre des possibilités.

1.3.1 Énumération implicite Considérons un problème linéaire en variables binaires noté (PLB).

Ax = b min z = cT x sous  n x  x  U , U = 0 ; 1

(1.59)

L’ensemble des combinaisons possibles X = Un est fini de cardinal Card(X) = 2n. L’énumération explicite consiste à évaluer chacun des 2n éléments de X. Cette méthode garantit de trouver l’optimum, mais présente rapidement des limites lorsque la taille du problème augmente. Pour n = 60 , et en évaluant un milliard de solutions par seconde, il faudrait 30 ans de calcul pour obtenir la solution. La formulation binaire d’un problème en nombres entiers avec la décomposition (1.3) conduit à des milliers de variables binaires. L’énumération explicite n’est alors plus envisageable. L’énumération implicite consiste à partitionner l’ensemble X en formant un arbre des possibilités (étape de séparation), puis à descendre dans l’arborescence en éliminant les branches non optimales (étape d’évaluation). L’élimination réduit le nombre de possibilités à examiner, tout en garantissant que la solution optimale sera trouvée. Ces méthodes sont également appelées méthodes arborescentes ou méthodes de séparation-évaluation (branch and bound).

1.3.2 Séparation L’ensemble X des possibilités est défini par :



X = x  Un



(1.60)

Chaque composante de x peut prendre la valeur 0 ou 1. L’ensemble X est partitionné en 2 sous-ensembles en fixant x1 à 0 ou à 1. Cette partition de premier niveau comporte 21 sous-ensembles notés X0 et X1 .

X0 = x  X , x1 = 0 , X1 = x  X , x1 = 1

(1.61)

32

Techniques d’optimisation

Chaque sous-ensemble X0 et X1 est à son tour partitionné en 2 sous-ensembles en fixant x2 à 0 ou à 1. Cette partition de deuxième niveau comporte 22 sousensembles notés X00 , X01 , X10 et X11 .

X00 = x  X , x1 = 0 , x2 = 0 , X10 = x  X , x1 = 1 , x2 = 0 X01 = x  X , x1 = 0 , x2 = 1 , X11 = x  X , x1 = 1 , x2 = 1

(1.62)

On continue le partitionnement jusqu’à la dernière variable xn . La partition de niveau n comporte 2n sous-ensembles à un seul élément. Chaque élément est l’une des combinaisons possibles de l’ensemble X . La Figure 1-8 schématise la partition de premier niveau. L’ensemble X est séparé en deux sous-ensembles X0 et X1 : - X est le prédécesseur ou parent de X0 et X1 ; - X0 et X1 sont les successeurs ou enfants de X .

Figure 1-8 : Partition de premier niveau Les partitions successives forment une arborescence, dont chaque sous-ensemble est un sommet (ou nœud) d’une arborescence. Les X, X0 , X1, X10 , X11, sommets de niveaux successifs sont reliés par des flèches indiquant l’inclusion. L’ensemble initial X (correspondant au niveau 0) est la racine de l’arborescence. Les sommets de niveau n (contenant 1 seul élément) sont les sommets terminaux. L’arborescence se compose de n + 1 niveaux. Le niveau k comporte 2k sommets. Le nombre total de sommets est 2n+1 − 1 . La Figure 1-9 ci-après montre une arborescence à 3 variables binaires x1, x2 , x3.

Les 8 sommets terminaux X000 ,X001,X010 ,X011,X100 ,X101,X110 ,X111 représentent les 8 combinaisons de valeurs possibles de x1 , x2 , x3 .

Programmation linéaire mixte

33

Figure 1-9 : Arbre des possibilités La procédure de séparation présentée ci-dessus concerne des variables binaires, que l’on fixe à 0 ou à 1. Dans le cas d’une variable entière x j , la procédure consiste à choisir un seuil entier j et à séparer le sommet X en un sommet X− associé aux valeurs x j  j et un sommet X+ associé aux valeurs xj  j + 1 . Chaque sommet est ainsi associé à un intervalle de variation de x j qui sera réduit au fur et à mesure des séparations. Cette procédure est plus complexe à mettre en œuvre que la reformulation du problème en variables binaires, mais elle peut s’avérer beaucoup plus efficace pour éliminer des possibilités.

1.3.3 Évaluation Notons z* le coût optimal du problème (PLB) que l’on cherche à résoudre.

Ax = b min z = cT x sous  n x  x  U , U = 0 ; 1

(1.63)

Le coût optimal z* n’est pas connu (c’est ce que l’on cherche). Supposons que l’on connaisse une solution admissible de (PLB) de coût za . Cette solution binaire satisfait les contraintes. Son coût za est un majorant du coût optimal z* de (PLB).

34

Techniques d’optimisation

Un sommet S de niveau k dans l’arborescence correspond au problème (1.63) avec les k premières variables fixées à 0 ou à 1. Le problème (PLB)S associé au sommet S comporte n − k variables binaires et son coût optimal (inconnu) est noté zS .

 Ax = b  min z = cT x sous  x  Un x  x1 , x1 , , xk fixés

(PLB)S

(1.64)

On ne sait pas résoudre directement le problème (PLB) S en variables binaires. Il est en revanche possible de résoudre le problème relaxé (PLR) S obtenu en changeant les contraintes d’intégrité x j  U en contraintes de positivité x j  0 .

Ax = b  min z = cT x sous  x  0 x  x1 , x1 , , xk fixés

(PLR)S

(1.65) r

Ce problème se résout par la méthode du simplexe. Son coût zS est inférieur à zS car le problème relaxé (PLR)S est moins contraint que le problème binaire (PLB)S. r Le coût relaxé zS est un minorant du coût de (PLB)S, mais aussi de tous les problèmes issus de (PLB)S en fixant des variables supplémentaires xk+1,xk+2 , . r On ne pourra pas trouver de solution de coût inférieur à zS en explorant les sommets issus de S. r

Supposons que ce coût relaxé zS est supérieur à la valeur connue za , associée à une solution admissible de (PLB). Pour tout sommet S’ issu de S, on aura :

z*  za  zSr  zS'

(1.66)

Il est alors inutile d’explorer les sommets au-dessous de S, car ils ne donneront aucune solution binaire de cout inférieur à za . On peut ainsi éliminer toute cette partie de l’arborescence. On appelle fonction d’évaluation du sommet S tout minorant du coût du problème (PLB)S. L’efficacité de l’évaluation dépend de la qualité du minorant. Un minorant élevé favorise l’élimination de branches de l’arborescence. La fonction d’évaluation est généralement le coût du problème relaxé (PLR) S comme ci-dessus (1.65). Ce minorant est simple à obtenir par la méthode du simplexe, et son calcul peut être accéléré en utilisant la solution du sommet parent (procédure dite de warm start). Supposons en effet que le problème relaxé du sommet parent P a été résolu par la méthode du simplexe. Sa forme canonique dans la base optimale B est connue et

Programmation linéaire mixte

35

elle correspond au tableau suivant.

xB I T= 0

xN B N b cNT − z −1

→ xB + B−1NxN = b x = b → solution  B T → cN xN = z − z  xN = 0

(1.67)

La séparation du sommet P consiste, soit à fixer une variable binaire, soit à ajouter une contrainte inégalité sur une variable entière. Examinons les deux possibilités. Séparation sur une variable binaire Supposons que le sommet est séparé en fixant la variable binaire xe à 0 ou à 1. (1.68)

xe =  avec  = 0 ou 1

Si cette variable est dans la base B, on commence par forcer un pivotage dual avec une variable hors-base xs . En faisant apparaître les variables xe et xs , le tableau T (1.67) se présente sous la forme :

xB I T= 0 0

xe 0 1 0

x N xs B−1N ais aej aes T cN cs

b be −z

(1.69)

La base B étant optimale pour le problème parent, les coûts réduits et les variables de base sont tous positifs. La variable xs pour le pivotage dual est choisie par :

s → max

cNj aej

pour j  N et tel que aej  0

(1.70)

Les coûts réduits et les variables de base deviennent :

cj → cj − cs

aej aes

, bi → bi − be

ais aes

(1.71)

Par construction, ce pivotage dual garde des coûts réduits positifs. En revanche, les variables de base peuvent devenir négatives, car ce pivotage forcé a pour but de faire sortir la variable xe de la base. À l’issue de ce pivotage, on se retrouve avec une base dual-admissible (coûts réduits positifs) et la variable hors-base xe que l’on souhaite fixer à la valeur  (0 ou 1).

36

Techniques d’optimisation

Le tableau résultant est de la forme :

xB x N xe −1 I B N aie T' = 0 cNT ce

b −z

(1.72)

Réalisons ensuite le changement de variable : x 'e = xe −  . L’objectif est que la nouvelle variable hors-base x 'e soit fixée à 0, ce qui correspond à sa valeur dans la solution de base du tableau T’. Avec ce changement de variable, les contraintes et le coût deviennent :

xi +  aijx j + aie xe = bi

 xi +  aijx j + aie x'e = bi − aie 

z −  cj x j − ce xe = z

 z −  cj x j − ce x'e = z + ce 

jN j e

jN j e

jN j e

(1.73)

jN j e

On peut alors former le tableau du simplexe avec cette nouvelle forme canonique :

xB xN x 'e I B−1N aie T '' = 0 cNT ce

b − aie  − z + ce

(1.74)

puis retirer la variable hors-base x 'e qui doit rester fixée à 0. Ce nouveau problème associé au sommet S (variable xe fixée) est sous forme canonique dans la base B qui est dual-admissible (coûts réduits positifs). Il est donc prêt à être résolu par l’algorithme du simplexe dual. L’exemple suivant illustre la procédure de séparation-évaluation sur un problème en variables binaires.

Exemple 1-4 : Séparation-évaluation en variables binaires (d’après [R15]) Considérons le problème linéaire à 6 variables binaires :

min z = −20x1 − 16x2 − 11x3 − 9x4 − 7x5 − x6

x1 ,x2 ,x3 x4 ,x5 ,x6

 9x + 8x2 + 6x3 + 5x4 + 4x5 + x6  12 sous  1  x j = 0 ou 1 , j = 1 à 6

Programmation linéaire mixte

37

Ce problème est de type sac à dos (section 1.4.5) : min z =  cjx j sous  a jx j  b x jU

j

j

Les variables ont été numérotées par ordre d’utilité croissante (rapports cj / a j ). Il y a 26 = 64 combinaisons possibles. L’arborescence comporte 7 niveaux et 27 − 1 = 127 sommets. On applique une méthode arborescente avec une exploration en profondeur : - les sommets sont traités par ordre d’évaluation croissante (meilleur sommet en premier) ; - les variables sont traitées par ordre d’utilité croissante (soit ici dans l’ordre de numérotation). Initialisation : solution admissible initiale L’étape d’initialisation vise à construire une solution admissible. Ceci n’est pas toujours possible de manière simple lorsque les contraintes sont nombreuses. Pour ce problème de type sac à dos, on applique une méthode gloutonne consistant à prendre les variables dans l’ordre d’utilité et à les fixer si possible à 1 (tant que la contrainte reste satisfaite). On obtient la solution initiale : x1 = 1 , x2 = x3 = x4 = x5 = 0 , x6 = 1 dont le coût est : za = −21 . Cette valeur est un majorant du coût du problème binaire : z*  za . Itération 0 : sommet X (racine de l’arborescence) Le problème relaxé associé au sommet X est : min z = −20x1 − 16x2 − 11x3 − 9x4 − 7x5 − x6 x1 ,x2 ,x3 x4 ,x5 ,x6

 9x + 8x2 + 6x3 + 5x4 + 4x5 + x6  12 sous  1  xj  0 , j = 1 à 6 3   x = 1 , x2 = → z = −26 La solution est :  1 8  x x x x 0 = = = = 4 5 6  3 Cette solution est non admissible, car la variable x2 n’est pas binaire. L’évaluation de X est −26. Le sommet X est séparé en fixant la variable x1 à 0 (sommet X0 ) ou à 1 (sommet X1 ).

38

Techniques d’optimisation

Itération 1 : sommet X0 Le problème relaxé associé au sommet X0 (x1 = 0) est :

 8x + 6x3 + 5x4 + 4x5 + x6  12 min z = −16x2 − 11x3 − 9x4 − 7x5 − x6 sous  2 x2 ,x3 ,x4  xj  0 , j = 2 à 6 x5 ,x6 2  70  x = 1 , x3 =  −23,3 Ce problème a pour solution :  2 3 → z=− 3  x x x 0 = = = 5 6  4 Cette solution est non admissible, car la variable x3 n’est pas binaire. L’évaluation de X0 est −23,3, inférieure à la référence za = −21 . Le sommet est conservé. Itération 1 : sommet X1 Le problème relaxé associé au sommet X1 (x1 = 1) est :

 8x + 6x3 + 5x4 + 4x5 + x6  3 min z = −16x2 − 11x3 − 9x4 − 7x5 − x6 − 20 sous  2  xj  0 , j = 2 à 6

x2 ,x3 ,x4 x5 ,x6

Ce problème a la même solution que le problème en X . Ceci est logique, car la solution relaxée en X donnait déjà : x1 = 1 . L’évaluation de X1 est −26, inférieure à la référence za = −21 . Le sommet est conservé. L’exploration de l’arborescence à l’itération 1 est représentée sur la Figure 1-10.

Figure 1-10 : Exploration à l’itération 1 Le meilleur sommet est X1 (évaluation la plus basse). Ce sommet est séparé en fixant la variable x2 à 0 (sommet X10) ou à 1 (sommet X11).

Programmation linéaire mixte

39

Itération 2 : sommet X10 Le problème relaxé associé au sommet X10 (x1 = 1, x2 = 0) est :

 6x + 5x4 + 4x5 + x6  3 min z = −11x3 − 9x4 − 7x5 − x6 − 20 sous  3 x3 ,x4 ,x5 ,x6  xj  0 , j = 3 à 6 1  51 x = → z = −  −25,5 Ce problème a pour solution :  3 2 2   x4 = x5 = x6 = 0 Cette solution est non admissible, car la variable x3 n’est pas binaire. L’évaluation de X10 est −25,5, inférieure à la référence za = −21 . Le sommet est conservé. Itération 2 : sommet X11 Le problème relaxé associé au sommet X11 (x1 = 1, x2 = 1) est :

 6x + 5x4 + 4x5 + x6  −5 min z = −11x3 − 9x4 − 7x5 − x6 − 36 sous  3  xj  0 , j = 3 à 6 La contrainte ne peut être satisfaite (variables positives). Ce problème n’a pas de solution On attribue l’évaluation + à X11 . L’exploration s’arrête à ce sommet qui ne contient aucune solution admissible. x3 ,x4 ,x5 ,x6

L’exploration de l’arborescence à l’itération 2 est représentée sur la Figure 1-11.

Figure 1-11 : Exploration à l’itération 2 Le meilleur sommet est X10 (évaluation la plus basse). Ce sommet est séparé en fixant la variable x3 à 0 (sommet X100 ) ou à 1 (sommet X101 ).

40

Techniques d’optimisation

Itération 3 : sommet X100 Le problème relaxé associé au sommet X100 (x1 = 1, x2 = 0, x3 = 0) est

 5x + 4x5 + x6  3 min z = −9x4 − 7x5 − x6 − 20 sous  4 x4 ,x5 ,x6  xj  0 , j = 4 à 6 3 127  −25,4 Ce problème a pour solution : x4 = , x5 = x6 = 0 → z = − 5 5 Cette solution est non admissible, car la variable x4 n’est pas binaire. L’évaluation de X100 est −25,4, inférieure à la référence za = −21 . Le sommet est conservé. Itération 3 : sommet X101 Le problème relaxé associé au sommet X101 (x1 = 1, x2 = 0, x1 = 0) est

 5x + 4x5 + x6  −3 min z = −9x4 − 7x5 − x6 − 31 sous  4 x4 ,x5 ,x6  xj  0 , j = 4 à 6 La contrainte ne peut être satisfaite (variables positives). Ce problème n’a pas de solution On attribue l’évaluation + à X101 . L’exploration s’arrête à ce sommet qui ne contient aucune solution admissible. Les itérations suivantes sont synthétisées dans le Tableau 1-2 ci-après. La Figure 1-12 montre le résultat de l’exploration complète de l’arborescence. La solution a été obtenue en évaluant le sommet X0100 .

 x2 = x5 = 1  x = x = x = x = 0 → z = −23 3 4 6  1 Cette solution est confirmée à la fin de l’exploration qui nécessité l’évaluation de seulement 19 sommets sur les 127 que compte l’arborescence.

Programmation linéaire mixte

Tableau 1-2 : Récapitulatif des itérations

Figure 1-12 : Exploration de l’arborescence

41

42

Techniques d’optimisation

Séparation sur une variable entière Considérons maintenant la séparation sur une variable entière xe . La solution du problème parent P a donné l’expression canonique de la variable xe .

xe +  aejx j = be

(1.75)

jN

Supposons que la solution de base prend une valeur non entière : be  . Le sommet P est alors séparé en imposant d’une part l’inégalité : xe  E() , d’autre part l’inégalité : xe  E() + 1 .

L’inégalité xe  E() est passée en égalité avec une variable d’écart y−  0 .

 xe +  aej x j = be  jN   xe + y− = E(be )

 y− −  aejx j = − F(be )

(1.76)

jN

L’inégalité xe  E() + 1 est passée en égalité avec une variable d’écart y+  0 .

 xe +  aej x j = be  jN  y+ +  aej x j = F(be ) − 1  jN  xe − y+ = E(be ) + 1

(1.77)

Dans les deux cas, la nouvelle contrainte est de la forme : y + TN xN =  ,   0 . Le tableau du simplexe T du sommet parent P (1.67) est complété avec la nouvelle variable et la nouvelle contrainte pour donner le tableau T’ du sommet S.

xB I T = 0

xN B−1N b cNT − z

⎯⎯ →

T' =

xB

y

xN

I 0

0 1

B−1N TN

b 

0

0

cNT

−z

(1.78)

Le nouveau problème est sous forme canonique dans la base (xB , y) . Cette base n’est pas primal-admissible, car la variable y prend la valeur  négative. Elle est en revanche dual-admissible, car les coûts réduits issus de la solution du sommet P sont tous positifs. Le nouveau problème associé au sommet S (avec la contrainte inégalité sur la variable xe ) est donc prêt à être résolu par l’algorithme du simplexe dual. L’exemple suivant illustre la procédure de séparation-évaluation sur un problème en variables entières, en détaillant la procédure de résolution par simplexe dual.

Programmation linéaire mixte

43

Exemple 1-5 : Séparation-évaluation en variables entières

7x1 − 2x2  14  sous  x2  3 x1 ,x2  2x1 − 2x2  3 Le problème est mis sous forme standard avec trois variables d’écart positives x3 , x4 , x5 . On peut remarquer que ces variables ainsi que le coût seront des entiers. Le problème sous forme standard est : 7x1 − 2x2 + x3 = 14  min z = −4x1 + x2 sous  x2 + x4 = 3 x1 ,x2 x3 ,x4 ,x5 0 2x1 − 2x2 + x5 = 3 Considérons le problème : min z = −4x1 + x2

On applique une méthode arborescente avec une exploration en profondeur : - les sommets sont traités par ordre d’évaluation croissante (meilleur sommet en premier) ; - les variables sont traitées par ordre de numérotation. Itération 0 : sommet X (racine de l’arborescence) Le problème relaxé associé au sommet X est : 7x1 − 2x2 + x3 = 14  min z = −4x1 + x2 sous  x2 + x4 = 3 x1 ,x2 ,x3 ,x4 ,x5 0 2x1 − 2x2 + x5 = 3 On forme le tableau du simplexe de ce problème relaxé. Tableau initial Base : (x3 , x4 , x5 )

 x3 = 14  Solution de base :  x4 = 3  x5 = 3 Le problème est directement sous forme canonique dans la base (x3 , x4 , x5 ) qui est primal-admissible. On résout le problème relaxé de X par l’algorithme du simplexe primal.

44

Techniques d’optimisation

Pivotage 1 : entre x5 et x1 Nouvelle base : (x3 , x4 , x1 ) Solution de base :  x3 = 7 / 2   x4 = 3  x1 = 3/ 2 Pivotage 2 : entre x3 et x2 Nouvelle base : (x2 , x4 , x1 ) Solution de base :  x2 = 7 /10   x4 = 23/10  x1 = 11/ 5 Pivotage 3 : entre x4 et x5 Nouvelle base : (x2 , x5 , x1 ) Solution de base :  x2 = 3   x5 = 23/ 7   x1 = 20 / 7

20 59 , x2 = 3 → z = − 7 7 Cette solution est non admissible, car la variable x1 n’est pas entière. La solution est : x1 =

 59  L’évaluation de X (−59/7) donne un minorant du coût : z*  E  −  + 1 = − 8  7  Le sommet X est séparé en imposant une contrainte sur la variable x1 :  20  x1  E   = 2 → sommet X0  7   20  x1  E   + 1 = 3 → sommet X1  7  Ces contraintes s’expriment à partir de la forme canonique de la solution de X 1 2 20 x1 + x3 + x4 = et en introduisant une variable d’écart positive x6 . 7 7 7

Programmation linéaire mixte

45

Itération 1 : sommet X0

1 2 6  x6 − x3 − x4 = − 7 7 7 La nouvelle variable et la contrainte associée sont ajoutées au tableau du simplexe. La contrainte x1  2 donne : x1 + x6 = 2

Tableau solution de X Base optimale : (x2 , x5 , x1 )

Tableau initial de X0 Base initiale : (x2 , x5 , x1, x6 )

Le problème est directement sous forme canonique dans la base (x2 , x5 , x1, x6 ). Cette base n’est pas primal-admissible (x6  0) , mais elle est dual-admissible (coût réduits positifs). On résout le problème relaxé de X0 par l’algorithme du simplexe dual. Tableau initial Base : (x2 , x5 , x1, x6 ) Solution de base :  x2 = 3  x5 = 23/ 7  x = 20 / 7  1  x6 = −6 / 7

46

Techniques d’optimisation

Pivotage 1 : entre x6 et x4 Nouvelle base : (x2 , x5 , x1, x4 )

 x2 = 0  x = −1 Solution de base :  5 x =2  1  x4 = 3 Pivotage 2 : entre x5 et x3 Nouvelle base : (x2 , x3 , x1, x4 ) Solution de base :  x2 = 1/ 2  x3 = 1 x = 2  1  x4 = 5 / 2

1 15 → z=− 2 2 Cette solution est non admissible, car la variable x2 n’est pas entière. La solution est : x1 = 2 , x2 =

 15  Les solutions contenues dans X0 ont un coût minoré par : z*  E  −  + 1 = − 7  2 Itération 1 : sommet X1

1 2 1  x6 + x3 + x4 = − 7 7 7 La nouvelle variable et la contrainte associée sont ajoutées au tableau du simplexe. La contrainte x1  3 donne : x1 − x6 = 3

Tableau solution de X Base optimale : (x2 , x5 , x1 )

Programmation linéaire mixte

47

Tableau initial de X1 Base initiale : (x2 , x5 , x1, x6 )

Le problème est directement sous forme canonique dans la base (x2 , x5 , x1, x6 )

qui est dual-admissible. La variable sortante est x6 (seule variable de base négative). Aucun pivotage dual n’est possible, car il n’y a pas de coefficient négatif sur la ligne de x6 . Ceci signifie que le problème X1 n’a pas de solution (contraintes incompatibles). 1 2 1 En effet, la contrainte : x6 + x3 + x4 = − ne peut être satisfaite ( x  0 ). 7 7 7 L’arborescence sous X1 n’est plus explorée, car elle ne contient aucune solution. L’exploration de l’arborescence à l’itération 1 est représentée sur la Figure 1-13.

Figure 1-13 : Exploration à l’itération 1 Le seul sommet à séparer est X0 . On sait donc que les solutions ont un coût minoré par −7. Par ailleurs, aucune solution admissible n’est encore connue. 1 Le sommet X0 est séparé par une contrainte sur la variable non entière x2 = : 2 1   x2  E   = 0 → sommet X00 2

1 x2  E   + 1 = 1 2

→ sommet X01

48

Techniques d’optimisation

Ces contraintes s’expriment à partir de la forme canonique de la solution de X0

1 1 x2 − x5 + x6 = et en introduisant une variable d’écart positive x7 . 2 2

Itération 2 : sommet X00

1 1  x7 + x5 − x6 = − 2 2 La nouvelle variable et la contrainte associée sont ajoutées au tableau du simplexe solution. Il serait ici possible de supprimer du tableau la variable fixée x2 = 0 , mais par généralité, on conserve le tableau complet avec toutes les variables. La contrainte x2  0 donne : x2 + x7 = 0

Tableau solution de X0 Base optimale : (x2 , x3 , x1, x4 )

Tableau initial de X00 Base initiale : (x2 , x3 , x1, x4 , x7 )

Le problème est directement sous forme canonique dans la base (x2 , x3 , x1, x4 , x7 ) Cette base n’est pas primal-admissible (x7  0) , mais elle est dual-admissible (coût réduits positifs). On résout le problème relaxé de X00 par l’algorithme du simplexe dual.

Programmation linéaire mixte

49

Tableau initial Base : (x2 , x3 , x1, x4 , x7 ) Solution de base :  x2 = 1/ 2  x3 = 1   x1 = 2  x4 = 5 / 2  x = −1/ 2  7 Pivotage 1 : entre x7 et x6 Nouvelle base : (x2 , x3 , x1, x4 , x6 ) Solution de base :  x2 = 0  x3 = 7 / 2   x1 = 3/ 2  x4 = 3  x = 1/ 2  6

3 , x2 = 0 → z = −6 2 Cette solution est non admissible, car la variable x1 n’est pas entière. Les solutions contenues dans X00 ont un coût minoré par −6. La solution est : x1 =

Itération 2 : sommet X01

1 1  − x5 + x6 + x7 = − 2 2 La nouvelle variable et la contrainte associée sont ajoutées au tableau du simplexe. La contrainte x2  1 donne : x2 − x7 = 1

Tableau solution de X0 Base optimale : (x2 , x3 , x1, x4 )

50

Techniques d’optimisation

Tableau initial de X01 Base initiale : (x2 , x3 , x1, x4 , x7 )

Le problème est directement sous forme canonique dans la base (x2 , x3 , x1, x4 , x7 ) Cette base n’est pas primal-admissible (x7  0) , mais elle est dual-admissible (coût réduits positifs). On résout le problème relaxé de X01 par l’algorithme du simplexe dual. Tableau initial Base : (x2 , x3 , x1, x4 , x7 ) Solution de base :  x2 = 1/ 2  x3 = 1   x1 = 2  x4 = 5 / 2  x = −1/ 2  7 Pivotage 1 : entre x7 et x5 Nouvelle base : (x2 , x3 , x1, x4 , x5 ) Solution de base :  x2 = 1  x3 = 2   x1 = 2  x4 = 2 x = 1  5 La solution est : x1 = 2 , x2 = 1 → z = −7 Cette solution est admissible (variables entières). Il n’est pas nécessaire d’explorer au-delà de X01 . La solution admissible donne un majorant du coût : z*  za =− 7.

Programmation linéaire mixte

51

Le Tableau 1-3 montre le bilan des sommets explorés à l’itération 2. L’arborescence est représentée sur la Figure 1-14.

Sommet

Solution

Coût

X

non entière

−8  z*

X0

non entière

−7  z*

X1

non admissible

X00

non entière

−6  z*

X01

entière za = −7

z*  −7

Tableau 1-3 : Sommets explorés à l’itération 2

Figure 1-14 : Exploration à l’itération 2

La solution admissible trouvée au sommet X01 donne le coût de référence za =− 7.

Tous les sommets d’évaluation supérieure à za sont éliminés, car leur évaluation est un minorant du coût des solutions qu’ils contiennent. On peut ainsi arrêter l’exploration du sommet X00 . Il ne reste alors plus de sommet à séparer et l’exploration de l’arborescence est terminée. La solution a été obtenue en évaluant le sommet X01 : x1 = 2 , x2 = 1 → z = −7 L’exploration a nécessité l’évaluation de 4 sommets seulement.

1.3.4 Stratégie d’exploration L’exploration de l’arborescence nécessite de stocker la liste L = Xi  des sommets à explorer, appelés sommets actifs. Chaque sommet actif est stocké avec sa solution relaxée (forme canonique, variables et coût). Le coût de la solution relaxée constitue l’évaluation du sommet. Par ailleurs, on stocke également le coût de référence za de la meilleure solution admissible connue. L’exploration est initialisée avec le sommet racine L = X et la valeur za = + (si aucune solution admissible n’est connue). Une itération consiste à traiter un sommet et mettre à jour la liste L.

52

Techniques d’optimisation

Chaque itération comporte les étapes suivantes. •

Choix du sommet Xi  L à séparer.



Choix de la variable x j non entière (ou non binaire) à contraindre (ou à fixer).



Séparation du sommet Xi sur la variable x j Les 2 sommets enfants Xi0 et Xi1 sont ajoutés à la liste L. Le sommet parent Xi est retiré de la liste L.



Évaluation du sommet Xi0 donnant une solution relaxée x0 de coût z0 L’évaluation conduit aux trois possibilités suivantes. • Si la solution x0 est admissible (entière ou binaire), le coût de référence est actualisé : za → min(za ,z0 ) . Le sommet Xi0 n’a plus besoin d’être séparé et il est retiré de la liste L.





Si z0  za , le sommet Xi0 ne contient aucune solution meilleure que za . Son exploration est abandonnée et il est retiré de la liste L.



Si z0  za , le sommet Xi0 doit être exploré. Il est conservé dans la liste L

Évaluation du sommet Xi1 de manière similaire à Xi0 .

La Figure 1-15 schématise le déroulement d’une itération.

Figure 1-15 : Processus de séparation-évaluation

Programmation linéaire mixte

53

L’efficacité d’une méthode de séparation-évaluation dépend du choix du sommet à séparer, du choix de la variable de séparation, du stockage mémoire nécessaire et de la résolution des problèmes relaxés. Examinons ces différents aspects. Choix du sommet à séparer Les deux stratégies sont l’exploration en profondeur et l’exploration en largeur. L’exploration en profondeur (depth search) sélectionne systématiquement le sommet de plus bas niveau. L’objectif est d’arriver rapidement à un sommet terminal admissible pour déterminer un premier coût de référence za . Cette valeur est en effet indispensable pour pouvoir éliminer des branches lors de l’exploration. La Figure 1-16 illustre la stratégie d’exploration en profondeur sur une arborescence à 5 niveaux. L’arborescence est représentée à gauche, les flèches indiquant l’ordre de traitement des sommets. L’évolution de la liste des sommets actifs est représentée à droite. La descente dans l’arborescence s’effectue en commençant par la branche la plus à gauche (variables successives fixées à 0 par exemple) jusqu’à rencontrer, soit une infaisabilité, soit une solution admissible. Puis l’exploration reprend au sommet précédent pour à nouveau redescendre le plus bas possible dans l’arborescence.

Figure 1-16 : Exploration en profondeur L’exploration en profondeur est économique en place mémoire, car la liste ne contient qu’une seule branche de l’arborescence, soit au maximum n sommets pour un problème à n variables binaires. Elle peut cependant nécessiter d’évaluer beaucoup de sommets, car il faut attendre de trouver une solution admissible avant de pouvoir éliminer des branches de l’arborescence. Par ailleurs, les premières solutions admissibles peuvent être de qualité médiocre (coût za élevé), ce qui ne permet pas une élimination efficace des branches.

54

Techniques d’optimisation

L’exploration en largeur (breadth search) sélectionne systématiquement le sommet ayant la meilleure (plus basse) évaluation. L’objectif est de déterminer un premier coût de référence za le plus faible possible, permettant d’éliminer des branches à un niveau élevé. La Figure 1-17 illustre l’actualisation de la liste pour une stratégie d’exploration en largeur. La liste en début d’itération comporte k sommets classés par valeur décroissante de coût. Ces sommets ont tous une évaluation inférieure au coût de référence za (meilleur coût admissible connu). Le dernier sommet Xk (sommet de meilleure évaluation) est séparé en deux sommets Xa et Xb qui sont évalués. Supposons que Xa donne une solution admissible (entière ou binaire) de coût z'a avec zi  z'a  zi+1 . Les sommets X1 ,X2 , ,Xi peuvent être éliminés de la liste. Le sommet Xa est également abandonné, car son exploration est terminée.

Supposons par ailleurs que Xb donne une solution relaxée de coût zb avec

zj  zb  zj+1 . Ce sommet est inséré dans la liste entre les sommets X j et X j+1 .

À l’issue de cette itération, le sommet Xk qui a été séparé est retiré de la liste.

La nouvelle liste comporte les k − i −1 sommets précédents de Xi+1 à Xk −i auxquels s’ajoute le sommet Xb .

Figure 1-17 : Exploration en largeur L’exploration en largeur est généralement plus efficace que l’exploration en profondeur (moins de sommets évalués), car elle permet l’élimination précoce de branches de l’arborescence. Elle nécessite cependant de stocker beaucoup plus de sommets dans la liste, ce qui peut conduire à des problèmes de place mémoire.

Programmation linéaire mixte

55

Choix de la variable de séparation Le choix de la variable non entière pour séparer le sommet est arbitraire. Il repose généralement sur l’un des critères empiriques suivants. • Choix basé sur la fonction coût On choisit la variable de coefficient c j le plus négatif dans la fonction coût. On espère ainsi trouver une nouvelle solution admissible avec une forte diminution du coût de référence. •

Choix basé sur les contraintes On choisit la variable présente dans le plus grand nombre de contraintes. On espère faire apparaître une infaisabilité pour éliminer le sommet.



Choix basé sur la fonction duale On choisit la variable donnant la plus grande valeur initiale à la fonction duale (avant résolution du problème dual). On espère obtenir un coût relaxé élevé permettant d’éliminer le sommet.

Ces critères empiriques peuvent avoir des efficacités très différentes. Ils sont à tester et à adapter au cas par cas. Stockage mémoire L’implémentation de l’algorithme nécessite des précautions afin d’économiser de la place mémoire. En effet, la quantité d’informations à stocker (liste des sommets actifs et de leurs solutions relaxées) peut devenir très importante selon la taille du problème à résoudre. Les sommets actifs sont stockés dans une liste chaînée. Cette liste est actualisée à chaque itération par allocation / désallocation dynamique des sommets. Les liens entre sommets successifs sont définis par des pointeurs. Pour une exploration en profondeur avec n variables binaires, la liste contient au maximum n sommets. La meilleure solution admissible connue est stockée à part. Chaque sommet est une structure de données comprenant au minimum : - un booléen par variable indiquant si cette variable est fixée ; - un booléen par variable indiquant cette variable est dans la base optimale ; - la valeur de chaque variable (pour les variables fixées) ; - la valeur de la fonction d’évaluation ; - un pointeur vers le sommet suivant dans la liste. Pour un problème à n variables binaires, les valeurs des variables sont booléennes. Le stockage d’un sommet nécessite au total 3n booléens, un réel et un pointeur. En pratique, il est possible de résoudre des problèmes linéaires comportant quelques dizaines de variables entières ou quelques centaines de variables binaires. Le nombre de variables réelles peut en revanche aller jusqu’à 100 000, ces variables n’entrainant pas la génération de branches supplémentaires.

56

Techniques d’optimisation

Résolution du problème relaxé Une méthode arborescente demande l’évaluation d’un grand nombre de sommets. La résolution du problème relaxé doit s’effectuer le plus rapidement possible. Les éléments suivants contribuent à la rapidité de résolution. •

Les réductions préliminaires du problème relaxé (section 1.1.3) permettent la détection d’infaisabilité et/ou la fixation de variables.



L’initialisation à partir de la solution du sommet parent (section 1.3.3) permet de construire directement une base dual-admissible. Cette procédure appelée « warm start » économise un temps de calcul très important.



La connaissance préliminaire d’une solution admissible initiale accélère l’élimination de branches de l’arborescence. Cette solution peut dans certains cas être fournie directement par l’utilisateur ou déterminée par une méthode gloutonne adaptée au problème linéaire à résoudre.



L’évaluation de la solution relaxée peut être interrompue de manière anticipée lorsque la fonction duale devient supérieure au coût de référence admissible za . En effet, la fonction duale donne un minorant du coût optimal et elle croît à chaque itération du simplexe dual. Il n’est donc pas nécessaire d’achever la résolution pour éliminer le sommet lorsqu’elle dépasse za .

Les méthodes de séparation-évaluation reposent sur l’algorithme du simplexe dual avec un warm-start et l’interruption anticipée d’une évaluation. L’algorithme du simplexe primal ou les méthodes de point intérieur ne présentent pas ces avantages et sont nettement moins performantes dans ce contexte. Elles peuvent cependant être implémentées comme méthodes de « secours » dans les cas où la méthode du simplexe dual échoue, par exemple pour des problèmes de précision numérique. Le coût relaxé est un minorant des solutions entières contenues dans un sommet. Il doit être idéalement le plus grand possible pour favoriser l’élimination des sommets. Il peut être dans certains cas renforcé par l’ajout de variables et/ou de contraintes non présentes dans la formulation initiale du problème, comme discuté ci-dessous. Ajout de variables L’ajout d’une variable entière à un problème peut rendre la séparation des sommets beaucoup plus sélective. C’est en particulier le cas pour les problèmes de type sac-à-dos comme le montre l’exemple suivant.

Programmation linéaire mixte

57

Exemple 1-6 : Ajout d’une variable entière 2n

Considérons le problème : max z =  3xi xiU

sous

i =1

2n

 2x i =1

i

 2n + 1

La contrainte impose qu’au plus n variables sur les 2n sont égales à 1. Le coût maximal est obtenu en fixant n variables à 1 et les n autres à 0. Le choix des variables valant 1 est indifférent : il y a Cn2n solutions binaires équivalentes. La solution du problème relaxé (variables réelles entre 0 et 1) comporte n variables valant 1, n − 1 variables valant 0 et une variable valant 0,5. Le coût de la solution relaxée reste à z = 3n + 0,5 tant que moins de n variables sont fixées à 0. Il faudra donc descendre au niveau n de l’arborescence pour obtenir une solution n admissible, puis il faudra trouver les C2n solutions équivalentes pour garantir l’optimalité. La méthode de séparation-évaluation est inefficace sur ce problème. 2n

Introduisons une variable entière supplémentaire y définie par : y =  xi . i =1

2n

Le nouveau problème est : max z =  3xi sous xiU,y

i =1

2n

 2x i =1

i

 2n + 1 et

2n

x i =1

i

=y

Ce problème à 2n variables binaires et une variable entière a les mêmes solutions que le problème initial, car la contrainte y  est vérifiée par toutes les solutions. La solution du problème relaxé comporte comme précédemment n variables valant 1, n − 1 variables valant 0 et une variable valant 0,5. Le coût vaut : z = 3n + 0,5 et la variable y vaut : y = n + 0,5. On sépare le sommet racine X sur la variable y qui doit être entière. • Le sommet X0 reçoit la contrainte : y  n . Sa solution relaxée comporte n variables valant 1 et n variables valant 0. Cette solution est admissible de coût : z = 3n et l’exploration s’arrête au sommet X0 . • Le sommet X1 reçoit la contrainte : y  n + 1 . Cette contrainte impose au moins n + 1 variables à 1. Elle est incompatible de l’autre contrainte. Le sommet X1 n’a pas de solution et l’exploration s’arrête au sommet X1 . La séparation sur la variable entière supplémentaire y permet ainsi d’obtenir de manière certaine la solution binaire en évaluant seulement 3 sommets au lieu des Cn2n combinaisons possibles.

58

Techniques d’optimisation

Ajout de contraintes L’ajout de contraintes peut renforcer l’évaluation des sommets. L’objectif des contraintes supplémentaires est de réduire le domaine admissible du problème relaxé. La solution relaxée est ainsi plus proche de la solution entière, ce qui favorise l’élimination de branches. Les contraintes supplémentaires peuvent être générées par des coupes intégrales ou mixtes (méthodes de branch and cut), des combinaisons linéaires de contraintes du problème initial, ou des relations de congruence de la forme : x + y = z  [x]p + [y]p  [z]p .

Exemple 1-7 : Ajout d’une contrainte Considérons la contrainte sur 5 variables entières : 5x1 + 2x2 + 6x3 + x4 + 4x5 = 7 En prenant chaque membre modulo p, on génère des contraintes inégalité valides. • p = 2  x1 + x4  1 Cette contrainte implique que x1 et x4 ne peuvent être simultanément nuls. Sinon le premier membre serait pair alors que le second membre est impair. • p = 4  x1 + 2x2 + 2x3 + x4  3 Ces inégalités aident à fixer des variables ou à faire apparaître des infaisabilités.

1.4 Applications La programmation linéaire mixte s’applique à de nombreux problèmes. Cette section présente la formulation des applications classiques. De nombreux exemples sont détaillés dans les références [R1] et [R8].

1.4.1 Problème du voyageur de commerce Énoncé du problème Le problème du voyageur de commerce PVC (Travelling Salesman Problem, TSP) consiste à visiter n villes en passant une seule fois par chaque ville et avec retour au point de départ. L’objectif est de trouver le parcours le plus court. Les n villes sont notées S1, …, Sn. La distance de Si à Sj est notée dij. La matrice des distances de ville à ville s’appelle le distancier : D = (dij )i, j=1 à n .

Programmation linéaire mixte

59

Dans le vocabulaire de l’optimisation combinatoire, les villes et les distances forment un graphe G = (S, D) , où les villes sont les nœuds et les distances représentent les valuations des arcs. Si la matrice D est symétrique, le sens de parcours est indifférent et le graphe est non orienté. Le problème est alors un PVC symétrique. Dans le cas contraire, le problème est un PVC asymétrique. En vue de formuler le PVC comme un problème linéaire mixte, montrons quelques chemins possibles.

Exemple 1-8 : Problème du voyageur de commerce Considérons un cas à 5 villes schématisé sur la Figure 1-18. La matrice D est de taille 5  5 .

 0   d21 D =  d31   d41 d  51

d12

d13

d14

0

d23

d24

d32

0

d34

d42

d43

0

d52

d53

d54

d15   d25  d35   d45  0 

Figure 1-18 : Problème PVC à 5 villes La Figure 1-19 montre à gauche un chemin passant par les 5 villes, mais nonadmissible. Ce circuit comporte en effet 2 sous-circuits. La figure au centre montre un chemin admissible, mais non optimal. Le circuit optimal est représenté à droite.

Figure 1-19 : Chemin PVC non-admissible ou non optimal

60

Techniques d’optimisation

Formulation Le PVC se formule comme un problème linéaire mixte. • Variables La variable binaire sij vaut 1 si le trajet de Si à Sj est sélectionné, et 0 sinon. Les variables sii étant fixées à 0, il y a au total n  (n − 1) variables binaires. •

Coût

n

n

Le coût du chemin est la distance totale : z =  sijdij . i =1 j=1



Contraintes

n

Il y a un seul départ de chaque ville S i :

s

Il y a une seule arrivée à chaque ville S j :

s

ij

= 1 , i = 1 à n (n contraintes).

ij

= 1 , j = 1 à n (n contraintes).

j=1 n

i =1

Ces contraintes ne suffisent pas, car elles n’interdisent pas les sous-circuits, comme sur la Figure 1-19 gauche. Une première idée est d’interdire les sous-circuits par des contraintes explicites. Pour interdire le sous-circuit passant par les p villes Sk1, Sk2, … , Skp, on introduit la contrainte inégalité : sk1k2 + sk2k3 + + skp−1kp + skpk1  p − 1 . Le défaut de cette approche est de nécessiter un nombre exponentiel de contraintes (de l’ordre de 2n ) pour interdire tous les sous-circuits possibles. Une manière de contourner cette difficulté est d’introduire itérativement les contraintes d’interdiction. On résout le problème initial sans contrainte de souscircuit. Si la solution comporte un sous-circuit, on ajoute la contrainte correspondante et on résout le nouveau problème. En poursuivant ainsi, on finit par aboutir à une solution sans sous-circuit. Dans le cas pire, cette méthode peut conduire à ajouter un nombre exponentiel de contraintes et à résoudre les PVC correspondants. Il n’y a donc aucune garantie de résultat en un temps raisonnable. Une méthode plus efficace consiste à introduire des contraintes sur l’ordre de visite. On associe à chaque ville Sk une variable réelle tk entre 1 et n. Cette variable représente la « date de passage » à la ville Sk. La ville initiale S1 est choisie arbitrairement et sa date est fixée : t1 = 1 . Considérons alors les n  (n − 1) contraintes suivantes.

ti − t j + nsij  n −1 , i = 1 à n , j = 2 à n

(1.79)

Programmation linéaire mixte

61

Si le trajet de Si à Sj est sélectionné (sij = 1) , la contrainte donne : ti  t j − 1 . La date de passage en Si est antérieure à la date de passage en S j. Si le trajet de Si à Sj n’est pas sélectionné (sij = 0) , la contrainte donne :

ti − t j  n − 1 . Ceci est toujours vérifié, car les dates sont comprises entre 1 et n. Les contraintes (1.79) imposent donc des dates croissantes le long du trajet, sauf pour le retour en S1 (pas de contrainte pour j=1). Les variables réelles tk augmentent au moins de 1 à chaque ville visitée et sont comprises entre 1 et n. Leur valeur solution est nécessairement égale au numéro de la ville sur le chemin. Ces contraintes interdisent les sous-circuits. En effet, un chemin passant par les n villes avec sous-circuit comporte au moins deux sous-circuits, comme sur la Figure 1-19 gauche. L’un des sous-circuits ne passe pas par S1, et il ne pourra pas respecter les contraintes de dates croissantes (1.79). On peut ajouter des contraintes permettant des séparations plus efficaces dans une méthode arborescente. La contrainte supplémentaire :

n

n

 s i =1 j=1

ij

= n impose par

exemple que le nombre d’arcs sélectionnés soit exactement égal à n. La programmation linéaire mixte permet de résoudre des PVC jusqu’à 10 000 villes. La Figure 1-20 montre le problème appelé Att532 consistant à visiter les 532 plus grandes villes des États-Unis.

Figure 1-20 : Problème Att532

62

Techniques d’optimisation

Extensions La formulation du PVC se prête à diverses extensions, en particulier pour optimiser des tournées de véhicules. La fonction coût peut représenter la consommation ou le temps de trajet : m

p

z =  sijcij où cij est le coût (consommation, temps) du trajet de S i à Sj i =1 j=1

On peut ajouter des contraintes sur le trajet, comme par exemple : - imposer un ordre de visite entre la ville S i et la ville Sj : ti  t j ; - limiter la durée totale :

n

n

 s T  T i =1 j=1

ij ij

où Tij est la durée du trajet de Si à Sj.

max

1.4.2 Problème d’affectation Énoncé du problème Le problème d’affectation (Assignment Problem) consiste à affecter m ressources à p tâches en minimisant le coût total. Le coût d’affectation de la ressource i à la tâche j est cij . Le nombre de tâches à réaliser est inférieur ou égal au nombre de ressources disponibles : p  m. Cette hypothèse n’est pas limitante : si p > m, on peut traiter le problème d’affectation des tâches aux ressources. Formulation Le problème d’affectation se formule comme un problème linéaire mixte. • Variables La variable binaire sij vaut 1 si la ressource i est affectée à la tâche j, et 0 sinon. Il y a au total m  p variables binaires. •

Coût m

p

Le coût total des affectations est : z =  sijcij . i =1 j=1



Contraintes

La tâche j est effectuée une seule fois :

m

s i =1

La ressource i est affectée une fois au plus :

ij

p

s j=1

ij

= 1 , j = 1 à p (p contraintes).

 1 , i = 1 à m (m contraintes).

Programmation linéaire mixte

63

En introduisant des variables d’écart (yi )i=1 à m , le problème se formule comme : m

p

min z =  sijcij

sij ,yi U

i =1 j=1

m j =1 à p  sij = 1 , i =1 sous  p  sij + yi = 1 , i = 1 à m  j=1

(1.80)

Les variables sij étant binaires, les variables yi le sont également. Les contraintes (1.80) sont de la forme : Ax = b , où la matrice A ne comporte que des 0 ou des 1 et le vecteur b a toutes ses composantes égales à 1. Cette forme particulière de matrice facilite la résolution du problème (1.80). Résolution Une matrice rectangulaire A est unimodulaire si le déterminant de toute sous matrice carrée extraite de A vaut −1, 0 ou 1. On démontre les propriétés suivantes. • Une matrice dont les éléments valent −1, 0 ou 1, et dont chaque colonne contient au maximum deux éléments non nuls est unimodulaire. • Si A est unimodulaire, alors toute sous-matrice B de A est aussi unimodulaire • Si B est une matrice carrée unimodulaire et si b est un vecteur d’entiers, alors la solution du système Bx = b est entière. On montre que la matrice A du problème d’affectation (1.80) est unimodulaire. Considérons alors le problème relaxé où les variables sij , yi sont réelles positives, en notant les m  p + m variables : x = (sij , yi ) et les m + p contraintes : Ax = b. La solution de ce problème linéaire continu comporte m + p variables de base xB associées à une sous-matrice B et (m − 1)  p variables hors-base nulles associées à une sous-matrice N. Les variables de base sont données par :

Ax = BxB + NxN = b  BxB = b car xN = 0

(1.81)

La matrice B est unimodulaire (sous-matrice de A) et le vecteur b est entier (composantes égales à 1). La solution xB du problème relaxé est donc entière. Elle est obtenue directement par une méthode standard de programmation linéaire.

64

Techniques d’optimisation

Extensions Le problème d’affectation (1.80) suppose les tâches indépendantes et associe une ressource par tâche. On peut adapter la formulation à des problèmes plus complexes, dont les problèmes de tâche de coût maximal, de recouvrement ou d’ordonnancement présentés ci-dessous. Extension 1 : tâche de coût maximal Supposons que l’on cherche à minimiser le coût de la tâche la plus coûteuse, au m

lieu du coût total. Le coût de la tâche j est : zj =  sijcij . On cherche à minimiser : i =1

m

z = max z j = max  sijcij j=1 à p

j=1 à p

(1.82)

i =1

Cette fonction n’est pas linéaire. Pour formuler un problème linéaire, on introduit une variable réelle z et p contraintes inégalité zj  z .

m  sij = 1 , j = 1 à p  i=p1  min z sous  sij  1 , i = 1 à m z,sij  j=1 m  sijcij  z , j = 1 à p  i=1

(1.83)

Les p premières égalités contrôlent la réalisation de chaque tâche. Les m inégalités suivantes contrôlent l’affectation de chaque ressource. Les p dernières inégalités assurent que la fonction coût z représente au moins la tâche la plus coûteuse. Le problème comporte m  p variables binaires sij et une variable réelle z. Extension 2 : problème de recouvrement Supposons que les tâches peuvent se partager entre ressources selon les capacités de chacune. Il s’agit d’un problème de recouvrement de p tâches par m ressources. Les applications concernent par exemple l’implantation de sites de distribution devant approvisionner plusieurs clients. La variable sij est la capacité de la ressource i affectée à la tâche j. Cette variable est réelle ou entière, selon la nature du problème. Le coût total des affectations est :

m

p

z =  sijcij . i =1 j=1

Programmation linéaire mixte

65 m

La tâche j requiert une capacité t j :

s

La ressource i a une capacité ri :

s

ij

= tj , j = 1 à p

ij

 ri , i = 1 à m .

i =1

p

j=1

Le problème de recouvrement se formule comme : m

p

min z =  sijcij sij

i =1 j=1

m  sij = t j , j = 1 à p sous  i=p1  sij  ri , i = 1 à m  j=1

(1.84)

Le problème linéaire (1.84) est continu ou mixte selon que les capacités sij sont réelles ou entières. Extension 3 : problème d’ordonnancement Supposons que les tâches nécessitent une certaine durée et que certaines tâches ne doivent pas se chevaucher (tâches disjointes). Il s’agit alors d’un problème d’ordonnancement des tâches. Les applications concernent les emplois du temps, l’atterrissage d’avions, les correspondances, les télécommunications … La variable réelle t j représente la date de début de la tâche j de durée dj fixée. La variable binaire u jk vaut 1 si la tâche j est réalisée avant la tâche k, 0 sinon. Le problème comporte p variables réelles t j et p  p variables binaires u jk . Si les tâches j et k doivent être disjointes, on impose une contrainte d’ordre aux variables t j , tk et u jk .

u jk + ukj = 1 u (t + d )  t , j = 1 à p , k = 1 à p k  jk j j

(1.85)

La fonction coût est généralement la durée totale à minimiser : z = max(t j + d j ) . j

Les contraintes font apparaître des produits de variables qui se linéarisent par les techniques de la section 1.1.2. La fonction coût se linéarise par une variable réelle z soumise aux contraintes : t j + dj  z , j = 1 à p . On peut appliquer des contraintes temporelles similaires à (1.85) sur les ressources ou des contraintes d’espacement temporel minimal entre tâches.

66

Techniques d’optimisation

1.4.3 Problème de coloration Énoncé du problème Un graphe est défini par un ensemble de nœuds et d’arêtes reliant les nœuds. Le problème de m-coloration consiste à colorer le graphe avec m couleurs, sachant que des nœuds adjacents (reliés par une arête) doivent être de couleurs différentes. Formulation Le problème de coloration se formule comme un problème linéaire mixte. On note ejk la variable binaire valant 1 si le nœud j est adjacent au nœud k, et 0 sinon. • Variables La variable binaire sij vaut 1 si la couleur i est attribuée au nœud j, et 0 sinon. Il y a au total m  n variables binaires. •

Contraintes

Le nœud j reçoit une seule couleur :

m

s i =1

ij

= 1 (n contraintes).

Les nœuds j et k adjacents ont des couleurs différentes : ejk (sij + sik )  1 . Le problème de m-coloration consiste à chercher une solution admissible avec m couleurs. On considère un coût constant, car il n’y a pas de critère à minimiser.

m j =1 à n  sij = 1 , min z = 1 sous  i =1 sij ejk (sij + sik )  1 , i = 1 à m , j = 1 à n , k = 1 à n 

(1.86)

On s’intéresse généralement au nombre minimal de couleurs nécessaire pour colorer le graphe. Ce nombre minimal mc est le nombre chromatique du graphe. Un minorant de mc peut être trouvé en résolvant le problème de la clique maximale présenté ci-dessous. Problème de clique Une clique du graphe G est un sous-graphe complet, c’est-à-dire un sous-graphe dont tous les nœuds sont reliés par des arêtes. Si G admet une clique à p nœuds, alors il faut au moins p couleurs pour colorer G, car chaque nœud est relié à tous les autres.

Programmation linéaire mixte

67

Pour trouver un minorant de mc, on cherche la plus grande clique de G, appelée clique de cardinal maximal. Ce problème se formule comme suit. • Variables La variable binaire si vaut 1 si le nœud i appartient à la clique C, et 0 sinon. Il y a au total n variables binaires. • Contraintes Des nœuds j et k non adjacents ne peuvent appartenir simultanément à la clique. Ces contraintes se mettent sous la forme : (1 − ejk )(sj + sk )  1 . Le problème de la clique de cardinal maximal se formule comme : n

max z =  si si

i =1

sous (1 − ejk )(sj + sk )  1 , j = 1 à n , k = 1 à n

(1.87)

Ensemble stable Un autre problème d’intérêt pratique est le problème de l’ensemble stable de cardinal maximal. Un ensemble stable S du graphe G est un sous-graphe dont aucun nœud n’est relié. Il s’agit donc du problème « inverse » de la clique. Le problème de l’ensemble stable de cardinal maximal se formule comme celui de la clique de cardinal maximal, en remplaçant simplement e jk par 1 − ejk . n

max z =  si si

i =1

sous ejk (sj + sk )  1 , j = 1 à n , k = 1 à n

La Figure 1-21 illustre les problèmes de coloration et de clique maximale.

Figure 1-21 : Coloration et clique maximale

(1.88)

68

Techniques d’optimisation

1.4.4 Problème de flot Énoncé du problème Un réseau est un graphe défini par un ensemble de nœuds et d’arcs (orientés) reliant les nœuds. La capacité et le coût de l’arc allant du nœud i au nœud j sont notés respectivement fij et cij . Les nœuds s et t sont respectivement le point d’entrée (source) et de sortie (puits) du réseau. L’objectif est de faire passer un flot  donné de la source au puits en minimisant le coût total. L’ensemble des arcs est représenté par la matrice d’incidence nœuds-arcs. Cette matrice A comporte n lignes (n = nombre de nœuds) et m colonnes (m = nombre d’arcs). Si l’arc k va du nœud i au nœud j, les valeurs en colonne k sont nulles sauf aik = +1 (nœud de départ) et a jk = −1 (nœud d’arrivée). La matrice d’incidence est unimodulaire (section 1.4.2), car ses éléments sont égaux à −1, 0 ou 1, et chaque colonne comporte au maximum deux éléments non nuls. Le vecteur des coûts c comporte m éléments représentant les coûts des arcs.

Exemple 1-9 : Matrice d’incidence nœuds-arcs d’un réseau Considérons à réseau à 6 nœuds et 9 arcs de la Figure 1-22, où les coûts des arcs sont indiqués sur les flèches. La matrice d’incidence A est de taille 6  9 , le vecteur des coûts c comporte 9 éléments. arcs

2 −5 2 −6 3−4 3−5 4 − 6 5 −6 noeuds − 1 −1 0 0 0 0 0 0 0  v1  1 0 −1 −1 −1 0 0 0 0  v2 0 1 0 0 0 −1 −1 0 0  v3  0 0 1 0 0 1 0 −1 0  v4 0 0 0 1 0 0 1 0 −1 v5  0 0 0 0 1 0 0 1 1  v6

1− 2

    A=    

1−3

2−4

1− 2 1− 3 2 − 4

c=(3 1

3

2 − 5 2 − 6 3 − 4 3 −5 4 − 6 5 − 6

5 9

Figure 1-22 : Réseau à 6 nœuds et 9 arcs

2 3 5 2)

Programmation linéaire mixte

69

Formulation Le problème de flot peut se formuler comme un problème linéaire mixte. On note eij la variable binaire valant 1 s’il existe un arc du nœud i au nœud j, et 0 sinon. •

Variables

La variable xij est le flot sur l’arc du nœud i au nœud j. Cette variable est réelle ou entière selon la nature du problème. Il y a au total m variables xij « utiles » associées aux arcs du réseau. •

Coût

n

Le coût total du flot à travers le réseau est : z =  eijcij xij . i, j=1



Contraintes

Le flot sur l’arc ij est limité par sa capacité : xij  fij . Le flot se conserve en chaque nœud (loi de Kirchhoff). Le flot arrivant au nœud j est égal au flot partant : Le flot partant de la source s vaut  :

n

n

i =1

k =1

 eijxij =  ejk x jk . n

e k =1

Si le graphe est peu dense (m

x = .

sk sk

n2 ) , on économise de la place mémoire en ne

gardant que les variables xij associées aux arcs existants. Le problème se formule de manière compacte en utilisant la matrice d’incidence nœuds-arcs du réseau.

min z = cT x sous x

x = (xij )  f = (fij ) 

m m



Ax = b xf

(1.89)

est le vecteur des variables associées aux arcs. et c = (cij ) 

m

sont les vecteurs des capacités et coûts des arcs.

Les contraintes Ax = b expriment la conservation du flot en chaque nœud ainsi que le flot − partant de la source et le flot + arrivant au puits. Le vecteur

b

m

est défini par :

 source bT =  − 

noeud1

0

noeud m

0

puits  +  

(1.90)

70

Techniques d’optimisation

Le problème linéaire (1.89) est en variables entières si les flots xij sur chaque arc sont des quantités entières. La matrice des contraintes étant unimodulaire, la solution du problème relaxé sera directement entière. Extensions La formulation du problème de flot peut s’adapter à divers problèmes. Extension 1 : chemin de coût minimal En fixant le flot  = 1 et en supprimant les contraintes sur les capacités, le problème (1.89) donne le chemin de coût minimal entre la source et le puits. Les coûts des arcs peuvent représenter les distances ou les temps de parcours entre nœuds. La matrice des contraintes A étant unimodulaire, la solution est directement entière et les variables xij prennent la valeur 0 ou 1. Extension 2 : flot maximal Pour chercher le flot maximal pouvant passer de la source au puits, on ajoute la variable  qui devient la fonction coût. Les coûts cij des arcs ne sont pas utilisés.

max z =  sous x,



Ax = b xf

(1.91)

Extension 3 : sources et puits multiples Supposons que le réseau comporte plusieurs sources et plusieurs puits. La source si émet un flot i et le puits t j reçoit un flot j . La somme des flots partant des sources est égale à la somme des flots arrivant aux puits :  =  i =  j . si

tj

On définit une super-source  reliée à chaque source si par un arc de capacité i . Le flot partant de la super-source est :  =  i . si

On définit un super-puits  relié à chaque puits t j par un arc de capacité j . Le flot arrivant au super-puits est :

 =  j . tj

On se ramène ainsi à un problème de flot simple de valeur  entre la super-source et le super-puits.

Programmation linéaire mixte

71

1.4.5 Problème du sac à dos Énoncé du problème On dispose d’un ensemble d’objets avec leurs volumes et leurs prix. Il faut choisir les objets à emporter dans un sac à dos de volume donné en maximisant le prix. L’objet i a pour volume ai et pour prix ci . Le sac à dos est de volume b. Formulation Le problème du sac à dos peut se formuler comme un problème linéaire mixte. • Variables La variable binaire xi vaut 1 si l’objet i est sélectionné, et 0 sinon. Coût



n

Le prix total des objets choisis est : z =  ci xi . i =1

Contraintes



Les objets choisis doivent rentrer dans le sac :

n

a x  b . i =1

i i

Le problème du sac à dos dit monodimensionnel se formule comme :

 aT x  b (1.92) max z = cT x sous  n x x  U On peut construire une bonne solution par une méthode gloutonne en se basant c sur l’utilité ui de chaque objet, définie comme le rapport prix/volume : ui = i . ai Cette solution permet d’éliminer des branches dans une méthode arborescente.

Exemple 1-10 : Solution gloutonne du problème de sac à dos Considérons un problème de sac à dos à 8 objets : max z = 14x1 + 13x2 + 15x3 + 10x4 + 4x5 + 13x6 + 10x7 + 10x8 x

sous 7x1 + 7x2 + 10x3 + 7x4 + 3x5 + 10x6 + 8x7 + 9x8  30

Ces 8 objets sont déjà numérotés par ordre d’utilité décroissante.

72

Techniques d’optimisation

La solution gloutonne x = (1 1 1 0 1 0 0 0) est de prix z = 46 pour un volume de 27. x = (1 1 0 1 0 0 1 0) est de prix z = 47 pour un La solution exacte volume de 29.

Extensions La formulation s’adapte au cas où l’on peut choisir plusieurs objets du même type (la variable xi est alors un entier) et au problème de plusieurs sac à dos à remplir. Ce problème du sac à dos dit « multidimensionnel » se formule comme suit. • Variables La variable binaire xij vaut 1 si l’objet i est placé dans le sac à dos j, et 0 sinon. Il y a au total n  m variables binaires (n = nombre d’objets, m = nombre de sacs). •

Coût

n  m  Le prix total des objets choisis est : z =  ci   xij  . i =1  j=1 



Contraintes

n

Le volume du sac à dos j est bj :

a x

L’objet i se trouve dans au plus un sac à dos :

x

i =1 m

j=1

i ij

ij

 bj .

1 .

Pour améliorer les séparations (méthode arborescente), on ajoute les n variables m

si =  xij . La variable binaire si vaut 1 si l’objet i est sélectionné, et 0 sinon. j=1

Le problème du sac à dos multidimensionnel se formule comme :

n  ai xij  bj , j = 1 à m max z =  cisi sous  im=1 avec x Unm , sUn (1.93) x ,s i =1  xij = si , i = 1 à n  j=1 Cette formulation s’applique à des problèmes de placement (sauvegarde de fichiers sur disques), des problèmes de chargement (remplissage de véhicules de livraison) ou des problèmes de découpe (minimisation des chutes). n

Programmation linéaire mixte

73

1.5 Problème quadratique Les techniques de programmation linéaire mixte s’étendent aux problèmes où la fonction coût est quadratique convexe.

1.5.1 Méthode arborescente La forme standard d’un problème quadratique en variables binaires est la suivante.

Ax = b 1 (1.94) min z = xT Qx + cT x sous  n x 2  x  U , U = 0 ; 1 On peut toujours se ramener au cas où la matrice Q est symétrique. 1 T 1 1 T T T T T En posant Q' = (Q + Q ) , on a en effet : x Q'x = x Qx + x Q x = x Q x . 2 2 2 Une première approche consiste à appliquer des techniques de linéarisation (section 1.1.2) pour se ramener à un problème linéaire. Cette approche a l’inconvénient d’augmenter le nombre de variables. Elle n’est pas efficace sur des problèmes de grandes dimensions. Une seconde approche consiste à appliquer directement une méthode arborescente similaire à celles utilisées pour les problèmes linéaires (section 1.3) : - on explore l’arborescence en fixant progressivement les variables à 0 ou 1 ; - la solution relaxée en chaque nœud donne un minorant du coût de la branche ; - on élimine les branches d’évaluation supérieure à la meilleure solution connue. Cette approche est développée dans cette section. Elle demande de savoir résoudre efficacement le problème relaxé obtenu en remplaçant les contraintes d’intégrité par des contraintes de positivité.



1 Ax = b min z = xT Qx + cT x sous x x0 2

(1.95)

Le problème relaxé étant moins contraint que le problème initial, sa solution est meilleure et donne un minorant du coût minimal du problème (1.94). Avant d’aborder la résolution du problème relaxé, illustrons sur un exemple la comparaison entre la solution entière et la solution relaxée d’un problème quadratique.

74

Techniques d’optimisation

Exemple 1-11 : Solution du problème quadratique relaxé Considérons le problème à 2 variables entières :

min z = 2x12 + 4x22 x1 ,x2

 x1 + x2  5  x1  2  sous  x2  1 2x1 + x2  10.5 x , x   1 2 La solution relaxée est :

x1 =

10 5 100 , x2 = → zr = 3 3 3

La solution entière est : x1 = 3 , x2 = 2 → z* = 34 Figure 1-23 : Solution relaxée et solution entière La Figure 1-23 montre les lignes de niveau du coût (pointillés), le domaine admissible (grisé), les solutions entières (ronds) et la solution relaxée (carré). Intéressons-nous maintenant à la résolution du problème relaxé (1.95). Ce problème relaxé est mis sous forme standard :



1 b − Ax = 0 min z = xT Qx + cT x sous x −x  0 2

(1.96)

Le lagrangien est défini avec des multiplicateurs  pour les contraintes égalité et des multiplicateurs  pour les contraintes inégalité.

1 L(x, , ) = xTQx + cT x + T (b − Ax) − T x 2 La solution du problème relaxé vérifie les conditions KKT d’ordre 1. x L = 0   L = 0  L  0

Qx + c − AT  −  = 0   Ax = b  x  0

(1.97)

(1.98)

Programmation linéaire mixte

75

Le hessien du lagrangien étant constant, la condition KKT d’ordre 2 se réduit à : (1.99)

xx L = Q  0

Une condition suffisante d’optimalité est que la matrice Q soit semi-définie positive. Dans ce cas, la fonction coût est convexe et le problème relaxé admet un unique minimum global donné par les conditions KKT (1.98). Ce minimum peut être obtenu en temps polynomial par un algorithme de point intérieur. Dans le cas contraire, les conditions KKT ne suffisent pas à garantir l’optimalité globale d’une solution et il n’existe pas d’algorithme assurant de trouver ce minimum en un temps raisonnable. En vue d’une méthode arborescente basée sur la résolution de problème relaxé, il est nécessaire de rendre le problème convexe afin de pouvoir le résoudre de manière sûre et rapide.

1.5.2 Convexification La convexification consiste à transformer le problème quadratique (1.96) en un problème convexe ayant les mêmes solutions binaires. Les transformations se basent sur la propriété :

x 0 ; 1  x2 − x = 0

(1.100) 2

On peut ajouter des termes de la forme (x − x) à la fonction coût quadratique, sans changer les valeurs que celle-ci prend pour des variables binaires. Les deux techniques de convexification sont la transformation des produits et l’ajout d’une matrice diagonale. Transformation des produits

n

T La partie quadratique de la fonction coût est de la forme : q = x Qx =  qijxi x j . i, j=1

1  x  0   x      ne sont pas convexes, 2  y   0  y  car les valeurs propres de la matrice sont  . Les termes de la forme : t(x, y) =  xy =

Chaque terme t(x, y) est remplacé par tc (x, y) défini selon le signe de  .

1 1  2  tc (x, y) = + 2 (x + y) − 2 (x + y) si   0  1 1  tc (x, y) = − (x − y)2 + (x + y) si   0 2 2 

(1.101)

76

Techniques d’optimisation

Le terme tc (x, y) est bien convexe (partie quadratique avec un coefficient positif). Il prend les mêmes valeurs que t(x, y) lorsque x et y sont binaires.

 x  U  x2 = x 2 2 2 En effet : (x  y) = x + y  2xy = x + y  2xy car  2 y  U  y = y et les termes résultants de degré 1 s’éliminent dans l’expression de tc (x, y) . La transformation (1.101) est appliquée à chaque terme de la fonction coût en fonction du signe du coefficient. On obtient en développant : n

q x x

i, j=1

ij i

j

=

q x x

qij 0

ij i

q x x

+

j

qij 0

ij i

j

2 2 1 1 qij  + ( xi + x j ) − ( xi + x j )  +  qij  − ( xi − x j ) + ( xi + x j )     2 qij 0  2 qij 0  1 1 = qij  + xi2 + x2j − ( xi + x j )  +  qij  − xi2 + x2j + ( xi + x j )      2 qij 0 2 qij 0  1 1 +  qij  2xi x j  +  qij  2xi x j  2 qij 0 2 qij 0

=

(

)

(

)

d’où l’expression du coût :

q =

1 qij  + xi2 + x2j − ( xi + x j )    2 qij 0  1 +  qij  − xi2 + x2j + ( xi + x j )  +  2 qij 0 

(

(

)

)

(1.102)

n

q x x

i, j=1

ij i

j

Le problème quadratique avec la fonction coût (1.102) est convexe et a les mêmes solutions binaires que le problème initial.

Exemple 1-12 : Convexification par transformation des produits La fonction quadratique : z = 3x1 − 2x2 + x3 + 2x4 − 4x1x3 + 2x1x4 − 4x2 x3 + 6x3x4 n’est pas convexe. En appliquant la transformation (1.101), on obtient :

z' = − 4x2 − 6x3 − 2x4 + 3x12 + 2x22 + 7x32 + 4x42 − 4x1x3 + 2x1x4 − 4x2 x3 + 6x3x4

La fonction z’ est convexe et prend les mêmes valeurs que z pour des variables binaires.

Programmation linéaire mixte

77

Ajout d’une matrice diagonale La matrice Q symétrique a ses valeurs propres réelles et admet une base orthogonale de vecteurs propres. Notons D la matrice diagonale des valeurs propres de Q et P la matrice orthogonale (P−1 = PT ) de passage dans cette base. (1.103)

Q = PDPT

Supposons que Q n’est pas définie positive et considérons la matrice Q' = Q + I où   m et m est la valeur propre la plus négative de Q. On a alors :

Q' = Q + I = PDPT + PPT = P(D + I)PT = PD'PT

(1.104)

La matrice D’ est diagonale et a tous ses termes positifs, car   m . La matrice Q’ est ainsi définie positive et admet la même base de vecteurs propres que Q. 2 La fonction coût est rendue convexe en ajoutant des termes de la forme (x − x). n

n

n

i =1

i, j=1

i =1

q' = q +  (xi2 − xi ) =  qijxi x j +  (xi2 − xi )

(1.105)

La nouvelle fonction coût quadratique q’ est convexe et prend les mêmes valeurs que q lorsque les variables sont binaires.

Exemple 1-13 : Convexification par ajout d’une matrice diagonale

1 0  1 2 2 La fonction : z = (x1 − x2 ) de matrice Q =   n’est pas convexe. 2  0 −1 

1 2

2 2 2 2 En choisissant   m = −1 , la fonction : z' = (x1 − x2 ) + (x1 − x1 ) + (x2 − x2 )

est convexe et prend les mêmes valeurs que z pour des variables binaires.

Les techniques de convexification précédentes permettent de résoudre le problème relaxé de manière sûre et rapide, par exemple par une méthode de point intérieur. L’efficacité d’une méthode de séparation-évaluation dépend de la qualité de la solution relaxée. Un coût relaxé grand (et donc proche du coût de la solution binaire) favorise l’élimination des branches par comparaison à la meilleure solution admissible connue. Il faut donc essayer de transformer le problème quadratique pour maximiser le coût de la solution relaxé. Ce processus de reconvexification de la fonction coût est utile, même si celle-ci est déjà convexe.

78

Techniques d’optimisation

On peut à cet effet utiliser les contraintes linéaires du problème (1.94) :

n  aijx j = bi , i = 1 à m  j=1  x  0 ; 1  i

(1.106)

pour ajouter des termes convexes à la fonction coût : n m  n  n z ' = z +  ki xi   akjx j − bk  +  ui xi2 − xi i =1 k =1  j=1  i=1

(

)

(1.107)

avec des coefficients ki et ui choisis pour maximiser le coût relaxé. Aucune méthode de convexification n’est systématiquement meilleure que les autres. Le choix est donc à adapter au problème quadratique à résoudre. L’exemple suivant compare la qualité du coût relaxé obtenu avec les deux techniques de convexification précédentes.

Exemple 1-14 : Comparaison des deux méthodes de convexification

 x1 + x2  b 2 2 avec b  1 . Considérons le problème : min z = x1 − x2 sous  x1 ,x3  x1 , x2  0;1 1 0  2 2 La fonction quadratique : z = x1 − x2 de matrice Q =   n’est pas convexe.  0 −1 

x = 0

→ zb = −1 (par examen des 4 combinaisons). La solution binaire est :  1  x2 = 1

x = 0

→ zr = −b2 La solution relaxée s’obtient à partir des conditions KKT :  1 x = b  2 Comparons les solutions relaxées des deux méthodes de convexification.

Méthode 1 : transformation des produits On remplace chaque terme par une expression convexe équivalente en variables binaires.

1 (2x1 )2 − 2x1 2 1 → − (2x2 ) 2

x12 → − x22

(

) 

2  → zc1 = 2x1 − x1 − x2  

Programmation linéaire mixte

79

x + x  b

2 2 Le problème convexifié relaxé est : min zc1 = 2x1 − x1 − x2 sous  1 x1 ,x2  x1 , x2  0

Le lagrangien du problème est : L(x1 , x2 , ) = 2x12 − x1 − x2 + (x1 + x2 − b) (en traitant à part les contraintes x1,x2  0 )

 4x1 − 1 +  = 0  x1 = 0   − 1 +  = 0    = 1 → zc1 = − b Les conditions KKT donnent :  (x + x − b) = 0 x = b  1 2  2 Méthode 2 : ajout d’une matrice diagonale La valeur propre la plus négative de la forme quadratique est −1. 2 2 On ajoute à la fonction coût les termes a(x1 − x1 ) + a(x2 − x2 ) avec a  1 . Le problème convexifié relaxé est :

x + x  b min zc2 = (a + 1)x12 + (a − 1)x22 − ax1 − ax2 sous  1 2 x  x1 , x2  0 Le lagrangien du problème est (en traitant à part les contraintes x1,x2  0 ) :

L(x1 , x2 , ) = (a + 1)x12 + (a − 1)x22 − ax1 − ax2 + (x1 + x2 − b)  a −  x1 = 2(a + 1)   2(a + 1)x1 − a +  = 0  a −  Les conditions KKT donnent : 2(a − 1)x2 − a +  = 0   x2 = 2(a − 1)  (x + x − b) = 0  1 2    a(a − )  − b = 0   2    a −1 La condition de complémentarité (3e équation) donne deux cas possibles.

a a a3 , x2 = → zc2 = − 2(a + 1) 2(a − 1) 2(a2 − 1) Les variables x1 et x2 sont positives, car a > 1. La solution existe dans tous les cas. •

Premier cas :  = 0 → x1 =

• Deuxième cas : x1 + x2 − b = 0 La solution est :

a2 (1 − b) + b b(a − 1) b(a + 1) , x1 = , x2 = a 2a 2a Les variables x1 et x2 sont positives, car a > 1. =

1  1 → zc2 = b2  a −  − ab 2  a

80

Techniques d’optimisation

a2 (1 − b) + b b  0  a2  a b −1 La solution n’existe que pour des valeurs de a donnant un multiplicateur positif. Le multiplicateur  doit être positif :  =

Le coût relaxé est la meilleure des deux solutions ci-dessus.

  a3 1  1 zc2 = min  − 2 , b2  a −  − ab  2  a  2(a − 1)  On peut maintenant comparer les coûts relaxés donnés par les 2 méthodes en fonction de la valeur de a. Supposons par exemple que b = 1,5 et a = 2 ou 4. Rappelons que l’on souhaite un coût de la solution relaxé le plus grand possible. Le coût relaxé avec la méthode 1 vaut : zc1 = −b = −1,5 .

a3 b 2 car a  . 2 2(a − 1) b −1 Pour a = 2 , on obtient zc2 = −1,33  zc1 et la méthode 2 est plus efficace. Pour a = 4 , on obtient zc2 = −2,13  zc1 et la méthode 1 est plus efficace. Le coût relaxé avec la méthode 2 vaut : zc2 = −

1.5.3 Problème d’affectation quadratique Énoncé du problème Le problème d’affectation quadratique illustré sur la Figure 1-24 consiste à affecter n objets à n sites sachant que : - les objets i et j échangent un flot fixé fij ; - les sites u et v sont à une distance fixée duv ;

- le coût est le produit du flot par la distance fijduv .

Figure 1-24 : Problème d’affectation quadratique

Programmation linéaire mixte

81

Formulation Ce problème se formule comme un problème linéaire mixte. • Variables La variable binaire siu vaut 1 si l’objet i est affecté au site u, et 0 sinon. Il y a au total n  n variables binaires. •

Coût

Le coût total des affectations est : z = •

Contraintes

L’objet i est affecté à un seul site : Le site u reçoit un seul objet :

n



i, j,u,v =1

n

siu s jv fijduv .

s

iu

=1 , i =1 à n .

s

iu

=1 , u =1 à n .

u =1 n

i =1

Le coût est une fonction quadratique des variables binaires. Pour résoudre ce problème par une méthode arborescente, on peut soit appliquer une technique de linéarisation pour se ramener à un problème linéaire, soit traiter directement le problème quadratique après convexification.

1.6 Conclusion 1.6.1 Les points essentiels •

Différentes techniques de linéarisation permettent de transformer un problème continu non linéaire en problème linéaire en variables mixtes.



Il est possible de réduire fortement la dimension du problème mixte (fixation de variables, élimination de contraintes) avant de le résoudre.



Les méthodes de coupe consistent à ajouter itérativement des contraintes au problème relaxé afin d’aboutir à une solution entière. Ces méthodes sont utilisées en conjonction avec les méthodes arborescentes.



Les méthodes arborescentes explorent l’arbre des combinaisons possibles en éliminant le plus tôt possible les branches ne pouvant pas contenir la solution optimale. Les stratégies d’exploration diffèrent par le choix du nœud à séparer et le choix de la variable à fixer.



La programmation linéaire mixte s’applique à de nombreux problèmes pratiques (voyageur de commerce, affectation, flot …).

82

Techniques d’optimisation

1.6.2 Pour aller plus loin •

Programmation mathématique (M. Minoux, Lavoisier 2008, 2 e édition) Le chapitre 2 présente les résultats théoriques de la programmation linéaire, la méthode du simplexe et du simplexe dual. Le chapitre 7 est consacré à la programmation linéaire en nombres entiers. Les méthodes arborescentes et les méthodes de coupes sont détaillées de manière très claire avec leurs justifications théoriques.



Optimisation discrète (A. Billionnet, Dunod 2007) Le livre est consacré aux problèmes d’optimisation en variables mixtes. Les chapitres 1 et 2 introduisent les principes de la programmation linéaire et quadratique en nombres entiers. Les chapitres 3, 4 et 6 détaillent les techniques de formulation et de linéarisation permettant de se ramener à un problème linéaire en variables mixtes, ainsi que les prétraitements destinés à réduire la dimension du problème. Le chapitre 5 présente plusieurs applications pratiques avec leur formulation et leur résolution par des logiciels commerciaux. De très nombreux exemples sont détaillés pour illustrer la formulation des problèmes et leur résolution numériques. Ce livre très pédagogique et très fourni est à recommander aux utilisateurs de la programmation linéaire.



Programmation linéaire (C. Guéret, C. Prins, M. Sevaux, Eyrolles 2003) Le livre a pour objectif de montrer comment utiliser la programmation linéaire dans les applications pratiques. Chaque chapitre est consacré à un type particulier d’application (ordonnancement, planification, chargement, transport, télécommunication, emploi du temps …). L’accent est mis sur la formulation et l’utilisation de logiciels commerciaux.

Optimisation discrète

83

2. Optimisation discrète L’optimisation discrète concerne les problèmes à variables entières. La difficulté réside dans le nombre exponentiel de combinaisons et l’absence de conditions d’optimalité comme il en existe en optimisation continue. Bien que les problèmes combinatoires puissent se résoudre par la programmation linéaire, il est plus efficace d’appliquer des algorithmes spécifiques qui font l’objet de ce chapitre. La section 1 introduit les notions associées aux graphes et à la complexité. De nombreux problèmes combinatoires peuvent se formuler comme la recherche d’un parcours dans un graphe. Le formalisme des graphes unifie les approches et permet de développer des algorithmes spécifiques à un problème donné. La section 2 présente les problèmes de chemin. L’objectif est de trouver dans un graphe le chemin de coût minimal entre un point de départ et un point d’arrivée. Les principaux algorithmes de chemin sont l’algorithme de Ford, l’algorithme de Bellman et les algorithmes de Dijkstra et A* qui sont les plus efficaces. La section 3 présente les problèmes d’ordonnancement. Ces problèmes peuvent être considérés comme des problèmes de chemin particulier. Les méthodes standards sont la méthode PERT et la méthode MPM. La section 4 présente les problèmes de flot. Les deux problèmes standards sont la recherche du flot maximal pouvant traverser le réseau et la recherche du flot maximal de coût minimal (lorsque plusieurs solutions de flot maximal existent). Ces problèmes sont résolus respectivement par les algorithmes de Ford-Fulkerson et de Roy-Busacker-Gowen. La section 5 présente les problèmes d’affectation. Ces problèmes peuvent être considérés comme des problèmes de flot dans un graphe biparti ressources-tâches ou peuvent être résolus par la méthode hongroise. La section 6 présente des heuristiques adaptées aux différents problèmes. Ces méthodes empiriques dites gloutonnes produisent une solution approchée de qualité non garantie. Elles offrent l’avantage de la rapidité lorsque le problème est trop complexe pour être résolu de manière exacte et peuvent servir dans certains cas à initialiser les méthodes arborescentes présentées au chapitre 1.

84

Techniques d’optimisation

2.1 Problème combinatoire Les problèmes d’optimisation discrète ou combinatoire peuvent pour la plupart se modéliser comme des problèmes de parcours de graphes. Cette section basée sur la référence [R12] introduit les notions principales associées aux graphes et à la complexité des problèmes.

2.1.1 Graphe Un graphe est un ensemble de nœuds (nodes) ou sommets (vertices) dont certains sont reliés entre eux par des arêtes (edges) ou arcs (arcs). On utilise le terme arête si le graphe est non orienté et le terme arc si le graphe est orienté. Une arête est un couple de nœuds non ordonné, noté avec des crochets : e = [v, w]. Un arc est un couple de nœuds ordonné, noté avec des parenthèses : e = (v, w) . Deux nœuds reliés entre eux sont voisins ou adjacents. Une boucle relie un nœud à lui-même. Pour un arc e = (v, w) , on utilise le vocabulaire suivant : - v est l’extrémité initiale ou origine de l’arc e, et v est le prédécesseur de w ; - w est l’extrémité terminale ou extrémité de l’arc e, et w est le successeur de v ; - l’arc e partant de v est incident extérieurement à v ; - l’arc e arrivant en w est incident intérieurement à w. Il peut exister plusieurs liaisons entre deux nœuds. La Figure 2-1 montre de gauche à droite un arc, une arête, une boucle et une liaison triple entre deux nœuds.

Figure 2-1 : Arc, arête, boucle L’ensemble des n nœuds ou sommets est noté : V = (vi )i=1 à n . L’ensemble des m arêtes ou arcs est noté :

E = (ek )k=1 à m .

Le graphe G est défini par les deux ensembles V et E : G = (V, E) . Remarque de vocabulaire On utilise souvent le terme « arc », même pour un graphe non orienté.

Optimisation discrète

85

Nombre d’arcs entre nœuds Dans un multigraphe ou p-graphe, il peut y avoir jusqu’à p arcs entre deux nœuds. Dans un graphe simple ou 1-graphe, il y a au plus un arc entre deux nœuds. m La densité d’un graphe simple est le rapport 2 , entre le nombre d’arcs du graphe n et le nombre maximal théorique (si tous les nœuds sont reliés deux à deux). Le demi-degré extérieur du nœud v est le nombre d’arcs partant de v. Le demi-degré intérieur du nœud v est le nombre d’arcs arrivant en v. Le degré du nœud v est le nombre d’arcs partant et arrivant en v. Le degré moyen d’un graphe est la moyenne des degrés des nœuds (souvent de l’ordre de 3 en pratique). Un nœud isolé est un nœud de degré nul. Réseau Un réseau est un graphe orienté et valué : chaque arc est affecté d’un coût (prix du passage par l’arc) et d’une capacité (quantité pouvant passer par l’arc). La matrice F = (fij )i,j=1 à n représente les capacités des arcs. La matrice C = (cij )i,j=1 à n représente les coûts des arcs. Le nœud s est la source (point d’entrée du réseau). Aucun arc n’arrive en s. Le nœud t est le puits (point de sortie du réseau). Aucun arc ne part de t. Le réseau R est défini par les ensembles V et E, les matrices F et C, la source s et le puits t : R = (V,E, F,C,s, t) . Représentation On peut représenter un graphe soit par les successeurs de chaque nœud, soit par la matrice d’adjacence, soit par la matrice d’incidence. La matrice d’adjacence A est une matrice booléenne à n lignes et n colonnes : - les lignes correspondent aux nœuds de départ ; - les colonnes correspondent aux nœuds d’arrivée. S’il existe un arc du nœud vi au nœud vj, l’élément a ij vaut 1, sinon a ij vaut 0. La matrice d’incidence I est une matrice booléenne à n lignes et m colonnes : - les lignes correspondent aux nœuds ; - les colonnes correspondent aux arcs. S’il existe un arc ek allant du nœud vi au nœud vj, l’élément a ik vaut +1 et l’élément a jk vaut −1 (sinon a ik = a jk = 0 ). Pour une boucle sur le nœud vi, l’élément a ii vaut +1.

86

Techniques d’optimisation

La Figure 2-2 montre le remplissage des matrices d’adjacence et d’incidence pour un arc ek allant du nœud vi au nœud vj. L’exemple suivant illustre les trois représentations possibles d’un graphe.

vj   vi    

1

     

  vi  vj   

ek +1 −1

     

Figure 2-2 : Matrice d’adjacence et matrice d’incidence

Exemple 2-1 : Représentation d’un graphe Considérons le graphe à 5 nœuds et 10 arcs représenté sur la Figure 2-3. Une première représentation de ce graphe est la liste ci-dessous donnant les successeurs de chaque nœud. v1 v2 v3 v4 v5

→ → → → →

v2 , v3 , v5 v2 , v3 v4 v1 , v5 v1 , v3

Figure 2-3 : Graphe à 5 nœuds et 10 arcs Une deuxième représentation de ce graphe est sa matrice d’adjacence (à gauche). Une troisième représentation de ce graphe est sa matrice d’incidence (à droite). v1 v2 v3 v1  0 1 1  v2  0 1 1 v3  0 0 0  v4  1 0 0 v5  1 0 1

v4 0 0 1 0 0

v5 1  0 0  1 0 

e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 v1  +1 0 0 +1 +1 0 −1 0 0 −1    v2  −1 +1 +1 0 0 0 0 0 0 0  v3  0 0 −1 −1 0 +1 0 0 −1 0    v4  0 0 0 0 0 −1 +1 +1 0 0  v5  0 0 0 0 −1 0 0 −1 +1 +1

Optimisation discrète

87

2.1.2 Parcours d’un graphe De nombreux problèmes consistent à chercher un chemin optimal dans un graphe. Un parcours dans un graphe est appelé : - un chemin si le parcours est orienté ; - un circuit si le parcours est orienté et fermé ; - une chaîne si le parcours est non orienté ; - un cycle si le parcours est non orienté et fermé. Un parcours est représenté par la suite de ses arcs ou par la suite de ses nœuds (si le graphe est simple). La longueur du parcours est le nombre d’arcs consécutifs. Parcours particuliers Un parcours élémentaire passe une seule fois par ses nœuds. Un parcours eulérien passe une fois exactement par chaque arc du graphe. Un parcours hamiltonien passe une fois exactement par chaque nœud du graphe. Un parcours eulérien peut passer plusieurs fois par un nœud, alors qu’un parcours hamiltonien passe au plus une fois par chaque arc. Les parcours eulériens ou hamiltoniens interviennent dans les problèmes de tournées de véhicules. Le jeu de la maison illustré ci-contre consiste à tracer une maison sans lever le crayon et sans passer deux fois sur un même trait. Le résultat est un parcours eulérien, mais non hamiltonien. Graphes particuliers Un graphe est complet s’il existe un arc entre toute paire de nœuds. Un graphe est connexe s’il existe une chaîne entre toute paire de nœuds. Un graphe connexe comporte au moins n − 1 arêtes. Un arbre est un graphe non orienté connexe et sans cycle. Le nombre d’arêtes d’un arbre est égal au nombre de nœuds – 1 : m = n − 1. Une arborescence est un arbre orienté (graphe orienté connexe et sans cycle). Tous les nœuds d’une arborescence sont descendants d’un nœud unique appelé racine de l’arborescence. Un graphe est planaire si on peut le représenter dans le plan sans croisement d’arcs. Le nombre d’arêtes d’un graphe planaire vérifie : m  3n − 6. Les graphes planaires interviennent dans les problèmes de placement de composants électroniques ou de coloration de carte.

88

Techniques d’optimisation

Connexité L’étude de la connexité est un préalable à tout problème de graphe. La connexité se détermine à partir de la matrice d’adjacence. Cette matrice booléenne A définie en section 2.1.1 indique si deux nœuds sont reliés (valeur 1) ou non (valeur 0). Une première question de connexité est celle de l’existence d’un chemin entre deux nœuds quelconques du graphe. Cette question se résout en calculant les puissances booléennes de la matrice I + A comme expliqué plus bas. - La multiplication booléenne représente le produit logique « et ». - L’addition booléenne représente la somme logique « ou ». Ces opérations sont rappelées sur la Figure 2-4.

 0 1 0 0 0 1 0 1

+ 0 1 0 0 1 1 1 1

Figure 2-4 : Multiplication (« et ») et addition (« ou ») booléenne La matrice booléenne A indique si 2 nœuds sont reliés par un chemin à 1 arc. Le produit A.A = A 2 indique si 2 nœuds sont reliés par un chemin à 2 arcs. noté

En poursuivant le raisonnement, la matrice booléenne A k indique si 2 nœuds sont reliés par un chemin à k arcs. La somme A0 + A1 + A2 + ... + Ak indique s’il existe un chemin à k arcs au plus entre 2 nœuds (la matrice A0 = I indique que chaque nœud est relié à lui-même). En utilisant l’identité booléenne A + A = A , on factorise la somme sous la forme :

I + A + A2 + ... + Ak = (I + A)k

(2.1)

k

La matrice booléenne (I + A) indique pour chaque nœud (ligne) quels sont les nœuds atteignables (colonnes) par un chemin de longueur k au plus. Dans un graphe à n nœuds, un chemin élémentaire est de longueur n − 1 au plus. n −1 On arrête donc le calcul à la matrice (I + A) ou à la première puissance k telle k k −1 que (I + A) = (I + A) . n −1

La matrice (I + A) indique pour chaque nœud (ligne) quels sont les nœuds accessibles (colonnes). Un nœud w accessible à partir du nœud v est un descendant de v et v est un ascendant de w. L’ensemble des descendants de v est noté (v) . n −1 Le graphe est connexe si et seulement si (I + A) ne contient que des 1.

Optimisation discrète

89

Exemple 2-2 : Existence de chemins Considérons le graphe à 6 nœuds représenté ci-contre. Élevons (I + A) à des puissances successives. 0  0 0 A= 0 0   0 1  0 0 (I + A)3 =  0 0   0

1 0 0 1 0  0 1 0 0 0 0 0 1 0 0  , 0 0 0 0 1 1 1 0 0 1  0 0 0 0 0 

1  0 0 I+A = 0 0   0

1 0 0 1 0  1 1 0 0 0 0 1 1 0 0  , 0 0 1 0 1 1 1 0 1 1  0 0 0 0 1 

1 1 1 1 1 1 1 1   1 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1  , (I + A)4 =  0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1    0 0 0 0 1 0 0 0

1  0 0 (I + A)2 =  0 0   0

1 1 0 1 1  1 1 1 0 0 0 1 1 0 1  0 0 1 0 1 1 1 1 1 1  0 0 0 0 1 

1 1 1 1 1 1   1 0 1 0 1 1 0 0 1 1 0 1 ˆ = (I + A)5 =   , A 1 0 1 0 0 0 0 1 1 1 1 1    0 0 1 0 0 0

1 1 1  1 0 1 1 0 1  1 0 1 1 1 1  0 0 1

4 3 On observe que : (I + A) = (I + A) . On arrête donc le calcul à la puissance k=4.

ˆ = (I + A)5 , les lignes indiquent les successeurs de chaque nœud Dans la matrice A (lorsque la valeur est 1) et les colonnes indiquent les prédécesseurs de chaque nœud (lorsque la valeur est 1). Le nœud v1 admet tous les autres nœuds comme successeurs (première ligne formée de 1). Le nœud v1 n’admet aucun prédécesseur (première colonne formée de 0 sauf sur v1). Un tel nœud sans prédécesseur est une source et le graphe est une arborescence de racine v1. Le nœud v6 admet tous les autres nœuds comme prédécesseurs (sixième colonne formée de 1). Le nœud v6 n’admet aucun successeur (sixième ligne formée de 0 sauf sur v6). Un tel nœud sans successeur est appelé un puits. Une deuxième question de connexité est celle du nombre de chemins entre deux nœuds quelconques du graphe. Cette question se résout en calculant les puissances algébriques de la matrice d’adjacence A.

La matrice Ak (A puissance k) indique le nombre de chemins de longueur k entre chaque paire de nœuds, comme le montre le raisonnement par récurrence suivant.

90

Techniques d’optimisation

• Initialisation Pour k = 1 , l’élément aij de la matrice A1 donne bien le nombre de chemins de longueur 1 entre le nœud vi et le nœud vj. Ce nombre vaut 0 ou 1. • Récurrence Notons B = Ak et supposons que l’élément bij de la matrice B donne le nombre de chemins de longueur k entre le nœud v i et le nœud vj. n

Le produit matriciel C = BA se calcule par : cij =  bilalj , i, j = 1 à n . l=1

Pour deux nœuds vi et vj donnés, le terme cij somme toutes les possibilités de chemins de longueur k partant de v i (terme bil ) et pouvant se prolonger jusqu’à v j par un arc entre vl et vj (terme alj ). Ce terme donne bien le nombre de chemins de longueur k+1 entre le nœud vi et le nœud vj. Dans un graphe à n nœuds, un chemin élémentaire est de longueur n − 1 au plus. On arrête donc le calcul à la matrice An−1 .

Exemple 2-3 : Nombre de chemins

Reprenons le graphe à 5 nœuds et 10 arcs de l’Exemple 2-1 reproduit ci-contre.

Élevons sa matrice d’adjacence A à des puissances successives. 0  0 A = 0  1 1 

1 1 0 1 1 1   1 1 0 0 0 1 2 0 0 1 0 , A = 1 0   0 0 0 1 1 1  0 1 0 1 0 0 

2 1 0 1 2   1 1 0 1 1 3 0 0 1 , A = 1 1   2 0 1 1 2  2 1 1 1 1 

2 2 2 4 3   1 1 1 2 2 4 2 0 1 , A = 1 2   3 2 1 3 3  2 3 2 1 1 

5 2 3  3 1 2 3 2 1  4 3 3 4 2 3 

L’élément en ligne 3 colonne 1 de la matrice A4 indique qu’il n’existe qu’un seul chemin de longueur 4 entre le nœud v 3 et le nœud v1. On observe en effet que le seul chemin de longueur 4 entre ces deux noeuds est : v3 → v4 → v1 → v5 → v1 .

Optimisation discrète

91

Les calculs basés sur la matrice d’adjacence caractérisent de manière simple la connexité d’un graphe. Cette approche n’est cependant pas la plus efficace pour des graphes de faible densité, car la matrice d’adjacence est alors très creuse.

2.1.3 Complexité Les problèmes combinatoires se classent en différentes catégories. •

Problèmes de chemin - Quel est le chemin de coût minimal entre deux nœuds ? - Quel est le circuit hamiltonien de coût minimal ? (voyageur de commerce)



Problèmes de flot - Quel est le flot maximal pouvant passer de la source au puits ? - Quel est le coût minimal du flot maximal ?



Problèmes d’affectation, de coloration, d’empilement …

La difficulté vient du nombre de combinaisons qui est une fonction exponentielle de la taille du problème. La taille d’un problème est la place mémoire nécessaire au stockage des données. Elle se mesure par des paramètres caractéristiques. - Pour un graphe à n nœuds et m arcs, la taille est mesurée par le couple (n,m) - Pour une matrice carrée n  n, la taille est mesurée par n. Un algorithme est une suite d’opérations élémentaires appliquées sur des données. La complexité d’un algorithme est mesurée par le nombre d’opérations en fonction de la taille des données. Considérons par exemple la multiplication de deux matrices de taille n  n. n

C = AB  cij =  aik bkj , i = 1 à n , j = 1 à n

(2.2)

k =1

Le calcul d’un élément de la matrice C requiert n multiplications et n additions. Pour les n  n éléments de la matrice, le nombre total d’opérations est 2n3. La complexité d’un algorithme est l’ordre de grandeur du nombre d’opérations en fonction de la taille caractéristique n des données. Un algorithme polynomial a une complexité en puissance de n. Par exemple : O(n) , O(n log n) , O(n2 ) Un algorithme non polynomial a une complexité en exponentielle de n. n

n Par exemple : O(2 ) , O(n ) , O(n!) avec n!   e n

n

2n (formule de Stirling)

92

Techniques d’optimisation

Un algorithme polynomial est jugé performant, car il permet de traiter des données de grandes tailles. Une composition d’algorithmes polynomiaux reste polynomiale. Le Tableau 2-1 montre les temps de calcul en fonction de la complexité de l’algorithme et de la taille du problème (de 10 à 10 000). Les temps sont estimés pour un ordinateur effectuant un milliard d’opérations par seconde.

Tableau 2-1 : Temps de calcul en fonction de la complexité de l’algorithme Les problèmes combinatoires sont classés en problèmes d’optimisation (PO) et problèmes d’existence (PE). •

Un problème d’optimisation consiste à minimiser une fonction sur un ensemble fini : (PO) : Trouver x* X tel que f (x*) = min f (x) xX

La réponse à un problème d’optimisation est la solution x*. •

Un problème d’existence consiste à répondre à une question du type : (PE) : Il existe x  X tel que f (x)  c . La réponse à un problème d’existence est « oui » ou « non ».

Les problèmes d’existence (PE) et d’optimisation (PO) sont de difficulté comparable. En effet, un algorithme résolvant (PO) permet de répondre à (PE). Inversement, un algorithme résolvant (PE) peut résoudre (PO) par dichotomie sur la valeur de c (la dichotomie étant un algorithme polynomial). Un problème combinatoire est dit « facile » ou « difficile » selon que l’on connaît ou non un algorithme polynomial de résolution du problème d’existence. Les problèmes se rangent dans les classes NP, P et NPC. La classe NP (Non Déterministe Polynomial) contient les problèmes pour lesquels un algorithme polynomial permet de vérifier une solution. La solution x 0 est donnée (on ne se préoccupe pas de la façon dont elle a été obtenue) et l’on doit vérifier qu’elle répond au problème (PE) : f (x0 )  c . La classe NP contient quasiment tous les problèmes combinatoires rencontrés en pratique.

Optimisation discrète

93

La classe P (Déterministe Polynomial) contient les problèmes pour lesquels un algorithme polynomial permet de trouver une solution. Ces problèmes sont les problèmes faciles de NP. La classe NPC (NP–Complets ou NP–Difficiles) contient les problèmes de NP n’appartenant pas à P et de difficulté « équivalente ». Deux problèmes sont de difficulté équivalente si l’on peut passer de l’un à l’autre par une transformation polynomiale. Les problèmes de NPC n’ont pas d’algorithme de résolution polynomial connu. Mais si l’on arrive à élaborer un algorithme polynomial pour l’un d’eux, alors tous les problèmes de NPC passeront dans la classe P. Les problèmes de NP n’appartenant ni à P, ni à NPC sont dits indéterminés. Les exemples suivants illustrent les différentes classes.

Exemple 2-4 : Problèmes de NP, P et NPC (d’après [R12]) Problèmes de NP Les problèmes de NP sont ceux pour lesquels on connaît un algorithme polynomial de vérification d’une solution. Les problèmes de NP sont faciles (P), difficiles (NPC) ou indéterminés. • Exemple de problème appartenant à NP Problème d’empilement : Existe-t-il p entiers parmi n dont la somme vaut b ? Vérification d’une solution : On vérifie que les p entiers sont parmi les n et que leur somme vaut b. L’algorithme de vérification est polynomial. • Exemple de problème n’appartenant pas à NP Partie d’échecs : Existe-t-il dans une position donnée une stratégie gagnante ? Vérification d’une solution : Il faudrait examiner toutes les parties possibles à partir de la position. L’algorithme de vérification n’est pas polynomial. • Exemple de problème indéterminé de NP Isomorphisme de graphes : Peut-on passer du graphe G1 au graphe G2 en renumérotant les nœuds ? L’algorithme de vérification est polynomial, mais on ne sait pas s’il existe un algorithme de résolution polynomial. Le problème est indéterminé. Problèmes de P Les problèmes de P sont ceux pour lesquels on connaît un algorithme polynomial de résolution. Ces problèmes sont les problèmes faciles de NP.

94

• • • • • •

Techniques d’optimisation

Connexité d’un graphe Existe-t-il un chemin entre deux nœuds quelconques d’un graphe ? Chemin de coût minimal dans un graphe valué Quel est le chemin de coût minimal entre deux nœuds d’un graphe ? Flot maximal dans un réseau Quel est le flot maximal entre la source et le puits ? Parcours eulérien dans un graphe Existe-t-il un chemin passant une fois et une seule par chaque arête ? Affectation (couplage) Quelle est l’affectation de coût minimal entre n ressources et n tâches ? Tri de n nombres

Problèmes de NPC Les problèmes de NPC sont ceux pour lesquels on ne connaît pas d’algorithme polynomial de résolution. Ces problèmes NP-complets sont les problèmes difficiles de NP. •

• • •

Coloration Trouver le nombre minimal de couleurs pour colorer un graphe. Le théorème des 4 couleurs pour un graphe planaire conjecturé en 1880 a été démontré en 1977 (démonstration assistée par ordinateur). Voyageur de commerce Trouver le circuit hamiltonien de coût minimal dans un graphe valué. Ce problème sert de test pour les algorithmes d’optimisation combinatoire. Empilement (sac à dos) Choisir des objets pour remplir un sac en maximisant la valeur totale. Emboîtement (bin packing) Ranger des objets en utilisant le moins de boîtes possible.

Un problème combinatoire peut se résoudre par la programmation linéaire (chapitre 1) ou par un algorithme spécifique au problème (chemin, flot, affectation). Ces algorithmes spécifiques sont présentés à partir de la section 2.2. Pour des problèmes de grande taille (faciles ou difficiles), il n’est pas possible d’obtenir la solution exacte en un temps raisonnable. Les méthodes approchées sont soit des métaheuristiques générales (tome I chapitre 2), soit des heuristiques spécifiques à un type de problème (empilement, emboîtement, recouvrement, coloration). Ces heuristiques utilisant généralement des approches gloutonnes sont présentées en section 2.6.

Optimisation discrète

95

2.2 Problème de chemin On se place dans un graphe valué G = (V,E,C) défini par ses nœuds V, ses arcs E et les coûts des arcs C. Les problèmes classiques consistent à : - trouver le chemin de coût minimal entre deux nœuds donnés ; - trouver le chemin de coût minimal entre un nœud et tous les autres nœuds ; - trouver le chemin de coût minimal entre tous les couples de nœuds. Ces problèmes peuvent être résolus par la programmation linéaire mixte (section 1.4.4) ou par les algorithmes spécifiques suivants. - L’algorithme de Ford s’applique dans un graphe quelconque. - L’algorithme de Bellman s’applique dans un graphe sans circuit. - Les algorithmes de Dijkstra et A* s’appliquent si les valuations sont positives. Le Tableau 2-2 récapitule les caractéristiques de ces algorithmes qui sont détaillés dans les sections suivantes. Leur complexité s’exprime en fonction du nombre de nœuds n et du nombre d’arcs m.

Tableau 2-2 : Algorithmes de chemin

2.2.1 Algorithme de Ford L’algorithme de Ford détermine le chemin de coût minimal entre la source et chaque nœud du graphe. Les valuations des arcs sont de signe quelconque. Les coûts minimaux de la source à chaque nœud sont améliorés de manière itérative. À chaque itération, le nœud v i est marqué par la valeur zi du meilleur coût trouvé. Les étapes de l’algorithme sont les suivantes.

96

Techniques d’optimisation

Initialisation On attribue la valeur zs = 0 à la source et les valeurs zi =  aux autres nœuds. Itération L’itération consiste à parcourir tous les arcs du graphe dans un ordre quelconque. Chaque nœud vi a une valeur zi. L’arc de vi (valeur zi) à vj (valeur zj) a un coût cij. Si zi + cij  z j , le passage par vi améliore la solution arrivant en vj. La valeur de vj est actualisée : z' j = zi + cij . Chaque nœud est actualisé une fois par itération. Fin de l’algorithme On s’arrête lorsque aucun coût ne peut être amélioré. Chaque nœud est alors marqué par la valeur du meilleur chemin depuis la source. En pratique, il n’est pas utile de parcourir à chaque itération l’ensemble des arcs. Il suffit d’examiner les arcs partant des nœuds actualisés à l’itération précédente. L’exemple suivant illustre le déroulement de l’algorithme de Ford.

Exemple 2-5 : Algorithme de Ford (d’après [R6]) Considérons le graphe valué à 6 nœuds représenté ci-contre. La source est en v1. Certaines valuations sont positives, d’autres négatives. Appliquons l’algorithme de Ford pour trouver le chemin de coût minimal entre la source v1 et chacun des nœuds v2,v3,v4,v5,v6. Initialisation La source v1 reçoit la valeur zi = 0 . Les autres nœuds reçoivent la valeur zi =.

Optimisation discrète

Itération 1 On examine tous les arcs dans un ordre arbitraire, en partant de la source v1. Chaque nœud est actualisé une fois au plus. Les arcs utilisés pour cette itération sont en traits épais. Itération 2 On examine les arcs inutilisés à l’itération 1 dans un ordre arbitraire. Chaque nœud est actualisé une fois au plus. Les arcs utilisés pour cette itération sont en traits épais. Cette itération améliore 2 nœuds (v 3,v4). Itération 3 On examine les successeurs des nœuds actualisés à l’itération 2 (v3,v4). Chaque successeur est actualisé une fois au plus. Les arcs utilisés pour cette itération sont en traits épais. Cette itération améliore 2 nœuds (v 5,v6). Itération 4 On examine les successeurs des nœuds actualisés à l’itération 3 (v5,v6). Chaque successeur est actualisé une fois au plus. Les arcs utilisés pour cette itération sont en traits épais. Cette itération améliore 1 nœud (v5). Fin de l’algorithme Il n’y a plus d’amélioration possible à partir du dernier nœud actualisé (v 5).

97

98

Techniques d’optimisation

La valeur (ou marque) de chaque nœud est le coût du meilleur chemin allant de la source à ce nœud. Les arcs optimaux en traits épais sont ceux dont le coût vaut la différence des marques entre les nœuds de départ et d’arrivée. Les coûts minimaux obtenus à l’itération 4 sont récapitulés dans le tableau ci-contre.

v1−v2

v1−v3

v1−v4

v1−v5

v1−v6

4

2

1

0

−1

L’algorithme de Ford s’applique dans un graphe à valuations de signe quelconque pouvant comporter des circuits à condition que ceux-ci ne soient pas absorbants. Le coût d’un circuit absorbant est négatif. Celui représenté ci-contre a pour coût −1. Un circuit absorbant permet une décroissance non bornée du coût d’un chemin. En l’absence de circuit absorbant, l’algorithme de Ford se termine en un nombre fini d’itérations. Le nombre d’itérations dépend de l’ordre de traitement des arcs. Dans un graphe à n nœuds, la complexité est en O(2n ) et l’algorithme de Ford est non polynomial. Il est cependant possible d’en dériver des algorithmes polynomiaux en optimisant d’ordre de traitement des arcs. C’est le cas des algorithmes de Bellman et de Dijkstra présentés dans les sections suivantes.

2.2.2 Algorithme de Bellman L’algorithme de Bellman s’applique dans un graphe sans circuit (arbre) à valuations de signe quelconque. Il procède comme l’algorithme de Ford en imposant en plus un ordre de traitement des nœuds en fonction de leur position. Dans un graphe sans circuit, on peut numéroter les nœuds dans un ordre tel que tout arc relie des nœuds de numéros croissants. Cet ordre est appelé topologique.

Optimisation discrète

99

L’algorithme de Bellman traite les nœuds dans l’ordre topologique. Chaque nœud est traité une seule fois. La marque zi du nœud vi est la valeur du meilleur coût trouvé. Les étapes de l’algorithme sont les suivantes. • Initialisation On attribue la valeur zs = 0 à la source et les valeurs zi =  aux autres nœuds. Les n nœuds (v1, v2 , , vn ) sont rangés dans un ordre topologique. • Traitement des nœuds dans l’ordre topologique Pour chaque nœud vi, on actualise les valeurs des successeurs v j. Si zi + cij  z j , le passage par vi améliore la solution arrivant en vj. La valeur de vj est actualisée : z' j = zi + cij . Le nœud vj est traité. • Fin de l’algorithme On s’arrête lorsque les n nœuds ont été traités. Chaque nœud est alors marqué par la valeur du meilleur chemin depuis la source. L’exemple suivant illustre le déroulement de l’algorithme de Bellman.

Exemple 2-6 : Algorithme de Bellman (d’après [R6]) Considérons le graphe valué à 5 nœuds représenté ci-contre. La source est en v1. Le graphe est sans circuit (arbre). Les valuations sont de signe quelconque. Les nœuds sont numérotés dans l’ordre topologique. Appliquons l’algorithme de Bellman pour trouver les chemins de coût minimal partant de la source. Les arcs utilisés à chaque itération sont en trait épais.

100

Initialisation La source v1 reçoit la valeur zi = 0 . Les autres nœuds reçoivent la valeur zi =. Les nœuds sont non traités.

Traitement du premier nœud Le premier nœud dans l’ordre topologique est v1. On actualise les successeurs de v1. Le nœud v1 est traité.

Traitement du deuxième nœud Le deuxième nœud dans l’ordre topologique est v2. On actualise les successeurs de v2. Le nœud v2 est traité.

Traitement du troisième nœud Le troisième nœud dans l’ordre topologique est v3. On actualise les successeurs de v3. Le nœud v3 est traité.

Traitement du quatrième nœud Le quatrième nœud dans l’ordre topologique est v4. On actualise les successeurs de v4. Le nœud v4 est traité.

Techniques d’optimisation

Optimisation discrète

101

Traitement du cinquième nœud Le cinquième nœud dans topologique est v5. Ce nœud n’a pas de successeur. Le nœud v5 est traité.

l’ordre

Fin de l’algorithme Tous les nœuds ont été traités. La valeur (ou marque) de chaque nœud est le coût du meilleur chemin allant de la source à ce nœud. Les arcs optimaux en traits épais sont ceux dont le coût vaut la différence des marques entre les nœuds de départ et d’arrivée. Les coûts minimaux sont récapitulés dans le tableau ci-contre.

v1−v2

v1−v3

v1−v4

v1−v5

6

−2

0

3

L’ordre topologique d’un arbre n’est pas unique. Une manière systématique de construire un ordre topologique consiste à regrouper les nœuds par niveau. - Le niveau 0 est l’ensemble V0 des nœuds sans prédécesseurs (sources). - Le niveau 1 est l’ensemble V1 des successeurs de V0. - Le niveau k est l’ensemble Vk des successeurs de Vk-1. Un nœud peut appartenir à plusieurs niveaux, comme sur la Figure 2-5 à droite. L’algorithme de Bellman consiste alors à traiter les nœuds par niveaux successifs. Cette procédure d’actualisation par niveau est appelée programmation dynamique. Elle se base sur le principe d’optimalité de Bellman.

Figure 2-5 : Principe d’optimalité de Bellman

102

Techniques d’optimisation

Principe d’optimalité de Bellman Tout sous-chemin d’un chemin optimal est lui-même optimal. Supposons que le chemin optimal de v 1 à vn passe par vi et vj, alors le sous-chemin de vi à vj est optimal. En effet, s’il existait un meilleur chemin de v i à vj (trait plein sur la Figure 2-5), on améliorerait le chemin de v 1 à vn en passant par ce chemin. Pour appliquer l’algorithme de programmation dynamique, on initialise les nœuds du niveau 0 à z = 0 et les autres à z =  . À chaque étape, la valeur z(vi ) est le coût du meilleur chemin connu de la source au nœud vi. Les nœuds du niveau k sont actualisés à partir de leurs prédécesseurs par :

z(v j ) = min ( z(vi ) + cij ) viVk −1

(2.3)

La valeur z(v j ) sera ainsi le coût du meilleur chemin de la source au nœud v j. La relation (2.3) appelée équation fonctionnelle de la programmation dynamique est illustrée sur la Figure 2-6. En passant par vi1 : z1 = z(vi1 ) + ci1− j En passant par vi2 : z2 = z(vi2 ) + ci2− j En passant par vi3 : z3 = z(vi3 ) + ci3− j Meilleur chemin : z(vj ) = min(z1,z2 ,z3 ) Figure 2-6 : Équation fonctionnelle de la programmation dynamique Chacun des m arcs du graphe étant traité une seule fois, la complexité de l’algorithme de programmation dynamique est en O(m) . La programmation dynamique peut s’appliquer vers l’avant ou vers l’arrière. • La procédure vers l’avant a pour but de déterminer les chemins optimaux de la source à chaque nœud. On part du premier niveau et on cherche à minimiser le coût en additionnant les coûts des arcs examinés. • La procédure vers l’arrière a pour but de déterminer les chemins optimaux de chaque nœud au puits. On part du dernier niveau et on cherche à maximiser le coût en soustrayant les coûts des arcs examinés. Ces deux procédures sont illustrées sur l’exemple suivant.

Optimisation discrète

103

Exemple 2-7 : Algorithme de programmation dynamique (d’après [R6]) Considérons le graphe valué à 5 niveaux de la Figure 2-7.

Figure 2-7 : Graphe à 5 niveaux Appliquons l’algorithme de programmation dynamique vers l’avant pour trouver les chemins de coût minimal allant de la source à chaque nœud. Les niveaux sont traités dans l’ordre croissant. Les arcs optimaux sélectionnés à chaque niveau sont en traits épais. Traitement du niveau 1

104

Traitement du niveau 2

Traitement du niveau 3

Traitement du niveau 4

Techniques d’optimisation

Optimisation discrète

105

La Figure 2-8 montre les arcs optimaux en traits épais. Les chemins optimaux de la source à chaque nœud sont listés au-dessous.

Figure 2-8 : Chemins optimaux vers l’avant

Appliquons au même graphe l’algorithme de programmation dynamique vers l’arrière pour trouver les chemins de coût minimal allant de chaque nœud vers le puits. Les niveaux sont traités dans l’ordre décroissant. Les arcs optimaux sélectionnés à chaque niveau sont en traits épais. Traitement du niveau 3

106

Traitement du niveau 2

Traitement du niveau 1

Traitement du niveau 0

Techniques d’optimisation

Optimisation discrète

107

La Figure 2-9 montre les arcs optimaux en traits épais. Les chemins optimaux de chaque nœud au puits sont listés au-dessous.

Figure 2-9 : Chemins optimaux vers l’arrière

2.2.3 Algorithme de Dijkstra L’algorithme de Dijkstra s’applique dans un graphe à valuations positives. Il est identique à l’algorithme de Ford en traitant les nœuds par valeur croissante. De ce fait, chaque nœud n’est à traiter qu’une seule fois. Initialisation On attribue la valeur zs = 0 à la source et les valeurs zi =  aux autres nœuds. Les nœuds sont initialement non traités. Traitement d’un nœud On choisit parmi les nœuds non traités le nœud vi de valeur minimale zi. On actualise les valeurs des nœuds v j successeurs du nœud vi. Si zi + cij  z j , le passage par vi améliore la solution arrivant en vj. La valeur de vj est actualisée : z' j = zi + cij . Le nœud vj est traité.

108

Techniques d’optimisation

Fin de l’algorithme On s’arrête lorsque les n nœuds ont été traités. Chaque nœud est alors marqué par la valeur du meilleur chemin depuis la source. L’exemple suivant illustre le déroulement de l’algorithme de Dijkstra.

Exemple 2-8 : Algorithme de Dijkstra Considérons le graphe valué à 5 nœuds représenté ci-contre. La source est en v1. Les valuations sont positives. Appliquons l’algorithme de Dijkstra pour trouver les chemins de coût minimal partant de la source. Les arcs utilisés à chaque itération sont en trait épais. Initialisation La source v1 a la valeur : zi = 0 . Les autres nœuds ont la valeur : zi = . Les nœuds sont non traités. Traitement du premier nœud Les nœuds non traités sont : v1,v2,v3,v4,v5. Le nœud de valeur minimale est v1. On actualise les successeurs de v1. Le nœud v1 est traité. Traitement du deuxième nœud Les nœuds non traités sont : v2,v3,v4,v5. Le nœud de valeur minimale est v3. On actualise les successeurs de v3. Le nœud v3 est traité.

Optimisation discrète

109

Traitement du troisième nœud Les nœuds non traités sont : v2,v4,v5. Le nœud de valeur minimale est v5. On actualise les successeurs de v5. Le nœud v5 est traité. Traitement du quatrième nœud Les nœuds non traités sont : v2,v4. Le nœud de valeur minimale est v2. On actualise les successeurs de v2. Le nœud v2 est traité. Traitement du cinquième nœud Les nœuds non traités sont : v4. Le nœud de valeur minimale est v4. Ce nœud n’a pas de successeur. Le nœud v4 est traité.

Fin de l’algorithme Tous les nœuds ont été traités. La valeur (ou marque) de chaque nœud est le coût du meilleur chemin allant de la source à ce nœud. Les arcs optimaux en traits épais ont leur coût vaut la différence des marques entre les nœuds de départ et d’arrivée. Les coûts minimaux sont récapitulés dans le tableau ci-contre.

v1−v2

v1−v3

v1−v4

v1−v5

5

2

6

3

110

Techniques d’optimisation

L’algorithme de Dijkstra est plus rapide que l’algorithme de Ford, car chaque nœud n’est traité qu’une fois. Sa complexité est en O ( m.log(n) ) où n et m sont respectivement les nombres de nœuds et d’arcs. Cet algorithme polynomial est très efficace sur des graphes peu denses (m n2 ) , en particulier sur les graphes planaires pour lesquels m  3n − 6 . Il est utilisé en particulier pour trouver le trajet le plus court dans un réseau routier.

2.2.4 Algorithme A* L’algorithme de Dijkstra traite à chaque étape le nœud de valeur minimale sans tenir compte du chemin restant à parcourir (qui est inconnu). L’algorithme A* modifie l’algorithme de Dijkstra en se basant sur une estimation du coût restant pour choisir le nœud à traiter. Cette estimation est donnée par une fonction h appelée heuristique. L’heuristique h associe à chaque nœud vi une estimation arbitraire hi du coût restant entre le nœud vi et le puits t. L’évaluation du nœud vi est la somme du coût zsi (connu) entre s et vi et du coût hi (estimé) entre vi et t. Cette évaluation est notée : ei = zsi + hi .

Figure 2-10 : Évaluation d’un nœud avec heuristique L’algorithme A* traite à chaque étape le nœud d’évaluation minimale, qui est le plus prometteur. Contrairement à l’algorithme de Dijkstra, chaque nœud peut être traité plusieurs fois. La marque zsi du nœud vi est la valeur du meilleur coût trouvé entre la source s et le nœud. Les étapes de l’algorithme sont les suivantes.

Optimisation discrète

111

Initialisation On attribue la valeur zs = 0 à la source et les valeurs zsi =  aux autres nœuds. Tous les nœuds sont initialement fermés, sauf la source s. Traitement d’un nœud Un nœud est ouvert lorsque son coût est modifié à partir d’un prédécesseur. Un nœud est fermé lorsque les coûts de tous ses successeurs ont été actualisés. On choisit parmi les nœuds ouverts le nœud vi d’évaluation minimale ei. On actualise les valeurs des nœuds v j successeurs du nœud vi. Si zsi + cij  zsj , le passage par vi améliore la solution arrivant en vj. La valeur de vj est actualisée : z'sj = zsi + cij . et le nœud vj est ouvert. Le nœud vi est fermé lorsque tous ses successeurs ont été traités. Fin de l’algorithme On s’arrête lorsque le meilleur nœud ouvert est le puits t. Chaque nœud est alors marqué par la valeur du meilleur chemin depuis la source. Le nombre de nœuds traités et le chemin obtenu dépendent de l’heuristique choisie. Les deux cas extrêmes sont l’heuristique nulle et l’heuristique parfaite. • L’heuristique nulle (h i = 0) n’utilise pas d’estimation du chemin restant. Le nœud choisi est alors le nœud de coût minimal. On retrouve l’algorithme de Dijkstra et tous les nœuds sont traités une fois. • L’heuristique parfaite (hi = zit ) suppose que l’on connaît déjà le chemin optimal restant. Le nœud choisi est alors sur le chemin optimal. On obtient le chemin optimal directement, car l’évaluation donne la solution exacte. Une heuristique mal choisie peut conduire à traiter davantage de nœuds que l’algorithme de Dijkstra, voire aboutir à un chemin non optimal. Avant d’examiner les propriétés de l’heuristique, considérons un premier exemple d’application de l’algorithme A* où l’heuristique est définie par le nombre d’arcs restant à parcourir.

112

Techniques d’optimisation

Exemple 2-9 : Algorithme A* Considérons le graphe à 16 nœuds de la Figure 2-11.

Figure 2-11 : Heuristique avec estimation par le nombre d’arcs restant Les nœuds sont indicés par leur abscisse et leur ordonnée. Le nœud vij a pour coordonnées (i ; j). Le nœud de départ (source) est v 11. Le nœud d’arrivée (puits) est v44. Les valuations des arcs sont positives et indiquées sur les flèches. L’heuristique d’estimation du coût restant est le nombre d’arcs restant à parcourir jusqu’à v44. Par exemple : - pour le nœud de départ v11, il reste 6 arcs à parcourir ; - pour le nœud v43, il reste 1 arc à parcourir. Cette estimation est indiquée entre parenthèses en haut à gauche de chaque nœud. Appliquons l’algorithme A* pour trouver les chemins de coût minimal allant de la source jusqu’à chaque nœud. À chaque itération, on indique : - la liste des nœuds ouverts avec leur estimation ; - le nœud à traiter (ayant l’estimation la plus basse) ; - le meilleur chemin trouvé à cette itération ; - le nombre total de nœuds évalués depuis le début. Les nœuds déjà évalués sont en gris foncés, les nœuds ouverts en gris clair et le nœud à traiter est encadré en traits épais.

Optimisation discrète

Itération 1 Nœuds ouverts : v12 (6,1), v21 (6) Nœud à traiter : v21 (6) Meilleur chemin : z=1 v11 − v21 Nœuds actualisés : 3 Itération 2 Nœuds ouverts : v12 (6,1) , v22 (7) , v31 (6) Nœud à traiter : v31 (6) Meilleur chemin : z=2 v11 − v21 − v31 Nœuds actualisés : 5 Itération 3 Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v41 (6) Nœud à traiter : v41 (6) Meilleur chemin : z=3 v11 − v21 − v31 − v41 Nœuds actualisés : 7

113

114

Itération 4 Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v42 (6) Nœud à traiter : v42 (6) Meilleur chemin : z=4 v11 − v21 − v31 − v41 − v42 Nœuds actualisés : 8 Itération 5 Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v43 (6) Nœud à traiter : v43 (6) Meilleur chemin : z=5 v11 − v21 − v31 − v41 − v42 − v43 Nœuds actualisés : 9 Itération 6 Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v44 (6) Nœud à traiter : v44 (6) Meilleur chemin : z=6 v11 − v21 − v31 − v41 − v42 − v43 − v44 Nœuds actualisés: 10

Techniques d’optimisation

Optimisation discrète

115

L’algorithme est terminé, car le nœud à traiter est le puits v44. Le chemin obtenu par l’algorithme A* est : v11 − v21 − v31 − v41 − v42 − v43 − v44 de coût z = 6. Le résultat est obtenu en 6 itérations (= 6 nœuds traités) et en actualisant 10 nœuds (nœuds en gris ayant reçu une évaluation au cours de l’algorithme). Comparons ce résultat à celui obtenu par l’algorithme de Dijkstra qui traite chaque nœud une seule fois en choisissant le nœud d’évaluation minimale. Ceci revient à appliquer l’algorithme A* avec l’heuristique nulle indiquée sur la Figure 2-12 par le zéro entre parenthèses sur chaque nœud. Les nœuds sont alors traités dans l’ordre suivant (avec leur évaluation entre parenthèses).

v11 (0) → v21 (1) → v12 (1,1) → v31 (2) → v13 (2,2) → v22 (2,6) → v41 (3) → v14 (3,3) → v32 (3,6) → v42 (4) → v23 (4,2) → v24 (4,3) → v33 (4,6) → v43 (5) → v44 (6)

Figure 2-12 : Chemin optimal avec heuristique nulle (Dijkstra)

L’algorithme de Dijkstra donne le chemin optimal en traitant 15 nœuds et en actualisant 23 nœuds. L’algorithme A* a donné le chemin optimal en traitant seulement 6 nœuds et en actualisant 10 nœuds. La performance de l’algorithme A* est meilleure sur cet exemple, mais ceci n’est pas systématique. Reprenons le graphe de la Figure 2-11 et changeons le coût de l’arc v 43-v44 qui passe de 1 à 4. Le déroulement de l’algorithme A* reste identique jusqu’à l’itération 5 qui donne la Figure 2-13.

116

Techniques d’optimisation

Figure 2-13 : Changement du coût de l’arc v43-v44

Avec la nouvelle valeur de l’arc v 43-v44, le puits prend la valeur 9 et n’est plus le nœud d’évaluation minimale. L’algorithme A* n’est alors pas terminé et les itérations continuent comme suit. Itération 6 Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v44 (9) Nœud à traiter : v21 (6,1) Meilleur chemin : z = 1,1 v11 − v12 Nœuds actualisés: 10

Optimisation discrète

Itération 7 Nœuds ouverts : v13 (6,2) , v22 (6,6) , v32 (7) , v44 (9) Nœud à traiter : v13 (6,2) Meilleur chemin : z = 2,2 v11 − v12 − v13 Nœuds actualisés: 12

Itération 8 Nœuds ouverts : v14 (6,3) , v22 (6,6) , v23 (7,2) , v32 (7) , v44 (9) Nœud à traiter : v14 (6,3) Meilleur chemin : z = 3,3 v11 − v12 − v13 − v14 Nœuds actualisés: 14 Itération 9 Nœuds ouverts : v22 (6,6) , v23 (7,2) , v24 (6,3) , v32 (7) , v44 (9) Nœud à traiter : v24 (6,3) Meilleur chemin : z = 4,3 v11 − v12 − v13 − v14 − v24 Nœuds actualisés: 15

117

118

Itération 10 Nœuds ouverts : v22 (6,6) , v23 (7,2) , v32 (7) , v34 (9,3) , v44 (9) Nœud à traiter : v22 (6,6) Meilleur chemin : z = 2,6 v11 − v12 − v22 Nœuds actualisés: 16

Itération 11 Nœuds ouverts : v23 (7,2) , v32 (6,6) , v34 (9,3) , v44 (9) Nœud à traiter : v32 (6,6) Meilleur chemin : z = 3,6 v11 − v12 − v22 − v32 Nœuds actualisés: 18

Itération 12 Nœuds ouverts : v23 (7,2) , v33 (6,6) , v34 (9,3) , v44 (9) Nœud à traiter : v33 (6,6) Meilleur chemin : z = 4,6 v11 − v12 − v22 − v32 − v33 Nœuds actualisés: 20

Techniques d’optimisation

Optimisation discrète

119

Itération 13 Nœuds ouverts : v23 (7,2) , v34 (6,6) , v44 (9) Nœud à traiter : v34 (6,6) Meilleur chemin : z = 5,6 v11 − v12 − v22 − v32 − v33 − v34 Nœuds actualisés: 22 Itération 14 Nœuds ouverts : v23 (7,2) , v44 (6,6) Nœud à traiter : v44 (6,6) Meilleur chemin : z = 6,6 v11 − v12 − v22 − v32 − v33 − v34 − v44 Nœuds actualisés: 23 L’algorithme est terminé, car le nœud à traiter est le puits v 44. Le chemin obtenu est : v11 − v12 − v22 − v32 − v33 − v34 − v44 de coût z = 6,6. Sur cet exemple modifié (Figure 2-13), la performance (14 nœuds traités et 23 nœuds actualisés) est strictement identique à celle de l’algorithme de Dijkstra.

Le comportement de l’algorithme A* dépend des propriétés de l’heuristique. Reprenons les notations de la Figure 2-10 reproduite ci-contre.

120

Techniques d’optimisation

Pour analyser les propriétés de l’heuristique, on construit le graphe revalué dans lequel les valuations des arcs sont remplacées par :

c'ij = cij − (hi − h j )

(2.4)

Supposons que ces valuations sont positives (hypothèse de consistance examinée plus bas) et considérons un nœud vj à l’itération courante. Le meilleur chemin connu de la source s au nœud vj est : (s − vi1 − vi2 − − vik − vj ) et a pour coût zsj. L’évaluation du nœud vj avec l’heuristique h est donnée par :

ej = zsj + h j

(2.5)

En exprimant la somme des coûts des arcs de s à v j, et en utilisant (2.4), on obtient :

ej = zs + cs−i1 = zs + c's−i1 + (hs − hi1 ) = zs + c's−i1 = z 'sj + hs

+ ci1−i2 + + c'i1−i2 + + (hi1 − hi2 ) + + c'i1−i2 +

+ cik − j + h j + c'ik − j + (hik − h j ) + h j + c'ik − j + hs

(2.6)

en notant z’sj le coût du chemin de s à vj dans le graphe revalué. La formule (2.6) montre que le nœud de meilleure évaluation ej est également le nœud de meilleur coût z’sj dans le graphe revalué (à la constante h s près). L’algorithme A* avec l’heuristique h est ainsi équivalent à l’algorithme de Dijkstra dans le graphe revalué. L’algorithme A* s’arrêtant lorsque le meilleur nœud est le puits, il examine au plus les n nœuds du graphe et donne la solution plus rapidement que l’algorithme de Dijkstra. Ceci suppose que l’heuristique h vérifie certaines conditions examinées ci-après. Illustrons d’abord sur l’Exemple 2-9 l’équivalence avec l’algorithme de Dijkstra.

Exemple 2-10 : Équivalence entre l’algorithme A* et l’algorithme de Dijkstra Reprenons l’Exemple 2-9 avec l’heuristique définie par le nombre d’arcs restant. La solution obtenue à l’itération 6 est reproduite ci-dessous.

Optimisation discrète

121

Solution A* Nœuds ouverts : v12 (6,1) , v22 (7) , v32 (7) , v44 (6) Nœud à traiter : v44 (6) Meilleur chemin : z=6 v11 − v21 − v31 − v41 − v42 − v43 − v44 Nœuds actualisés: 10

La Figure 2-14 montre le graphe revalué où les coûts des arcs sont changés en : c'ij = cij + (hi − h j ) . L’heuristique étant le nombre d’arcs restants, ceci revient à diminuer les coûts des arcs de 1. Les nouveaux coûts sont inscrits à droite ou audessus des arcs. Appliquons l’algorithme de Dijkstra dans ce graphe revalué. On obtient la solution de la Figure 2-14. Solution Dijkstra Suite des nœuds traités : v11 (0) → v21 (0) → v31 (0) → v41 (0) → v42 (0) → v43 (0) → v44 (0) Figure 2-14 : Algorithme de Dijkstra dans le graphe revalué L’algorithme de Dijkstra dans le graphe revalué suit le même ordre de traitement des nœuds que l’algorithme A* et parvient à la solution après 6 nœuds traités. Cependant l’algorithme de Dijkstra poursuit le traitement des 9 nœuds restants, alors que l’algorithme A* s’arrête.

122

Techniques d’optimisation

Les propriétés suivantes garantissent que l’heuristique h trouve le chemin optimal et réalise moins d’itérations que l’algorithme de Dijkstra. Heuristique admissible Une heuristique est admissible si elle sous-estime le coût du chemin restant entre chaque nœud et le puits : hi  zit . Une heuristique admissible garantit de trouver le chemin optimal. Supposons en effet que le chemin optimal ait pour coût z* et qu’un nœud v i se situe sur le chemin optimal. Son évaluation ei = zsi + hi est inférieure à z*. Lorsque tous les autres chemins auront été parcourus et montreront un coût supérieur à z*, le nœud vi devra être traité. À l’inverse, une heuristique non admissible peut aboutir à un chemin non optimal comme le montre l’exemple suivant.

Exemple 2-11 : Heuristique non admissible Considérons le graphe de la Figure 2-15 avec l’heuristique entre parenthèses sur chaque nœud. Cette heuristique n’est pas admissible, car elle surestime le coût du h = 3 → h2  z2t . chemin de v2 à t :  2 z2t = 1

Figure 2-15 : Heuristique non admissible Le chemin optimal est s − v2 − t de coût z* = 2 . L’algorithme A* aboutit au chemin : s − v1 − t de coût z = 3 indiqué sur la Figure 2-15 à droite. Le nœud v2 reste ouvert, car son évaluation e2 = 4 est supérieure à celle du puits et = 3 . L’algorithme A* s’arrête sur une solution non optimale.

Optimisation discrète

123

Heuristique consistante Une heuristique est consistante si elle sous-estime le coût des arcs : hi  hj + cij . Dans ce cas, les valuations (2.4) sont positives et l’algorithme A* est équivalent à l’algorithme de Dijkstra dans le graphe revalué. La solution optimale est alors obtenue en traitant moins (ou autant) de nœuds que l’algorithme de Dijkstra. Une heuristique consistante est donc admissible. Elle est également monotone, ce qui signifie que l’évaluation décroît entre un nœud et ses successeurs : ei  ej . Une heuristique non consistante se détecte par des valuations (2.4) négatives. Une telle heuristique peut être admissible, mais en rouvrant des nœuds déjà traités comme le montre l’exemple suivant. La performance de l’algorithme A* peut s’en trouver fortement dégradée.

Exemple 2-12 : Heuristique non consistante Considérons le graphe de la Figure 2-16 avec l’heuristique entre parenthèses sur chaque nœud. L’heuristique n’est pas consistante, car elle surestime le coût de  h2 = 2  l’arc v2−v3 :  h3 = 0,5 → h2  h3 + c23 c23 = 0

Figure 2-16 : Heuristique non consistante L’heuristique est néanmoins admissible. La Figure 2-16 à droite indique pour chaque nœud le coût optimal de ce nœud au puits. On vérifie que l’heuristique sous-estime chaque coût restant.  z4t = 2  h4 = 1,5  z3t = 2  h3 = 0,5  → heuristique admissible  z2t = 2  h2 = 2  z1t = 3  h1 = 1 z = 3  h = 3 s  st

124

Techniques d’optimisation

Appliquons l’algorithme A* avec cette heuristique admissible, mais non consistante. Le déroulement de l’algorithme est montré sur la Figure 2-17. Le tableau à droite donne les itérations de l’algorithme avec en première colonne le nœud traité. Le nœud v3 est ouvert une première fois à l’itération 3 correspondant au schéma du haut. Ce nœud v3 est ouvert une deuxième fois à l’itération 5 correspondant au schéma du bas.

Figure 2-17 : Algorithme A* avec heuristique admissible non consistante

L’algorithme se termine à l’itération 5, car le nœud à traiter est le puits d’évaluation 3. La solution optimale est bien trouvée, car l’heuristique est admissible. Le nœud v3 a été traité deux fois, car l’heuristique est non consistante (sur l’arc v2 − v3).

2.2.5 Algorithme de Demoucron et Floyd L’algorithme de Ford donne le coût minimal entre la source et chaque nœud. L’algorithme de Demoucron et Floyd est une extension pour obtenir le coût minimal entre deux nœuds quelconques. La matrice des coûts minimaux entre tous les couples de nœuds est appelée le distancier du graphe. Cette matrice D de taille n  n est obtenue en n itérations de manière similaire à l’algorithme de Ford.

Optimisation discrète

125

Initialisation On remplit les éléments de la matrice D avec la valeur : - dij = cij si les nœuds vi et vj sont reliés par un arc de coût cij ; - dij =  si les nœuds vi et vj ne sont pas reliés. Itération k (1  k  n) La matrice D donne le coût du meilleur chemin entre chaque couple de nœuds. L’itération k consiste à examiner pour chaque couple de nœuds (v i,vj) le passage par le nœud intermédiaire vk. Le meilleur chemin de vi à vj a un coût dij. Le passage par vk aurait un coût dik + dkj. Si dik + dkj  dij , le passage par vk améliore la solution entre vi et vj. La valeur de dij est actualisée : d'ij = dik + dkj . Chaque élément de la matrice D est actualisé au cours de l’itération. Fin de l’algorithme On s’arrête lorsque les n nœuds ont été considérés comme nœud intermédiaire. La matrice D contient alors les coûts des meilleurs chemins entre paires de nœuds. Comme l’algorithme de Ford, l’algorithme de Demoucron et Floyd est applicable dans un graphe à valuations quelconques et suppose que le graphe ne comporte pas de circuit absorbant. La présence d’un circuit absorbant se détecte par l’apparition d’un élément négatif sur la diagonale de D : dii  0 . L’algorithme consiste en trois boucles emboîtées : De k=1 à n (itération k = numéro du nœud intermédiaire) De i=1 à n (i = numéro du nœud de départ) De j=1 à n (j = numéro du nœud d’arrivée) Remplacer dij par min(dij ,dik + dkj ) L’exemple suivant illustre le déroulement de l’algorithme de Demoucron et Floyd.

126

Techniques d’optimisation

Exemple 2-13 : Algorithme de Demoucron et Floyd (d’après [R6]) Considérons le graphe valué à 6 nœuds représenté ci-contre.

Appliquons l’algorithme de Demoucron et Floyd pour calculer le distancier. Initialisation La matrice D est remplie avec : dij = cij si les nœuds vi et vj sont reliés.

dij =  sinon (cases grisées).

Itération 1 On examine le passage par le nœud v 1. La colonne v1 est vide dans la matrice. Le nœud v1 ne reçoit aucun arc. v1 ne peut être un nœud intermédiaire. La matrice D n’est pas modifiée. Itération 2 On examine le passage par le nœud v 2. La colonne v2 a une valeur venant de v1. On compare les coûts d1j et d12 + d2 j .

d12 + d21 =  d12 + d22 =  d12 + d23 =  d12 + d24 = 5  6 → amélioration d12 + d25 = 9   → amélioration d12 + d26 =  La matrice D est actualisée avec les coûts améliorés.

Optimisation discrète

127

Itération 3 On examine le passage par le nœud v 3. La colonne v3 a des valeurs venant de v1 et v4. On compare les coûts d1j et d13 + d3j .

d13 + d31 =  , d13 + d32 =  d13 + d33 =  , d13 + d34 =  d13 + d35 = 9 = d15 → identique d13 + d36 =  On compare les coûts d 4 j et d43 + d3j . d43 + d31 =  , d43 + d34 =  d43 + d32 =  , d43 + d35 = 3   → amélioration d43 + d33 =  , d43 + d36 =  La matrice D est actualisée avec les coûts améliorés. Pour les itérations suivantes, on indique seulement les trajets améliorés par le nœud intermédiaire.

Itération 4 On examine le passage par le nœud v 4. La colonne v4 a des valeurs venant de v1 et v2. On compare les coûts d1j et d14 + d4 j .

d14 + d43 = 7  8 → d14 + d45 = 8  9 → d14 + d46 = 12   → On compare les coûts

amélioration amélioration amélioration

d 2 j et d 24 + d 4 j .

d24 + d43 = 4   → amélioration d24 + d45 = 5  6 → amélioration d24 + d46 = 9   → amélioration

128

Techniques d’optimisation

Itération 5 On examine le passage par le nœud v 5. La colonne v5 a des valeurs venant de v1,v2,v3,v4. On compare les coûts d1j et d15 + d5 j .

d15 + d56 = 10  12 → amélioration On compare les coûts d 2 j et d 25 + d5 j . d25 + d56 = 7  9 → amélioration On compare les coûts d3 j et d35 + d5 j . d35 + d56 = 3   → amélioration On compare les coûts d 4 j et d 45 + d5 j . d45 + d56 = 5  7 → amélioration Itération 6 On examine le passage par le nœud v 6. La ligne v6 est vide (aucun arc ne part de v6). Le nœud v6 n’est pas un nœud intermédiaire. Fin de l’algorithme Les 6 nœuds ont été examinés. On obtient le distancier ci-contre.

2.3 Problème d’ordonnancement L’ordonnancement consiste à planifier un processus formé de différentes tâches en respectant certaines contraintes temporelles entre les tâches. L’objectif est d’achever le processus le plus rapidement possible.

,Tn de durées respectives d1, ,dn . Les dates de début et fin de la tâche Ti sont notées t i,d et t i,f = t i,d + d i . Les dates de début des tâches sont les inconnues du problème d’ordonnancement. Le processus comporte n tâches T1,

On introduit également des tâches T0 et T représentant respectivement le début et la fin du processus. La réalisation des tâches peut être soumise à plusieurs types de contraintes.

Optimisation discrète

129

Contraintes de type potentiel - La tâche Ti ne peut commencer avant une date donnée : t i,d  t i min . - La tâche Ti doit être terminée avant une date donnée :

t i,f  t i max .

- La tâche Ti ne peut commencer avant que la tâche Tj soit terminée : t i,d  t j,f . Contraintes de type disjonctif - Les tâches Ti et Tj ne peuvent être simultanées :  t i,d , t i,f 

 t j,d , t j,f  =  .

Contraintes de type cumulatif Ces contraintes traduisent des limitations liées aux ressources disponibles (machines, personnel, coût …) pour réaliser les tâches. Elles prennent en compte d’autres aspects que l’ordre temporel et sont spécifiques à chaque problème. Les algorithmes standards d’ordonnancement ne prennent en compte que des contraintes de potentiel. La méthode approchée GANTT (diagramme en barres) développée par K. Adamiecki (1896), puis H. Gantt (1910) a longtemps été la seule disponible. Elle reste utile pour visualiser un planning optimisé par d’autres méthodes, en particulier les méthodes PERT et MPM développées à partir de 1958. Ces deux méthodes basées sur un graphe des tâches sont présentées dans les sections suivantes.

2.3.1 Méthode PERT La méthode PERT (Program Evaluation Research Task ou Program Evaluation and Review Technique) appelée aussi méthode CPM (Critical Task Method) est l’une des premières méthodes de recherche opérationnelle. Elle a été développée aux USA en 1958 pour planifier le programme de sous-marin nucléaire. À chaque tâche Ti est associé l’évènement début Ti,d et l’évènement fin Ti,f . Ces évènements forment les nœuds d’un graphe. On ajoute les évènements T0 et

T qui représentent le début et la fin du processus. Les arcs relient des évènements et ont pour valeur la durée séparant les évènements. • Un arc entre le début et la fin d’une tâche a pour valeur la durée de la tâche. • Une contrainte de potentiel (entre la fin d’une tâche Ti et le début d’une autre tâche Tj ) est prise en compte par un arc de durée nulle (ou égale au délai à respecter) entre Ti,f et Tj,d .

130

Techniques d’optimisation

La méthode PERT consiste à appliquer l’algorithme de Bellman (section 2.2.2) dans ce graphe en cherchant le chemin de longueur maximale entre T0 et T appelé chemin critique du processus. La durée de ce chemin est le temps minimal requis pour exécuter toutes les tâches en respectant les contraintes de potentiel. Il peut exister plusieurs chemins critiques (de durées égales). Une tâche située sur un chemin critique est une tâche critique. Elle ne peut être retardée sans augmenter la durée totale du processus. Une tâche non critique dispose d’une marge et peut être retardée sans affecter la durée totale.

Exemple 2-14 : Méthode PERT (d’après [R6]) Considérons un processus comportant 9 tâches notées A, B, C, D, E, F, G, H, I. Les tâches T0 et T représentent le début et la fin du processus. Le Tableau 2-3 indique pour chaque tâche sa durée et les évènements préalables au démarrage.

Tableau 2-3 : Durées et préalables des tâches La tâche I peut démarrer lorsque la tâche C est à moitié réalisée. Cet évènement intermédiaire noté Cm est ajouté à l’ensemble des tâches et donne le Tableau 2-4.

Tableau 2-4 : Durées et préalables des tâches avec évènement intermédiaire Le graphe PERT est représenté sur la Figure 2-18 ci-après. Les nœuds sont les évènements début et fin des tâches du Tableau 2-4. Les arcs relient des évènements successifs et ont pour valeur la durée entre les évènements. Les arcs en pointillés signifient une durée nulle. La tâche ponctuelle Cm est représentée par un seul nœud pour simplifier (on peut la représenter par son début et sa fin liés par un arc de durée nulle, mais cet arc n’interagit pas avec le reste du graphe).

Optimisation discrète

131

Figure 2-18 : Graphe PERT Appliquons l’algorithme de Bellman pour trouver le chemin de durée maximale de T0 à T . La Figure 2-19 montre les coûts des nœuds à la fin de l’algorithme.

Figure 2-19 : Algorithme de Bellman sur le graphe PERT Le chemin critique (trait épais) est : Cd − Cm − Cf − Fd − Ff − Gd − Gf de durée 63. Les tâches critiques sont donc C, F et G. Les valuations des nœuds représentent les dates au plus tôt de début de chaque tâche. Ces dates sont récapitulées dans le Tableau 2-5.

Tableau 2-5 : Dates de début et fin au plus tôt de chaque tâche

132

Techniques d’optimisation

2.3.2 Méthode MPM La méthode MPM (Méthode des Potentiels Métra) a été développée en 1958 par B. Roy de la société Métra pour planifier la construction du paquebot France. Comme la méthode PERT, elle se ramène à un problème de chemin dans un graphe. Chaque nœud représente le début d’une tâche. Les arcs représentent des contraintes de durées. Tous les arcs partant d’une tâche Ti,d ont la même valuation di égale à la durée de la tâche Ti. Ce graphe est semblable à celui de la méthode PERT, à la différence qu’il ne fait pas apparaître les évènements « fin de tâche ». La méthode MPM applique implicitement l’algorithme de Bellman sous la forme d’un tableau indiquant pour chaque tâche les tâches préalables et leurs durées. Ce tableau est rempli progressivement en partant du début T0 pour trouver les dates de début et de fin au plus tôt de chaque tâche. L’utilisation du tableau MPM est simple et évite la construction explicite du graphe. La méthode MPM est illustrée sur le problème d’ordonnancement précédent.

Exemple 2-15 : Méthode MPM (d’après [R6]) Reprenons le problème d’ordonnancement de l’Exemple 2-14. Le Tableau 2-4 est reproduit ci-dessous avec la tâche intermédiaire Cm représentant la moitié de l’achèvement de la tâche C.

Le graphe MPM est représenté sur la Figure 2-20. Les nœuds sont les débuts des tâches. Les arcs issus d’un nœud ont pour valeur la durée de la tâche.

Figure 2-20 : Graphe MPM

Optimisation discrète

133

La Figure 2-21 montre le résultat obtenu par l’algorithme de Bellman et le chemin critique C−F−G de durée 63.

Figure 2-21 : Algorithme de Bellman sur le graphe MPM La méthode MPM consiste à appliquer implicitement l’algorithme de Bellman sous forme d’un tableau. Le tableau MPM initial est représenté ci-dessous. Pour la présentation qui suit, ce tableau a été scindé en deux parties : A-B-C-D puis E-F-G-H-I-T. Le tableau est divisé en colonnes associées à chaque tâche. Pour chaque tâche, on indique sur la première ligne le nom de la tâche et sur les lignes au-dessous toutes les tâches préalables avec leur durée. Par exemple, la tâche G a pour préalable les tâches D (durée 8), E (durée 18) et F (durée 25). Une colonne initialement vide est ajoutée à gauche de chaque colonne de tâche. Ces sous-colonnes de gauche vont être complétées avec les dates au plus tôt.

Tableau 2-6 : Tableau MPM initial

134

Techniques d’optimisation

Premier niveau On commence par la première tâche T0 dont la date au plus tôt est connue (= 0). On inscrit cette date à gauche de T0 dans les sous-colonnes où T0 apparaît, soit A, B, Cm. Les colonnes A, B, Cm sont alors complètes, car toutes leurs tâches préalables ont leur date connue. On peut alors calculer la date au plus tôt des tâches A, B, Cm. Par exemple, la date au plus tôt de A vaut : 0 (date au plus tôt de T0 ) + 5 (durée de T0 à A) On inscrit cette date au plus tôt en haut à gauche de la colonne A (même procédé pour B et C).

Deuxième niveau Les colonnes A, B, Cm sont complètes. Les dates au plus tôt des tâches A, B, C m sont connues. On reporte ces dates dans les sous-colonnes où A, B, Cm apparaissent, soit C, D, E, F. Les colonnes C, D, E sont complètes, car toutes leurs tâches préalables ont leur date connue. On peut alors calculer la date au plus tôt des tâches C, D, E. Par exemple, la date au plus tôt de D est le maximum entre : - 5 (date au plus tôt de A) + 16 (durée de A à D) ; - 0 (date au plus tôt de B) + 14 (durée de B à D). On inscrit ces dates au plus tôt en haut à gauche des colonnes C, D, E.

Optimisation discrète

135

Troisième niveau Les colonnes C, D, E sont complètes. Les dates au plus tôt des tâches C, D, E sont connues. On reporte ces dates dans les sous-colonnes où C, D, E apparaissent, soit F, G, H, I. Les colonnes F, I sont complètes, car toutes leurs tâches préalables ont leur date connue. On peut alors calculer la date au plus tôt des tâches F, I. Par exemple, la date au plus tôt de F est le maximum entre : - 0 (date au plus tôt de B) + 14 (durée de B à F) ; - 13 (date au plus tôt de C) + 10 (durée de C à F). On inscrit les dates au plus tôt en haut à gauche des colonnes F, I.

Quatrième niveau Les colonnes F, I sont complètes. Les dates au plus tôt des tâches F, I sont connues. On reporte ces dates dans les sous-colonnes où F, I apparaissent, soit G, H, T. Les colonnes G, H sont complètes. On peut calculer la date au plus tôt des tâches G, H. On peut ensuite compléter le tableau en calculant la date finale au plus tôt (colonne T ). Le tableau MPM final est présenté ci-dessous.

Tableau 2-7 : Tableau MPM final

136

Techniques d’optimisation

Ce tableau final indique les dates au plus tôt de chaque tâche en haut à gauche des colonnes. On reconstitue le chemin critique en partant de la fin. L’opération critique dans chaque colonne est celle qui a donné la date au plus tôt. T → G G → F F → C C → Cm Cm → T0 63 = 48+15 48 = 23+25 23 = 13+10 13 = 3+10 3 = 0+3

2.3.3 Marges L’algorithme de Bellman sous la forme PERT ou MPM donne le chemin critique. Les évènements sur le chemin critique ont leur date imposée. Pour les évènements non critiques, il peut exister une marge sur la date de l’évènement. On distingue : - la marge libre qui ne décale pas les dates des autres évènements ; - la marge totale qui ne décale pas la date finale du processus. Un évènement Ei a une date au plus tôt ti min donnée par l’algorithme de Bellman et une date au plus tard ti max (non connue) ne décalant pas la fin du processus. Les durées dij séparant des évènements consécutifs E i et Ej sont connues. Les dates au plus tôt et au plus tard ainsi que les marges sont liées par les relations suivantes.

ti min = max (t jmin + d ji ).



L’évènement Ei doit attendre ses prédécesseurs :



L’évènement Ei ne doit pas retarder ses successeurs : ti max = min (t jmax − dij ).



Si l’évènement Ei est sur le chemin critique :



Si l’arc (ou tâche) Ei−Ej est sur le chemin critique : t jmin = ti min + dij .

jPr ed(i)

jSucc(i)

La marge libre sur la tâche Ei−Ej vaut :

ti max = ti min .

mij = t jmin − ti min − dij .

La marge totale sur la tâche Ei−Ej vaut : Mij = t jmax − ti min − dij . La durée de la tâche Ei−Ej peut être augmentée : - de mij sans modifier les dates des évènements ultérieurs ; - de Mij sans modifier la date finale, mais en décalant les évènements ultérieurs à leur date au plus tard (leur marge libre devient alors nulle). Lorsque l’algorithme de Bellman est terminé, les dates au plus tard se calculent à rebours en partant de la date finale, puis les marges libres et totales s’en déduisent.

Exemple 2-16 : Marges (d’après [R6]) Considérons le problème à 4 évènements A, B, C, D de la Figure 2-22 ci-après.

Optimisation discrète

137

Le chemin critique : T0 − B − D − T est de durée 6.

Figure 2-22 : Chemin critique et marges L’algorithme de Bellman donne les dates au plus tôt (1er nombre entre parenthèses sur la Figure 2-22). Les dates au plus tard (2e nombre entre parenthèses) sont calculées à rebours à partir de T et en soustrayant les durées des arcs parcourus. La date au plus tard d’un évènement dépend des dates au plus tard de ses successeurs : ti max = min (t jmax − dij ) . jSucc(i)

Ces dates au plus tôt et au plus tard sont récapitulées dans le Tableau 2-8.

Tableau 2-8 : Dates au plus tôt et au plus tard Les dates au plus tôt et au plus tard permettent de déterminer pour chaque tâche : - sa marge libre : mij = t jmin − ti min − dij ; - sa marge totale : Mij = t jmax − ti min − dij . Ces marges sont données dans le Tableau 2-9 où les tâches critiques sont colorées.

Tableau 2-9 : Marge libre et marge totale On observe que les tâches (T0−A) et (A−C) ont une marge libre de 0, bien que n’étant pas critiques. Ces tâches ne peuvent donc pas être retardées sans décaler les tâches ultérieures et la date finale.

138

Techniques d’optimisation

2.4 Problème de flot On se place dans un réseau (section 2.1.1) défini par ses nœuds et ses arcs (orientés). La capacité et le coût de l’arc du nœud i au nœud j sont notés fij et cij . Les nœuds s et t sont le point d’entrée (source) et de sortie (puits) du réseau. Les problèmes de flot standards sont : - la recherche du flot maximal pouvant traverser le réseau ; - la recherche du flot maximal de coût minimal (si plusieurs solutions existent). Ces problèmes peuvent être résolus par la programmation linéaire (section 1.4.4) ou par les algorithmes spécifiques de Ford-Fulkerson et de Roy-Busacker-Gowen présentés dans les sections suivantes.

2.4.1 Algorithme de Ford-Fulkerson L’algorithme de Ford-Fulkerson détermine le flot maximal pouvant traverser un réseau. Il s’agit d’une méthode itérative basée sur la notion de chaîne améliorante. Chaîne améliorante Supposons que l’on connaisse un flot initial. Chaque arc v i-vj est traversé par un flot xij  fij et la loi de conservation est respectée à chaque nœud. Une chaîne élémentaire est une suite de nœuds distincts reliés par des arêtes (non orientées). La Figure 2-23 montre une chaîne élémentaire (v1, v2 , v3 , v4 ) avec deux arcs directs (v1 − v2 , v3 − v4 ) et un arc indirect en pointillés (v2 − v3 ) .

Figure 2-23 : Chaîne élémentaire Une chaîne élémentaire est dite améliorante si : xij  fij ; - ses arcs directs ne sont pas saturés : - ses arcs indirects sont de flot non nul : xij  0 . On peut augmenter le flot de la quantité  le long de la chaîne améliorante : - en augmentant le flot des arcs directs : xij  fij →   fij − xij ; - en diminuant le flot des arcs indirects : xij  0 →   xij .

Optimisation discrète

139

Cette variation sur toute la chaîne modifie le flot total de  tout en respectant la loi de conservation satisfaite par le flot initial. La Figure 2-24 illustre l’effet de la variation  le long de la chaîne améliorante.

Figure 2-24 : Chaîne améliorante Marquage des nœuds La recherche d’une chaîne améliorante s’effectue par marquage des nœuds, selon la procédure suivante. •

Initialisation - La source est marquée + . - Les autres nœuds sont non marqués.



Marquage des nœuds On parcourt l’ensemble des arcs en partant de la source et en examinant à chaque nœud l’ensemble des arcs arrivants et partants. Pour un arc [u − v] : - si u est marqué et [u − v] non saturé, alors v est marqué + (arc direct) ; - si v est marqué et [u − v] de flot non nul, alors u est marqué − (arc indirect). On stocke pour chaque nœud son prédécesseur dans l’ordre de marquage.



Chaîne améliorante Si le puits est marqué, le flot n’est pas maximal. La chaîne améliorante est obtenue en remontant les prédécesseurs à partir du puits. Le flot est augmenté de  le long de la chaîne améliorante. - Le flot des arcs directs [vi − vj ] est augmenté de  (avec   fij − xij ). - Le flot des arcs indirects [vi − vj ] est diminué de  (avec   xij ).

La procédure s’arrête lorsque le puits est non marqué. Le flot est alors maximal. L’exemple suivant illustre le déroulement de l’algorithme de Ford-Fulkerson avec la procédure de marquage.

140

Techniques d’optimisation

Exemple 2-17 : Algorithme de Ford-Fulkerson (d’après [R6]) Considérons le réseau de la Figure 2-25 avec les capacités entre parenthèses.

Figure 2-25 : Réseau de transport On construit un flot initial compatible des capacités des arcs et respectant la conservation en chaque nœud. Les flots sont notés sur chaque arc et les arcs saturés sont en traits épais (Figure 2-26). Ce flot est de valeur 80.

Figure 2-26 : Flot initial

Première itération Les nœuds sont marqués en partant de la source. Le Tableau 2-10 montre l’ordre de traitement des arcs, le marquage résultant et le prédécesseur de chaque nœud.

Optimisation discrète

141

Tableau 2-10 : Marquage à la première itération Le puits v3 étant marqué, il existe une chaîne améliorante que l’on trouve en remontant les prédécesseurs du Tableau 2-10 : v3 → v21 → v12 → v22 → v11 → v0 Le Tableau 2-11 montre les variations réalisables sur chaque arc de la chaîne améliorante. La variation maximale compatible des capacités des arcs est : = 5.

Tableau 2-11 : Variation réalisable sur la chaîne améliorante La variation est appliquée sur la chaîne améliorante (traits épais sur la Figure 2-27) Le flot augmente ( = +5) sur les arcs directs [v0 − v11 ] , [v11 − v22 ] , [v12 − v21 ], [v21 − v3 ] et diminue ( = −5) sur l’arc indirect [v12 − v22 ] .

Figure 2-27 : Chaîne améliorante

142

Techniques d’optimisation

Le nouveau flot de valeur 85 est représenté sur la Figure 2-28. Les arcs saturés sont en traits épais.

Figure 2-28 : Flot après la première itération Deuxième itération Le marquage des nœuds en partant de la source est donné dans le Tableau 2-12.

Tableau 2-12 : Marquage à la deuxième itération Le marquage s’arrête au nœud v22, dont tous les arcs sont nuls ou saturés. Le puits v3 n’étant pas marqué, le flot de la Figure 2-28 est maximal et a pour valeur 85.

Coupe L’optimalité du flot obtenu par l’algorithme de Ford-Fulkerson repose sur la notion de coupe. La coupe associée à un flot est l’ensemble W des nœuds marqués (Figure 2-29). Chaque nœud appartient soit à W soit à son complémentaire W . • Un arc [vi − vj ] sortant de W est saturé. •

Sinon vj serait marqué (+) et serait dans W. Un arc [vk − vl ] entrant dans W est de flot nul. Sinon vk serait marqué (−) et serait dans W.

Optimisation discrète

143

Figure 2-29 : Coupe associée au flot Le flot circulant dans la coupe W peut éventuellement augmenter, mais on ne peut ni augmenter le flot total sortant de W, ni diminuer le flot total entrant dans W. La source est toujours dans la coupe. Si le puits n’est pas dans la coupe (non marqué), on ne peut pas augmenter le flot lui parvenant. Ce flot est alors maximal.

Exemple 2-18 : Coupe Reprenons le flot maximal de l’Exemple 2-17 représenté sur la Figure 2-28. Les nœuds marqués v0, v11, v22 (Tableau 2-12) forment l’ensemble W entouré sur la Figure 2-30. Les arcs sortant de W en traits pleins sont tous saturés. Les arcs entrant dans W en pointillés sont tous de flot nul. Le puits v3 est hors de W et on ne peut pas augmenter le flot sortant de W. Ce flot est maximal.

Figure 2-30 : Coupe sur le flot maximal

144

Techniques d’optimisation

2.4.2 Algorithme de Roy-Busacker-Gowen Il existe généralement plusieurs solutions de flot maximal. Ces solutions n’ont pas le même coût selon les arcs empruntés. L’algorithme de Roy-Busacker-Gowen détermine le flot maximal de coût minimal pouvant traverser un réseau. Cette méthode utilise le graphe d’écart associé au flot. Graphe d’écart Le graphe G est supposé antisymétrique. Il existe au plus un seul arc entre deux nœuds : si l’arc [vi − vj ] existe, alors l’arc [vj − vi ] n’existe pas. Pour un flot  donné, le graphe d’écart Ge() associé au flot  est un graphe ayant les mêmes nœuds que G et dont les arcs sont définis de la façon suivante. •

Si l’arc [vi − vj ] de G est saturé (xij = fij ) , Ge ne comporte pas l’arc [vi − vj ] et comporte l’arc [vj − vi ] de capacité fij .



Si l’arc [vi − vj ] de G est de flot nul (xij = 0) , Ge comporte l’arc [vi − vj ] de capacité fij et ne comporte pas l’arc [vj − vi ] .



Si l’arc [vi − vj ] de G est de flot intermédiaire (0  xij  fij ) , Ge comporte l’arc [vi − vj ] de capacité fij − xij et comporte l’arc [vj − vi ] de capacité xij .

Un chemin de la source au puits dans le graphe d’écart Ge correspond à une chaîne améliorante dans le graphe G. En effet, ce chemin empruntera soit des arcs directs non saturés, soit des arcs indirects de flot non nul. L’exemple suivant illustre l’utilisation du graphe d’écart pour la recherche d’une chaîne améliorante.

Exemple 2-19 : Graphe d’écart Considérons un flot initial 0 dans le graphe G de la Figure 2-31 ci-après. Le flot est indiqué sur chaque arc avec la capacité entre parenthèses. Les arcs saturés et de flot nul sont en traits épais. Le graphe d’écart associé Ge(0) est tracé à droite.

Optimisation discrète

145

Figure 2-31 : Graphe d’écart associé au flot initial Le Tableau 2-13 détaille chaque arc de Ge(0) en fonction du flot passant par l’arc.

Tableau 2-13 : Arcs du graphe d’écart initial Il existe un chemin de la source v 1 au puits v4 dans le graphe d’écart Ge(0). Ce chemin en traits épais sur la Figure 2-31 correspond à la chaîne améliorante v1 → v2 → v3 → v4 dans le graphe G. Le flot peut être augmenté de  = 1 le long de cette chaîne améliorante. La Figure 2-32 montre le nouveau flot 1 avec son graphe d’écart Ge(1) à droite.

Figure 2-32 : Graphe d’écart associé au nouveau flot

146

Techniques d’optimisation

Le Tableau 2-14 détaille chaque arc de Ge(1) en fonction du flot passant par l’arc.

Tableau 2-14 : Arcs du nouveau graphe d’écart Il n’existe pas de chemin de v1 à v4 dans le graphe d’écart Ge(1). Le flot 1 est donc maximal.

Intéressons-nous maintenant au problème du flot maximal de coût minimal. Le coût d’un flot  est : C =  cijxij , où xij est le flot passant par l’arc [vi − vj ] et cij est le coût unitaire de l’arc. Les coûts cij sont reportés sur le graphe d’écart Ge () comme suit. - Les arcs directs du graphe d’écart Ge () sont affectés des coûts +cij . - Les arcs indirects du graphe d’écart Ge () sont affectés des coûts −cij . Le graphe d’écart valué avec ces coûts permet d’effectuer les diagnostics suivants. • Le flot  est de valeur maximale s’il n’existe aucun chemin de la source au puits dans le graphe d’écart. • Le flot  est de coût minimal s’il n’existe aucun circuit de coût absorbant (circuit de coût négatif) dans le graphe d’écart (théorème de Roy).

Exemple 2-20 : Diagnostic d’optimalité dans le graphe d’écart Reprenons l’Exemple 2-19 et le graphe d’écart du flot maximal 1 (Figure 2-32). Ce graphe est reproduit sur la Figure 2-33 ci-après en indiquant sur chaque arc sa capacité et son coût sous la forme : (fij ,cij ) . Les arcs saturés sont en traits épais. Le flot 1 est de valeur  = 5 et de coût c = 20 . Le graphe d’écart associé Ge(1) est représenté à droite. Le flot est maximal, car il n’existe pas de chemin de la source v1 au puits v4. En revanche, ce flot n’est pas de coût minimal, car il existe dans Ge(1) un circuit absorbant v1 → v3 → v2 → v1 de coût −5 tracé en traits épais. Il est donc possible de trouver un flot de même valeur  = 5 et de coût moins élevé (calculé dans l’Exemple 2-21).

Optimisation discrète

147

Figure 2-33 : Graphe d’écart avec les coûts des arcs

La recherche d’une chaîne améliorante équivaut à la recherche d’un chemin entre la source et le puits dans le graphe d’écart. L’algorithme de Roy-Busacker-Gowen consiste à choisir à chaque itération la chaîne améliorante de coût minimal. La chaîne de coût minimal est obtenue en appliquant l’algorithme de Ford (section 2.2.1) dans le graphe d’écart. On augmente alors le flot le long de la chaîne améliorante et on met à jour le graphe d’écart associé au nouveau flot. L’algorithme se termine lorsqu’il n’y a plus de chemin de la source au puits dans le graphe d’écart. Le flot obtenu est alors de valeur maximale et de coût minimal. L’algorithme de Ford (section 2.2.1) s’applique pour des valuations de signe quelconque et permet de détecter un circuit absorbant. Un tel circuit conduit à une boucle infinie de l’algorithme de Ford et un blocage de l’algorithme de RoyBusacker-Gowen. En sélectionnant à chaque itération la chaîne améliorante de coût minimal, le graphe d’écart actualisé ne comporte pas de circuit absorbant et l’algorithme se termine en un nombre fini d’itérations. L’exemple suivant illustre le déroulement de l’algorithme de Roy-BusackerGowen.

Exemple 2-21 : Algorithme de Roy-Busacker-Gowen Reprenons le graphe de la Figure 2-33 et appliquons l’algorithme de RoyBusacker-Gowen en partant d’un flot nul. Ce flot 0 et le graphe d’écart associé sont représentés sur la Figure 2-34. Pour le flot nul, le graphe d’écart Ge est identique au graphe G.

148

Techniques d’optimisation

Figure 2-34 : Graphe d’écart du flot initial nul Il existe trois chemins de la source v 1 au puits v4 dans le graphe d’écart Ge(0). - Le chemin v1 → v2 → v4 est de coût 3. - Le chemin v1 → v2 → v3 → v4 est de coût 8.

- Le chemin v1 → v3 → v4 est de coût 3. Choisissons le chemin de coût minimal v1 → v2 → v4 comme chaîne améliorante. Le flot peut être augmenté de  = 3 le long de ce chemin. Le nouveau flot 1 de valeur  = 3 et de coût c = 8 est représenté sur la Figure 2-35.

Figure 2-35 : Graphe d’écart du flot après la première itération Il existe deux chemins de la source v1 au puits v4 dans le graphe d’écart Ge(1). - Le chemin v1 → v2 → v3 → v4 est de coût 8. - Le chemin v1 → v3 → v4 est de coût 3.

Optimisation discrète

149

Choisissons le chemin de coût minimal v1 → v3 → v4 comme chaîne améliorante. Le flot peut être augmenté de  = 2 le long de ce chemin. Le nouveau flot 2 de valeur  = 5 et de coût c = 15 est représenté sur la Figure 2-36.

Figure 2-36 : Graphe d’écart du flot après la deuxième itération Vérifions l’optimalité du flot 2 de valeur  = 5 et de coût c = 15 . Ce flot est de valeur maximale, car il n’existe pas de chemin de v1 à v4 dans Ge(2). Ce flot est de coût minimal, car il n’existe pas de circuit absorbant dans Ge(2). Ce flot 2 est de coût inférieur à celui de la Figure 2-33.

2.5 Problème d’affectation On cherche à affecter n ressources à n tâches en minimisant le coût total. Le coût d’affectation de la ressource i à la tâche j est noté cij. Ce problème peut se résoudre par la programmation linéaire mixte (section 1.4.2), par l’algorithme de Roy-Busacker-Gowen ou par la méthode hongroise.

2.5.1 Problème de flot équivalent Le problème d’affectation peut se formuler comme un problème de flot. Les nœuds du graphe sont les ressources (ri )i=1 à n et les tâches (ti )i=1 à n . Ce graphe est biparti, car les ressources d’une part et les tâches d’autre part forment deux sous-ensembles de nœuds disjoints (sans liaisons). - Chaque ressource ri est liée à une tâche tj par un arc de capacité 1 et de coût cij. - Les ressources sont liées à une source r0 par des arcs de capacité 1 et de coût 0. - Les tâches sont liées à un puits t0 par des arcs de capacité 1 et de coût 0.

150

Techniques d’optimisation

On cherche le flot maximal de coût minimal entre r0 et t0. La valeur du flot sera égale à n. Le graphe du problème de flot équivalent est tracé sur la Figure 2-37.

Figure 2-37 : Problème de flot équivalent au problème d’affectation

Exemple 2-22 : Problème de flot équivalent

24

10

21

11

Considérons un problème d’affectation à 4 ressources et 4 tâches. La matrice des coûts est donnée ci-contre. (lignes = ressources, colonnes = tâches)

14

22

10

15

15

17

20

19

11

19

14

13

Le graphe du problème de flot équivalent est représenté sur la Figure 2-38.

Figure 2-38 : Matrice des coûts et graphe du flot équivalent On construit un flot initial par une méthode gloutonne. Les ressources sont traitées une à une. Pour chaque ressource (ligne), on choisit parmi les tâches encore

Optimisation discrète

151

disponibles celle de coût minimal. La Figure 2-39 montre cette affectation initiale. Les lignes et colonnes choisies sont grisées au fur et à mesure des affectations. (r1 – t2)

(r2 – t3)

(r4 – t1)

(r3 – t4)

Figure 2-39 : Affectation initiale gloutonne Cette affectation correspond à un flot 1 de valeur 4 et de coût 50. La Figure 2-40 montre à gauche le graphe du flot (seuls les arcs saturés sont représentés avec leur coût) et à droite le graphe d’écart associé. Le flot 1 est maximal, car il n’existe pas de chemin de r0 à t0. Ce flot n’est pas de coût minimal, car il existe un circuit absorbant r3 → t1 → r4 → t4 → r3 tracé en traits épais.

Figure 2-40 : Flot associé à l’affectation initiale Le circuit absorbant indique qu’il faut permuter les affectations de r 3 et r4. La ressource r3 est affectée à t1 et la ressource r4 est affectée à t4. La Figure 2-41 page suivante montre le graphe du nouveau flot 2. Ce flot est maximal de valeur 4 et de coût minimal, car il n’existe pas circuit absorbant dans le graphe d’écart. L’affectation optimale est donnée ci-contre. Son coût est de 48.

24

10

21

11

14

22

10

15

15

17

20

19

11

19

14

13

152

Techniques d’optimisation

Figure 2-41 : Graphe d’écart du flot optimal

2.5.2 Méthode hongroise La méthode hongroise (Kühn, Evergary, König, 1955) utilise directement la matrice des coûts (cij )i,j=1 à n pour déterminer l’affectation optimale. Cette méthode itérative suit les étapes suivantes. Étape 1 : réduction des lignes On soustrait à chaque ligne son plus petit élément. On obtient ainsi un zéro par ligne. Étape 2 : réduction des colonnes On soustrait à chaque colonne son plus petit élément. On obtient ainsi au moins un zéro par colonne. Étape 3 : couverture des zéros On cherche le nombre minimal p de lignes et colonnes couvrant tous les zéros. Cette recherche par l’algorithme de Ford-Fulkerson est détaillée plus bas. - Si p < n, la solution n’est pas optimale. On passe à l’étape 4. - Si p = n, la solution est optimale. On passe à l’étape 5. Étape 4 : augmentation du coût On cherche parmi les lignes ou colonnes non couvertes le plus petit coût. On le soustrait aux éléments non couverts. On l’ajoute aux éléments couverts deux fois. On revient à l’étape 3. Étape 5 : solution optimale On affecte un zéro par ligne et par colonne.

Optimisation discrète

153

Exemple 2-23 : Méthode hongroise

24

10

21

11

Reprenons le problème de l’Exemple 2-22 dont la matrice est donnée ci-contre.

14

22

10

15

15

17

20

19

Appliquons les étapes de la méthode hongroise.

11

19

14

13

Étape 1 : réduction des lignes On soustrait le plus petit élément de chaque ligne. → C = 10 + 10 + 15 + 11 = 46 Étape 2 : réduction des colonnes On soustrait le plus petit élément de chaque colonne. → C = 46 + 0 + 0 + 0 + 1 = 47

Étape 3 : couverture des zéros La méthode est détaillée plus bas. On trouve qu’il faut 1 ligne et 2 colonnes pour couvrir tous les zéros. p = 1 + 2 < n = 4 → non optimal Étape 4 Plus petit élément non couvert : cmin = 1 On le soustrait aux éléments non couverts. On l’ajoute aux éléments couverts deux fois.

→ C = 47 + 1 = 48

→ −1 → +1

154

Techniques d’optimisation

Étape 3 : couverture des zéros La méthode est détaillée plus bas. On trouve qu’il faut 2 ligne et 2 colonnes pour couvrir tous les zéros. p = 2 + 2 = n → optimal

Étape 5 : choix d’un zéro par ligne et colonne On revient à la matrice initiale des coûts. Les zéros choisis définissent les affectations. Les cases correspondantes sont surlignées. L’affectation optimale (r1 – t2) ; (r2 – t3) ; (r3 – t1) ; (r4 – t4) est de coût 48. Couverture des zéros L’étape 3 de la méthode hongroise nécessite de trouver le nombre minimal de lignes et de colonnes couvrant tous les zéros de la matrice. Cette recherche s’effectue dans un graphe défini de la façon suivante. - Un zéro en ligne i et colonne j donne un arc entre ri et tj de capacité 1. - Les arcs partant de la source r0 et les arcs arrivant au puits t0 sont de capacité 1. On applique l’algorithme de Ford-Fulkerson à partir du flot nul pour déterminer le flot maximal partant de r0 et arrivant en t0. Si le flot maximal est de valeur n, toutes les ressources et les tâches sont affectées. Les affectations optimales correspondent aux arcs (ri – tj) de flot 1 (= zéros sélectionnés).

Exemple 2-24 : Couverture des zéros

14

0

11

0

Reprenons l’étape 3 de l’Exemple 2-23 avec la matrice donnée ci-contre.

4

12

0

4

Le graphe associé aux zéros de la matrice est représenté ci-après. Le flot initial 0 est nul.

0

2

5

3

0

8

3

1

Optimisation discrète

155

Le marquage des nœuds (section 2.4.1) à partir de r0 donne la chaîne améliorante : r0(+) → r1(+) → t2(+) → t0(+) (tracée en traits épais ci-dessus). Le puits t0 étant marqué, le flot peut augmenter de δφ = 1 le long de la chaîne améliorante : (r0 – r1 – t2 – t0). Le flot 1 de valeur 1 est représenté ci-dessous.

Le marquage des nœuds à partir de r0 donne la chaîne améliorante : r0(+) → r2(+) → t3(+) → t0(+) (tracée en traits épais ci-dessus). Le puits t0 étant marqué, le flot peut augmenter de δφ = 1 le long de la chaîne améliorante : (r0 – r2 – t3 – t0). Le flot 2 de valeur 2 est représenté page suivante.

156

Techniques d’optimisation

Le marquage des nœuds à partir de r0 donne la chaîne améliorante : r0(+) → r3(+) → t1(+) → t0(+) (tracée en traits épais ci-dessus). Le puits t0 étant marqué, le flot peut augmenter de δφ = 1 le long de la chaîne améliorante : (r0 – r3 – t1 – t0). Le flot 3 de valeur 3 est représenté ci-dessous.

Le marquage des nœuds à partir de r0 donne la chaîne : r0(+) → r3(+) → t1(+). Le puits t0 n’étant pas marqué, le flot est maximal. Le nombre minimal de lignes et colonnes couvrant les zéros vaut 3, inférieur aux affectations à réaliser (4). On passe donc à l’étape 4 de la méthode hongroise. Après l’étape 4, la matrice des coûts (ci-contre) comporte un zéro supplémentaire en ligne 4 colonne 4. Ce zéro ajoute un arc (r4 ̶ t4) dans le graphe précédent et permet de marquer le puits par la chaîne (r0 – r4 – t4 – t0).

15

0

12

0

4

11

0

3

0

1

5

2

0

7

3

0

Optimisation discrète

157

Le flot 4 de valeur 4 est représenté ci-dessous avec les arcs saturés en traits épais.

Ce flot est maximal. L’affectation optimale correspond aux arcs saturés, soit : (r1 – t2) ; (r2 – t3) ; (r3 – t1) ; (r4 – t4)

Extensions La méthode hongroise peut s’appliquer à un problème de maximisation du coût (par exemple pour maximiser la satisfaction sur une matrice de préférences). Il suffit pour cela de chercher sur chaque ligne de la matrice des coûts C le plus grand élément cmax , puis remplacer chaque élément cij de la ligne par cmax − cij . On applique ensuite la méthode hongroise sur cette matrice Cmax − C . La méthode hongroise peut également s’appliquer si le nombre de ressources m est différent du nombre de tâches p. Dans ce cas, l’étape 3 de couverture des zéros est réalisée par l’algorithme de Roy-Busacker-Gowen donnant le flot maximal de coût minimal. Si le flot maximal vaut min(m,p), la solution est optimale. Sinon, on augmente le flot le long de la chaîne améliorante de coût minimal. L’exemple suivant illustre le cas d’un nombre de ressources différent du nombre de tâches.

Exemple 2-25 : Nombre de ressources et de tâches différents Considérons le problème à 2 ressources et 3 tâches avec la matrice des coûts ci-contre. Après la réduction des lignes et des colonnes, on obtient les matrices ci-contre.

1

2

3

1

3

3

0

1

2

0

0

0

0

2

2

0

1

0

158

Techniques d’optimisation

On cherche la couverture de coût minimal des zéros. Dans ce cas simple, on peut énumérer les 4 possibilités de couverture et comparer leur coût. (r1 – t1) et (r2 – t3) → C=1+3=4 (r1 – t2) et (r2 – t1) → C=2+1=3 → coût minimal (r1 – t2) et (r2 – t3) → C=2+3=5 (r1 – t3) et (r2 – t1) → C=3+1=4 En pratique, on utilise l’algorithme de Roy-Busacker-Gowen dans le graphe des zéros ci-dessous. Le flot initial 0 est nul.

On trouve 2 chaînes améliorantes de coût +1 : (r0 – r1 – t1 – t0) et (r0 – r2 – t1 – t0). Les autres chaînes améliorantes sont de coût supérieur. On augmente le flot de 1 sur la chaîne (r0 – r1 – t1 – t0). Le flot 1 de valeur 1 est représenté ci-dessous.

On trouve 3 chaînes améliorantes : - (r0 – r2 – t3 – t0) de coût +3 ; - (r0 – r2 – t1 – r1 – t2 – t0) de coût + 1 – 1 + 2 = +2 ; - (r0 – r2 – t1 – r1 – t3 – t0) de coût + 1 – 1 + 3 = +3. On augmente le flot de 1 sur la chaîne de coût minimal (r0 – r2 – t1 – r1 – t2 – t0) (en traits épais). Le flot 2 de valeur 2 est représenté ci-après.

Optimisation discrète

Ce flot est maximal, car toutes les ressources sont affectées. Le coût total est 1 + 2 = 3. L’affectation optimale est : (r1 – t2) → coût = 2 (r2 – t1) → coût = 1

159

1

2

3

1

3

3

2.5.3 Justification théorique Le problème d’affectation se formule comme un problème linéaire en variables binaires (section 1.4.2). La méthode hongroise s’interprète comme une résolution itérative du problème dual.

Justification de la méthode hongroise Le problème d’affectation se formule comme un problème linéaire noté (P). n → multiplicateurs u  xij = 1 , j = 1 à n n n i =1 min z =  cijxij sous  n xij i =1 j=1  xij = 1 , i = 1 à n → multiplicateurs v  j=1 La variable binaire xij vaut 1 si la ressource i est affectée à la tâche j, 0 sinon. Les contraintes expriment que chaque ressource (i = 1 à n) et chaque tâche (j = 1 à n) est affectée une fois et une seule. Les multiplicateurs de Lagrange associés aux contraintes sont notés : - u = (u1, ,un ) pour les n contraintes sur les ressources ; - v = (v1,

, vn ) pour les n contraintes sur les ressources.

160

Techniques d’optimisation

T Réécrivons ce problème (P) sous la forme : min z = c x sous Ax = b x0;1

avec la matrice A et les vecteurs b, c, x définis par :

La solution du problème primal (P) est naturellement binaire, car la matrice A est unimodulaire. Le problème dual (D) se formule comme : u → n max z ' = bT  sous AT   c avec  =     v → n soit en explicitant les variables et les contraintes : n

n

i =1

j=1

max z ' =  ui +  v j sous ui + v j  cij , i = 1 à n , j = 1 à n ui ,v j

Le problème dual comporte 2n variables et n² contraintes. Le coût dual z’ est la somme des variables duales u et v. Pour maximiser le coût dual, on va chercher à saturer les contraintes inégalités. Les seconds membres des inégalités correspondent à la matrice des coûts reproduite ci-dessous. v1 vj vn

c1j c1n  u1  c11     cij cin  ui  ci1       c c c un  n1 nj nn  Chaque variable ui est bornée par le coût minimal sur la ligne : ui  min cij = ui max , i = 1 à n j

noté

Chaque variable vj est bornée par le coût minimal sur la colonne :

vj  min cij = vjmax , j = 1 à n i

noté

Optimisation discrète

161

Montrons que la méthode hongroise est une résolution itérative du problème dual. Étape 1 : réduction des lignes Soustrayons à chaque ligne de la matrice (cij ) le plus petit élément noté ui max .

u 'i = ui − ui max

Cette opération équivaut au changement de variable :  . c'ij = cij − ui max Elle fait apparaître au moins un zéro sur chaque ligne de la matrice (c'ij ) . Étape 2 : réduction des colonnes Soustrayons à chaque colonne de la matrice (c'ij ) le plus petit élément noté vjmax .

v'j = vj − vjmax

Cette opération équivaut au changement de variable :  . c''ij = c'ij − vjmax Elle fait apparaître au moins un zéro sur chaque colonne de la matrice (c''ij ) . Avec ces changements de variables, le problème dual devient : n

n

i =1

j=1

max z ' =  u 'i +  v 'j + zmax sous u 'i + v 'j  c''ij , i, j = 1 à n u 'i ,v 'j

n

n

i =1

j=1

La valeur zmax =  ui max +  v jmax donne une borne inférieure sur le coût. La matrice (c''ij = cij − ui max − vjmax ) a au moins un zéro par ligne et par colonne. Étape 3 → 5 : couverture des zéros avec n lignes et colonnes Supposons que l’on puisse choisir n éléments c ''ij nuls de façon à couvrir chaque ligne et chaque colonne. Pour chaque c ''ij nul, on groupe les variables duales correspondantes u 'i et v 'j . On obtient n couples (u 'i , v'j ) vérifiant les contraintes : u 'i + v'j  0 . Faisons apparaître ces couples dans le coût z ' en notant (ik , jk )k =1 à n leurs indices. n

n

n

i =1

j=1

k =1

z ' =  u 'i +  v 'j + zmax =  (u 'ik + v 'jk ) + zmax  zmax

car u 'ik + v'jk  0

On en déduit que le coût dual z vaut au maximum zmax . Cette valeur est atteinte pour la solution nulle (u 'i = 0, v'j = 0) qui est donc optimale de coût zmax .

Les affectations optimales (ik , jk )k =1 à n correspondent aux n éléments nuls c ''ij choisis pour couvrir toutes les lignes et toutes les colonnes.

162

Techniques d’optimisation

Étape 3 → 4 : couverture des zéros avec moins de n lignes et colonnes Supposons que l’on puisse couvrir chaque ligne et chaque colonne avec moins de n éléments c ''ij nuls. On choisit le plus petit cij non nul sur les lignes ayant un seul zéro. Cet élément noté cm est situé en ligne im et en colonne jm .

→ cm = cim jm

La ligne im a un seul zéro situé en colonne j0 .

→ cim j0 = 0

Considérons alors la solution nulle (ui = 0 , vj = 0) sauf pour :

vj0 : vj0 = −cm

- la variable

- les variables ui0 : ui0 = +cm → lignes i0 ayant un seul zéro en colonne j0 Cette solution est admissible : ui0 + vj = cm + 0 = cm  ci0 j si j  j0  = ci0 j0 si j = j0 ui0 + vj0 = cm − cm = 0 u + v = 0 − c = −c  0  c si i  i j0 m m ij0 0  i

→ par choix de cm

Son coût est supérieur à zmax :

z=

u

i0 im

i

 +cm

+ uim + vj0 + zmax =  +cm

c

i0 im

m

+ zmax  zmax

 −cm

La réduction de l’étape 4 correspond au changement de variables suivant pour se ramener à la solution nulle.

u 'i0 = ui0 + cm c' = c − c  i0 j i0 j m  v'j0 = vj0 − cm c' = c + c ij0 m  ij0

→ sur les lignes i0 ayant un seul zéro en colonne j0 → sur la colonne j0

Optimisation discrète

163

L’effet de ce changement de variable sur la matrice des coûts est représenté cidessous.

u i0 u im

       

v j0

v jm

0 0 0 0  + cm

cm

   → − cm    → − cm  

u 'i 0 u 'im

       

v ' j0

v' jm

0 cm 0

0 0

       

La matrice des coûts après réduction devient (c'ij ) : → fait apparaître un zéro en ligne im et colonne jm à la place de cm (plus petit élément non nul des lignes à un seul zéro) → conserve les zéros en colonne j0 sur les lignes à un seul zéro conserve au moins un zéro par ligne et par colonne. La solution nulle (u 'i = 0, v'j = 0) est admissible pour le nouveau problème réduit. Cette solution est optimale si l’on peut couvrir toutes les lignes et colonnes avec n éléments c 'ij nuls.

2.6 Heuristiques Il n’est généralement pas possible de résoudre exactement les problèmes combinatoires de grandes tailles. On peut alors recourir à des heuristiques, qui sont des méthodes empiriques adaptées à un problème particulier. Elles sont pour la plupart basées sur des approches « gloutonnes » (greedy) effectuant à chaque étape le choix immédiat le plus optimal. Ces méthodes sont simples et rapides, car la solution est élaborée sans itérations, mais il n’existe aucune garantie sur la qualité du résultat. Le résultat d’une heuristique peut servir à initialiser une métaheuristique (tome I chapitre 2) ou une méthode arborescente (section 1.3). Cette section présente quelques heuristiques spécifiques adaptées aux problèmes combinatoires classiques.

164

Techniques d’optimisation

2.6.1 Problème d’empilement Énoncé On dispose d’un ensemble de n objets et d’une boîte de taille b. L’objet numéro i est de taille ai et de valeur ci. Il faut choisir les objets à empiler dans la boîte pour maximiser la valeur totale. Ce problème d’empilement, aussi appelé problème de sac à dos, est NP-complet. Heuristique Le principe est de choisir en priorité les objets ayant le meilleur rapport valeur/taille. Les objets sont triés par utilité (= valeur moyenne) décroissante :

c1 c2 c    n a1 a2 an puis sont empilés dans cet ordre tant que la taille b de la boîte le permet. a1 + a2 + + ap b → a1 + a2 + + ap + ap+1  b

Le même principe s’applique dans le cas où l’on peut sélectionner plusieurs exemplaires de chaque objet. L’exemple suivant montre que cette approche intuitive peut donner de mauvais résultats, même dans des cas très simples.

Exemple 2-26 : Empilement par méthode gloutonne Problème 1 : choix de deux objets

b2. La taille de la boîte est : Les valeurs des objets sont : c = (1 , b − 1) . Les tailles des objets sont : a = (1 , b) . On classe les objets par utilité décroissante :

c1 c b −1 =1  2 = a1 a2 b

La solution gloutonne consiste à choisir d’abord l’objet 1 de taille a1 = 1 . L’objet 2 de taille a2 = b ne rentre plus. On obtient un empilement de valeur c = 1. La solution optimale est de prendre l’objet 2, ce qui donne un empilement de valeur c = b − 1 .

Optimisation discrète

165

La solution gloutonne est mauvaise si b est grand, car la boîte est peu remplie. La solution gloutonne est meilleure lorsque les objets sont petits par rapport à la boîte (ai b) , car on peut alors s’approcher d’un remplissage maximal. Problème 2 : découpe d’un câble Un vendeur dispose d’un câble de longueur b = 6 790. Dix clients passent des commandes pour des longueurs suivantes : a = (2 597 , 2 463 , 2 292 , 1 625 , 1 283 , 1 089 , 759 , 599 , 315 , 211) •

La solution gloutonne consiste à satisfaire en priorité les commandes les plus importantes. La longueur vendue est : 2 597 + 2 463 + 1 625 = 6 685 et il reste un invendu de 105.



La solution optimale est de satisfaire les commandes 1, 4, 5, 7, 9, 10. La longueur vendue est : 2 597 + 1 625 + 1 283 + 759 + 315 + 211 = 6 790, ce qui représente la totalité de la longueur disponible.

2.6.2 Problème d’emboîtement Énoncé On dispose d’un ensemble de n objets et de boîtes de tailles identiques b. L’objet numéro i est de taille ai. Il faut ranger tous les objets en utilisant le moins de boîtes possibles. Ce problème d’emboîtement (bin packing) est NP-complet. Heuristique Le principe est de placer en priorité les objets les plus grands en essayant de remplir au maximum les boîtes utilisées. Les objets sont triés par taille décroissante : a1  a2   an , puis sont placés dans cet ordre, si possible dans une boîte déjà utilisée. Si l’objet rentre dans plusieurs boîtes, on choisit celle que l’objet remplit le plus. Cette heuristique donne de bons résultats lorsque les objets sont petits par rapport aux boîtes (a b) . Les cas pires se produisent pour des problèmes avec peu d’objets comme celui de l’exemple suivant.

166

Techniques d’optimisation

Exemple 2-27 : Emboîtement par méthode gloutonne On cherche à placer les 6 objets ci-contre de tailles a = (4, 3, 3, 2, 2, 2) dans des boîtes de taille b = 8. La solution gloutonne consiste à choisir placer les objets par taille décroissante en ajoutant une nouvelle boîte lorsque nécessaire. Elle nécessite 3 boites. Objet Boîte 1 Boîte 2

a1=4 a2=3 a3=3 a4=2 a5=2 a6=2 Total 4

7

7 3

5

7

7 2

Boîte 3

2

La solution optimale ci-contre n’utilise que 2 boîtes. La performance relative de l’heuristique sur ce cas est de 50 % par rapport à l’optimum. Il s’agit d’un cas pire pour ce type de problème.

2.6.3 Problème de recouvrement Énoncé On dispose d’un ensemble de n ressources pour réaliser m tâches. La ressource numéro j a un coût cj et peut réaliser Nj tâches. Il faut choisir les ressources pour réaliser toutes les tâches en minimisant le coût total. Contrairement au problème d’affectation (section 2.5), chaque ressource peut effectuer plusieurs tâches. Ce problème de recouvrement est NP-complet. Heuristique Le principe est de choisir les ressources selon leur rapport coût/tâches réalisables. Le coût moyen de la ressource j est

cj

Nj

. À chaque étape on choisit la ressource

de coût moyen minimal et on lui affecte toutes les tâches qu’elle peut réaliser. Ces tâches sont supprimées de la liste et on recalcule les coûts moyens des ressources sur les tâches restantes.

Optimisation discrète

167

Pour faciliter le processus, on définit la matrice de compatibilité ressources/tâches A dont les éléments sont aij = 1 si la ressource j peut effectuer la tâche i et 0 sinon. À chaque affectation les lignes et les colonnes correspondantes sont supprimées jusqu’à ce que toutes les tâches soient couvertes.

Exemple 2-28 : Recouvrement par méthode gloutonne On cherche à réaliser 4 tâches avec 5 ressources de coûts c = ( 7 3 7 12 6). La matrice de compatibilité ressources/tâches est : r1

1  t 0 A = 2 t3  1  t4  0 t1

r2

0 1 0 0

r3

1 0 0 1

r4

1 1 0 0

r5

0  0 1  1

La Figure 2-42 montre le déroulement des affectations successives. À chaque étape, on calcule le coût moyen des ressources restantes (colonnes) sur les tâches restantes qu’elles peuvent réaliser. Ce coût moyen indiqué sur la dernière ligne permet de sélectionner la ressource la moins coûteuse. À l’issue des 3 étapes, on obtient les affectations (r1 → t1), (r2 → t2), (r5 → t3, t4). Ce choix de coût 7 + 3 + 6 = 16 est la solution optimale.

Figure 2-42 : Recouvrement par méthode gloutonne

168

Techniques d’optimisation

2.6.4 Problème de coloration Énoncé On doit colorer les nœuds d’un graphe avec le moins de couleurs possibles. Les nœuds adjacents (ou voisins) doivent être de couleurs différentes. Ce problème de coloration est NP-complet. Heuristique L’algorithme DSATUR de Brelaz (1979) consiste à colorer les nœuds un à un, en choisissant à chaque étape le nœud le plus « difficile » à colorer. On définit : - le degré i du nœud vi qui est son nombre de voisins ; - la saturation i du nœud vi qui est le nombre de couleurs des voisins. À chaque itération on choisit le nœud de saturation maximale (et de degré maximal si plusieurs nœuds ont même saturation). On colore le nœud sélectionné si possible avec une couleur existante, sinon avec une nouvelle couleur.

Exemple 2-29 : Coloration par méthode gloutonne On cherche à colorer un graphe à 8 nœuds. Les figures suivantes montrent les itérations successives avec l’état du graphe à gauche et le tableau donnant les degrés, saturations et couleurs des nœuds.

Optimisation discrète

169

On obtient une solution utilisant 4 couleurs. Couleur 1 : Couleur 2 : Couleur 3 : Couleur 4 :

v2 , v6 v3 , v7 v5 , v8 v1 , v4

170

Techniques d’optimisation

L’algorithme de coloration peut être utilisé pour le calcul numérique de dérivées. Considérons un simulateur à n entrées et m sorties. Pour calculer la matrice jacobienne (dérivées partielles) par différences finies, le simulateur doit être appelé n fois en faisant varier successivement x1, x2 , , xn . Cette opération est coûteuse en temps de calcul dans un algorithme d’optimisation. Si des sorties y j ne dépendent pas de toutes les entrées xi (matrice creuse), on peut regrouper plusieurs entrées pour les faire varier simultanément. La structure de la matrice jacobienne doit être connue (de façon théorique ou expérimentale). Le groupement des variables est obtenu en formant le graphe d’incompatibilité des entrées (entrées ne pouvant varier simultanément) et en lui appliquant un algorithme de coloration pour regrouper les entrées compatibles. Les entrées de même couleur sont celles que l’on peut faire varier simultanément.

Exemple 2-30 : Coloration pour dérivation numérique Considérons un simulateur à 5 entrées et 3 sorties d’équations :

 0 0  y  =   0 0 La structure de la matrice jacobienne est : x  0 0  0

 y1 = x 1x 4   y2 = x 1x 2 x 5 .  y3 = x 3 x 5 0   .  

On construit le graphe d’incompatibilité des entrées. Les nœuds de ce graphe correspondent aux variables d’entrée (x1 ,x 2 ,x 3 ,x 4 ,x 5). Si une sortie dépend de plusieurs entrées, ces entrées sont reliées par une arête. - Sortie y 1

→ (x1 , x 4)

- Sortie y 3

→ (x 3 , x 5)

- Sortie y 2

→ (x1 , x 2) , (x1 , x 5) , (x 2 , x 5)

On applique l’algorithme de coloration glouton dans ce graphe.

Optimisation discrète

171

On obtient une solution utilisant 3 couleurs. Couleur 1 : x1 , x 3

Couleur 2 : x 4 , x 5 Couleur 3 : x 2

La matrice jacobienne peut être calculée en 3 appels (au lieu de 5) en faisant varier successivement (x1 et x 3) , puis (x 4 et x 5) , puis x 2 .

172

Techniques d’optimisation

2.6.5 Problème du voyageur de commerce Énoncé Le voyageur de commerce doit visiter n villes en parcourant la distance la plus faible possible. Chaque ville doit être visitée une fois et une seule et le voyageur de commerce doit revenir à sa ville de départ. Le problème du voyageur de commerce (noté PVC) est NP-complet. Heuristiques Il existe de nombreuses heuristiques adaptées au problème du voyageur de commerce et à ses variantes, dont les trois suivantes. • Heuristique de l’arc de coût minimal À chaque étape on prolonge le chemin par l’arc de coût minimal. • Heuristique de l’arc de regret maximal À chaque étape on choisit l’arc de regret maximal (= coût de non sélection). • Heuristique d’insertion de coût minimal À chaque étape on insère un nouveau nœud à la position minimisant le coût. Ces trois heuristiques sont illustrées sur l’exemple suivant. Exemple 2-31 : Heuristiques pour le PVC Considérons un problème à 4 villes A, B, C, D ci-contre. La solution optimale est le chemin (ADBCA) de longueur 6. On compare les performances des 3 heuristiques. Heuristique de l’arc de coût minimal On part de A et on prolonge à chaque étape par l’arc de coût minimal. Les étapes sont illustrées sur la Figure 2-43. On obtient le chemin (ABDCA) de longueur 13.

Figure 2-43 : Heuristique de l’arc de coût minimal

Optimisation discrète

173

Heuristique de l’arc de regret maximal Le voyageur de commerce doit passer par tous les nœuds. On examine les conséquences d’une non-sélection d’un arc allant du nœud v au nœud w. Si l’arc (v,w) n’est pas sélectionné, il faudra sélectionner : - un autre arc partant de v engendrant un coût au moins égal à rv ;

- un autre arc arrivant en w engendrant un coût au moins égal à rw.

Le regret associé à l’arc (v,w) est le coût minimal engendré par la non-sélection de l’arc (v,w). Sa valeur est rvw = max(rv ,rw ) . La matrice des regrets se déduit de la matrice des distances en relevant la valeur de r v (sur la ligne) et de rw (sur la colonne). Pour l’arc CA ci-dessous, on a par exemple rv = 2 (arc CB) et rw = 1 (arc BA). On inscrit donc 2 pour l’arc CA dans la matrice des regrets.

Figure 2-44 : Matrice des regrets Choisissons parmi les arcs de regret maximal (=2) l’arc CA. On efface sa ligne et sa colonne dans la matrice des distances, et on cherche l’arc suivant parmi les arcs encore disponibles. Les étapes sont illustrées ci-dessous, avec la matrice des arcs disponibles à gauche et la matrice des regrets au centre. Les arcs successivement sélectionnés sont en traits épais. On obtient le chemin (CADBC) de longueur 6.

174

Techniques d’optimisation

Étape 1

Coûts des arcs disponible

Matrice des regrets

Arc de regret maximal

Étape 2

Étape 3

Heuristique de l’insertion de coût minimal À chaque itération on insère un nouveau nœud à la position minimisant le coût. •

Initialisation On choisit un arc de coût minimal → (AB) = 1



Insertion d’un nouveau nœud sur (AB) Nœud C : meilleure insertion → (CAB) = 2 Nœud D : meilleure insertion → (ABD) = 2 On choisit le chemin (CAB) de longueur = 2.



Insertion d’un nouveau nœud sur (CAB) Nœud D : meilleure insertion → (CADBC) = 6 (en tenant compte du retour au nœud initial) On obtient le chemin (CADBC) de longueur = 6.

Optimisation discrète

175

2.7 Conclusion 2.7.1 Les points essentiels •

De nombreux problèmes combinatoires se ramènent au parcours d’un graphe.



Les problèmes de chemin sont résolus par les algorithmes de Ford, de Bellman, de Dijkstra ou l’algorithme A*.



Les problèmes de flot sont résolus par les algorithmes de Ford-Fulkerson et de Roy-Busacker-Gowen.



Les problèmes d’affectation sont résolus par la méthode hongroise.



Les heuristiques gloutonnes donnent rapidement des solutions approchées.

2.7.2 Pour aller plus loin •

Algorithmes de graphes (P. Lacomme, C. Prins, M. Sevaux, Eyrolles 2007) Le livre est consacré aux problèmes d’optimisation dans les graphes. Les chapitres 1, 2 et 3 introduisent les notions théoriques sur les graphes, la complexité et les problèmes difficiles. Le chapitre 4 introduit des structures permettant l’implémentation des algorithmes dans le langage Delphi. Les problèmes classiques d’optimisation combinatoire sont abordés à partir du chapitre 5 avec la description et l’implémentation des algorithmes dédiés. Le livre est accompagné d’un CD-Rom avec tous les logiciels présentés.



Précis de recherche opérationnelle (R. Faure, B. Lemaire, C. Picouleau, Dunod 2009) Le livre aborde les problèmes de recherche opérationnelle dont l’optimisation combinatoire et les problèmes stochastiques. Les chapitres 1 à 3 introduisent les notions sur les graphes et la complexité. Le chapitre 4 présente les algorithmes adaptés aux problèmes de chemin. De nombreux exemples et exercices permettent de se familiariser avec les différentes méthodes.



Stochastic optimization (J.J. Schneider, S. Kirkpatrick, Springer 2006) Ce livre présente de nombreuses heuristiques (terme préféré à « métaheuristique ») et analyse plus particulièrement la méthode du recuit simulé dont les auteurs sont des spécialistes. Les différences méthodes sont appliquées et comparées sur le problème du voyageur de commerce.

Optimisation fonctionnelle

177

3. Optimisation fonctionnelle L’optimisation fonctionnelle aussi appelée calcul des variations concerne les problèmes dont l’inconnue est une fonction. L’optimisation fonctionnelle est dite en dimension infinie, par opposition à l’optimisation continue ou discrète qui porte sur un nombre fini de variables. On peut en effet concevoir la fonction inconnue comme une infinité de variables inconnues qui seraient les valeurs de la fonction. La section 1 présente les notions de fonctionnelle (fonction de fonctions), de voisinage de fonctions et de variation d’une fonctionnelle. Ces notions permettent de définir un minimum fort ou faible d’une fonctionnelle selon que l’on s’intéresse aux fonctions voisines en valeur ou en valeur et dérivée. Le problème standard de calcul des variations consiste à minimiser une fonctionnelle de type intégrale. La section 2 établit diverses conditions d’optimalité. Les conditions nécessaires de minimum faible conduisent à l’équation d’Euler-Lagrange, dont les solutions forment les extrémales de la fonctionnelle. Les conditions suffisantes reposent sur l’étude des points conjugués associés à l’équation de Jacobi. L’élargissement aux fonctions dérivables par morceaux conduit aux conditions de coin de WeierstrassErdmann. Les conditions nécessaires de minimum fort reposant sur la fonction de Weierstrass sont l’équivalent du principe du maximum en commande optimale. La section 3 introduit la prise en compte de contraintes. Les contraintes peuvent porter sur les conditions aux extrémités (contraintes finales), sur la valeur fixée d’une intégrale (contrainte intégrale) ou sur chaque point de la fonction inconnue (contrainte courante). Ces contraintes ajoutent des conditions d’optimalité sous forme de conditions de transversalité pour des contraintes finales ou sous forme des multiplicateurs inconnus pour des contraintes intégrales ou courantes. La section 4 présente la forme canonique d’un problème de calcul des variations. Les variables canoniques forment un système hamiltonien présentant des propriétés particulières, utiles en particulier pour des applications en mécanique. La forme canonique permet de dériver l’équation d’Hamilton-Jacobi-Bellman vérifiée par la fonction valeur sur tout le champ d’extrémales de la fonctionnelle. La section 5 introduit les notions essentielles sur les systèmes dynamiques. Cette modélisation permet de passer d’un problème de calcul des variations à un problème beaucoup plus général de contrôle optimal qui fait l’objet du chapitre 4.

178

Techniques d’optimisation

3.1 Formulation 3.1.1 Fonctionnelle On considère des fonctions réelles y définies sur un intervalle [a;b] .

y : x [a;b]

y(x) 

(3.1)

Ces fonctions appartiennent à un espace noté Y qui pourra être selon le cas : - l’espace des fonctions continues ou dérivables sur [a;b] ; - l’espace des fonctions continues ou dérivables par morceaux sur [a;b] . Une fonctionnelle J est une fonction de Y dans .

J : yY

J(y) 

(3.2)

Une fonctionnelle est donc une « fonction de fonctions ». L’objectif est de trouver les fonctions y  Y minimisant J. Ceci amène à définir les notions de voisinage et de variation de la fonctionnelle J.

3.1.2 Voisinage L’espace de fonctions Y est muni d’une norme mesurant l’écart entre deux fonctions. Une norme sur Y est une fonction de Y dans + notée et vérifiant :

 y =  . y ,   y + z  y + z La deuxième propriété est l’inégalité triangulaire.

(3.3)

y,z  Y ,  

Les normes usuelles sur les espaces de fonctions sont : • la norme 0 (pour des fonctions continues) : y 0 = max y(x) ; xa;b



la norme 1 (pour des fonctions dérivables) :

y 1 = max y(x) + max y(x) ; xa;b



xa;b

1/p

  p la norme Lp (pour des fonctions intégrables) : y p =   y(x) dx  ; a  y = y 0. La norme L est identique à la norme 0 : b

Optimisation fonctionnelle

179

Le voisinage d’une fonction y* est l’ensemble des fonctions de Y telles que : (3.4)

y − y*   pour  réel positif donné. Le voisinage dépend de la norme considérée.

Le voisinage en norme 0 est l’ensemble des fonctions continues et proches de y* en valeur. Ces fonctions ne sont pas forcément dérivables.

y(x) − y*(x)   sur [a;b]

(3.5)

Le voisinage en norme 1 est l’ensemble des fonctions dérivables et proches de y* en valeur et en dérivée. Ce voisinage est plus restreint (car il contient moins de fonctions) que le voisinage en norme 0.

y(x) − y*(x) + y(x) − y* (x)   sur [a;b]

(3.6)

La Figure 3-1 montre des fonctions y0 et y1 voisines de y pour les normes 0 et 1.

Figure 3-1 : Voisinage en norme 0 et 1

3.1.3 Variation Pour étudier la variation d’une fonctionnelle J au voisinage de y, on considère des fonctions de la forme y +  où  est une fonction et  est un réel « petit ». La fonction  (appelée perturbation) est admissible si y +  appartient à Y. Les variations première et seconde de J au voisinage de y sont définies comme suit. Variation première La variation première de J en y est la fonctionnelle linéaire J y telle que :

 , 

, J(y + ) = J(y) + J y () + o()

(3.7)

En définissant la fonction à variable réelle g  associée à la fonction  :

g : 

g () = J(y + )

(3.8)

180

Techniques d’optimisation

la variation première de J en y s’exprime comme :

g () − g  (0) J(y + ) − J(y) (3.9) = lim  = g (0) →0 →0   La variation première est une fonctionnelle linéaire, ce qui signifie qu’elle vérifie : J y () = lim

J y (11 + 22 ) = 1J y (1 ) + 2J y (2 )

(3.10)

Variation seconde La variation seconde de J en y est la fonctionnelle quadratique 2 J y telle que :

 , 

, J(y + ) = J(y) + J y () + 2J y () 2 + o( 2 )

(3.11)

Avec la fonction g  définie en (3.8), la variation seconde s’exprime comme :

2 J y () = lim →0

J(y + ) − J(y) − J y () 2 g  () − g  (0) − g (0)

(3.12) 1 = lim = g (0) →0 2 2 La variation seconde est une fonctionnelle quadratique, ce qui signifie qu’elle est de la forme 2 J y () = K(, ) où K(1, 2 ) est une fonctionnelle bilinéaire (fonctionnelle linéaire par rapport à chacune des deux fonctions 1 et 2 ).

3.1.4 Minimum Une fonction y* est un minimum local de la fonctionnelle J si les fonctions voisines de y* donnent une valeur supérieure à J. Pour tout réel   0 petit, on a :

y  Y , y − y*    J(y*)  J(y)

(3.13)

Le minimum est dit faible ou fort selon la norme considérée pour le voisinage. •

Un minimum faible correspond à un voisinage en norme 1. La condition (3.13) ne concerne que des fonctions dérivables.



Un minimum fort correspond à un voisinage en norme 0. La condition (3.13) concerne toutes les fonctions continues. Le minimum est dit fort, car ce voisinage contient davantage de fonctions que le voisinage en norme 1.

Optimisation fonctionnelle

181

En utilisant le développement d’ordre 2 (3.11), la condition de minimum donne :

J(y) = J(y* +) = J(y*) + J y* () + 2J y* () 2 + o( 2 )  J(y*)  J y* () + 2 J y* () 2  0

(3.14)

Cette inégalité doit être satisfaite pour toute perturbation admissible  et tout réel

 petit. On en déduit des conditions d’ordre 1 (sur J y ) et d’ordre 2 (sur 2 J y ). Les conditions nécessaires de minimum sont obtenues pour une inégalité large.

J y* () = 0 (3.15) y* minimum de J   2 ,  admissible  J y* ()  0 Les conditions suffisantes de minimum sont obtenues pour une inégalité stricte. Le terme d’ordre 2 strictement positif permet de négliger les termes d’ordre 3.

J y* () = 0 (3.16) ,  admissible  y* minimum de J  2  J y* ()  0 La section suivante applique ces conditions à des fonctionnelles intégrales.

3.1.5 Problème standard Le problème standard de calcul des variations est de la forme : b

min J(y) =  L  x, y(x), y(x)  dx yY

(3.17)

a

La fonction L : 3 → dans l’intégrale est appelée lagrangien du problème. Elle est supposée « suffisamment dérivable » et dépend de trois variables réelles x,y,z. Pour alléger les équations, on utilise les notations suivantes.

L  x, y(x), y(x)  = L(x, y, y) noté

L L d  L  = Ly , = L z ou L y ,   = Lz y noté z noté dx  z  noté

(3.18)

Les dérivées partielles secondes sont de même notées Lyy ,Lyz ,Lzz . Les notations y et Lz désignent respectivement les dérivées totales des fonctions y et L z par rapport à la variable x.

182

Techniques d’optimisation

Y est l’espace des fonctions de classe C1 sur [a;b] et à valeurs fixées en a et b.

 y(a) =  (3.19) y  Y  y  C1 ([a;b]) et   y(b) =  La Figure 3-2 montre trois fonctions y1, y2 et y* appartenant à Y (fonctions de classe C1 à valeurs fixées aux extrémités de l’intervalle).

Figure 3-2 : Fonctions à valeurs fixées aux extrémités Le voisinage de la fonction y* est l’ensemble des fonctions de la forme y = y* +  appartenant à Y. La perturbation  doit par conséquent vérifier :

 y(a) =   (a) = 0 (3.20)  C1 ([a;b]) et   y(b) =   (b) = 0 Les variations premières et secondes de la fonctionnelle J définie par (3.17) sont alors données par : b

J y* () =   ( L y − Lz ) dx a

b

1  J y* () =  ( 2 (L yy − Lyz ) +  '2 L zz ) dx 2a 2

(3.21)

Ces formules démontrées ci-après seront utilisées dans la section suivante pour établir les conditions nécessaires et suffisantes de minimum local.

Optimisation fonctionnelle

183

Démonstration Les variations de J s’obtiennent à partir de la définition (3.11) :

J(y* +) = J(y*) + J y* () + 2J y* () 2 + o( 2 ) b

Calculons J(y* +) à partir de (3.17) : J(y * +) =  L  x, y * +,(y * +) dx. a

Le lagrangien est développé à l’ordre 2 par rapport à  .

L  x, y* + ,(y* + ) =

L  x, y*, y* + L y + L z

1 1 +  22 L yy +  2L yz +  22 Lzz + o( 2 ) 2 2 Toutes les dérivées partielles de L sont évaluées en (x, y*, y*) . En reportant dans l’expression de J(y* + ) , puis en identifiant les termes en  et  2 , on obtient : b  J y* () =  (L y + L z )dx  a  b 2 J () = 1 (2 L + 2L + 2 L )dx yy yz zz  y* 2 a 

La première équation s’intègre par parties, en notant Lz = b

b

d  L   (x, y*, y*)  : dx  z 

b

J y* () =  (L y + L z )dx =  L ydx + L z a −  Lz dx a

b

a

a

b

 J y* () =  (L y − Lz )dx car (a) = (b) = 0 (perturbation  admissible) a

La deuxième équation s’intègre également par parties : b 1 2 J y* () =  (2 L yy + 2L yz + 2 L zz )dx 2a avec

b

b

a

a

b

b

b

a

a

2 2 2 2  2 'L yzdx =  ( )L yzdx =  L yz  −   Lyzdx = −  Lyzdx

b

a

1 2 (L yy − Lyz ) + 2 L zz ) dx (  2a On obtient ainsi les expressions (3.21).  2 J y* () =

184

Techniques d’optimisation

3.2 Conditions d’optimalité On établit dans cette section des conditions d’optimalité pour le problème standard de calcul des variations (3.17) rappelé ci-dessous. b  y(a) =  (3.22) min J(y) =  L(x, y, y)dx avec  y  y(b) =  a Pour ce type de problème, on considère des fonctions dérivables sur [a;b] . On distingue un minimum faible et un minimum fort. • Un minimum faible concerne les fonctions de classe C 1 voisines en norme 1. Les conditions de minimum faible sont traitées en sections 3.2.1 et 3.2.2. • Un minimum fort concerne les fonctions de classe C 1 par morceaux voisines en norme 0. Les conditions de minimum fort sont traitées en sections 3.2.3 et 3.2.4.

3.2.1 Conditions nécessaires de minimum faible Les fonctions considérées dans cette section sont de classe C 1 sur [a;b] . Le théorème suivant donne des conditions nécessaires que doit vérifier une fonction y* pour être un minimum faible local de la fonctionnelle J. Théorème 3-1

: Conditions nécessaires de minimum faible

Si y* est un minimum faible local du problème (3.22), alors y* vérifie : •

l’équation d’Euler-Lagrange (condition d’ordre 1)

Ly − Lz = 0 •

(3.23)

la condition de Legendre (condition d’ordre 2)

Lzz  0

(3.24)

Démonstration (voir [R14]) L’équation d’Euler-Lagrange (1755) et la condition de Legendre (1786) s’établissent à partir des variations première et seconde de J en y*.

Optimisation fonctionnelle

185

Condition d’ordre 1 Supposons que y* est un minimum faible local de J. D’après (3.15), la variation première de J doit être nulle pour toute perturbation admissible  . En utilisant l’expression (3.21), on doit avoir : b

J y* () =  (L y − Lz )dx = 0 ,  a

Pour un minimum faible, on considère des fonctions  de classe C1 telles que : (a) = (b) = 0 . Définissons la fonction : P(x) = L y − Lz

b

 J y* () =  Pdx a

Supposons par l’absurde que la fonction P n’est pas identiquement nulle sur [a;b]. Il existe alors c [a;b] tel que P(c) = 2  0 (le raisonnement si P(c) = 2  0 est similaire). La fonction P étant continue, il existe un intervalle [c1;c2 ] non nul autour de c sur lequel P(x)   . Définissons la perturbation : (x − c1 ) 2 (c 2 − x) 2 si x [c1;c 2 ] (x) =  si x  [c1;c 2 ] 0 Cette perturbation est admissible (de classe C1 et nulle en a et b). Calculons la variation première de J pour cette perturbation  . c2

b

J y* () =  Pdx =  P(x − c1 )2 (c2 − x) 2 dx  a

c1

c2

 (x − c ) (c 1

2

2

− x) 2 dx

c1

Cette intégrale est strictement positive :   0 et (x − c1 ) 2 (c2 − x) 2  0 sur ]c1;c 2[. On aurait J y* ()  0 , ce qui contredit la condition nécessaire d’ordre 1 (3.15).

L’hypothèse initiale est donc fausse : la fonction P(x) = Ly − Lz est identiquement nulle sur [a;b] . Ceci établit l’équation d’Euler-Lagrange. Condition d’ordre 2 Supposons que y* est un minimum faible local de J. D’après (3.15), la variation seconde de J doit être positive pour toute perturbation admissible  . En utilisant l’expression (3.21), on doit avoir :

2 J y* () =

b

1 ( 2 (L yy − Lyz ) + 2Lzz ) dx  0 ,  2 a

186

Techniques d’optimisation

P(x) = L zz 1  2 J y* () =  2 P + 2Q dx Notons :  2a Q(x) = L yy − Lyz Supposons par l’absurde que la fonction P n’est pas positive ou nulle sur [a;b] . Il existe alors c [a;b] tel que P(c) = −2  0 . La fonction P étant continue, il existe un intervalle [c −  ;c + ] autour de c sur lequel P(x)  − . b

(

)

Définissons la perturbation :  2 (x − c) si x  [c −  ;c + ] sin (x) =   0 sinon Cette perturbation est admissible (de classe C1 et nulle en a et b). La figure ci-contre montre l’allure des fonctions P(x) et (x) au voisinage de c.

Calculons la variation seconde de J pour cette perturbation  .

J y* () =

b

c+

c+

1 1 2 2(x − c) 1 (x − c) 2 2   P +  Q dx = Psin 2 dx +  Qsin 4 dx ( ) 2   2a 2 c−   2 c− 

2 max P  2 c−x c+ en majorant les fonctions sous chaque intégrale. 



+

 max Q c− x c+

Par hypothèse : P(x)  −  0 sur [c −  ;c + ] .

2  +  max Q . c− x c+  Pour  suffisamment petit, le second membre devient négatif. On aurait 2 J y* ()  0 , ce qui contredit la condition nécessaire d’ordre 2 (3.15). On en déduit l’inégalité : J y* ()  −

L’hypothèse initiale est donc fausse : la fonction P(x) = Lzz est positive ou nulle sur [a;b] . Ceci établit la condition de Legendre.

Optimisation fonctionnelle

187

L’équation d’Euler-Lagrange (notée EL) est une équation différentielle d’ordre 2. Les constantes d’intégration sont déterminées par les conditions aux extrémités y(a) =  et y(b) =  . Sous forme détaillée, l’équation (EL) prend la forme :

L d  L  (x, y, y) −   (x, y, y) = 0 y dx  z 

(3.25)

soit en développant la dérivée composée du deuxième terme :

 L L L L   x, y(x), y(x) =  z + y z + y z   x, y(x), y(x)  y y z   x

(3.26)

Extrémales et intégrales premières Une fonction y vérifiant l’équation (EL) est appelée extrémale de la fonctionnelle (3.22). Le champ d’extrémales de la fonctionnelle est l’ensemble des solutions de l’équation (EL). Ces solutions sont paramétrées par deux constantes d’intégration. Une extrémale n’est pas forcément un minimum de la fonctionnelle, car l’équation (EL) n’est qu’une condition nécessaire. Une intégrale première de J est une fonction (x, y) gardant une valeur constante le long de toute extrémale y*.

 x, y*(x) = Cte

(3.27)

Cas particuliers •

Si la fonction L ne dépend pas explicitement de y, alors Ly = 0 .

L’équation d’Euler-Lagrange sous sa forme (3.25) se réduit à :

d  L  te    = 0  L y = C dx  y 

(3.28)

La fonction L y est dans ce cas une intégrale première (correspondant à l’impulsion ou à la quantité de mouvement en mécanique). • Si la fonction L ne dépend pas explicitement de x, alors Lzx = 0 . L’équation d’Euler-Lagrange sous sa forme (3.26) se réduit à :

Ly = y Lzy + y Lzz

(3.29)

On en déduit que (vérification ci-dessous) :

Lz y − L = Cte

(3.30)

188

Techniques d’optimisation

La fonction H = Ly y − L est dans ce cas une intégrale première (correspondant à l’hamiltonien ou à l’énergie en mécanique).

Vérification Calculons la dérivée totale de Lz y − L par rapport à x. d ( Lz y − L ) = ( Lzx + Lzy y + Lzz y) y + Lz y − ( L x + L y y + Lz y) dx = ( Lzy y + Lzz y − L y ) y + L zx y − L x Le premier terme est nul d’après l’équation d’Euler-Lagrange (3.29). Les autres termes sont nuls car L et donc L z ne sont pas explicites en x par hypothèse. La dérivée de Lz y − L est donc nulle et cette grandeur est une intégrale première.

L’exemple suivant montre l’application des conditions de minimum faible au calcul de la plus courte distance entre deux points dans le plan.

Exemple 3-1 : Courbe de longueur minimale dans le plan Cherchons la courbe y(x) minimisant la distance entre A et B dans le plan.

B

(

)

La distance curviligne est : DAB =  ds avec ds 2 = dx 2 + dy 2 = dx 2 1 + y'(x) 2 . A

On cherche la courbe y*(x) solution de : b

min  1 + y(x) 2 dx y

a

b

 min  L(x, y, y)dx avec L(x, y, z) = 1 + z 2 y

a

Optimisation fonctionnelle

189

Le lagrangien n’est pas explicite en y. L’équation d’Euler-Lagrange donne : L d  L  L y =   = = C te  y = C te (intégrale première)  2 y dx  y  y  1+ y Les extrémales de ce problème sont des courbes de pente constante, donc des droites. La solution particulière associée à deux points A et B est le segment joignant ces deux points.

(

La condition nécessaire de Legendre est également vérifiée : Lzz = 1 + y2

)

3 2

0.

Les droites vérifient bien les conditions nécessaires de minimum faible. On verra dans l’Exemple 3-4 que les conditions suffisantes sont vérifiées.

L’exemple suivant est le problème historique de la brachistochrone énoncé par Bernoulli en 1696. Ce problème a suscité le développement du calcul des variations.

Exemple 3-2 : Brachistochrone On cherche la forme de la courbe AB qui minimise le temps de parcours d’une particule glissant sous l’effet de la gravité (sans frottement), autrement dit la forme du toboggan optimal de A à B.

Figure 3-3 : Problème de la brachistochrone Le terme « brachistochrone » est d’origine grecque : «  » = le plus court, «  » = temps.

190

Techniques d’optimisation

Formulation du problème La première étape est d’écrire le problème sous la forme (3.22). La particule part du point A (a;  = 0) à vitesse nulle et arrive au point B (b; ) . L’énergie mécanique de la particule est constante car le champ de gravité est conservatif. L’énergie en A est nulle (en prenant l’origine des ordonnées en A), 1 ce qui détermine la vitesse : E = mv2 − mgy = 0  v = 2gy . 2 La courbe de A à B a pour équation y(x) . Le temps de parcours de A à B est : B

ds v A

TAB = 

avec ds 2 = dx 2 + dy 2 = dx 2 (1 + y(x) 2 ) b

Le problème se formule comme : min  y

a

 y(a) = 0 1 + y(x) 2 dx avec  . y(x)  y(b) = 

Résolution du problème

1 + z2 n’est pas explicite en x. y D’après (3.30), l’équation d’Euler-Lagrange donne l’intégrale première : Le lagrangien : L(x, y, z) =

L y y − L = H = Cte  L y y − L =

y2 y(1 + y2 )



1 + y2 1 = H  y(1 + y2 ) = 2 y H

L’équation différentielle à résoudre est : y(1 + y2 ) = 2c avec c =

1 . 2H 2

 (équation E1). 2 Remplaçons dans l’équation différentielle pour exprimer y. 2c  y= = 2ccos2  y = c(1 + cos ) 1 + y2 2   Dérivons cette expression de y : y = −c sin  = −2c sin cos (équation E2). 2 2 En identifiant les expressions (E1) et (E2) de y , on obtient une équation en .     y = − tan = −2c sin cos  2c cos 2 = 1  c(1 + cos )d = dx 2 2 2 2 Cette équation différentielle s’intègre en : x = c( − 0 + sin ) . On obtient des expressions de x et y paramétrées en fonction de . Effectuons le changement de fonction : y = − tan

Optimisation fonctionnelle

191

x() = c( − 0 + sin ) = x c + csin  Les solutions sont les courbes d’équation :  = yc + ccos   y() = c(1 + cos ) Ces extrémales sont des cycloïdes de centre (x c ; yc ) et de rayon c (Figure 3-4). Les conditions en A et B donnent les 2 constantes d’intégration c et 0. Une cycloïde résulte d’un mouvement circulaire uniforme autour d’un centre en translation uniforme (par exemple le mouvement par rapport au sol d’un point d’une roue de vélo).

Figure 3-4 : Cycloïde solution de la brachistochrone

Les conditions du Théorème 3-1 se généralisent à différents problèmes. Problème à plusieurs variables Considérons le problème d’optimisation fonctionnelle suivant.

min J(z) = z



(x,y)D

2

L ( x, y,z,z x ,z y ) dxdy

Le lagrangien est ici une fonction de

5

dans

(3.31) .

La fonctionnelle J porte sur une fonction z de deux variables x et y, définie sur une région D de 2 . Une condition nécessaire de minimum faible est alors :

L   L    L  =   +  z x  z x  y  z y 

(3.32)

192

Techniques d’optimisation

Cette équation aux dérivées partielles d’ordre 2 est la généralisation à deux variables de l’équation différentielle d’ordre 2 d’Euler-Lagrange (3.23). Elle se démontre de manière analogue à partir de la variation première de la fonctionnelle J (3.31). L’équation (3.32) se généralise à une fonction z de n variables. Problème à plusieurs fonctions Considérons le problème d’optimisation fonctionnelle suivant. b

min J(y1 , , y n ) =  L ( x, y1 , , y n , y1 , , yn ) dx

y1 , ,y n Y

(3.33)

a

Le lagrangien est ici une fonction de

2n +1

dans

.

La fonctionnelle J dépend de n fonctions y 1, …, yn de la variable x. Ces fonctions  y j (a) =  j , j =1 à n . de classe C1 ont leurs valeurs fixées en a et b :   y j (b) =  j Une condition nécessaire de minimum faible est alors :

L d  L  =   , j =1 à n y j dx  yj 

(3.34)

Chaque fonction (y j ) j=1 à n vérifie l’équation d’Euler-Lagrange : L y j = Lz j . La démonstration est similaire au cas d’une seule fonction (en appliquant n perturbations indépendantes j ). La condition de Legendre se généralise de la même manière. Courbe paramétrée Reprenons le problème d’optimisation fonctionnelle sous sa forme standard. b  y  C1[a;b] (3.35) min J(y) =  L(x, y, y)dx avec  y y(a) =  , y(b) =   a y(x)  . Cette formulation restreint les solutions aux fonctions y : x  Elle ne permet pas de trouver des courbes quelconques dans le plan (x, y) . Pour élargir l’ensemble des solutions, on considère des courbes paramétrées par une variable réelle t [t a ;t b ] .

x = x(t)   y = y(t)

x(t a ) = a  y(t a ) =  avec  et  x(t b ) = b y(t b ) = 

(3.36)

Optimisation fonctionnelle

193

En introduisant les notations :

dx dy dy y =x , =y , = y  y = dt noté dt noté dx noté x le terme sous l’intégrale (3.35) s’exprime comme :  y(t)  L ( x, y, y ) dx = L  x(t), y(t),  x(t)dt x(t)   Le problème (3.35) se met sous la forme :

(3.37)

(3.38)

tb

min K(x, y) =  M ( t, x, y, x, y ) dt x,y

ta

(3.39)  y(t)  avec M ( t, x, y, x, y ) = L  x(t), y(t),  x(t) x(t)   Il s’agit d’un problème de calcul des variations de la forme (3.33) à deux fonctions inconnues x(t) et y(t) , avec des conditions aux extrémités t a et t b . Chaque fonction inconnue vérifie l’équation d’Euler-Lagrange (3.34).

 M x = M x   M = M y  y



M d  M  =   x dt  x 

M d  M   =   y dt  y 

(3.40)

Ce système différentiel sur x(t) et y(t) est de dimension 2 et d’ordre 2. Les deux équations différentielles ne sont en fait pas indépendantes. Chacune d’elle est équivalente à l’équation d’Euler-Lagrange du problème initial (3.35).

Vérification Considérons d’abord la première équation (3.40) associée à x(t) : M x = M x .

y  Exprimons les dérivées M x et M x de la fonction : M ( t, x, y, x, y ) = L  x, y,  x x  −y y → M x = Lx x , M x = Lz 2 x + L = L − Lz = L − Lz y avec les notations (3.37) x x puis remplaçons dans M x = M x . d d Lx x = ( L − Lz y ) = ( L − Lz y ) x (équation E) dt dx

194

Techniques d’optimisation

d ( L ) = Lx + L y y + Lz y d  dx Développons les dérivées :  d dx  d Lz y ) = ( Lz ) y + Lz y (  dx dx En remplaçant dans l’équation (E), les termes en Lx et y s’éliminent. d Il reste : L y = ( Lz ) qui est l’équation d’Euler-Lagrange du problème (3.35). dx Considérons ensuite la deuxième équation (3.40) associée à y(t) : M y = M y . y  Exprimons les dérivées M y et M y de la fonction : M ( t, x, y, x, y ) = L  x, y,  x x  1 → M y = L y x , M y = Lz x = Lz avec les notations (3.37) x d d d puis remplaçons dans M y = M y : L y x = ( Lz ) = ( Lz ) x  L y = ( Lz ) dt dx dx On retrouve à nouveau l’équation d’Euler-Lagrange du problème initial (3.35).

La formulation (3.39) autorise comme solution des courbes quelconques du plan (x, y) . Cette formulation s’applique en particulier à la recherche des géodésiques. Géodésiques Une géodésique est une courbe minimisant la distance entre deux points sur une surface donnée. Considérons une surface définie de manière générale par un vecteur position r fonction de deux variables réelles (u, v) . Une géodésique sur la surface est une courbe paramétrée de la forme : r(t) = r ( u(t),v(t) ) . L’élément de longueur sur la surface s’exprime comme : 2

ds2 = dr = rudu + rvdv

2

= ru2du 2 + 2ru  rvdudv + rv2dv2

(3.41)

2 2 soit en posant : E = ru , F = ru  rv , G = rv :

ds = Eu2 + 2Fuv + Gv2 dt

(3.42)

Une géodésique entre deux points A et B sur la surface est solution du problème : B

tb

A

ta

min J(u, v) =  ds =  Eu2 + 2Fuv + Gv2 dt u,v

(3.43)

Optimisation fonctionnelle

195

Il s’agit d’un problème à deux fonctions inconnues u(t), v(t) avec des conditions aux extrémités ta et tb. Les équations d’Euler-Lagrange (3.40) pour u et v donnent :

 E u u2 + 2Fu uv + G u v2 d  2(Eu + Fv) =   2 2 dt  Eu2 + 2Fuv + Gv2  Eu + 2Fuv + Gv  2 2 d 2(Fu + Gv)  E v u + 2Fv uv + G v v =   2 2 dt  Eu2 + 2Fuv + Gv2  Eu + 2Fuv + Gv 2

  → pour u    → pour v 

(3.44)

2

Les fonctions E = ru , F = ru  rv , G = rv sont appelées coefficients de la forme quadratique fondamentale de la surface. Les géodésiques dans le plan (droites) ont été déterminées dans l’Exemple 3-1. L’exemple suivant illustre la recherche des géodésiques sur un cylindre en utilisant les équations (3.44).

Exemple 3-3 : Géodésiques sur un cylindre Considérons un cylindre droit à base circulaire de rayon a. La position sur le cylindre est repérée par un angle  et une côte z.  a cos    −a sin    0       r =  a sin    r =  a cos   , rz =  0   z   0  1       On cherche la géodésique sous forme paramétrée : r(t) = r ( (t),z(t) ) . Calculons les coefficients E, F, G : E = r2 = a 2 , F = r  rz = 0 , G = rz2 = 1 . Les équations (3.44) donnent : d   a 2  a 2 =0 = c1   2 2   2 dz  dt  a  + z   a 22 + z2    c1z = c2a 2  =c   d  z    d z   = c2  dt  2 2 2  = 0  a 22 + z2   a  +z  La solution est de la forme : z = z0 + c( − 0 ) qui est l’équation d’une hélice.

196

Techniques d’optimisation

3.2.2 Conditions suffisantes de minimum faible Les fonctions considérées dans cette section sont de classe C1 sur [a;b] . Les conditions suffisantes de minimum se basent sur l’étude des extrémales voisines et des points conjugués. Ces deux notions sont introduites ci-dessous. Extrémales voisines Rappelons qu’une extrémale de la fonctionnelle J (3.22) est une fonction solution de l’équation d’Euler-Lagrange (3.23). Une extrémale ne satisfait pas forcément les conditions aux extrémités et n’est pas forcément un minimum de J. Deux extrémales y1 et y2 sont voisines si leur écart en norme est petit : y2 − y1  . Les extrémales voisines vérifient la propriété suivante. Propriété 3-2 : Équation de Jacobi Si y* et y sont deux extrémales voisines de la fonctionnelle J (3.22), alors leur écart v = y − y* vérifie l’équation de Jacobi associée à la fonctionnelle J.

P = Lzz Qv = (Pv) avec  Q = L yy − Lyz

(3.45)

Démonstration Chaque extrémale vérifie l’équation d’Euler-Lagrange, ce qui donne le système : L y (x, y*, y*) − Lz (x, y*, y*) = 0 → pour y* (système S)  L y (x, y, y) − Lz (x, y, y) = 0 → pour y = y* + v Développons les termes de la deuxième équation à l’ordre 1 par rapport à v. L y ( x, y, y ) = L y ( x, y* + v,(y* + v) )

= L y ( x, y*, y* ) + L yy ( x, y*, y* ) v + L yz ( x, y*, y* ) v = L y + L yy v + L yz v

noté

Lz ( x, y, y ) = Lz + Lzy v + Lzz v noté

Lz ( x, y, y ) = (Lz + Lzy v + Lzz v) = Lz + Lzy v + Lzy v + (Lzz v)

Optimisation fonctionnelle

197

Remplaçons la deuxième équation par son développement dans le système S. − Lz = 0 → pour y*  L y   L y + L yy v + L yz v − Lz + Lzy v + L zy v + (L zz v) = 0 → pour y = y* + v En utilisant la première équation, la deuxième équation se réduit à : Lyy v − Lzy v − (Lzz v) = 0 qui est l’équation de Jacobi (3.45).

(

) (

)

L’équation de Jacobi est obtenue en développant l’équation d’Euler-Lagrange à l’ordre 1 au voisinage d’une solution y*. On dit que l’équation de Jacobi est l’équation variationnelle de l’équation d’Euler-Lagrange. Les extrémales voisines peuvent aussi se déterminer à partir du problème de minimum auxiliaire (accessory minimum problem). Propriété 3-3 : Problème de minimum auxiliaire Si y* et y sont deux extrémales voisines de la fonctionnelle J (3.22), alors leur écart v = y − y* est solution du problème :

P = L zz (3.46) min K(v) =  ( Pv2 + Qv 2 ) dx avec  v Q = L yy − Lyz a Ce problème équivaut à minimiser le développement d’ordre 2 de la fonctionnelle J au voisinage de l’extrémale y*. b

Démonstration Montrons d’abord le lien entre les problèmes (3.45) et (3.46). La fonctionnelle K est de la forme : b

K(v) =  M(x, v, v)dx avec M(x, v, v) = Pv2 + Qv 2 a

Son équation d’Euler-Lagrange est : Mv = Mv  Qv = (Pv) qui est l’équation de Jacobi (3.45). L’équation de Jacobi représente l’équation d’Euler-Lagrange du problème de minimum auxiliaire. Établissons ensuite le problème (3.46) à partir du développement de J à l’ordre 2 au voisinage de y*. Ce développement est donné par (3.11). J(y* + v) = J(y*) + J y* (v) + 2J y* (v) 2 + o( 2 )

198

Techniques d’optimisation

Les variations premières et secondes sont données par (3.21). b

J y* (v) =  v ( L y − Lz ) dx = 0 car l’extrémale y* vérifie l’équation (EL) : Ly = Lz a

b

b

1 1 v 2 (L yy − Lyz ) + v2 L zz ) dx =  ( Pv2 + Qv 2 ) dx (  2a 2a Remplaçons J par son développement d’ordre 2 dans la formulation (3.22). b 1 min J(y) → min J(y* + v) = J(y*) +  2  ( Pv2 + Qv 2 ) dx y v 2 a On obtient ainsi la formulation du problème auxiliaire. 2 J y* (v) =

Points conjugués L’équation de Jacobi permet de déterminer les extrémales voisines de y* sans tenir compte des conditions aux extrémités : y(a) =  , y(b) =  . Les points x = a et x = c ]a;b] sont appelés points conjugués de la fonctionnelle J s’il existe une extrémale voisine y = y* + v distincte de y* avec v(a) = v(c) = 0. L’existence d’un point conjugué signifie qu’il existe deux extrémales distinctes partant du même point A(a; ) et se croisant en un point C(c;  ) avec c ]a;b] . La Figure 3-5 montre à gauche des points A et C conjugués par rapport à une extrémale AB et à droite des points A et B conjugués pour la distance minimale sur une sphère. Il existe en effet une infinité de géodésiques entre deux points diamétralement opposés. L’étude des géodésiques de la sphère est détaillée dans l’Exemple 3-5.

Figure 3-5 : Points conjugués

Optimisation fonctionnelle

199

Exemple 3-4 : Points conjugués des géodésiques du plan Les géodésiques du plan ont été déterminées dans l’Exemple 3-1 . Rappelons l’expression du lagrangien pour ce problème : L(x, y,z) = 1 + z2 . Les extrémales (solutions de l’équation d’Euler-Lagrange) sont des fonctions

(

linéaires : y = C te . Elles vérifient la condition de Legendre : Lzz = 1 + y2

)

3 2

0.

Extrémales voisines Pour déterminer les extrémales voisines de y*, on résout l’équation de Jacobi. 3 −  P(x) = L zz = 1 + y*2 2 = C te car y* = C te Qv = (Pv) avec  Q(x) = L yy − Lyz = 0 car L y = 0 L’équation se réduit à v = 0 dont la solution est : v(x) = v(a) + v(a)(x − a) . L’écart entre deux extrémales voisines est une fonction linéaire (en cohérence avec le fait que les extrémales sont toutes des fonctions linéaires).

(

)

Points conjugués Considérons une extrémale voisine de y* et partant du même point A : v(a) = 0 . Si cette extrémale est distincte de y*, alors v n’est pas identiquement nulle et v(a)  0 . La fonction linéaire v(x) , nulle en a et de pente non nulle, ne peut pas s’annuler sur ]a;b] . Il n’existe donc pas de point conjugué pour le problème des géodésiques du plan. On établit plus bas que l’absence de points conjugués est une condition suffisante de minimum.

L’Exemple 3-4 remplit des conditions particulières permettant d’établir l’absence de point conjugué. Examinons ces conditions particulières. Supposons d’une part que le lagrangien L n’est pas explicite en y : Ly = 0 . L’équation de Jacobi (3.45) se simplifie, car Q = Lyy − Lyz = 0 .

(Pv) = Qv = 0  Pv = Cte

(3.47)

Supposons d’autre part que y* vérifie la condition forte de Legendre : P = Lzz  0. L’équation (3.47) montre alors que la dérivée de v est de signe constant.

200

Techniques d’optimisation

Si v(a) = 0 , alors la fonction v (non identiquement nulle) ne s’annule plus sur ]a;b] et il n’existe pas de point conjugué pour l’extrémale y*. La condition de Jacobi (1837) porte sur l’absence de point conjugué. Elle permet d’établir des conditions suffisantes que doit vérifier une fonction y* pour être un minimum faible local de la fonctionnelle J.

Théorème 3-4 : Conditions suffisantes de minimum faible local Supposons que y* vérifie : •

l’équation d’Euler-Lagrange (condition d’ordre 1)

Ly − Lz = 0 •

la condition forte de Legendre (condition d’ordre 2)

Lzz  0 •

(3.48)

(3.49)

la condition de Jacobi

x = a n’admet pas de point conjugué dans ]a;b]

(3.50)

Alors y* est un minimum faible local du problème (3.22).

Démonstration (voir [R14]) L’utilisation des trois hypothèses est soulignée au cours de la démonstration. On part du développement (3.11) de la fonctionnelle J à l’ordre 2 au voisinage de y* avec les variations premières et secondes données par (3.21). J(y* + ) = J(y*) + J y* () +  2 J y* () 2 + o( 2 ) b  J y* () =   ( L y − Lz ) dx  a avec  b 2 J () = 1 2 (L − L ) + 2 L dx ( yy yz zz )  y* 2 a 

Optimisation fonctionnelle

201

La variation première est nulle, car y* vérifie par hypothèse l’équation d’EulerLagrange : Ly = Lz . La variation seconde se met sous la forme : b 1 P = Lzz 2 J y* () =  P2 + Q2 dx avec  2a Q = L yy − Lyz On cherche à montrer que, sous les hypothèses du théorème, on a : 2 J y* ()  0 ,  admissible ,   0 .

(

)

Les perturbations admissibles  sont de classe C1 et telles que (a) = (b) = 0 . 2 La démonstration consiste à transformer  J y* () pour faire apparaître un carré

sous l’intégrale. b

2 Considérons un terme de la forme : I =  d(w ) où w est une fonction C1. a

b

b

2 2 Ce terme est toujours nul : I =  d(w ) =  w  a = 0 car (a) = (b) = 0 a

2 et on peut l’ajouter à  J y* () .

2 J y* () = 2 J y* () + I =

b

1  '2 P + 2w + 2 (Q + w ) ) dx (  2a

Par l’hypothèse forte de Legendre : P  0 . La fonction P ne s’annule pas sur [a;b]. Supposons qu’il existe une fonction w telle que : P(Q + w) = w (l’existence d’une telle fonction est démontrée plus bas).

2

En factorisant par P sous l’intégrale, et avec l’équation vérifiée par w, on obtient : 2 b b 2 1  2 w 1  w  2 2 w   J y* () =  P   + 2 +  2  dx =  P   +   dx  0 2a  P P  2a  P 

w  = 0   = 0 car (a) = 0 . P 2 Pour une perturbation admissible non nulle, on a donc bien :  J y* ()  0 . Cette intégrale ne peut s’annuler que si :  +

2 Il reste à montrer l’existence de w de classe C1 telle que : P(Q + w) = w .

d (Pv) = 0 . dx Cette solution dépend de façon continue de la valeur initiale v(a) . Considérons une solution v de l’équation de Jacobi : Qv −

202

Techniques d’optimisation

Par l’hypothèse de Jacobi, il n’existe pas sur l’intervalle ]a;b] de point conjugué au point x = a . Si v(a) = 0 , alors v ne s’annule pas sur l’intervalle ]a;b] . Par continuité, pour v(a) =  avec  petit, la solution v ne s’annule pas sur l’intervalle ]a;b] . Il existe donc une solution v ne s’annulant pas sur ]a;b] . Définissons alors la fonction w par : w = −

v P. v

d d (vw) = − (Pv) = −Qv dx dx (car v est solution de l’équation de Jacobi). En dérivant vw , on obtient : v w v w2 vw + vw  = −Qv  Q + w  = − w = = − par définition de w) (car v P v P 2 On a ainsi bien montré l’existence d’une fonction w telle que : P(Q + w) = w . Cette fonction de classe C1 vérifie : vw = −Pv 

Remarques sur la condition forte de Legendre : P = Lzz  0 •



On peut montrer qu’un minimum faible vérifiant la condition forte de Legendre n’admet pas de point conjugué. L’absence de point conjugué est donc une condition nécessaire de minimum lorsque P = Lzz  0 .

Dans le cas particulier où L n’est pas explicite en y : Ly = 0 , on a établi plus haut (3.47) que la condition forte de Legendre conduit à l’absence de point conjugué. Cette condition seule suffit alors pour garantir un minimum faible.

L’exemple suivant illustre l’application des conditions suffisantes pour déterminer les géodésiques sur la sphère.

Exemple 3-5 : Géodésiques sur une sphère On cherche les courbes de distance minimale entre deux points A et B sur la sphère unité. La position sur la sphère est repérée par la latitude  et la longitude . Pour faciliter les calculs, on choisit les axes pour que les points A et B soient sur le méridien de longitude nulle (comme sur la Figure 3-6 gauche ci-après). Avec ce choix d’axes, les points A et B ont pour coordonnées :    B  A A  , B   A = 0   B = 0 

Optimisation fonctionnelle

203

Figure 3-6 : Géodésiques et points conjugués sur une sphère

Formulation du problème L’élément de distance ds sur la sphère s’exprime en coordonnées sphériques.  x = cos  cos   2 2 2 2 2 2 2  y = cos  sin  → ds = dx + dy + dz = d + d cos  z = sin   On cherche la fonction () qui minimise la distance de A à B. B

B

A

A

Le problème se formule comme : min DAB =  ds = 

avec le lagrangien défini par :



1 + ()2 cos 2  d

L(, , ) = 1 + 2 cos 2 

Recherche des extrémales Les extrémales sont les solutions de l’équation d’Euler-Lagrange : Le lagrangien ne dépend pas de  : On obtient l’équation différentielle :

d  L  L   =0   =c  d    

L d  L  =    d     cos2  =c 1 + 2 cos2 

d c = d cos  cos 2  − c 2

Une solution (non évidente) est : tan ( −  0 ) =

csin  cos 2  − c2

(vérifiée en dérivant)

204

Techniques d’optimisation

Les constantes d’intégration 0 ,c sont déterminées par les conditions en A et B.

csin A

  cos A − c    c = 0 ,  0 = 0 ou  csin B  En B(B ;  B = 0) : − tan  0 = cos 2 B − c2  L’extrémale de A à B a donc pour équation : tan  = 0 . Cette extrémale est un arc de grand cercle suivant le méridien passant par A et B. Cherchons si cette extrémale vérifie les conditions suffisantes du Théorème 3-4. En A (A ;  A = 0) : − tan  0 =

Condition forte de Legendre La fonction P est définie par : P() =

2

2

  L    avec :    

L  cos 2    L  cos 2  L cos 2  =  −  =  L     L L2 L’extrémale a pour équation : tan  = 0 , ce qui conduit à : L(, , ) = 1 + 2 cos 2  

 = 0 , L(, , ) = 1 et P() = cos 2  La condition forte de Legendre : P()  0 est vérifiée si l’extrémale ne passe pas par un pôle. Condition de Jacobi L’équation de Jacobi est : (Pv) = Qv avec Q = 0 , car L n’est pas explicite en  .

k  v = v0 + k tan  cos2  Si v(A ) = 0 , alors v s’annule à nouveau pour C = A +  . Le point A admet comme point conjugué le point C diamétralement opposé. Les solutions sont :

Pv = k  v =

Récapitulons les conditions suffisantes pour que la distance AB soit un minimum. • •

L’extrémale (AB) est un arc de grand cercle méridien d’équation :  = 0  L = 1 , DAB = B − A La condition forte de Legendre est vérifiée si l’extrémale ne passe pas par un

  2  La condition de Jacobi (pas de point conjugué) est vérifiée si la longueur de (AB) est inférieure à celle d’un demi-grand cercle. pôle   =   .



Optimisation fonctionnelle

205

Remarque 1 Si A et B ne sont pas diamétralement opposés, on peut choisir le repère pour que −

   A  B  et les conditions suffisantes de minimum sont satisfaites. 2 2

Remarque 2 La formulation en () suppose la variable  croissante. Si l’on oriente les latitudes dans le « mauvais sens » (i.e. B  A +  ), la longueur de l’arc (AB) est supérieure à celle d’un demi-grand cercle et la condition de Jacobi n’est pas vérifiée. Dans ce cas, il existe un chemin plus court en parcourant l’arc en sens rétrograde (  décroissant) comme représenté sur la Figure 3-6 droite. Remarque 3 Si A et B sont diamétralement opposés, tous les demi-cercles (AB) sont solutions.

3.2.3 Conditions nécessaires de coin Le Théorème 3-1 donne des conditions nécessaires de minimum faible sur l’espace des fonctions de classe C1 sur [a;b] . Cette section élargit l’espace aux fonctions de classe C 1 par morceaux sur [a;b] . Les fonctions y peuvent présenter une discontinuité de dérivée en un point c comme sur la Figure 3-7. Un tel point est appelé « coin » (corner) ou « arête ».

Figure 3-7 : Fonctions C1 par morceaux

206

Techniques d’optimisation

Le problème de calcul des variations se formule comme : b  y(a) =  (3.51) min J(y,c) =  L(x, y, y)dx avec  et y(c − )  y(c + ) y,c  y(b) =  a Les inconnues de ce problème sont la fonction y et la position c du coin. Le théorème suivant complète le Théorème 3-1 en ajoutant une condition nécessaire associée à un coin.

Théorème 3-5 : Conditions nécessaires de coin Supposons que y* est un minimum du problème (3.51) avec un coin en x = c* . Alors y* vérifie les conditions du Théorème 3-1. De plus, les fonctions L z et Lz y − L sont continues en x = c* .

Démonstration (voir [R14]) La démonstration consiste à exprimer la variation première de la fonctionnelle J en appliquant des perturbations sur la fonction y et sur la position du coin c, puis à écrire les conditions pour que cette variation première soit nulle. Considérons une fonction y de classe C 1 par morceaux sur [a;b] . On suppose que cette fonction présente un unique coin en x = c (Figure 3-8).

Figure 3-8 : Fonctions y1 et y2 de classe C1 sur chaque intervalle

Optimisation fonctionnelle

207

Les fonctions y1 et y2 sont les restrictions de y aux intervalles [a;c] et [c;b] .

 y1 (x) si x [a;c] y(x) =   y2 (x) si x [c;b]

La fonction y est continue en x = c :

y1 (c) = y2 (c) = y(c)

Sa dérivée est discontinue en x = c :

 y1 (c) = y(c− )  +  y2 (c) = y(c )

Définition des perturbations Supposons que la fonction y* avec un coin en c * est un minimum faible de J. Appliquons des perturbations 1 et 2 de classe C1 aux fonctions y1 * et y2 * , ainsi qu’une perturbation c sur la position du coin c * .  y1 = y1 * + 1 sur [a;c] avec 1 (a) = 0 et c = c* + c   y2 = y2 * + 2 sur [c;b] avec 2 (b) = 0 Dans le cas où c  c* , on prolonge la fonction y1 * par un segment sur [c*;c] .

y1p *(x) = y*(c*) + y* (c*− )(x − c*) pour c*  x  c Dans le cas où c  c* , on prolonge la fonction y2 * par un segment sur [c;c*] .

y2p *(x) = y*(c*) + y* (c*− )(x − c*) pour c  x  c* Ces perturbations sont représentées sur la Figure 3-9.

Figure 3-9 : Fonction perturbée avec prolongement linéaire

208

Techniques d’optimisation

La fonction y est de classe C1 sur chaque intervalle et vérifie les conditions aux extrémités : y(a) =  , y(b) =  . Il faut imposer sa continuité en x = c . La fonction y* est continue en c* : y1 *(c*) = y2 *(c*) .

 y1 (c) = y1 *(c*) + y1 + y1c  y2 (c) = y2 *(c*) + y 2 + y 2c

Exprimons les valeurs de y1 (c) et y2 (c) : 

avec les notations suivantes illustrées sur la Figure 3-10 :

y1 = variation en c* de y1 * due à 1

→ y1 = 1 (c*)

y 2  = variation en c* de y2 * due à 2

→ y2 = 2 (c*)

y1c = variation en c* de y1 * due à c

→ y1c = y* (c*− )c

→ y2c = y* (c*+ )c y2c = variation en c* de y2 * due à c Les variations y1c et y2c résultent des prolongements linéaires de y1 * et y2 * .

Figure 3-10 : Condition de continuité En regroupant ces contributions, la continuité de y en c donne la relation :

y1 (c) = y2 (c)  y1 + y1c = y2 + y2c

 1 (c*) + y* (c*− )c = 2 (c*) + y* (c*+ )c

Cette condition de continuité (C) sera utilisée plus bas.

(équation C)

Optimisation fonctionnelle

209

Calcul de la variation première Calculons maintenant la variation première de J avec ces perturbations. En décomposant sur les intervalles [a;c*] et [c*;b] , J s’exprime comme : b

c*

b

a

a

c*

J(y*,c*) =  L ( x, y*, y* ) dx =  L ( x, y1*, y1 * ) dx +  L ( x, y 2 *, y 2 * ) dx = J1 (y1*,c*) + J 2 (y 2 *,c*) Développons à l’ordre 1 la fonctionnelle J1 sur l’intervalle [a;c] .

J1 (y1 * + 1 ,c* + c) =

c*+c

 L ( x, y * +  ,(y * +  )) dx 1

1

1

1

a

=

c*

c*+c

a

c*

 ( L + 1L y + 1Lz ) ( x, y1*, y1 *) dx +

La deuxième intégrale vaut :

 L ( x, y *, y *) dx 1

1

c*+c

 L ( x, y *, y *) dx = L ( c*, y *(c*), y * (c*) ) c 1

1

1

c*

1

= L ( c*, y*(c*), y* (c *− ) ) c = L(c *− )c noté

En intégrant par parties le terme en 1 Lz dans la première intégrale, avec la condition : 1 (a) = 0 , on obtient pour la variation première de J1 : c*

J1y* (1 , c) =  1 ( L y − Lz ) dx + 1 (c*)L z (c*− ) + L(c*− )c a

De manière similaire, la variation première de J2 est donnée par : b

J 2y* (2 , c) =  2 ( L y − Lz ) dx − 2 (c*)L z (c*+ ) − L(c*+ )c c*

La variation première de J est la somme de ces deux contributions. J y* (1 , 2 , c) = J1y* (1 , c) + J 2y* (2 , c)

=

c*

b

 1 ( L y − Lz ) dx +  2 ( L y − Lz ) dx a

c*

+ 1 (c*)L z (c * ) − 2 (c*)L z (c *+ ) + ( L(c *− ) − L(c *+ ) ) c −

Les valeurs de 1 (c*), 2 (c*), c sont liées par la condition de continuité (C). En notant  la valeur des 2 membres de l’équation (C), on exprime les valeurs de 1 (c*), 2 (c*) en fonction des deux perturbations indépendantes c,  .

1 (c*) =  − y* (c*− )c  + 2 (c*) =  − y* (c* )c

210

Techniques d’optimisation

On obtient ainsi J y* en fonction de perturbations indépendantes 1 , 2 , c,  . c*

b

a

c*

J y* (1 , 2 , c,  ) =  1 ( L y − Lz ) dx +  2 ( L y − Lz ) dx −  L z c*−  +  L z y − L c*− c c*+

c*+

La condition nécessaire de minimum en y* est que la variation première soit nulle.

J y* (1, 2 , c, ) = 0 , 1, 2 admissibles , c, 

Le coefficient de chaque perturbation doit être nul. - Les termes en 1 , 2 donnent l’équation d’Euler-Lagrange sur [a;b] : L y = Lz . - Le terme en  impose la continuité de L z en x = c* . - Le terme en c impose la continuité de Lz y − L en x = c* .

Les conditions de continuité de L z et Lz y − L en un coin sont appelées conditions nécessaires de Weierstrass-Erdmann (établies respectivement en 1865 et 1877). Elles s’appliquent en chaque point de discontinuité de la dérivée. L’exemple suivant montre l’utilisation de ces conditions de coin pour obtenir des solutions C1 par morceaux.

Exemple 3-6 : Surface de révolution d’aire minimale / Caténaire On cherche la surface de révolution d’aire minimale engendrée par rotation d’une courbe (AB) autour de l’axe (Ox), comme représenté sur la Figure 3-11 à gauche. La courbe (AB) a pour équation : y(x) , a  x  b . Les conditions aux extrémités sont : y(a) =  , y(b) =  .

Figure 3-11 : Surface de révolution d’aire minimale / caténaire

Optimisation fonctionnelle

211

Formulation du problème L’élément de courbe à l’abscisse x a une longueur : ds = 1 + y(x)2 dx . Cet élément d’ordonnée y génère par rotation autour de Ox la surface : dS = 2yds B

b

A

a

2 Le problème se formule comme : min S = 2 yds = 2  y(x) 1 + y(x) dx y

Ce problème de surface de révolution est équivalent au problème de la caténaire. Problème de la caténaire On cherche la forme prise par un fil pesant homogène attaché en A et B comme représenté sur la Figure 3-11 à droite. La densité du fil est notée  . L’élément de longueur ds à l’ordonnée y a une énergie potentielle dEP = gyds . b

2 La forme du fil minimise l’énergie potentielle totale : E P =  gy(x) 1 + y(x) dx. a

b

2 Le problème se formule comme : min E P = g  y(x) 1 + y(x) dx . y

a

Cette formulation est analogue au problème précédent de surface de révolution. Remarque : la longueur de la courbe (AB) est libre. Dans le cas d’une courbe longueur donnée, la résolution doit prendre en compte une contrainte de type intégrale comme en section 3.3.2. Solutions de classe C1 Commençons par chercher des solutions de classe C 1 sur [a;b] . Le lagrangien L(x, y,z) = y 1 + z 2 n’est pas explicite en x. Comme démontré en (3.30), l’équation d’Euler-Lagrange admet comme intégrale première : L y' y − L = H = Cte , ce qui conduit à l’équation différentielle vérifiée par y.

yy2

− y 1 + y2 = H  y = 

y2 − H2 H

1 + y2 Cette équation s’intègre par séparation des variables x et y. dx =

 Hdy

 x = x 0  H.ln

y + y2 − H2 y = x 0  H.Ach   H H

y2 − H2 (Ach = cosinus hyperbolique inverse)

212

Techniques d’optimisation

La courbe (AB) est une chaînette  x − x0  d’équation : y = H.ch  .  H  La surface de révolution engendrée est une caténoïde représentée ci-contre (« catena » = chaîne). Cette solution ne considère que les courbes de classe C 1. Solutions de classe C1 par morceaux Cherchons maintenant des solutions de classe C 1 par morceaux. Les coordonnées des extrémités sont A (−a ; ) et B (a; ) .

 x = x(t) Les solutions sont cherchées sous forme de courbes paramétrées :  .  y = y(t) b

2 2 Le problème se formule comme : min  y(t) x(t) + y(t) dt . x,y

a

Le lagrangien dépend des deux fonctions x et y : L(t, x, y, x, y) = y x 2 + y 2 .

L x = L x Chaque fonction x(t) et y(t) vérifie l’équation d’Euler-Lagrange :  . L y = L y Ce problème à deux fonctions x(t) et y(t) d’une variable t est équivalent au problème à une fonction y(x) en variable x, comme vérifié en (3.40). Les deux équations d’Euler-Lagrange ne sont donc pas indépendantes. On choisit de résoudre l’équation en Lx qui est plus simple.

Lx = 0  Lx = K = Cte  yx = K x 2 + y 2 On obtient deux formes d’extrémales selon la valeur de la constante K. • 1er cas : K  0 On retrouve les solutions de classe C1 de type chaînette en posant : x = t  x = 1 Les constantes sont déterminées par les conditions en A (−a ; ) et B (a; ) .

x a La solution chaînette est : y = H.ch   avec H déterminée par :  = H.ch   . H H La constante H n’existe que si   1,509a (minimum obtenu numériquement). Physiquement l’ordonnée  doit être suffisante pour que le point bas reste audessus de l’axe (Ox), celui-ci représentant l’axe de rotation pour le problème de la surface ou le niveau du sol pour le problème de la caténaire.

Optimisation fonctionnelle

213

• 2e cas : K = 0 L’équation d’Euler-Lagrange donne deux solutions : yx = 0  y = 0 ou x = Cte . On forme une solution composite raccordant ces deux solutions en C (x C ; yC = 0). Cette solution composite doit vérifier les conditions de coin en C. Conditions nécessaires de coin La première condition est la continuité de p = Lx en C. Cette condition est bien vérifiée, car p = L x = K = 0  p− = p + = 0 . La deuxième condition est la continuité de H = Lx x − L en C. Cette condition est bien vérifiée au point C. Lx = K = 0  H− = H+ = 0  2 2 L = y x + y = 0 car yC = 0 Les conditions de coin sont vérifiées en raccordant les extrémales x = C te et y = 0. te

Les conditions en A et B imposent x = a pour les solutions de la forme x = C . La courbe solution se compose de trois segments [AA’] (x = −a) , [A’B’] (y = 0) et [B’B] (x = +a) . Ces segments forment trois côtés d’un rectangle comme illustré sur la Figure 3-12.

Figure 3-12 : Solutions chaînette et rectangle

Comparons maintenant les solutions « chaînette » et « rectangle » en termes de valeur de la fonctionnelle et de faisabilité.

214

Techniques d’optimisation

La surface de la solution rectangle est obtenue en intégrant sur chaque segment. t =+ a t =  A ' B' B'   t =0  S = 2   +  +  y x 2 + y 2 dt  = 2   y y dt +  0dt +  y y dt  A' B t =− a t =0 A   t = 

(

0



)

=   − y 2  +  y 2  = 2 2  0 Cette surface correspond à deux disques décrits par les segments [AA’] et [BB’]. Si l’ordonnée  est suffisante (   1,509a ), la solution chaînette est meilleure (surface inférieure). Si l’ordonnée  est trop petite, la solution chaînette n’est pas réalisable, car la courbe passerait au-dessous de l’axe (Ox). La solution « rectangle » est dans ce cas la seule acceptable.

On verra en section 3.4 que les conditions de coin de Weierstrass-Erdmann traduisent la continuité des variables canoniques du problème (3.51). Les conditions établies ici considèrent des fonctions voisines en norme 1. La section suivante élargit les conditions aux fonctions voisines en norme 0 pour définir un minimum fort.

3.2.4 Conditions nécessaires de minimum fort Dans cette section, on considère des fonctions de classe C 1 par morceaux sur [a;b] et un voisinage en norme 0. 4 → La fonction de Weierstrass E : est définie par :

E(x, y,z,w) = L(x, y,w) − L(x, y,z) − (w − z)Lz (x, y,z)

(3.52)

Le théorème suivant donne une condition nécessaire que doit vérifier une extrémale y* pour être un minimum fort local de J. Théorème 3-6 : Condition nécessaire de minimum fort local Supposons que y* est un minimum fort local du problème (3.22). Alors y* est une extrémale vérifiant la condition de Weierstrass :

E(x, y*, y*,w)  0 , w  en tout point x  [a;b] qui n’est pas un coin.

(3.53)

Optimisation fonctionnelle

215

Rappelons qu’une extrémale vérifie l’équation d’Euler-Lagrange : Ly = Lz . Démonstration (d’après [R14]) Supposons que la fonction y* est un minimum fort local de J et considérons deux points x0 et x1 dans [a;b] et tels que l’intervalle [x0 ;x1 ] ne contienne pas de coin. On définit des fonctions y paramétrées par un réel   0 et un réel w quelconque.

si a  x  x 0  y *(x)  si x 0  x  x 0 +   y *(x 0 ) + w(x − x 0 ) y(x, ) =  x1 − x  y *(x) + x − (x + ) ( y *(x 0 ) + w − y *(x 0 + ) ) si x 0 +   x  x 1 1 0  si x1  x  b  y *(x) L’allure d’une telle fonction y(x, ) est représentée sur la Figure 3-13.

Figure 3-13 : Fonction perturbée sur [x0;x1] Les fonctions y(x, ) sont C1 par morceaux avec des dérivées discontinues aux points x0, x0+ et x1. Pour   0 petit, les fonctions y(., ) sont voisines de y* en norme 0. Pour  = 0 , la fonction y(.,0) coïncide avec y*. y* étant un minimum fort de J, on a : J(y*) = J ( y(.,0) )  J ( y(., ) ) ,   0 La fonction F : 

F() = J ( y(., ) ) définie pour   0 admet donc un minimum

+ en  = 0 . Sa dérivée à droite en 0 doit être positive : F(0 )  0 . + On calcule ci-dessous cette dérivée F(0 ) pour montrer que :

F(0+ ) = E(x 0 , y*(x 0 ), y* (x 0 ), w)

(fonction de Weierstrass évaluée pour la fonction y* au point x 0). Le point x0 et le réel w étant quelconques, on aura alors montré la condition (3.53).

216

Techniques d’optimisation

Calcul de la dérivée de la fonction F b

x0

a

a

F() = J(y(., )) =  L ( x, y(x, ), y x (x, ) ) dx = 

+

x 0 +



x0

+

x1



x 0 +

b

+

x1

La fonction y(x, ) ne dépend de  que sur les intervalles [x 0 ;x 0 + ] et [x 0 +  ;x1 ] . On calcule les dérivées des intégrales sur ces deux intervalles. •

x 0 +

 L ( x, y(x, ), y (x, ) ) dx

Dérivée par rapport à  de l’intégrale : I0 =

x

x0

Sur [x 0 ;x 0 + ] : y(x, ) = y*(x 0 ) + w(x − x 0 )  yx (x, ) = w

→ L ( x, y(x, ), yx (x, ) ) = L ( x, y*(x 0 ) + w(x − x 0 ),w )

Pour  petit, on obtient :

x +  d d 0 ( I0 ) =   L ( x, y*(x 0 ) + w(x − x 0 ), w ) dx  = L ( x 0 + , y*(x 0 ) + w , w ) d d  x0 



x1

Dérivée par rapport à  de l’intégrale : I1 =

 L ( x, y(x, ), y (x, ) ) dx x

x 0 + x  d d 1 ( I1 ) =   L ( x, y(x, ), y x (x, ) ) dx  d d  x0 + 

= −L ( x 0 + , y(x 0 + , ), y x (x 0 + , ) ) +

x1

d ( L ( x, y(x, ), y x (x, ) ) ) dx d x 0 +



en séparant la dérivée par rapport à la borne inférieure (1 er terme) et la dérivée sous l’intégrale. La dérivée sous l’intégrale vaut : d L ( x, y(x, ), y x (x, ) ) = L y ( x, y(x, ), y x (x, ) ) y  (x, ) d + L z ( x, y(x, ), y x (x, ) ) y x (x, ) En remplaçant dans l’expression de

d ( I1 ) : d

d ( I1 ) = − L ( x 0 + , y(x 0 + , ), y x (x 0 + , ) ) d +

x1



L y ( x, y(x, ), y x (x, ) ) y  (x, )dx

x 0 +

+

x1



x 0 +

L z ( x, y(x, ), y x (x, ) ) y x (x, )dx

Optimisation fonctionnelle

217

Notons I2 la deuxième intégrale ci-dessus :

I2 =

x1



Lz ( x, y(x, ), y x (x, ) ) y x (x, )dx

x 0 +

En intégrant par parties, on a : x1

I2 =  Lz ( x, y(x, ), y x (x, ) ) y (x, )  x + − 0

x1

d L z ( x, y(x, ), y x (x, ) ) y  (x, )dx dx x 0 +



Calculons le terme entre crochets en utilisant l’expression de la fonction y(x, ) . Sur [x 0 +  ;x1 ] : y(x, ) = y*(x) +

x1 − x ( y*(x 0 ) + w − y*(x 0 + ) ) x1 − (x 0 + )

En x1 : En x 0 +  :

y(x1, ) = y*(x1 )  y (x1, ) = 0 y(x0 + , ) = y*(x 0 ) + w  yx (x 0 + , ) + y (x 0 + , ) = w  y (x 0 + , ) = w − yx (x 0 + , ) Le terme entre crochets vaut : x1

 L z ( x, y(x, ), y x (x, ) ) y  (x, )  x + = 0

− L z ( x 0 + , y(x 0 + , ), y x (x 0 + , ) )( w − y x (x 0 + , ) )

Regroupons maintenant l’ensemble des termes de F() venant de I0 et I1 .

F() = L ( x 0 + , y*(x 0 ) + w, w ) − L ( x 0 + , y(x 0 + , ), y x (x 0 + , ) ) − Lz ( x 0 + , y(x 0 + , ), y x (x 0 + , ) )( w − y x (x 0 + , ) ) x1

d    L y ( x, y(x, ), y x (x, ) ) − L z ( x, y(x, ), y x (x, ) )  y  (x, )dx dx  x 0 +  On s’intéresse à la valeur en  = 0 , pour laquelle : y* = y(.,0) . Par hypothèse : d - y* est une extrémale : L y ( x, y*, y* ) − L z ( x, y*, y* ) = 0 . dx - x0 n’est pas un coin, donc y* est dérivable en x0 : yx (x 0 ,0) = y* (x 0 ) . +



Avec ces hypothèses, on obtient :

F(0+ ) = L ( x 0 , y*(x 0 ), w ) − L ( x 0 , y*(x 0 ), y* (x 0 ) ) − Lz ( x 0 , y*(x 0 ), y* (x 0 ) )( w − y* (x 0 ) )

= E ( x 0 , y*(x 0 ), y*'(x 0 ),w )

qui est la relation attendue.

218

Techniques d’optimisation

La condition de Weierstrass (1879) traduit la convexité locale du lagrangien par rapport à la variable z = y .

L(x, y*,w)  L(x, y*, y*) + (w − y*)Lz (x, y, y*) , w 

(3.54)

La fonction de Weierstrass E (Weierstrass excess function) est l’écart entre la fonction L(x,y,z) et sa tangente au point (x ; y). En utilisant les variables canoniques p et H (qui seront définies en section 3.4) :

p = Lz  H = Lz y − L

(3.55)

on peut écrire la fonction de Weierstrass sous la forme :

E(x, y*, y*, w) = L(x, y*, w) − L(x, y*, y*) − (w − y*)L z (x, y*, y*) = L(x, y*, w) − L(x, y*, y*) − (w − y*)p = ( py* −L(x, y*, y* ) − ( pw − L(x, y*, w) ) = H(x, y*, y*, p)

(3.56)

− H(x, y*, w, p)

qui montre que l’hamiltonien H est maximal lorsque w = y* . On verra dans le cadre d’un problème de commande optimale (chapitre 4) que la condition de Weierstrass est directement liée au principe du maximum.

3.2.5 Récapitulatif Les différentes conditions de minimum sont résumées ci-dessous. Minimum faible : fonctions de classe C1 et voisinage en norme 1. Minimum fort :

fonctions de classe C1 par morceaux et voisinage en norme 0.

Conditions nécessaires de minimum faible local

Ly = Lz

Euler-Lagrange (1740,1755)

Lzz  0

Legendre (1786)

Conditions suffisantes de minimum faible local

Ly = Lz

Euler-Lagrange (extrémale)

Lzz  0 Pas de point conjugué

Legendre (condition forte) Jacobi (1837)

Optimisation fonctionnelle

219

Conditions nécessaires de minimum fort local

Ly = Lz

Euler-Lagrange (extrémale)

Lzz  0 L z et Lz y − L continues

Legendre Weierstrass-Erdmann (1865,1877) en chaque coin Weierstrass (1879) partout sauf aux coins

E(x, y*, y*,w)  0 , w

3.3 Contraintes La section précédente a établi des conditions d’optimalité du problème standard : b  y(a) =  (3.57) min J(y) =  L(x, y, y)dx avec  y  y(b) =  a Les seules contraintes sur la solution y *(x) portent sur les valeurs aux extrémités. Cette section élargit les conditions d’optimalité à différents types de contraintes.

3.3.1 Contrainte finale On suppose dans cette section que les coordonnées des extrémités peuvent varier. y(a) =  x(a) = a Les variations d’abscisses et d’ordonnées sont notées : et y(b) =  x(b) = b





La variation première de la fonctionnelle J est alors donnée par : b

J =   ( L y − Ly ) dx +  L yy  + (L − L y y)x  a a b

b

(3.58)

a

Démonstration La fonctionnelle J dépend de la fonction y et des abscisses a et b. b

J(y,a,b) =  L(x, y, y)dx a

Appliquons une perturbation  sur la fonction y et des perturbations a et b sur les abscisses a et b comme illustré sur la Figure 3-14 page suivante.

220

Techniques d’optimisation

Figure 3-14 : Fonction à extrémités libres Calculons J(y + ,a + a,b + b) en développant le lagrangien à l’ordre 1.

J(y + ,a + a,b + b) = =

b +b

b +b

a +a

a +a

 L ( x, y + ,(y + )) dx =  ( L + L

b +b



Ldx +

a +a

b +b

 ( L

y

y

+ L y ) dx

+ L y ) dx

a +a

La première intégrale donne à l’ordre 1 : b +b



a +a

Ldx =

a



a +a

b

b +b

a

b

Ldx +  Ldx +



b

b

a

a

Ldx =  Ldx + L(b)b − L(a)a =  Ldx +  Lx a

b

La seconde intégrale s’intègre par parties en négligeant les termes en a, b qui sont d’ordre 2. b +b



a +a

b

b

a

a

( Ly + Ly ) dx =  ( L y + L y ) dx =   ( L y − Ly ) dx + L y a

b

La variation première J s’obtient en regroupant ces termes. b

J = J(y + ,a + a,b + b) − J(y,a,b) =   ( L y − Ly ) dx + L y  + Lx a a b

b

a

On cherche maintenant à faire apparaître les variations d’ordonnées y(a), y(b). La variation y aux extrémités résulte d’une part de la fonction  , d’autre part de la variation d’abscisse a ou b comme représenté sur la Figure 3-14.

Optimisation fonctionnelle

221

On a les relations :

y(a) = (a) + y(a)a (a) = y(a) − y(a)a a = x(a)   avec   y(b) = (b) + y(b)b (b) = y(b) − y(b)b b = x(b) En remplaçant dans l’expression de J , on obtient la formule (3.58). b

J =   ( L y − Ly ) dx +  L yy  + (L − L y y)x  a a b

b

a

La formule (3.58) est utilisée ci-dessous pour un problème à ordonnée finale libre, puis pour un problème à position finale contrainte sur une courbe. Problème à ordonnée finale libre Supposons que les coordonnées a, ,b sont fixées et que l’ordonnée  est libre. Le problème se formule comme : b

min J(y) =  L(x, y, y)dx avec y(a) =  y

(3.59)

a

La Figure 3-15 montre trois fonctions y1, y2 , y* de valeurs 1, 2 ,  * en x = b .

Figure 3-15 : Fonction à ordonnée finale libre

222

Techniques d’optimisation

Le théorème suivant donne des conditions nécessaires que doit vérifier une fonction y* pour être un minimum faible local de J avec l’ordonnée libre en x = b. Théorème 3-7 : Conditions nécessaires de minimum avec ordonnée finale libre Si y* est un minimum faible local du problème (3.59), alors y* vérifie : •

l’équation d’Euler-Lagrange

Ly − Lz = 0 •

(3.60)

la condition de transversalité (3.61)

Lz (b) = 0

Démonstration Dans le cas où a, ,b sont fixés, on a : x(a) = y(a) = x(b) = 0 . b

(

)

La variation première (3.58) se réduit à : J =   L y − Ly dx + L y (b)y(b) a

L y − Ly = 0 L y (b) = 0

La condition de minimum : J = 0 ,  , y(b) impose : 

L’équation d’Euler-Lagrange (3.60) est une équation différentielle d’ordre 2 faisant apparaître deux constantes d’intégration. Ces constantes sont déterminées par la condition initiale y(a) =  et la condition de transversalité (3.61) qui remplace la condition finale y(b) =  . L’exemple suivant montre l’utilisation de cette condition de transversalité.

Exemple 3-7 : Distance minimale dans le plan avec extrémité libre Reprenons l’Exemple 3-1 en supposant l’ordonnée libre en x = b . On cherche la courbe y(x) minimisant la distance entre le point A fixé et un point B d’abscisse b libre. te Les extrémales (Exemple 3-1) sont des droites : y' = C .

Optimisation fonctionnelle

223

La condition initiale impose de passer par le point A (a; ) . Le problème se formule comme : b

min  1 + y(x) 2 dx y

a

avec le lagrangien :

L(x, y,z) = 1 + z2 La condition de transversalité donne

L y (b) = 0  (b) = 0  y(b) = 0 y 1 + y2

La solution est le segment horizontal [AB*] passant par A qui donne bien la distance minimale jusqu’à l’abscisse imposée x = b .

Problème à position finale sur une courbe Supposons que (a; ) sont fixés et que le point final doit se trouver sur la courbe d’équation y = (x) . L’abscisse b est libre. Le problème se formule comme : b  y(a) =  min J(y) =  L(x, y, y)dx avec  y,b  y(b) = (b) a

(3.62)

La Figure 3-16 montre trois fonctions y1, y2 , y* arrivant sur la courbe y = (x) .

Figure 3-16 : Fonction à position finale sur une courbe

224

Techniques d’optimisation

Le théorème suivant donne des conditions nécessaires vérifiées par une fonction y* pour être un minimum faible de J avec la position finale vérifiant y(b) = (b). Théorème 3-8 : Conditions nécessaires de minimum avec contrainte finale Si y* est un minimum faible local du problème (3.62), alors y* vérifie : •

l’équation d’Euler-Lagrange

Ly − Lz = 0 •

(3.63)

la condition de transversalité

L + Lz ( − y*)(b) = 0

(3.64)

Démonstration

(a; ) étant fixés : x(a) = y(a) = 0 , la variation première (3.58) se réduit à : b

J =   ( L y − Ly ) dx +  L yy  (b) + (L − L y y)x  (b) a

La variation y(b) dépend de la fonction  et de la variation b. Ces variations sont liées, car le point final reste sur la courbe y = (x) comme sur la Figure 3-17.

Figure 3-17 : Variation contrainte à l’extrémité

Optimisation fonctionnelle

225

La contrainte finale impose : y(b) =(b)b . En remplaçant dans J , on obtient : b

J =   ( L y − Ly ) dx +  L + L y ( − y)x  (b) a

La condition nécessaire de minimum : J = 0 ,  , x(b) impose :

L y − Ly = 0    L + L y ( − y)  (b) = 0

L’équation d’Euler-Lagrange (3.63) fait apparaître deux constantes d’intégration et l’abscisse finale b libre est à déterminer. Ces trois inconnues doivent satisfaire les trois équations portant respectivement sur la condition initiale y(a) =  , la contrainte finale y(b) = (b) et la condition de transversalité (3.64). L’exemple suivant montre l’utilisation de cette condition de transversalité.

Exemple 3-8 : Distance minimale à une courbe On cherche la courbe minimisant la distance entre le point A fixé et la courbe d’équation y = (x) comme représenté sur la Figure 3-18.

Figure 3-18 : Distance minimale à une courbe Le point d’arrivée sur la courbe est libre et la distance est pondérée par une fonction w(x, y) . La fonction w(x, y) peut en particulier représenter l’inverse de la vitesse en fonction de la position. La solution est dans ce cas le chemin le plus rapide pour rejoindre la courbe cible y = (x) .

226

Techniques d’optimisation b

2 Le problème est de la forme : min  w(x, y) 1 + y(x) dx sous y(b) = (b) . y,b

a

Écrivons la condition de transversalité (3.64) en b avec le lagrangien :

L(x, y,z) = w(x, y) 1 + z2 . L + Lz ( − y*) = 0  w 1 + y2 +

wy 1 + y2

(  − y ) = 0

 1 + y = 0

La condition de transversalité impose en b : y(b)(b) = −1 . Elle se traduit géométriquement par l’orthogonalité de la courbe solution et de la courbe contrainte au point d’arrivée, comme représenté à droite de la Figure 3-18.

3.3.2 Contrainte intégrale On suppose dans cette section que les extrémités sont fixées, mais que la solution est soumise à une contrainte de forme intégrale. Le problème se formule comme : b  y(a) =   min J(y) =  L(x, y, y )dx sous C(y) =  M(x, y, y)dx = 0 ,  y  y(b) =  a a Pour résoudre ce type de problème, on définit le coût augmenté : b

b

K(y) =  0 J(y) + C(y) =  (  0 L + M ) (x, y, y)dx

(3.65)

(3.66)

a

Les réels  0 et  sont les multiplicateurs de Lagrange du coût et de la contrainte. La fonction N = 0L + M est appelée lagrangien augmenté.

Le théorème suivant donne des conditions nécessaires que doit vérifier une fonction y* pour être un minimum faible de J avec la contrainte intégrale C(y) = 0. Théorème 3-9 : Conditions nécessaires de minimum avec contrainte intégrale Supposons que y* est un minimum faible local du problème (3.65). Alors il existe (0 ; )  (0 ; 0) tels que y* vérifie :

Ny − Nz = 0

(3.67)

Optimisation fonctionnelle

227

On reconnaît l’équation d’Euler-Lagrange appliquée au lagrangien augmenté.

Démonstration (d’après [R14]) Supposons que y* est un minimum de J sous la contrainte C(y) = 0 et appliquons des perturbations de la forme y = y* +11 +22 avec des fonctions quelconques

1, 2 de classe C1.

La fonction F : (1, 2 ) 

2

( J(y),C(y) ) 

2

est de classe C1 de

2

2

dans

.

Étudions cette fonction au voisinage de (1 ; 2 ) = (0 ; 0) .

Sa valeur en (1 ; 2 ) = (0 ; 0) est :

F ( 0,0) = ( J(y*),C(y*) = 0 )

 J C      1   1  F(0,0) = (0,0) Sa matrice gradient en est de la forme : .  J C      2   2 Le théorème des fonctions implicites exprime que si la matrice F(0,0) est inversible, alors la fonction F est une bijection d’un voisinage de (0,0) dans un voisinage de ( J(y*),C(y*) ) .

On peut alors trouver un couple (1 ; 2 )  (0 ; 0) tel que C(y) = 0 (admissible) et J(y)  J(y*) . Cette situation est illustrée sur la figure ci-dessus avec une solution y sur l’axe x : C(y) = 0 et une valeur J(y) inférieure à J(y*) . Cette situation contredit l’hypothèse que y* est un minimum. Par conséquent, la matrice F(0,0) est nécessairement singulière et ses colonnes sont linéairement dépendantes. Il existe (0 ; )  (0 ; 0) tels que :  0

J C + = 0 en notant  = (1 ,  2 )   

(équation E)

2

.

228

Techniques d’optimisation

Calculons les dérivées de J et C en appliquant (3.11) et (3.21) pour une perturbation quelconque  . b

b

J(y + ) =  L ( x, y + ,(y + ) ) dx =    ( L y − Lz ) dx a



a

b

J =  ( L y − Lz ) dx  a b

b

C(y + ) =  M ( x, y + ,(y + ) ) dx =    ( M y − Mz ) dx a



a

b

C =  ( M y − Mz ) dx  a

En remplaçant ces dérivées dans (E) avec N défini par : N =0L +M , on obtient : b

 ( N

y

− Nz ) dx = 0 , 

a

La perturbation  étant quelconque, son coefficient dans l’intégrale doit être nul. On conclut bien à l’existence de (0 ; )  (0 ; 0) tels que N y − Nz = 0 .

Les valeurs de (0 ; ) sont déterminées à un facteur multiplicatif près. Le multiplicateur  0 est appelé multiplicateur anormal.

Si 0 = 0 (cas anormal), il existe une seule fonction y* vérifiant la contrainte. Si 0  0 (cas normal), la contrainte C(y*) = 0 détermine le rapport  / 0 . On choisit généralement de fixer 0 = 1 .

Une contrainte intégrale est aussi appelée contrainte isopérimétrique en référence au problème de Didon (reine de Carthage en 814 av. J.-C.) présenté ci-dessous.

Exemple 3-9 : Problème de Didon On cherche la surface maximale entourée par une courbe de longueur donnée. Nous allons résoudre ce problème en coordonnées cartésiennes, puis en coordonnées polaires, ce qui permettra une extension au problème de volume maximal en dimension 3.

Optimisation fonctionnelle

229

Formulation en coordonnées cartésiennes Les points A et B donnés définissent l’axe x. La courbe d’équation y(x) joint les points A et B. La surface entre la courbe (AB) b

et l’axe x est : S =  ydx . a

La longueur de la courbe (AB) est b

2 fixée : L =  1 + y(x) dx = L 0 . a

Le problème se formule comme : b

b

a

a

min J(y) = −  ydx sous C(y) =  1 + y(x) 2 dx − L 0 = 0 y

Introduisons le multiplicateur  associé à la contrainte intégrale en fixant 0 = 1. 2 L’équation (3.67) porte sur le lagrangien augmenté : N(x, y, y) = − y +  1 + y

d  y  N d  N    = −1 =    y dx  y  dx  1 + y2  Cette équation différentielle d’ordre 2 se résout analytiquement. y x − x0 = −(x − x 0 )  y = 1 + y2  2 − (x − x 0 ) 2

 y = y0 −  2 − (x − x 0 ) 2

 (x − x 0 ) 2 + (y − y 0 ) 2 =  2

La courbe entourant la surface maximale est un arc de cercle. Les coordonnées du centre (x 0 ; y0 ) et le rayon  sont déterminés par a,b et la longueur L 0 .

Remarque sur la formulation •

Considérons d’une part le problème : « Maximiser la surface entourée par une courbe de longueur donnée »

maxS(y) sous L(y) − L0 = 0 → lagrangien N1 (x, y, y) = − y +  L 1 + y2 y



Considérons d’autre part le problème : « Minimiser la longueur de la courbe entourant une surface donnée »

min L(y) sous S(y) − S0 = 0 → lagrangien N2 (x, y, y) = 1 + y2 + Sy y

1 . L Ces deux problèmes ont donc les mêmes extrémales qui sont des arcs de cercle. Les lagrangiens sont identiques en posant : S = −

230

Techniques d’optimisation

Formulation en coordonnées polaires Reprenons le problème en coordonnées polaires (r, ) . La courbe (AB) a pour équation r() . Un élément de longueur dL et de normale n à la position r génère (vu de l’origine O) : - une longueur apparente :

dLr = dLcos  avec  = (r,n) dL - un angle au sommet : d = r r - un triangle de surface :

1 dS = hdL avec h = r  n = r cos  2 (triangle de base dL , de sommet O et de hauteur h)

r 1 d , dS = r 2d. cos  2 Le problème se formule avec les deux fonctions inconnues r() , () . 1 r maxS(r, ) =  r 2d sous L(r, ) =  d = L 0 r, 2 cos    On exprime dL et dS en fonction de l’angle d : dL =

Il s’agit d’un problème à courbe paramétrée comme en (3.36). Chaque fonction vérifie l’équation d’Euler-Lagrange (3.40) portant ici sur le lagrangien augmenté. En introduisant le multiplicateur  associé à la contrainte intégrale, avec 0 = 1 :

sin    N = (N  ) → r cos 2  = 0 →  = 0 ( n parallèle à r ) 1 2 r N = r + → 2 cos   N = (N  ) → r +  1 = 0 → r = −  = − = C te r  r cos  cos  La courbe entourant la surface maximale est donc un cercle de rayon r0 = − . La valeur du rayon est déterminée par la contrainte de longueur L 0 .

L=

2

r

 cos  d = L 0

0

r = r0 L avec   r0 = 0 2  = 0

Comme pour un problème d’optimisation continue, la sensibilité du coût (surface) par rapport à la contrainte (longueur) est donnée par l’opposé du multiplicateur.

L  S = r =   0   2  2 0

2



S  L0  =   = r0 = − L0  2 

Optimisation fonctionnelle

231

Problème de volume maximal La formulation en polaires permet une généralisation en dimension 3. Le problème de Didon « spatial » consiste à trouver le volume maximal entouré par une surface d’aire donnée. Reprenons la démarche précédente en coordonnées sphériques (r, , ) . La surface a pour équation r(, ) . Un élément de surface dS et de normale n à la position r génère (vu de l’origine O) : - une surface apparente :

dSr = dScos  avec  = (r,n) dS - un angle solide : d = r r - un cône de volume :

1 dV = hdS avec h = r  n = r cos  3

(cône de base dS , de sommet O et de hauteur h)

On exprime dS et dV en fonction de l’angle solide d . r2 1 dS = d , dV = r 3d cos  3 Le volume total et la surface totale s’obtiennent en intégrant sur l’angle solide d L’espace entier correspond à un angle solide  = 4 . Le problème se formule avec les deux fonctions inconnues r(, ) , (, ) .

1 r2 max V(r, ) =  r 3d sous S(r, ) =  d = S0 r, 3 cos    Comme en dimension 2, on obtient un problème à courbe paramétrée. Résolvons l’équation d’Euler-Lagrange avec le lagrangien augmenté. sin   N = (N  ) → r 2 2 = 0 →  = 0 ( n parallèle à r ) 2  1 r  cos  N = r3 +  → 3 cos   N = (N  ) → r 2 + 2 r = 0 → r = − 2 = −2 = C te r  r cos  cos  La courbe entourant le volume maximal est donc une sphère de rayon r0 = −2 . La valeur du rayon est déterminée par la contrainte de surface S0 .

S=

r = r0 r2 S 0 cos  d = S0 avec  = 0  r0 = 40

4

232

Techniques d’optimisation

Comme pour un problème d’optimisation continue, la sensibilité du coût (volume) par rapport à la contrainte (surface) est donnée par l’opposé du multiplicateur. 3

1

4 4  S 2 V 1  S0  2 1 V = r03 =   0   =   = r0 = − 3 3  4  S0 2  4  2

3.3.3 Contrainte courante On suppose dans cette section que les extrémités sont fixées, mais que la solution est soumise à une contrainte en chaque point. Le problème se formule comme : b  y(a) =  min J(y) =  L(x, y, y)dx sous M(x, y, y) = 0 , x [a;b] ,  y  y(b) =  a Pour résoudre ce type de problème, on définit le coût augmenté : b

b

a

a

K(y) = J(y) +  (x)M(x, y, y)dx =  ( L + (x)M ) (x, y, y)dx

(3.68)

(3.69)

La fonction (x) est un multiplicateur associé en chaque point x à la contrainte. La fonction N = L + (x)M est appelée lagrangien augmenté. Le théorème suivant donne des conditions nécessaires que doit vérifier une fonction y* pour être un minimum faible de J avec la contrainte courante M(x, y, y') = 0 . Théorème 3-10 : Conditions nécessaires de minimum avec contrainte courante Supposons que y* est un minimum faible du problème (3.68). Alors il existe une fonction (x) telle que y* vérifie :

Ny − Nz = 0

(3.70)

La démonstration est donnée dans le cadre de la commande optimale (chapitre 4). La valeur de (x) en chaque point est déterminée par la contrainte M(x, y, y) = 0. Une contrainte courante de la forme M(x, y) = 0 est appelée contrainte holonome. Ce type de contrainte permet dans certains cas de réduire la dimension du problème en exprimant y en fonction de x.

Optimisation fonctionnelle

233

Exemple 3-10 : Problème du pendule Considérons un pendule de longueur d dans un champ de gravité uniforme g. L’énergie potentielle par unité de masse est : U = −gy L’énergie cinétique par unité de masse est :

1 T = (x 2 + y 2 ) 2

Le mouvement vérifie la contrainte holonome :

M = x 2 + y2 − d 2 = 0

On verra en section 3.4 que le mouvement minimise l’intégrale d’action : tf

S(x, y) =  L ( t, x, x, y, y ) dt avec L = T − U t0

Le problème se formule comme : tf

1  min   (x 2 + y2 ) + gy  dx sous M(x, y) = x 2 + y 2 − d 2 = 0 x,y 2  t0  Introduisons le multiplicateur  (t) associé à la contrainte courante. Les équations d’Euler-Lagrange portent sur le lagrangien augmenté qui dépend des deux fonctions x(t) et y(t).

 N x = N x → 2x = x 1 N = (x 2 + y2 ) + gy + (x 2 + y 2 − d 2 ) →  2  N y = N y → 2y + g = y  x = 2 x  Les équations du mouvement sont ainsi :  y = 2y + g  2 2 2 x + y = d avec 3 fonctions inconnues x(t), y(t), (t) .  x = d sin  , on élimine  (t) et on retrouve l’équation du pendule :  y = d cos 

En posant : 

g  = − sin  d

234

Techniques d’optimisation

3.4 Forme canonique Cette section présente la formulation canonique (ou hamiltonienne) d’un problème de calcul des variations et ses applications en mécanique.

3.4.1 Changements de variables Un problème de calcul des variations peut se formuler de diverses manières selon le choix des inconnues et de la fonctionnelle. On établit ici quelques propriétés concernant les changements de variables. Fonctionnelles équivalentes Considérons deux problèmes de fonctionnelles respectives J et K et leurs équations d’Euler-Lagrange. b

min J(y) =  L(x, y, y)dx y

→ L y = Ly

a

b

(3.71)

min K(y) =  M ( x, y, y ) dx → M y = My y

a

Les fonctionnelles J et K sont dites équivalentes si elles ont les mêmes extrémales (qui sont les solutions des équations d’Euler-Lagrange). Propriété 3-11 : Condition suffisante d’équivalence de deux fonctionnelles Si les lagrangiens L et M différent d’une dérivée totale, alors les fonctionnelles J et K sont équivalentes et différent d’une constante.

Démonstration

d(x, y) où (x, y) est une fonction dx quelconque. Notons F(x, y, y) la fonction égale à la dérivée totale de (x, y) . d(x, y) F(x, y, y) = =  x (x, y) +  y (x, y)y(x) dx Fy =  xy +  yy y    Fy = y =  yx +  yy y Fy =  y Supposons que M(x, y, y) = L(x, y, y) +

Optimisation fonctionnelle

235

Les dérivées M y et My sont données par :

M y = L y + Fy = L y +  xy +  yy y  My = Ly + Fy = Ly +  yx +  yy y

 My − My = Ly − Ly

Les équations d’Euler-Lagrange en L et M ont donc les mêmes solutions. Calculons la valeur de K(y) . b

b

b

d   te K(y) =  Mdx =  (L + F)dx =   L +  dx = J(y) + (b) − (a) = J(y) + C dx  a a a

Les deux fonctionnelles diffèrent bien d’une constante.

Changement de variable Considérons le changement de variable défini par : y(x) = f ( x,Y(x) ) . b

Supposons que y(x) est une extrémale de : J(y) =  L(x, y, y)dx . a

b

Alors Y(x) est une extrémale de : K(Y) =  M ( x, Y, Y ) dx avec M définie par : a

M(x,Y,Y) = L ( x,f (x,Y),f x + f YY ) def

(3.72)

Démonstration Calculons les dérivées MY et MY avec M définie par (3.72)

MY = L yf Y + L y (f xY + f YY Y)  MY = L yf Y

En dérivant la 2e équation par rapport à x et en utilisant la 1re équation, on a :

d  d   d  M Y =  L y  f Y + L y  f Y  = Lyf Y + L y (f Yx + f YY Y) dx  dx   dx  = Lyf Y + (M Y − L yf Y )

MY =

d'où l’on déduit : MY − MY = (Ly − Ly )f Y Si y(x) est une extrémale de la fonctionnelle J, alors Ly − Ly = 0 et Y(x) est une extrémale de la fonctionnelle K car MY − MY = 0 .

236

Techniques d’optimisation

Changement de variable paramétré Considérons la fonctionnelle J sous forme standard : b

J(y) =  L(x, y, y)dx

(3.73)

a

et appliquons un changement de variable dépendant d’un paramètre .

 x* = X(x, y, y, ) x = X(x, y, y,0) (x*, y*) avec  et   y* = Y(x, y, y, )  y = Y(x, y, y,0) (x*, y*) correspond à l’identité. Pour  = 0 , la transformation (x, y) (x, y)

(3.74)

La fonctionnelle J est invariante par la transformation si elle conserve sa valeur.

J(y*) = J(y) 

x*= b*

x =b

x*=a*

x =a

 L ( x*, y*, y*) dx * =  L ( x, y, y) dx

(3.75)

Le théorème de Noether donne une intégrale première dans le cas d’une fonctionnelle invariante. Ce théorème est utilisé pour établir les lois de conservation en mécanique (section 3.4.4). Propriété 3-12 : Théorème de Noether Si la fonctionnelle J (3.73) est invariante par la transformation (3.74) quelles que soient les bornes a et b , alors la fonction L y

Y X + ( L − L y y ) est une intégrale première.  =0  =0

Démonstration La formule (3.58) donne la variation de J en fonction de perturbations  , x(a), x(b), y(a), y(b) . b

J =   ( L y − Ly ) dx + [L yy]ab + [(L − L y y)x]ab a

Calculons les variations x , y en développant (3.74) à l’ordre 1 en  .

 x* = X(x, y, y, ) = X(x, y, y,0) +  X  =0 = x +  X  =0  x =  X  =0   y* = Y(x, y, y, ) = Y(x, y, y,0) +  Y =0 = y +  Y =0  y =  Y =0

Optimisation fonctionnelle

237

La variation première se met sous la forme : b

J =   ( L y − Ly ) dx +   L y Y =0 + ( L − L y y ) X  =0  a

b

a

Le long d’une extrémale, on a :

b L y − Ly = 0   L y Y =0 + ( L − L y y ) X  =0  = 0  a J = 0

Par hypothèse, la fonctionnelle J doit être invariante quelles que soient les bornes a et b. Le terme entre crochets doit donc être constant :

L y Y =0 + ( L − L y y) X =0 = Cte

Cette quantité constante le long d’une extrémale est bien une intégrale première.

Le théorème de Noether reste valable pour une fonctionnelle dépendant de plusieurs fonctions inconnues (y j ) j=1 à n comme en (3.33). En effet, la démonstration ci-dessus s’applique à chaque fonction qui vérifie sa propre équation d’Euler-Lagrange (3.34).

3.4.2 Variables canoniques Considérons un problème dépendant de n fonctions y = (y1,

, yn ) .

b

min J(y) =  L(x, y, y)dx y

(3.76)

a

On définit n fonctions notées p = (p1,

,pn ) et la fonction H(x, y,p) par :

p = L y  H = py − L

(3.77)

Les n fonctions (y j ) j=1 à n de

dans

sont appelées coordonnées.

Les n fonctions (p j ) j=1 à n de

dans

sont appelées impulsions.

2n +1

La fonction H de

dans

est appelée l’hamiltonien et s’exprime par :

n

H(x, y,p) =  pi yi − L(x, y1,..., y n , y1 ,..., yn ) i =1

(y, p, H) sont appelées variables canoniques associées à la fonctionnelle J.

(3.78)

238

Techniques d’optimisation

Note sur la transformation de Legendre Les variables canoniques peuvent se définir par la transformation de Legendre. La transformée de Legendre de la fonction f : n → est la fonction h : n → définie par : h(p) = maxn ( pz − f (z) ) . def z

En notant zp la valeur de z qui maximise pz − f (z) , on a les propriétés suivantes. -

−1 d ( pz − f (z) ) = 0 en z p  p = f (z p )  h(p) = z p et h(p) = (f (z p ) ) dz

- La fonction h est convexe. - Si f est convexe, la transformée de Legendre de h redonne f (involution). Pour définir les variables canoniques associées à la fonctionnelle J, on applique la transformation de Legendre au lagrangien L(x, y,z) considéré comme une

H(x, y,p) = max ( pz p − L(x, y,z p ) ) = pz p − L(x, y,z p )  def z = Lz (x, y,z p ) p def

fonction de z : 

Les variables canoniques sont utilisées ci-dessous pour transformer l’équation d’Euler-Lagrange d’ordre 2 en un système d’équations différentielles d’ordre 1. Équations canoniques

H y = −L y

Les dérivées de H = py − L sont données par :  H p = y

.

L’équation d’Euler-Lagrange du problème (3.76) donne :

Ly = Ly  − Hy = p

(3.79)

On appelle équations canoniques (ou hamiltoniennes) le système différentiel :

 y = H p (3.80)  p = −H y Ce système différentiel en variables (y, p) est d’ordre 1 et de dimension 2n. Il est équivalent à l’équation d’Euler-Lagrange en variables y (système différentiel d’ordre 2 et de dimension n).

Optimisation fonctionnelle

239

Intégrale première Une intégrale première de la fonctionnelle J est une fonction gardant une valeur constante le long de toute extrémale y*. Calculons la dérivée totale de l’hamiltonien H(x, y,p) le long d’une extrémale. En utilisant les équations canoniques (3.80) de l’extrémale, on obtient :

dH H H H H = + y + p = dx x y p x

(3.81)

Si H ne dépend pas explicitement de x, alors H est une intégrale première.

Note sur les crochets de Poisson Calculons la dérivée totale d’une fonction (x, y, p) le long d’une extrémale. En utilisant les équations canoniques (3.80) de l’extrémale, on obtient :

d      H  H = + y + p = + − dx x y p x y p p y

 H  H − y p p y Une fonction (y,p) non explicite en x est une intégrale première si ,H = 0 . On définit le crochet de Poisson de  et H par :  ,H =

def

Les crochets de Poisson sont utilisés en particulier en mécanique céleste.

Transformation canonique Considérons deux fonctionnelles J(y) et K(Y) . La fonctionnelle J de lagrangien L(x, y, y) a pour variables canoniques (y, p) et pour hamiltonien H(x, y,p) . b b p = L y J =  L(x, y, y)dx =  ( py − H(x, y,p) ) dx avec  a a H = py − L

(3.82)

La fonctionnelle K de lagrangien M(x,Y,Y) a pour variables canoniques (Y,P) et pour hamiltonien H*(x,Y,P) . b b P = M y (3.83) K =  M(x, Y, Y)dx =  ( PY − H*(x, Y, P) ) dx avec  a a H* = pY − M

240

Techniques d’optimisation

Supposons que les deux fonctionnelles J et J* sont équivalentes, ce qui signifie qu’elles ont les mêmes extrémales. Une condition suffisante pour cela est que leurs lagrangiens diffèrent d’une dérivée totale (Propriété 3-11).

d (3.84) dx (x, y,Y) est une fonction quelconque des coordonnées y et Y. En exprimant à partir de (3.84) la différentielle d en fonction de dx,dy,dY : py − H(x, y,p) = PY − H*(x,Y,P) +

d = pdy − PdY + ( H*(x,Y,P) − H(x, y,p) ) dx

(3.85)

on obtient les variables p,P,H * en fonction des dérivées partielles de  :

p=

   , P=− , H* = H + y Y x

(3.86)

La fonction (x, y,Y) est appelée la fonction génératrice de la transformation (Y,P) . Les problèmes en variables (y, p, H) et (Y,P,H*) canonique (y,p) sont équivalents. Leurs systèmes canoniques respectifs sont :

 y = H p Y = H*P avec H(x,y,p) et  avec H*(x,Y,P)  p = − H y P = − H*Y

(3.87)

Note sur les fonctions génératrices La fonction génératrice peut s’exprimer au choix en variables (y, Y) , (y,P) ,

(p, Y) ou (p, P) . On note 1 (x, y,Y) la fonction en variables (y, Y) définie cidessus (3.84). Le passage d’une forme à l’autre s’effectue comme suit. 1 (x, y,Y)  d1 = pdy − PdY + (H* −H)dx

 2 (x, y,P) = 1 (x, y,Y) + PY

1  ,P=− 1 y Y  d 2 = pdy + YdP + (H* −H)dx

3 (x,p,Y) = 1 (x, y,Y) − py

 2  2 ,Y= y P  d3 = − ydp − PdY + (H* −H)dx

→ p=

→ p=

→ y=−

3  ,P=− 3 p Y

Optimisation fonctionnelle

241

 4 (x,p,P) = 1 (x, y,Y) − py + PY  d 4 = − ydp + YdP + (H* −H)dx → y=−

 4  4 ,Y= p P

3.4.3 Équation de Hamilton-Jacobi-Bellman Considérons un problème à extrémité A (a; ) fixée et extrémité B (b; ) variable. b  y(a) =  (3.88) min J(y) =  L(x, y, y)dx avec  y  y(b) =  a La fonction valeur V(b, ) est la valeur de J pour l’extrémale y* allant de A à B. b

V(b, ) =  L ( t, y*, y* ) dt

(3.89)

a

Théorème 3-13 : Équation de Hamilton-Jacobi-Bellman La fonction valeur vérifie l’équation de Hamilton-Jacobi-Bellman (HJB).

V V + H(x, y, ) = 0 x y

(3.90)

Démonstration Calculons les dérivées partielles de la fonction valeur par rapport à b et . Pour cela, on part de la variation première de la fonctionnelle J donnée par (3.58). b

J =   ( L y − Ly ) dx + [L yy]ab + [(L − L y y)x]ab a

Si y* est une extrémale (Ly = Ly ) et si A est fixé (x(a) = y(a) = 0) , il reste :

J = Lyy(b) + (L − Ly y)x(b) = py(b) − Hx(b) avec les variables canoniques p et H définie en (3.77). Cette variation J représente la différentielle dV de la fonction valeur.

242

Techniques d’optimisation

En notant (x; y) au lieu de (b; ) les coordonnées du point B, on a :

dV = pdy − Hdx 

V V = −H , =p x y

L’hamiltonien H est fonction de (x, y, p) avec p =

V , ce qui conduit à : y

 V V  = −H(x, y, p) = −H  x, y,  x y  

La résolution de l’équation HJB détermine la fonction valeur V(x, y) en tout point M (x; y) en partant d’un point A (a; ) fixé. Lorsque la fonction valeur a été déterminée, on peut retrouver les extrémales grâce à la propriété suivante.

Propriété 3-14 : Intégrale première déduite de la fonction valeur Supposons que la fonction valeur V(x, y, ) dépend de constantes notées  . Alors les fonctions

V sont des intégrales premières du problème (3.88). 

Démonstration Il faut montrer que

d  V   2 V  2 V dy + est nulle le long d’une extrémale.  = dx    x y dx

V(x, y, ) vérifie l’équation HJB :

 V V  + H  x, y, =0 x y  

En dérivant par rapport à  , on a :

  V V   2 V H  2 V + H(x, y, ) = + =0    x y  x p y

Le long d’une extrémale y(x) , on a : y' =

H p



 2 V dy  2 V + =0 x dx y

La résolution analytique de l’équation HJB n’est généralement pas possible. Dans des cas simples comme l’exemple suivant, on peut obtenir des solutions de forme particulière par séparation des variables.

Optimisation fonctionnelle

243

Exemple 3-11 : Équation de Hamilton-Jacobi-Bellman b

2 Considérons une fonctionnelle de la forme : J(y) =  f (y) 1 + y dx . a

2 Exprimons les variables canoniques à partir de : L(x, y, y) = f (y) 1 + y .

H = py − L = py − f (y) 1 + y2  y  p = L y = f (y) 1 + y2  La 2e équation est utilisée pour exprimer y en fonction de (x, y, p) , puis on remplace y dans la 1re équation pour exprimer H en fonction de (x, y, p) . f (y)y p p=  y = → H(x, y,p) = − f (y) 2 − p 2 2 2 2 1 + y f (y) − p 2 2 2 L’équation HBJ est alors : Vx + H(x, y,Vy ) = 0  Vx + Vy = f (y)

Solution par séparation des variables Cherchons une solution de la forme : V(x, y) = v(x) + w(y) .

v(x)2 + w(y) 2 = f (y) 2  v(x) 2 = f (y) 2 − w(y) 2 =  2 = C te car l’égalité doit être vraie pour tout (x, y) . En intégrant chaque membre avec la condition initiale : V(a, ) = 0 , on obtient :  v(x) =  (x − a) y  y  V(x, y) =  (x − a) +  f (u) 2 −  2 du  2 2   w(y) =  f (u) −  du   Pour déterminer les extrémales partant de A (a; ) , on utilise la Propriété 3-14 V indiquant que est une intégrale première.  y

V du = x −a − = C te = 0 (pour x = a , y = ) 2 2   f (u) −  y

Les extrémales ont donc pour équation : x −  

du f (u)2 −  2

=a

244

Techniques d’optimisation

Fonctionnelle distance Dans le cas où f (y) = 1 , la fonctionnelle J est la distance dans le plan. L’expression de la fonction valeur et les équations des extrémales se simplifient. 2 Fonction valeur : V(x, y) = (x − a) + 1 −  (y − )

Extrémale :

x−

 1− 2

(y − ) = a

On retrouve l’équation d’une droite passant par A. Pour un point M (x; y) donné, la constante  vaut :  =

(x − a) (x − a) 2 + (y − ) 2

Remplaçons  dans la fonction valeur :

V(x, y) = (x − a) + 1 −  2 (y − ) = (x − a) 2 + (y − ) 2 La fonction valeur représente bien la distance AM.

3.4.4 Application à la mécanique Les lois de la mécanique peuvent s’établir à partir du calcul des variations. On considère un système de n points matériels dans un champ de potentiel donné. - Masses des particules : - Coordonnées des particules : - Vitesses des particules : - Accélérations des particules : - Énergie cinétique totale : - Énergie potentielle totale : - Force appliquée à la particule i : L’action du système est définie par : t

m = (m1, ,mn )

r(t) = ( r1 , , rn ) = q noté

dr = ( v1 , , v n ) = q noté dt dv a(t) = = ( a1 , ,a n ) = q noté dt n 1 1 T = mq 2 =  mi qi 2 2 i =1 2 U(t,q) U Fi = − (dérivée du potentiel) q i v(t) =

f 1 S =  L(t,q,q)dt avec L = T − U = mq 2 − U(t,q) 2 t0

(3.91)

Optimisation fonctionnelle

245

Le lagrangien L du système de particules est la différence entre l’énergie cinétique et l’énergie potentielle. Les lois de la mécanique reposent sur le postulat suivant. Postulat de moindre action : les trajectoires des particules minimisent l’action S. On peut donc trouver les trajectoires des particules en cherchant les extrémales de la fonctionnelle S. L’équation d’Euler-Lagrange de la fonctionnelle (3.91) donne :

Lq = Lq  −

U d = (mq)  F = mq q dt

(3.92)

On retrouve la deuxième loi de Newton (principe fondamental de la dynamique). Le postulat de moindre action « contient » la deuxième loi de Newton. Il permet également de retrouver les lois de conservation. Exprimons pour cela les variables canoniques associées à la fonctionnelle S (3.91).

p = Lq = mq (3.93)  2 H = pq − L = mq − L = 2T − (T − U) = T + U Les variables p sont les quantités de mouvement (ou impulsions) des particules. L’hamiltonien H est l’énergie totale du système. Examinons quelques systèmes particuliers.

Système conservatif Pour un système conservatif, le potentiel U ne dépend pas explicitement du temps. L’hamiltonien H (3.93) est alors une intégrale première d’après (3.81).

dH H  = = (T + U) = 0  H = T + U = Cte dt t t On retrouve la loi de conservation de l’énergie.

(3.94)

Système invariant par translation Considérons la translation de paramètre  définie par :

 t* = X(t,q,q, ) = t (3.95)  q* = Y(t,q,q, ) = q +  Le système étant invariant par cette transformation, la fonctionnelle (3.91) l’est aussi.

246

Techniques d’optimisation

Le théorème de Noether (Propriété 3-12) donne alors l’intégrale première :

L y

Y X + ( L − L y y ) = Cte  =0  =0

(3.96)

soit en utilisant les variables canoniques p = Ly , H = L − Ly y :

p

Y X + H = Cte  =0  =0

(3.97) te

Pour la transformation (3.95), on obtient : p = mq = C . On retrouve la loi de conservation de la quantité de mouvement pour un système invariant par translation.

Système invariant par rotation Une rotation infinitésimale d’un angle  autour d’un axe n transforme le vecteur q en un vecteur q* = q + q défini par :

q = n  q → q* = q + n  q Considérons la rotation de paramètre  définie par :

 t* = X(t,q,q, ) = t (3.98)  q* = Y(t,q,q, ) = q + n  q Le système étant invariant par cette transformation, la fonctionnelle (3.91) l’est aussi. Le théorème de Noether (Propriété 3-12) donne alors l’intégrale première :

p

Y X + H = Cte  =0  =0

(3.99)

te Pour la transformation (3.98), on obtient : p  (n  q) = n  (q  p) = C . te

La relation étant vérifiée pour tout axe de rotation n , on en déduit : q  p = C . Cette grandeur est le moment cinétique (moment de la quantité de mouvement) : h = q  mq def

On retrouve la loi de conservation du moment cinétique pour un système invariant par rotation.

Optimisation fonctionnelle

247

Problème de Kepler Le problème de Kepler est le mouvement d’une particule dans un potentiel en 1/r. Utilisons les résultats précédents pour retrouver les principales propriétés du problème de Kepler. Le mouvement est plan car l’accélération est centrale. On se place en coordonnées polaires (r, ) comme représenté ci-contre.

r    r 

La vitesse a pour composantes : v =  Exprimons le lagrangien du système. - Énergie potentielle : - Énergie cinétique : - Lagrangien :

U=−

 r

1 1 T = v 2 = (r 2 + r 22 ) 2 2 1  L(t,r, ,r, ) = T − U = (r 2 + r 22 ) + 2 r

Les équations d’Euler-Lagrange relatives aux fonctions (r, ) donnent :

  2 Lr = Lr  r − r 2 = r  L = L  0 = d (r 2)  r 2 = Cte    dt

La deuxième équation fait apparaître le module du moment cinétique :

r  r  0        h = r  v =  0    r  =  0   0  0   2       r 

Le lagrangien L ne dépend pas explicitement de t. Le système est conservatif et son énergie (hamiltonien) est constante : H = T + U = Cte Le lagrangien L ne dépend pas explicitement de  . Le système est invariant par rotation et son moment cinétique est constant : h = r  v = Cte

248

Techniques d’optimisation

3.5 Système dynamique Cette section introduit la formulation d’état d’un système qui permet de passer du calcul des variations à des problèmes plus généraux de contrôle optimal.

3.5.1 Formulation d’état Le calcul des variations considère des problèmes de la forme : b

min J(y) =  L(x, y, y)dx y

(3.100)

a

où l’inconnue est une fonction dérivable y(x) . Une approche plus générale consiste à formuler un problème de contrôle en introduisant une fonction inconnue u(x) et en exprimant la dérivée sous la forme d’une équation différentielle : y = f (y,u, x) . Problème de contrôle On modifie les variables comme suit. - La variable x est remplacée par le temps t. - La fonction y(x) est remplacée par l’état x(t) . - La fonction inconnue est la commande u(t) . - L’état suit une équation différentielle de la forme : x = f (x,u, t) . Cette équation différentielle est appelée équation d’état ou équation dynamique ou équation d’évolution. Le problème de contrôle est alors formulé comme : b

min J(u) =  L(x, u, t)dt avec x = f (x, u, t) u

(3.101)

a

Cette formulation est beaucoup plus générale que (3.100). - La fonction inconnue u(t) est quelconque et la courbe x(t) en résulte. - Les dimensions de u(t) et x(t) sont quelconques. - Il est plus simple d’imposer toutes sortes de contraintes sur u(t) et x(t) . L’exemple suivant illustre la reformulation du problème de la brachistochrone en un problème de contrôle.

Optimisation fonctionnelle

249

Exemple 3-12 : Brachistochrone comme problème de contrôle Le problème de la brachistochrone a été traité par le calcul des variations dans l’Exemple 3-2. Rappelons qu’il s’agit de trouver la courbe (AB) minimisant le temps de parcours d’une particule sous l’effet de la gravité. La formulation en calcul des variations est : b

min  y

a

 y(a) = 0 1 + y(x) 2 dx avec  y(x)  y(b) = 

Formulons un problème de contrôle équivalent. - La variable est le temps t. - Le vecteur d’état à deux composantes est la position de la particule x(t), y(t) . - La commande (t) est l’angle de la courbe avec l’axe (Ox).

1 2 v − gy = 0  v = 2gy 2  x = vcos  = 2gy cos  x(t 0 ) = x A , y(t 0 ) = y A L’équation d’état est :  avec  x(t f ) = x B , y(t f ) = y B  y = vsin  = 2gy sin  Les inconnues sont ici la commande (t) et le temps final t f . La conservation de l’énergie donne :

Le problème de contrôle se formule comme : tf  x = vcos  = 2gy cos   x(t 0 ) = x A , y(t 0 ) = y A min J = t f − t 0 =  dt avec  ,  ,t f t0  y = vsin  = 2gy sin   x(t f ) = x B , y(t f ) = y B

Équation d’état Pour un système donné, le choix du vecteur d’état dépend des caractéristiques que l’on souhaite étudier. Le vecteur d’état doit définir complètement le système à un temps donné, indépendamment de son évolution antérieure. L’évolution du système à partir d’un temps t 0 ne dépend que de l’état initial

x(t 0 ) et s’obtient en intégrant l’équation d’état x = f (x,u, t) à partir de la

condition initiale. Cette équation différentielle admet une solution dès lors que les fonctions f et u sont suffisamment régulières (par exemple si f est de classe C 1 en x, f et fx sont continues par rapport à u et t, et u est continue par morceaux). L’ensemble des états successifs x(t) forme la trajectoire du système. Le système peut être de type autonome, contrôlé ou linéaire.

250

Techniques d’optimisation

Le système est autonome si f ne dépend pas explicitement du temps : x = f (x, u). La solution est alors fonction de la durée t − t 0 indépendamment du temps initial. Le système est non contrôlé si f ne dépend pas de la commande : x = f (x, t) . La solution ne dépend alors que de l’état initial x(t 0 ) . Le système est linéaire si f est linéaire en x et u : x(t) = F(t)x(t) + G(t)u(t) . La solution est alors une fonction linéaire de l’état initial et de la commande. Les propriétés des systèmes linéaires sont présentées en section 3.5.3. Équation d’écart Pour un système non linéaire, on s’intéresse au comportement au voisinage d’une trajectoire nominale (ou de référence). La trajectoire nominale notée x*(t) est obtenue avec la commande u*(t) entre le temps initial t 0 et le temps final t f . Des perturbations de commande u(t) produisent des perturbations d’état x(t) Les trajectoires nominale et perturbée ont pour équations d’état respectives :

 x* = f (x*, u*, t)   x* + x = f (x* + x , u* + u , t)

(3.102)

En développant la seconde équation à l’ordre 1 et en éliminant les termes d’ordre 0, on obtient l’équation d’évolution de l’écart x(t) .

f  T F(t) = x (x*,u*, t) (3.103) x = F(t)x + G(t)u avec  G(t) = f (x*,u*, t)T  u Les matrices F(t),G(t) sont calculées sur la trajectoire nominale (x*, u*) . L’écart x(t) suit une équation d’état linéaire qui peut être résolue avec les méthodes présentées en section 3.5.3. Cette équation permet d’étudier la stabilité au voisinage de la trajectoire nominale comme présenté ci-après.

3.5.2 Stabilité Cette section présente quelques éléments sur la stabilité des systèmes dynamiques. Par simplicité, on se restreint à un système autonome de dimension 2 de la forme :

 x1 = f1 (x1 , x 2 )   x 2 = f 2 (x1 , x 2 )

(3.104)

Optimisation fonctionnelle

251

En combinant les deux équations de (3.104), on obtient l’équation liant x1 et x 2 .

dx 2 f 2 (x1 , x 2 ) = dx1 f1 (x1 , x 2 )

(3.105)

La trajectoire du système peut être représentée dans le plan de phase (x1,x 2 ) . L’ensemble des trajectoires possibles forme le portrait de phase du système. Pour tracer le portrait de phase, on peut : - soit intégrer le système différentiel (3.104) en x1 (t) et x 2 (t) , puis éliminer t ; - soit intégrer l’équation différentielle (3.105) liant x1 et x 2 ; - soit utiliser le champ des tangentes (3.105) (méthode des isoclines).

Exemple 3-13 : Portrait de phase Exemple de système non contrôlé Considérons le système non contrôlé défini par :  + a = 0 .

 x1 = x 2  x 2 = −ax1

En définissant l’état (x1, x 2 ) = (, ) , on obtient le système : 

En éliminant le temps puis en intégrant, on obtient la relation entre x1 et x2.

dx 2 ax = − 1  ax1dx1 + x 2dx 2 = 0  ax12 + x 22 = c dx1 x2 Le portrait de phase est l’ensemble de ces courbes lorsque la constante c varie. Ce sont des coniques de centre O (ellipses si a  0 , hyperboles si a  0 ). Exemple de système contrôlé Considérons le système contrôlé défini par :

u = − 1 si   0  = u avec  u = + 1 si   0

En définissant l’état (x1 , x 2 ) = ( , ) ,

 x1 = x 2 x 2 = u

on obtient le système : 

252

Techniques d’optimisation

En éliminant le temps et en intégrant, on obtient la relation entre x1 et x2.

dx 2 u =  x 2dx 2 = udx1  x 22 = 2ux1 + c dx1 x 2 Le portrait de phase est formé de 2 familles d’arcs de paraboles. u = −1 si x1  0 La commande u est donnée par :  u = +1 si x1  0

Points d’équilibre Un point d’équilibre ou point singulier du système (3.104) est un point tel que :

 x1 = Cte  x1 = f1 (x1 , x 2 ) = 0 (3.106)    te  x2 = f 2 (x1 , x 2 ) = 0  x2 = C La stabilité dépend du comportement au voisinage des points d’équilibre. On analyse d’abord le cas d’un système linéaire, puis d’un système non linéaire. Système linéaire Un système linéaire d’ordre 1 et de dimension 2 a pour équation d’état :

 x1 = c11x1 + c12 x 2   x 2 = c 21x1 + c 22 x 2

(3.107)

Le seul point d’équilibre est l’origine : x1 = x 2 = 0 . Pour étudier la stabilité du système au voisinage de l’origine, on forme l’équation différentielle d’ordre 2 équivalente.

 x1 = x → x + ax + bx = 0   x 2 = x La solution générale est de la forme :

 x(t) = k1es1t + k 2es2t si s1  s 2  st st  x(t) = k1e 1 + k 2 t e 1 si s1 = s 2

(3.108)

(3.109)

où s1 et s2 sont les racines réelles ou complexes de l’équation caractéristique :

s2 + as + b = 0

(3.110)

Optimisation fonctionnelle

253

La Figure 3-19 montre les comportements possibles en fonction de la position des racines s1 et s2 dans le plan complexe. Selon le cas, le point d’équilibre est appelé nœud stable / instable, point d’inflexion, foyer stable / instable ou centre.

Figure 3-19 : Point d’équilibre d’un système linéaire

Système non linéaire Un système non linéaire peut présenter plusieurs points singuliers, des cycles limites et/ou un comportement chaotique. Un cycle limite est une solution formant une courbe fermée. Le mouvement sur cette courbe est périodique. Des conditions initiales voisines peuvent converger vers cette courbe ou en diverger. Le cycle limite est dit : - stable si toutes les trajectoires voisines convergent vers le cycle limite ; - instable si toutes les trajectoires voisines divergent du cycle limite ; - semi-stable si certaines trajectoires convergent et d’autres divergent.

Exemple 3-14 : Cycle limite

 x1 = x 2 + ax1 (x12 + x 22 − 1) n Considérons le système non linéaire :  . 2 2 n  x 2 = − x1 + ax 2 (x1 + x 2 − 1) Passons en coordonnées polaires.

r = ar(r 2 − 1)n r = x1 cos  + x2 sin   x1 = r cos  → →    r= − x1 sin  + x2 cos   = −1 x 2 = r sin 

Le cercle de centre O et de rayon 1 est un cycle limite.

r(t 0 ) = 1  r = 0  r(t) = 1

254

Techniques d’optimisation

La stabilité du cycle limite dépend de n et a. La Figure 3-20 montre les trois évolutions possibles à partir de conditions voisines du cycle limite.

Figure 3-20 : Cycle limite

Un comportement chaotique signifie une forte sensibilité aux conditions initiales. L’état du système devient imprédictible après un certain temps comme ci-dessous.

Exemple 3-15 : Comportement chaotique 5

Considérons le système non linéaire d’ordre 2 : x + 0,1x + x = 6sin t . La Figure 3-21 montre l’évolution du système à partir de deux conditions voisines. Traits pointillés :

x 0 = 2  x 0 = 3

Traits pleins :

 x 0 = 2,01   x 0 = 3,01

Figure 3-21 : Comportement chaotique L’évolution du système devient complètement différente à partir de t = 30. On ne peut pas prédire l’état perturbé à partir de la trajectoire de référence en pointillés.

Optimisation fonctionnelle

255

Stabilité locale et asymptotique Notons x e un point d’équilibre et x = x − xe l’écart au point d’équilibre.

On définit différentes formes de stabilité au voisinage du point d’équilibre x e . •

Le point x e est localement stable si on peut obtenir un écart x(t)

arbitrairement petit à t  t 0 par le choix de la condition initiale x(t 0 ) . •

Le point x e est asymptotiquement stable si lim x(t) = 0 .



Le point x e est exponentiellement stable si x(t)  x(t 0 ) e−t , ,  0.

t →

Un système non linéaire peut rester borné sans être stable, par exemple s’il admet un cycle limite stable. Pour analyser la stabilité d’un système au voisinage d’un point d’équilibre, on peut procéder par linéarisation ou par la méthode de Lyapunov. On suppose ici que le système est autonome avec une équation d’état de la forme x = f (x) . Étude par linéarisation L’équation des écarts au voisinage du point d’équilibre x e est :

f (3.111) (x e )T x Si toutes les valeurs propres de F sont à parties réelles strictement négatives, le système est exponentiellement stable. Si une valeur propre de F est à partie réelle strictement positive, le système est instable (= non stable). Sinon on ne peut affirmer sur la stabilité du système non linéaire. x = Fx avec F =

Étude par méthode de Lyapunov Une fonction de Lyapunov du système x = f (x) est une fonction V(x) de classe C1 définie positive : V(x)  0 si x  0 et décroissante :

dV x(t)  0 . dt

On établit les conditions suffisantes de stabilité suivantes. • Si le système admet une fonction de Lyapunov V, le point x e est localement stable. • Si V est strictement décroissante, le point x e est asymptotiquement stable. • Si lim V(x) =  , le point x e est globalement asymptotiquement stable. x →

On peut dans la plupart des cas définir une fonction de Lyapunov à partir de l’énergie du système et démontrer la stabilité par l’étude de cette fonction.

256

Techniques d’optimisation

3.5.3 Système linéaire Cette section concerne les systèmes linéaires de la forme :

x(t) = F(t)x(t)

(3.112)

Les résultats s’appliquent également aux systèmes non linéaires x = f (x, t) lorsqu’on considère leur écart x(t) à une trajectoire nominale x*(t) . L’écart x(t) suit en effet l’équation linéaire : T

 f  (3.113) x(t) = F(t)x(t) avec F(t) =  ( x*(t), t )   x  où la matrice jacobienne F(t) est évaluée le long de la trajectoire nominale. On introduit ci-dessous quelques notions importantes sur les systèmes linéaires : matrice de transition et de covariance, état adjoint, observabilité, commandabilité. Matrice de transition La matrice de transition (t,t 0 ) du système linéaire x(t) = F(t)x(t) permet de passer de l’état au temps t0 à l’état au temps t.

x(t) = (t, t 0 )x(t 0 )

(3.114)

Si l’état est de dimension n, la matrice de transition est de dimension n  n . Le terme ij (t, t 0 ) représente la valeur prise par la composante x i (t) lorsque toutes les composantes de x(t 0 ) valent 0 sauf la composante x j (t 0 ) qui vaut 1 (impulsion). Cette correspondance est illustrée sur la Figure 3-22. La matrice de transition est également appelée matrice de réponse impulsionnelle.

Figure 3-22 : Matrice de transition

Optimisation fonctionnelle

257

La matrice de transition possède les propriétés suivantes. •

Inverse et produit

(t, t) = I  (t 0 , t1 )(t1 , t 0 ) = I (t , t )(t , t ) = (t , t ) 1 0 2 0  2 1 •

Équation différentielle suivie par (t,t 0 ) pour un temps initial t0 fixé

x(t) = (t, t 0 )x(t 0 ) d  (t, t 0 ) = F(t)(t, t 0 )  dt x(t) = F(t)x(t) •

(3.115)

(3.116)

Équation différentielle suivie par (t f ,t) pour un temps final tf fixé

 x(t f ) = (t f , t)x(t) d  (t f , t) = −(t f , t)F(t)  dt  x(t) = F(t)x(t) L’équation (3.117) est appelée équation adjointe de (3.116),

(3.117)

Matrice symplectique Pour certains systèmes linéaires, la matrice de transition est symplectique, ce qui signifie qu’elle vérifie la relation :

 0 I (3.118) avec J =    −I 0  L’intérêt d’une matrice symplectique est que son inverse s’obtient par :  T J = J

 −1 = −J T J

(3.119)

Calculons la dérivée de  T J en utilisant l’équation (3.116) :  = F .

d T ( J) = T J +  T J =  T (FT J + JF) dt

(3.120)

La matrice  est symplectique si : FT J + JF = 0 . En effet,  T J est alors constante égale à sa valeur initiale J . Pour une matrice partitionnée, on a :

 F21 − F21T F11T + F22   F11 F12  T F=  F J + JF =    T T  F21 F22   −F11 − F22 F12 − F12 

(3.121)

T Une telle matrice est symplectique si F12 et F21 sont symétriques et F11 = −F22 .

258

Techniques d’optimisation

Exemple 3-16 : Mouvement dans un champ de gravité Considérons le mouvement d’un point matériel dans le champ de gravité central. La position, la vitesse et la gravité sont notées respectivement r , v,g .

 r = v r avec g(r) = − 3 . Les équations du mouvement sont :  r  v = g(r) Les équations linéarisées au voisinage d’une trajectoire de référence sont :

r = v  v = G r

 3x 2 − r 2 3xy  3xz   g   avec G = = 5 (3r r T − r 2 I) = 5  3yx 3y 2 − r 2 3yz  r r r  2 2 3zy 3z − r   3zx

La matrice G est la matrice de gradient de gravité. Le système aux écarts est linéaire de la forme :

0 I   r  x = Fx avec x =   et F =    v   G 0

F12 = I et F21 = G symétriques T F11 = −F22 = 0

La matrice F est partitionnée (3.121) et vérifie : 

La matrice de transition est donc symplectique et vérifie :

(t 0 , t1 ) = (t1 , t 0 ) −1 = −J(t1 , t 0 )T J

 r   r   = (t1 , t 0 )   .  v  t  v  t

Les écarts sont propagés par la relation : 

1

0

La propriété de matrice symplectique simplifie les calculs de propagation.

Matrice de covariance Considérons un système linéaire x(t) = F(t)x(t) dont l’état est une variable aléatoire de moyenne x(t) et de covariance P(t) .

 x(t) = E  x(t)    T P(t) = E ( x(t) − x(t) )( x(t) − x(t) )  Supposons pour simplifier les formules que la moyenne initiale est nulle. L’état se propage avec la matrice de transition : x(t) = (t,t 0 )x(t 0 ) .

(3.122)

Optimisation fonctionnelle

259

La moyenne et la covariance se propagent alors suivant les équations :

 x(t) = (t, t 0 )x(t 0 )  T P(t) = (t, t 0 )P(t 0 )(t, t 0 )  T P(t) = F(t)P(t) + P(t)F(t)

(3.123)

Démonstration Pour la moyenne :

x(t) = E (t, t 0 )x(t 0 ) = (t, t 0 )E x(t 0 )  = (t, t 0 )x(t 0 )

Pour la covariance, en supposant la moyenne initiale nulle : x(t 0 ) = 0  x(t) = 0

P(t) = E  x(t)x(t)T  = (t, t 0 )E  x(t 0 )x(t 0 ) T  (t, t 0 ) T = (t, t 0 )P(t 0 )(t, t 0 )T L’équation différentielle de la covariance s’obtient en dérivant directement et en utilisant : x(t) = F(t)x(t) .

d E  x(t)x(t) T  = E  x(t)x(t) T + x(t)x(t) T  dt = E  F(t)x(t)x(t) T + x(t)x(t) T F(t) T  = F(t)P(t) + P(t)F(t)T

P(t) =

État adjoint Considérons un système linéaire propagé de t à tf avec sa matrice de transition :

x(t f ) = (t f , t)x(t)

(3.124)

et une fonction linéaire de l’état final :

 x(t f ) = cT x(t f ) = cT(t f ,t)x(t)

(3.125)

L’état adjoint associé à la fonction  est la dérivée de  x(t f ) par rapport à l’état x(t) au temps t.

 x(t f ) = (t f , t)T c def x(t)

p(t) =

(3.126)

260

Techniques d’optimisation

L’état adjoint p(t) , aussi appelé fonction d’influence, représente la sensibilité de la fonction  au temps final par rapport à des variations d’état le long de la trajectoire. Sa valeur au temps final est : p(t f ) = (t f ,t f )c = c . Les équations de propagation de l’état adjoint forment les équations adjointes. On les obtient en dérivant (3.126) avec (3.117) :

d (t f , t) = −(t f , t)F(t) . dt

p(t) = −F(t)T p(t) (3.127)  p(t f ) = c L’état adjoint est connu au temps final et se calcule par une intégration à rebours. Un changement linéaire d’état conduit à un changement d’adjoint donné par :

y(t) = G(t)x(t) → q(t) = G(t) − T p(t)

(3.128)

Démonstration L’état x(t) a pour matrice de transition  : x(t) =(t, t 0 )x(t 0 ) et pour adjoint :

p(t) =(t f , t)T c .

Calculons la matrice de transition (t, t 0 ) associée à l’état y(t) défini par : y(t) = G(t)x(t) −1 −1  x(t) = (t, t 0 )x(t 0 )  G(t) y(t) = (t, t 0 )G(t 0 ) y(t 0 )  −1  y(t) =  (t, t 0 )y(t 0 )   (t, t 0 ) = G(t)(t, t 0 )G(t 0 ) On définit ensuite la fonction linéaire   y(t f ) associée à l’état y(t) .

  y(t f ) =  x(t f ) = cT x(t f ) = cTG(t f ) −1 y(t f ) = d T y(t f ) avec d = G(t f ) −T c def

L’adjoint q(t) associé à la fonction  est défini par (3.126).

  y(t f ) =  (t f , t)T d y(t) En remplaçant (t, t 0 ) et d par leurs expressions en fonction de (t,t 0 ) et G(t) on obtient (3.128). q(t) = (t f , t)T d = G(t) − T (t f , t)T G(t f )T  G(t f ) − T c q(t) =

def

= G(t)− T (t f , t)T c = G(t)− T p(t)

Optimisation fonctionnelle

261

Observabilité Considérons un système linéaire d’équation : x(t) = F(t)x(t) sur lequel on effectue des mesures linéaires de la forme :

y(t) = H(t)x(t) avec x 

n

, y

m

, H

mn

(3.129)

Le système est observable s’il est possible de reconstituer le vecteur d’état initial x(t 0 ) à partir d’une série de mesures y(t) entre t 0 et t f . On définit la matrice d’observabilité M(t 0 , t f ) par : tf

M(t 0 , t f ) =  (t, t 0 )T H(t)T H(t)(t, t 0 )dt

(3.130)

t0

Une condition d’observabilité est que la matrice M(t 0 , t f ) soit inversible.

Justification Intégrons l’équation de mesure avec l’état exprimé par : x(t) = (t,t 0 )x(t 0 ) .

y(t) = H(t)x(t) = H(t)(t, t 0 )x(t 0 ) 

tf

 (t, t ) 0

T

H(t) T y(t)dt = M(t 0 , t f )x(t 0 )

t0

Si M(t 0 , t f ) est inversible, on peut exprimer x(t 0 ) en fonction de l’intégrale. On démontre que cette condition est aussi nécessaire. Une condition d’observabilité équivalente est que la matrice M(t 0 , t f ) symétrique est définie positive.

Commandabilité Un système linéaire contrôlé a une équation de la forme :

x(t) = F(t)x(t) + G(t)u(t)

(3.131)

où u(t) est le vecteur de commande. La solution générale de ce système s’exprime avec la matrice de transition (t, t 0 ) associée au système non contrôlé : x(t) = F(t)x(t) . tf

x(t f ) = (t f , t 0 )x(t 0 ) +  (t f , t)G(t)u(t)dt t0

(3.132)

262

Techniques d’optimisation

Démonstration Partons de l’équation d’état : x(t) = F(t)x(t) + G(t)u(t) . En prémultipliant par (t f , t) : (t f ,t)x(t) = (t f ,t)F(t)x(t) + (t f ,t)G(t)x(t)

d (t f , t) = −(t f , t)F(t) , on obtient : dt d (t f , t)x(t) = − (t f , t)x(t) + (t f , t)G(t)x(t) dt d Cette équation se met sous la forme : (t f , t)x(t) = (t f , t)G(t)x(t) dt et avec

tf

En intégrant de t 0 à t f : (t f , t)x(t)t =  (t f , t)G(t)x(t)dt tf

0

t0

tf

et avec (t f ,t f ) = I , on obtient : x(t f ) = (t f , t 0 )x(t 0 ) +  (t f , t)G(t)x(t)dt t0

L’équation (3.132) s’interprète comme la superposition des contributions de l’état initial x(t 0 ) et de la commande u(t) . L’état initial génère le terme (t f , t 0 )x(t 0 ) comme pour un système non contrôlé. La commande u(t) appliquée à t pendant une durée dt génère une variation d’état dx(t) donnée par : x(t) = F(t)x(t) + G(t)u(t) → dx(t) = G(t)u(t)dt . Cette variation dx(t) génère elle-même un terme final : dx(t f ) = (t f , t)dx(t) . L’état final s’obtient par sommation sur l’ensemble de ces contributions de t 0 à t f , ce qui conduit au terme intégral de (3.132). Le système commandable est si tout état final x(t f ) est accessible à partir de tout état initial x(t 0 ) . On définit la matrice de commandabilité C(t 0 , t f ) par : tf

C(t 0 , t f ) =  (t f , t)G(t)G(t) T (t f , t) T dt

(3.133)

t0

Une condition nécessaire et suffisante de commandabilité est que la matrice C(t 0 , t f ) soit inversible.

Optimisation fonctionnelle

263

Démonstration La solution générale de l’équation d’état est donnée par (3.132). tf

x(t f ) = (t f , t 0 )x(t 0 ) +  (t f , t)G(t)u(t)dt t0

Considérons la commande définie par : u(t) = G(t)T (t f , t)T c avec c  Cette commande donne l’état final : x(t f ) = (t f , t 0 )x(t 0 ) + C(t 0 , t f )c .

n

.

Si C(t 0 , t f ) est inversible, on peut passer de x(t 0 ) à x(t f ) en prenant :



c = C(t 0 ,t f )−1  x(t f ) − (t f ,t 0 )x(t 0 )

Si C(t 0 , t f ) n’est pas inversible, il existe c 



n

non nul tel que :

T

c C(t 0 , t f )c = 0 On a alors : tf

tf

2

c C(t 0 , t f )c =  c (t f , t)G(t)G(t) (t f , t) cdt =  cT (t f , t)G(t) dt = 0 T

T

T

t0

T

t0

Le terme positif sous l’intégrale doit être constamment nul.

cT (t f , t)G(t) = 0 , t

Considérons alors une commande quelconque u(t) . En reprenant la solution générale (3.132) : tf

x(t f ) − (t f , t 0 )x(t 0 ) =  (t f , t)G(t)u(t)dt t0

T et en prémultipliant par c , on obtient : tf

cT  x(t f ) − (t f , t 0 )x(t 0 ) =  cT(t f , t)G(t)u(t)dt = 0 t0

T

car le terme c (t f , t)G(t) est nul.

Cette relation vraie pour toute commande u(t) montre que l’état final ne peut être quelconque, car le vecteur x(t f ) − (t f , t 0 )x(t 0 ) appartient à l’espace orthogonal au vecteur c. On ne peut pas atteindre tous les états finaux possibles.

264

Techniques d’optimisation

3.5.4 Problème aux deux bouts Nous avons vu que le calcul de l’état adjoint en (3.127) s’effectue par intégration à rebours à partir de la condition finale, alors que le calcul de l’état s’effectue par intégration directe à partir de la condition initiale. Ce problème aux deux bouts se présente en contrôle optimal comme cela sera établi au chapitre 4. On étudie ici une méthode de résolution pour un problème aux deux bouts de la forme :

Ax(t 0 ) = a x(t) = F(t)x(t) + g(t) avec  Bx(t f ) = b

(3.134)

Le vecteur d’état x(t) est de dimension n. Les conditions initiales et finales sont définies par des systèmes linéaires. m Le vecteur a  définit m conditions initiales avec la matrice A  mn . (n −m)n n −m . Le vecteur b  définit n − m conditions finales avec la matrice B  L’objectif est de trouver le vecteur d’état initial x(t 0 ) permettant de respecter à la fois les m conditions initiales et les n − m conditions finales. La méthode de transport résout le problème par les trois étapes suivantes. •

On définit quatre matrices C1 (t),C2 (t),C3 (t),C4 (t) à partir de A,B,F(t) . −1

 C (t) C2 (t)  A A = 1    F(t)   def  B  B  C3 (t) C4 (t)  •



m(n −m) On calcule la matrice S(t)  et le vecteur s(t)  système différentiel suivant de t 0 à t f .

(3.135) m

en intégrant le

S = −SC3S − SC4 + C1S + C 2 S(t 0 ) = 0 (3.136) avec   s = (C1 − SC3 )s + (A − SB)g s(t 0 ) = a Le vecteur d’état x(t) est obtenu par intégration à rebours de l’équation d’état : x(t) = F(t)x(t) + g(t) en partant de l’état final x(t f ) défini par : −1

 A   S(t )b + s(t f )  x(t f ) =    f  B b 

(3.137)

Optimisation fonctionnelle

265

Justification Le principe de la méthode est de « transporter » la condition initiale Ax(t 0 ) = a n

jusqu’au temps final. Pour cela, on partitionne le vecteur d’état x(t)  sous vecteurs y(t)

m

et z(t) 

n −m

en deux

.

 y(t) = Ax(t) avec les matrices A et B de (3.134). z(t) = Bx(t)

Ces vecteurs sont définis par : 

 y(t 0 ) = a . z(t f ) = b

Les conditions initiales et finales donnent : 

−1

 y A  A  y Exprimons x en fonction de y et z :   =   x  x =     z  B B z  et remplaçons dans l’équation d’état : −1

 y A A  y  A x = Fx + g    =   F     +   g  z  B  B  z  B En utilisant les matrices C1 ,C2 ,C3 ,C4 définies en (3.135), ce système différentiel

 y = C1y + C2 z + Ag .  z = C3 y + C4 z + Bg

s’écrit : 

Introduisons alors une matrice S(t) 

m(n −m)

et un vecteur s(t) 

m

fonctions

du temps tels que : y(t) = S(t)z(t) + s(t) . L’existence de S(t) et s(t) est assurée par exemple avec : S(t) = 0 , s(t) = y(t) . Remplaçons alors y = Sz + s dans le système différentiel :

 y = C1y + C2 z + Ag   z = C3 y + C4 z + Bg

Sz + Sz + s = C1Sz + C1s + C2z + Ag y =Sz +s ⎯⎯⎯ →   z = C3Sz + C3s + C4z + Bg

puis reportons z dans la première équation :

(S + SC3S + SC4 − C1S − C2 )z + s + (SC3 − C1 )s + (SB − A)g = 0

Supposons à présent que S(t) est choisie pour annuler le terme en z. Le terme restant est alors également nul. Ceci conduit à imposer à S(t) et s(t) les conditions :

S = −SC3S − SC4 + C1S + C2 ce qui donne le système différentiel (3.136).  s = (C1 − SC3 )s + (A − SB)g

266

Techniques d’optimisation

S(t 0 ) = 0 s(t 0 ) = a

Pour satisfaire la condition initiale : y(t 0 ) = a , on impose également : 

En intégrant le système de t 0 à t f , on obtient S(t f ) et s(t f ) , d’où l’on déduit :

y(t f ) = S(t f )z(t f ) + s(t f ) La valeur finale de z étant connue : z(t f ) = b , on a ainsi le vecteur d’état final x(t f ) , ce qui permet de revenir à l’état initial x(t 0 ) par une intégration à rebours de l’équation d’état.

L’exemple suivant illustre la résolution d’un problème aux deux bouts par la méthode de transport.

Exemple 3-17 : Double intégrateur avec conditions aux deux bouts Considérons le problème de double intégrateur en dimension 1 :

 x1 = x 2  x 2 = u

 x1 (t 0 ) = a avec   x 2 (t f ) = b

La condition initiale est sur la position x1 , la condition finale sur la vitesse x 2 . Les matrices associées à ce problème sont :

 C C2   0 1  0 1  0  A = (1 0 ) F= →  1 =  , g=  ,   0 0  u  B = ( 0 1)  C3 C4   0 0  S = 1 S(t 0 ) = 0 avec  s(t 0 ) = a s = −Su

Le système différentiel en S(t) et s(t) s’écrit : 

t

La solution est donnée par : S(t) = t − t 0 et s(t) = a −  ( − t 0 )u( )d t0

On a alors le vecteur d’état final : tf   a + b(t − t ) − ( − t 0 )u()d   A   Sf b + sf   f 0  x(t f ) =    =  t0 B b    b   −1

que l’on intègre à rebours pour obtenir la solution complète de t 0 à t f .

Optimisation fonctionnelle

267

3.6 Conclusion 3.6.1 Les points essentiels •

Les extrémales d’un problème de calcul des variations sont les solutions de l’équation d’Euler-Lagrange. Ces extrémales peuvent être ou non des minima.



Les conditions suffisantes d’optimalité reposent sur l’absence de points conjugués, déterminés en résolvant l’équation de Jacobi.



Les contraintes finales (extrémité libre ou astreinte à une courbe) conduisent à des conditions de transversalité.



Les extrémales sont solutions du système canonique formé à partir de l’hamiltonien de la fonctionnelle à minimiser.



La fonction valeur (= valeur de la fonctionnelle en tout point) est solution de l’équation aux dérivées partielles de Hamilton-Jacobi-Bellman.

3.6.2 Pour aller plus loin •

Calculus of variations and optimal control theory (D. Liberzon, Princeton University Press 2012) Ce livre présente le calcul des variations dans les chapitres 1 à 3. Les notions sont introduites progressivement de manière rigoureuse, tout en évitant un formalisme trop lourd. Le chapitre 3 fait la transition entre le calcul des variations et le contrôle optimal. Ce livre extrêmement pédagogique est à recommander pour une introduction sur ces sujets.



Calculus of variations (I.M. Gelfand, S.V. Fomin, Dover 1963) Ce livre est entièrement consacré au calcul des variations. Les différentes conditions d’optimalité (ordre 1 et 2, minimum faible ou fort,) sont démontrées dans les chapitres 1 à 6. La chapitre 7 présente la généralisation à des problèmes plus complexes formulés par des intégrales multiples.



Calculus of variations with applications (G.M. Ewing, Dover 1985) Comme le précédent, ce livre est entièrement consacré au calcul des variations, avec une présentation plus formelle. Les conditions d’optimalité sont démontrées avec des compléments sur les problèmes paramétriques.



Geometric optimal control (H. Schättler, U. Ledzewicz, Springer 2012) Le livre très complet comporte un premier chapitre sur le calcul des variations.

268



Techniques d’optimisation

The variational principles of mechanics (C. Lanczos-Urruty, Dover 1949) Ce livre présente l’approche hamiltonienne de la mécanique. La théorie du calcul des variations est rappelée au chapitre 3, puis est appliquée pour dériver les équations canoniques et l’équation de Hamilton-Jacobi-Bellman.

Contrôle optimal

269

4. Contrôle optimal Un problème de contrôle optimal consiste à trouver la loi de commande d’un système dynamique afin de réaliser une trajectoire au meilleur coût. Cette formulation généralise celle du calcul des variations présentée au chapitre 3 et permet de traiter une grande variété de problèmes en ingénierie ou en économie. La section 1 présente la formulation d’un problème de contrôle et les conditions d’optimalité. Le principe du minimum de Pontryaguin (appelé historiquement principe du maximum par un choix de signe opposé) établit que la commande optimale est un minimum global de l’hamiltonien du problème. Sa détermination nécessite l’introduction d’un état adjoint et la résolution d’un problème aux deux bouts. L’approche variationnelle n’établit que la version faible (minimum local de l’hamiltonien), mais se généralise aisément aux problèmes avec contraintes. La section 2 introduit la prise en compte de contraintes. Les contraintes terminales induisent des conditions dites de transversalité sur l’adjoint et l’hamiltonien. Les contraintes intérieures s’appliquent à un temps intermédiaire et permettent de tenir compte de discontinuités de dynamique ou d’état du système. Elles induisent des conditions de saut sur l’adjoint et l’hamiltonien. Les contraintes courantes et d’état sont à respecter sur l’ensemble de la trajectoire. Les contraintes d’inégalité peuvent induire des conditions de jonctions avec des discontinuités de commande. La section 3 étudie les extrémales qui sont les trajectoires vérifiant les conditions d’optimalité d’ordre 1. Pour un même problème, il peut exister des extrémales normales ou anormales (indépendantes du coût), régulières ou singulières (non déterminées par les conditions d’ordre 1). La linéarisation au voisinage d’une solution nominale permet de construire une commande en retour d’état, utile pour les applications en temps réel. La fonction valeur qui donne le coût optimal à partir de toute condition initiale est solution de l’équation d’Hamilton-Jacobi-Bellman. La section 4 présente les conditions d’optimalité d’ordre 2. Ces conditions s’établissent à partir de la variation seconde du coût augmenté et conduisent à un problème linéaire quadratique local qui se résout par la méthode de transport. Les conditions suffisantes de minimum sont basées sur l’absence de point conjugué. Des arcs singuliers peuvent exister dans le cas fréquent d’une commande linéaire. Des conditions d’ordre supérieur sont nécessaires pour établir l’optimalité de ces arcs et leurs jonctions possibles à des arcs réguliers.

270

Techniques d’optimisation

4.1 Conditions d’optimalité 4.1.1 Problème de contrôle La formulation standard d’un problème de contrôle est la suivante. tf

min J(u) =  L  x(t), u(t), t  dt +   x(t f ), t f  u,t f

t0

(4.1)

 x(t) = f  x(t), u(t), t  avec   x(t 0 ) = x 0 L’état x(t) de dimension n suit l’équation d’état : x(t) = f  x(t),u(t),t  .

Les conditions initiales (x 0 ,t 0 ) sont fixées, les conditions finales (x f ,t f ) sont libres. La commande u(t) de dimension m est une fonction quelconque du temps. La trajectoire

x(t) , t 0  t  t f 

associée à la commande

u(t) , t 0  t  t f 

s’obtient par intégration de l’équation d’état à partir de l’état initial x 0 . Lorsque cela ne présente pas d’ambiguïté, on écrit le problème (4.1) sous forme plus compacte en omettant la variable temps. t

f x = f (x,u, t) min J(u) =  L(x,u, t)dt + (x f , t f ) avec  u,t f x(t 0 ) = x 0 t0

(4.2)

f f , fu = . x u On cherche la loi de commande minimisant la fonctionnelle J qui se compose d’un Pour alléger les formules, les dérivées partielles seront notées f x =

terme de coût intégral :

tf

 L(x, u, t)dt

t0

et d’un terme de coût final : (x f , t f ) .

Le problème est dit sous forme : - de Lagrange si le coût est purement intégral ( = 0) ; - de Mayer si le coût est purement final (L = 0) ; - de Bolza dans le cas général.

Ces trois formes sont équivalentes. Le passage de l’une à l’autre s’effectue par les transformations suivantes.

Contrôle optimal

271

Passage de la forme de Mayer à la forme de Lagrange Supposons que le coût est purement final : (4.3)

J(u) = (x f ,t f ) avec x = f (x,u,t) , x(t 0 ) = x 0 et définissons la fonction L(x,u, t) par :

  (x, t)T f (x,u, t) + (x, t) def x t On peut alors exprimer le coût final comme :

(4.4)

L(x,u, t) =

(x f , t f ) = (x 0 , t 0 ) +

tf

d

 dt (x, t)dt

t0 tf

    = (x 0 , t 0 ) +   (x, t) T x + (x, t)  dt  x  t  t0 

(4.5)

tf

= (x 0 , t 0 ) +  L(x, u, t)dt t0

tf

Le coût intégral

 L(x, u, t)dt

est égal au coût final (4.3) à une constante près.

t0

Passage de la forme de Lagrange à la forme de Mayer Supposons que le coût est purement intégral :

J(u) =

tf

 L(x,u, t)dt

avec x = f (x,u, t) , x(t 0 ) = x 0

(4.6)

t0

et définissons la variable d’état supplémentaire  par : (4.7)

 = L(x,u, t) avec (t 0 ) = 0

x 

 x   f (x, u, t)       L(x, u, t) 

Le nouvel état y =   de dimension n+1 a pour équation : y =   =  def On peut alors exprimer le coût intégral comme : tf

tf

t0

t0

d

 L(x,u, t)dt =  dt dt = (t ) − (t ) = (t ) f

0

f

Le coût final défini par (yf ,t f ) = (t f ) est égal au coût intégral (4.6).

(4.8)

272

Techniques d’optimisation

Contraintes Le problème (4.2) est à conditions initiales fixées et conditions finales libres. La formulation peut être étendue à différents types de contraintes. • •

Temps et état initial fixés ou libres, temps et état final fixés ou libres 0  x(t 0 ), t 0  = 0 Contraintes sur l’état initial :



Contraintes sur l’état final :



Contraintes ponctuelles sur l ’état : 1  x(t1 ),t1  = 0 à t1 [t 0 ;t f ]



Discontinuités de dynamique :



Discontinuités d’état :



Contraintes courantes égalité :



Contraintes courantes inégalité :

f  x(t f ),t f  = 0

x = f1 (x,u, t) si t  t1  x = f 2 (x,u, t) si t  t1 x(t1+ ) = x(t1− ) + x1 à t1 [t 0 ;t f ] c (x,u, t) = 0 , t c (x,u, t)  0 , t

Les conditions d’optimalité en présence de ces différents types de contraintes seront présentées en section 4.2.

4.1.2 Principe du minimum Considérons un problème de contrôle standard à temps final fixé. tf

x = f (x,u, t) min J(u) =  L(x,u, t)dt + (x f ) avec  u x(t 0 ) = x 0 t0

(4.9)

L’état x(t) est de dimension n, la commande u(t) est de dimension m. Le coût final (x f ) ne dépend que de l’état x f , car le temps final t f est fixé. On définit l’état adjoint p(t) et l’hamiltonien H(x,u,p, t) par les équations :

H(x, u, p, t) = p 0L(x, u, t) + p Tf (x, u, t)   H d avec p(t f ) = p 0 (x f ) p = − x dx 

(4.10)

L’adjoint p(t) est de même dimension que x(t) et se calcule par intégration à rebours à partir de sa valeur finale p(t f ) . Le réel p0 est appelé multiplicateur anormal. L’hamiltonien est une fonction de

n +m+n +1

dans

On a alors les conditions nécessaires d’optimalité suivantes.

.

Contrôle optimal

273

Théorème 4-1 : Principe du minimum de Pontryaguin (PMP) Soit u*(t) une solution du problème (4.9) et x*(t) la trajectoire associée. Alors il existe p0  0 et p*(t) non simultanément nuls vérifiant les équations (4.10) et tels que la commande u*(t) minimise l’hamiltonien à chaque temps.

min H(x*,u,p*,t) → u*(t)

(4.11)

u

La démonstration de l’existence de (p0 ; p*)  (0 ; 0) est difficile. On se limite ici à vérifier la propriété de minimum de l’hamiltonien lorsque p0  0 .

Vérification de la condition de minimisation (voir [R14]) Considérons une loi de commande u*(t) de t0 à tf. La trajectoire associée x*(t) est obtenue par intégration de l’état : x* = f (x*,u*, t) Appliquons une perturbation de commande de la forme suivante :

u*(t) si t 0  t  t1 −   u(t) =  v si t1 −   t  t1 u*(t) si t  t  t 1 f  Le temps t1 ]t 0 ;t f ] est arbitraire. La valeur   0 est supposée petite. La constante v est quelconque. Figure 4-1 : Variation en aiguille Cette perturbation appelée variation en aiguille est représentée sur la Figure 4-1. Elle ne modifie la commande u* que sur [t1 −  ; t1 ] . L’intervalle est supposé petit, mais la perturbation v sur cet intervalle peut être arbitrairement grande. La variation en aiguille sur [t1 −  ; t1 ] modifie la trajectoire à partir de t1 −  . La trajectoire perturbée est de la forme :

si t 0  t  t1 −  x*(t) x(t) =  x*(t) + x si t1 −   t  t f

274

Techniques d’optimisation

La démonstration de (4.11) procède en quatre étapes : calcul de la variation d’état à t1, propagation jusqu’à tf, variation du coût final, passage à un coût intégral. Première étape : variation de l’état au temps t1 Calculons la variation x(t1 ) résultant de la variation de u sur [t1 −  ; t1 ] . L’état en t1 −  est nominal : x(t1 − ) = x*(t1 − ) .

L’état nominal en t1 est obtenu avec la commande nominale u* sur [t1 −  ; t1 ] . t1

 f (x*,u*, t)dt

x* = f (x*,u*, t) sur [t1 −  ; t1 ]  x*(t1) = x*(t1 − ) +

t1 −

L’état perturbé en t1 est obtenu avec la commande perturbée v sur [t1 −  ; t1 ] .

x = f (x , v, t)

t1

 f (x* + x , v, t)dt

sur [t1 −  ; t1 ]  x(t1 ) = x*(t1 − ) +

Par différence, et pour  petit, on a :

t1 −

x(t1 ) = x(t1 ) − x*(t1 ) =  f (x * +x , v, t) − f (x*,u*, t)  t1 + o()

L’intervalle [t1 −  ; t1 ] étant petit, la perturbation x(t1 ) l’est également. T On développe à l’ordre 1 en x : f (x* + x , v, t) = f (x*, v, t) + f x x + o(x)

et on reporte dans x(t1 ) : x(t1 ) =  f (x*, v, t) − f (x*,u*, t)t ( x d’ordre 2) 1

Deuxième étape : propagation de la perturbation de l’état jusqu’au temps t f La commande sur [t1 ;t f ] est identique à la commande nominale u*. Écrivons l’équation de propagation de l’écart x = x − x* sur [t1 ;t f ] .

 x = f (x ,u*, t) = f (x* + x ,u*, t) = f (x*,u*, t) + f xT x + o(x) → x = f xT x   x * = f (x*,u*, t) T La solution de l’équation x = f x x s’exprime avec sa matrice de transition  (section 3.5.3).

 (t , t ) = − (t f , t1 )f xT x(t f ) = (t f ,t)x(t1) avec  f 1 comme établi en (3.117)  (t f , t f ) = I En remplaçant x(t1 ) (étape 1), on a :

x(t f ) = (t f , t1 )x(t1 ) = (t f , t1 ) f (x*, v, t) − f (x*,u*, t) t

1

Contrôle optimal

275

Troisième étape : variation du coût final Supposons le problème de contrôle sous forme de Mayer : J(u) = (x f ) .

Une variation x f produit une variation J à l’ordre 1 : J = x (x f *)x f En remplaçant x(t f ) (étape 2), on a :

J = x (xf *)(t f , t1 ) f (x*, v, t) − f (x*,u*, t)t

1

Définissons l’adjoint p(t) et l’hamiltonien H(x,u,p, t) par :

p(t) = p0(t f , t)T x (x f ) avec p0  0  T H(x,u,p, t) = p f (x,u, t) p = −f x p car (t f , t) = −(t f , t)f xT L’adjoint vérifie :  , p(t f ) = p0x (x f ) car (t f , t f ) = I p = −H x soit en utilisant H :  p(t f ) = p0x (x f )

Cette définition correspond à celle donnée en (4.10), dans le cas d’un coût purement final (L = 0) . Notons p* l’adjoint associé à (u*, x*) et exprimons J en fonction de p et H.

J =

  p*(t1 )T f (x*, v, t) − f (x*,u*, t) t = H(x*, v,p*, t) − H(x*,u*,p*, t)t 1 1 p0 p0

Une condition nécessaire d’optimalité de u* est : J  0 , t1 ,   0 , v .

La commande u* réalise donc un minimum de H(x*,u,p*, t) (car  0, p0  0 ). Quatrième étape : extension à un coût intégral Considérons maintenant le cas d’un problème sous forme de Bolza : tf

J(u) =  L(x,u, t)dt + (x f ) . t0

On revient à la forme de Mayer en ajoutant une variable d’état  comme en (4.7).

 = L(x,u, t) , le vecteur d’état devient : (t 0 ) = 0

Avec cette variable définie par : 

x f  y=  → y=    L Le coût final s’exprime comme : J = f + (x f ) = (yf ) . def

276

Techniques d’optimisation

L’adjoint q associé à l’état y et au coût final (yf ) est défini comme à l’étape 3.

   x = x   pf  p  p   −f x p q=  → q= =  avec q(t f ) =   = p0         −L  = 0   f    = 1 

On observe que l’adjoint supplémentaire noté  est constant.

 = 0  (t) = (t f ) = p0

T

p f  T L’hamiltonien de ce problème est : H =     = p0 L + p f .  L    

Cette définition correspond à celle donnée en (4.10) dans le cas d’un problème de Bolza. L’adjoint p vérifie toujours les équations (4.10) comme à l’étape 3. Le résultat obtenu à l’étape 3 s’étend ainsi au cas d’un coût intégral et final avec T l’hamiltonien défini par : H = p0 L + p f . L’énoncé du Théorème 4-1 appelle quelques remarques. Remarque 1 : Principe du minimum fort / faible La démonstration ci-dessus considère des perturbations de commande arbitrairement grandes pendant un intervalle de temps petit. Il en résulte que la commande optimale u* réalise un minimum global de l’hamiltonien à chaque temps. Pour cette raison, le principe du minimum est dit fort. L’approche variationnelle (section 4.1.3) considère des perturbations de commande petites sur l’ensemble de la trajectoire. Cette approche montre que la commande optimale u* réalise un minimum local de l’hamiltonien à chaque temps. Ce résultat constitue le principe du minimum faible. Remarque 2 : Multiplicateur anormal Le multiplicateur p0 permet de prendre en compte des solutions avec p0 = 0 . Ces extrémales dites anormales sont présentées en section 4.3.2. Dans le cas normal (p0  0) , on peut fixer librement la valeur de p0 (en général à 1). Remarque 3 : Convention de signe Le Théorème 4-1 est énoncé en supposant le multiplicateur anormal positif : p0  0 , ce qui conduit à un minimum de l’hamiltonien (à l’étape 3 de la démonstration). Le choix opposé l’hamiltonien.

p0  0 conduirait à un maximum de

Contrôle optimal

277

Le théorème originel (1962) adopte la convention p0  0 et s’intitule de fait « principe du maximum de Pontryaguin ». Cette appellation reste utilisée même lorsque p0  0 . L’emploi du sigle PMP dissimule cette ambiguïté de vocabulaire. La convention moins naturelle p0  0 vient de la condition de Weierstrass établie en calcul des variations (section 3.2.4), comme précisé ci-dessous.

Lien avec le calcul des variations b

Considérons un problème de calcul des variations : min J(y) =  L(x,y,z = y)dx . y

a

p = L z (équation E) H = Lz y − L

Les variables canoniques (3.55) sont définies par :  La condition nécessaire d’Euler-Lagrange est :

L y = Lz  p = L y .

La condition de minimum fort de Weierstrass est : max H(x,y,w,p) → y . w

Passage à un problème de contrôle (avec la convention p0 = −1)

x → t  En renommant les variables :  y(x) → x(t) et avec l’équation d’état : x = u ,  y(x) → x(t)  on formule un problème de contrôle équivalent avec une commande u 

.

b

min J(u) =  L(t,x,u)dx avec x = u u

a

H = −L + pT u Le PMP avec p0 = −1 donne :  p = L x et max H  Hu = −Lu + p = 0  p = Lu u

H = − L + L u u (avec u de dimension 1) . L u = L x

En remplaçant p = Lu , on a : 

On retrouve les variables canoniques (équation E) et l’équation d’Euler-Lagrange avec u → y . La condition de Weierstrass est donc équivalente au PMP avec la convention p0 = −1 qui conduit à la maximisation de l’hamiltonien.

278

Techniques d’optimisation

L’exemple suivant illustre les étapes de résolution d’un problème de contrôle en utilisant le PMP.

Exemple 4-1 : Portée balistique On considère la trajectoire d’un missile balistique en terre plate dans un champ de gravité constant. La trajectoire dans le plan (Oxz) est montrée sur la Figure 4-2. Modélisation Les hypothèses sur la propulsion et la commande sont les suivantes. • Le missile décolle du sol à t 0 = 0 et s’arrête de propulser au temps t f fixé. • L’accélération de poussée est constante de module a. • La direction de poussée est définie par l’assiette  (angle avec l’horizontale). • La loi d’évolution (t) est libre et représente la commande du missile. Les composantes de position, vitesse et accélération sont données ci-dessous. Position : Vitesse :

x r =  z   vx  v=   vz 

 0 g=   −g   cos   Accélération : a = a    sin   Gravité :

Figure 4-2 : Trajectoire de missile balistique

x = vx z = v  z  .  v x = a cos   v z = a sin  − g La portée R dépend des conditions à la date d’injection t f . v R = x f + xf  vzf + vzf2 + 2gzf   g 

x    z  évolue selon : L’état position-vitesse :  vx     vz 

Contrôle optimal

279

Problème de contrôle Le problème de contrôle est sous forme de Mayer (coût purement final).

x 0 = 0 x = vx  z = v  z 0 = 0 z min (x f ,z f , v xf , v zf ) = −R(x f ,z f , v xf , v zf ) avec  et    v x = a cos   v x0 = 0  v z = a sin  − g  v z0 = 0

Application du PMP L’hamiltonien est : H = px vx + pz vz + pvx a cos  + pvz (asin  − g) avec l’adjoint (px ,pz ,pvx ,pvz )

L’application du PMP donne : min H → 

tan  =

pvz pvx

(équation 1)

Pour déterminer (t) , on résout les équations adjointes avec les conditions finales.

→ p x (t) = A p x = −H x = 0 p = −H = 0 → p z (t) = B z  z Équations adjointes :  → p vx (t) = C + A(t f − t) p vx = −H vx = − p x p vz = −H vz = − p z → p vz (t) = D + B(t f − t)  R  → A = −1 p x (t f ) = x = x f  R v xf  → B = − p z (t f ) = z = z v 2zf + 2gz f f  Conditions finales :  v + v zf2 + 2gz f p vx (t f ) = vx = R → C = − zf  v xf g    R v  v zf  → D = − xf 1 + p vz (t f ) = vz = 2    v g v + 2gz zf  zf f   En observant que : D = −BC et avec A = −1 , l’équation 1 donne : p (t) D + B(t f − t) C − (t f − t) v xf tan (t) = vz = = −B = −B = (équation 2) 2 p vx (t) C + A(t f − t) C − (t f − t) vzf + 2gzf La portée maximale est donc obtenue avec une direction de poussée constante. On peut noter que ce résultat obtenu en terre plate et pour une accélération constante reste vrai si l’accélération varie suivant une loi prédéterminée a(t).

280

Techniques d’optimisation

Angle de poussée optimal Pour trouver la valeur de  , on intègre la trajectoire (avec a et  constants).

 x f = (a cos ) t f2 / 2 x = vx  z = v 2  z f = (a sin  − g) t f / 2 z →    v x = a cos   v xf = (a cos ) t f  v z = a sin  − g   v zf = (a sin  − g) t f En reportant zf ,vxf ,vzf dans l’équation 2, on obtient :

tan  (a sin  − g)2 + g(a sin  − g) = a cos  3 2 qui se met sous la forme : sin  − 2n sin  + n = 0 avec n =

La variable n est l’accélération du missile exprimée en g.

a (équation 3) g

Recherche des solutions Recherchons les solutions de l’équation 3 en fonction du niveau d’accélération n. L’angle  est compris entre 0 deg (verticale) et 90 deg (horizontale). 3 2 La Figure 4-3 montre la fonction f () = sin − 2n sin  + n tracée pour quatre valeurs différentes de n.

Figure 4-3 : Solution en fonction du niveau d’accélération

Contrôle optimal

281

On observe que l’équation n’admet pas de solution si n  1 . En effet, le décollage est impossible avec une poussée est inférieure au poids (a  g) . Lorsque n  1 , l’équation admet une solution unique avec un angle de poussée compris entre 45 et 90 deg. Si n = 1 , l’angle optimal est 90 deg. Il faut en effet pousser verticalement pour décoller (a = g) . Si n →  , l’angle optimal est 45 deg. Ceci correspond à une impulsion de vitesse instantanée. On retrouve le résultat connu : la direction de vitesse maximisant la portée à partir du sol est effectivement 45 deg.

4.1.3 Méthode variationnelle La méthode variationnelle consiste à exprimer la variation du coût J en fonction de variations u petites appliquées tout au long de la trajectoire. Cette approche basée sur un coût augmenté conduit à un résultat moins fort que le PMP, mais elle présente l’intérêt de généraliser facilement lorsque le problème de contrôle est soumis à des contraintes. Coût augmenté Considérons un problème de contrôle à conditions initiales et finales libres. tf

min J =  L(x,u, t)dt + (x 0 , t 0 , x f , t f ) avec x = f (x,u, t)

u,x 0 ,t 0 ,x f ,t f

(4.12)

t0

L’état x(t) dépend de la commande u(t) par l’équation d’état : x = f (x,u, t) . Des variations de commande u(t) produisent des variations d’état x(t) dont il faut tenir compte dans le calcul de J . On utilise la méthode de Lagrange. - L’équation x = f (x,u, t) représente une contrainte appliquée à chaque temps t. - On ajoute au coût J la contrainte avec des multiplicateurs p(t) appelés adjoints. Le coût augmenté J a est ainsi défini par : tf

J a = J +  pT f (x,u, t) − x  dt

(4.13)

t0

En introduisant l’hamiltonien défini par :

H(x,u,p, t) = L(x,u, t) + pTf (x,u, t)

(4.14)

282

Techniques d’optimisation

le coût augmenté s’exprime comme : tf

J a =   H(x,u,p, t) − pT x  dt + (x 0 , t 0 , x f , t f )

(4.15)

t0

L’intégration par parties du terme pT x conduit à : tf

tf

J a =   H(x,u,p, t) + pT x  dt − p T x  + (x 0 , t 0 , x f , t f ) t0

(4.16)

t0

Variation première Appliquons des variations de commande u(t) , d’état x(t) , de temps initial t 0

et de temps final t f . En développant la formule (4.16) à l’ordre 1 (variations petites), on obtient la variation première du coût augmenté donnée par :

J a =

tf

tf

t0

t0

T T  H u udt +  (H x + p) xdt

(4.17)

T

+ x 0 + p(t 0 )  x 0 + t 0 − H(t 0 )  t 0 T

+ x f − p(t f )  x f +  t f + H(t f )  t f

Démonstration Appliquons des variations u(t), x(t), t 0 , t f au coût augmenté (4.16). tf

J a =   H(x,u,p, t) + pT x  dt + p(t 0 )T x(t 0 ) − p(t f ) T x(t f ) + (x 0 , t 0 , x f , t f ) t0

En développant chaque terme à l’ordre 1, on a :

J a =

tf

 (H x + H u + p x)dt T x

T u

T

→ variation sous l'intégrale

t0

+  H + p T x  (t f )t f −  H + p T x  (t 0 )t 0 + p(t 0 )T x(t 0 ) + p(t 0 ) T x(t 0 )

→ variation de p(t 0 ) T x(t 0 )

− p(t f )T x(t f ) − p(t f )T x(t f )

→ variation de p( t f )T x(t f )

+ Tx 0 x(t 0 ) + t 0 t 0 + Tx f x(t f ) + t f t f

→ variation de (x 0 ,t 0 ,x f ,t f )

→ variation des bornes

Contrôle optimal

283

p(t 0 ) = p(t 0 )t 0 . p(t f ) = p(t f )t f

Les variations de l’adjoint à t 0 et t f s’expriment comme :  Les termes en p(t 0 ) et p(t f ) s’éliminent et on obtient :

J a =

tf

tf

 H udt +  (H T u

t0

t0

T

x

+ p)T xdt + x 0 + p(t 0 )  x 0 + t 0 − H(t 0 )  t 0 T

+ xf − p(t f )  x f + t f + H(t f )  t f

Dans la formule (4.17), les variations d’état x(t) et de commande u(t) ne sont pas indépendantes. Elles sont en effet liées par l’équation d’état linéarisée :

x = f (x,u,t)  x = f x x + f uu

(4.18)

On ne connaît pas l’expression explicite de x(t) en fonction de u(t) . Pour s’affranchir de cette dépendance, on choisit l’adjoint pour annuler l’intégrale en x dans la formule (4.17). On retrouve ainsi les équations adjointes (4.10). (4.19)

p = −H x

Avec ce choix, la variation première (4.17) ne dépend plus que de u(t), x 0 , t 0 , x f , t f .

J a =

tf

 H udt + 

t0

T u

T

x0

+ p(t 0 )  x 0 + t 0 − H(t 0 )  t 0

(4.20)

T

+ xf − p(t f )  x f + t f + H(t f )  t f Cette formule permet d’une part d’exprimer des conditions nécessaires d’optimalité, d’autre part de calculer les sensibilités de la fonctionnelle de coût. Conditions nécessaires d’optimalité Une condition nécessaire d’optimalité d’ordre 1 est :

Ja = 0 , u, x0 , t 0 , x f , t f Les variations u(t), x 0 , t 0 , x f , t f étant indépendantes, leurs coefficients doivent être nuls dans (4.20).

284

Techniques d’optimisation

La condition : Ja = 0 , u impose : (4.21)

Hu = 0 , t

La commande optimale est un point stationnaire de l’hamiltonien à chaque temps. Si les conditions initiales sont libres, la condition ( Ja  0 , x 0 , t 0 ) impose :

p(t 0 ) = − x 0  H(t 0 ) = t 0

→ pour δx 0 → pour δt 0

(4.22)

Si les conditions finales sont libres, la condition ( Ja  0 , x f , t f ) impose :

p(t f ) = x f → pour δx f (4.23)  H(t f ) = − t f → pour δt f Ces relations au point initial ou final sont appelées conditions de transversalité. Chaque condition de transversalité fournit un nombre d’équations égal au nombre d’inconnues : n équations pour x0/f , 1 équation pour t 0/f . Ces conditions conduisent à un problème aux deux bouts discuté en section 4.1.4. Fonctions d’influence Supposons que le problème est sous forme de Lagrange ( = 0) . On peut toujours se ramener à cette formulation par la transformation (4.4). Sur la trajectoire optimale : Hu = 0 , Ja = J * et la formule (4.20) se réduit à :

J * = p(t 0 )T x 0 − H(t 0 )t 0 − p(t f ) T x f + H(t f )t f

(4.24)

Cette formule fait apparaître les dérivées partielles du coût optimal J* par rapport aux conditions initiales et finales. Ces dérivées sont les fonctions d’influence.

 J *  x = p(t 0 )  0   J * = − H(t ) 0  t 0

 J * = − p(t f )   x f et   J * = H(t ) f  t f

(4.25)

Si les conditions initiales/finales sont libres (donc optimisées vis-à-vis du coût), les dérivées correspondantes de J* sont nulles. Ceci est cohérent des conditions d’optimalité (4.22) et (4.23) dans le cas d’une forme de Lagrange ( = 0) . Lorsque les conditions initiales/finales sont fixées, les formules (4.25) permettent de connaître l’effet d’une perturbation initiale ou finale sur le coût optimal.

Contrôle optimal

285

Supposons que la trajectoire optimale partant de (x 0 ;t 0 ) et arrivant en (x f ;t f ) est connue et plaçons-nous en un point quelconque (x; t) de cette trajectoire. D’après le principe d’optimalité de Bellman (développé en section 4.3.6), l’arc de trajectoire de (x;t) à (x f ;t f ) est optimal et on peut lui appliquer les formules (4.25). On a en particulier en chaque point de la trajectoire optimale :

J * = p(t) x(t)

(4.26)

Changement de vecteur d’état Supposons que l’on effectue un changement de vecteur d’état : y = g(x) . Notons p et q les adjoints associés respectivement à x et y. D’après (4.26), on a :

 J *  dy  J * p = x =  dx  y     q = J *  y

 g1  x  1 dy dg avec = = gx =  dx dx noté   g1  x  n

g n  x1     g n  x n 

(4.27)

où g x est la matrice gradient (transposée de la jacobienne) de : y = g(x) . On en déduit la formule de changement d’adjoint associée au changement d’état. (4.28)

y = g(x)  q = g −x1p

Exemple 4-2 : Passage des coordonnées polaires aux coordonnées cartésiennes

x  y

 r   r cos   .     r sin   sin    cos  La matrice gradient de la transformation notée G est : G =  .  −r sin  r cos   La transformation polaires-cartésiennes est définie par :   = g   = 

Les adjoints se transforment suivant :

p  px  1  r cos  − sin    p r  −1  r   =G  =     p  r  r sin  cos    p   py 

1  p x = p r cos  − r p sin  →  p = p sin  + 1 p cos  r   y r

286

Techniques d’optimisation

Principe du minimum faible Développons la formule (4.20) à l’ordre 2 par rapport à u pour exprimer la variation seconde du coût augmenté. T

t 1 f  x   H xx H ux   x   Ja =        dt 2 t 0  u   H xu H uu   u  2

(4.29)

Les variations d’état x(t) suivent l’équation d’état linéarisée : x = f x x + fu u Une condition nécessaire d’optimalité d’ordre 2 est : 2 J a  0 , u On verra dans la section 4.4.2 que cela impose : (4.30)

Huu  0 , t

Cette condition associée à (4.21) montre que la commande optimale u* réalise un minimum local de l’hamiltonien à chaque temps. Ce résultat moins fort que le PMP (minimum global) constitue le principe du minimum faible. L’approche variationnelle est appliquée en mécanique pour dériver les équations de Lagrange dans le cas d’un système non conservatif.

Application à la mécanique : équations de Lagrange (d’après [R3] et [R13]) Les équations de Lagrange en mécanique s’établissent en utilisant les techniques variationnelles précédentes. Pour un système conservatif, on utilise le principe de moindre action. Pour un système non conservatif, on utilise le principe des travaux virtuels. Système conservatif Considérons un système défini par un vecteur d’état q (coordonnées généralisées). Pour un système conservatif, les forces dérivent d’un potentiel. L’énergie potentielle notée V(q) est fonction des coordonnées. L’énergie cinétique notée T(q,q) est fonction des coordonnées et de leurs dérivées (ou vitesses). On définit à partir de V(q) et T(q,q) les grandeurs suivantes : L(q,q) = T(q,q) − V(q) - le lagrangien du système : H(q,q) = T(q,q) + V(q) - l’hamiltonien du système : (« hamiltonien mécanique » ou énergie) tf

- l’action entre t0 et tf : S =  L(q,q)dt t0

Contrôle optimal

287

Le principe de moindre action postule que la trajectoire q(t) minimise l’action. tf

minS =  L(q,q)dt q

t0

En posant u = q , on formule un problème de contrôle équivalent. tf

minS =  L(q,u)dt sous q = u u

t0

L’hamiltonien « de contrôle » associé à ce problème est noté Hc .

Hc (q,u,p) = L(q,u) + pT u L  Hc  +p=0 min u d  L  L u  L’application du PMP donne :   = dt  u  q p = − Hc = − L q q  En revenant à q = u , on obtient les équations de Lagrange :

d  L  L  = dt  q  q

Exprimons maintenant l’hamiltonien de contrôle en fonction de V et T avec :

p=−

L L =− u q

L T = (T − V) − u T car L(q,u) = T(q,u) − V(q) u u L’énergie cinétique étant une forme quadratique par rapport à la vitesse, on a : T T qT = 2T  u T = 2T q u On obtient : Hc = (T − V) − 2T = − (T + V) = −H . L’hamiltonien de contrôle est l’opposé de l’hamiltonien mécanique qui représente l’énergie. Ce signe vient du choix p0 = +1 (remarque 3 sur le Théorème 4-1). Hc = L + pT u = L − u T

Système non conservatif Pour un système non conservatif, les forces notées Q(q) ne dérivent pas d’un potentiel et le principe de moindre action ne s’applique pas. qf

T Le travail des forces s’exprime par : W =  Q(q) dq et dépend du chemin suivi q0

entre q0 et qf .

288

Techniques d’optimisation

Le principe des travaux virtuels postule que la trajectoire q(t) est telle que :

 tf  tf    T(q,q)dt  +  Q(q)T qdt = 0 , q , q t  t 0  0

Le premier terme est la variation d’énergie cinétique due aux variations q et q. Le deuxième terme est le travail associé au déplacement q . Le déplacement q est quelconque (virtuel) indépendamment des caractéristiques du système. tf

En développant à l’ordre 1 :

 ( T q + T q + Q q ) dt = 0 T q

T q

T

et en posant q = u

t0 tf

on se ramène à :

 ( T q + T u + Q q ) dt = 0 T q

T u

T

sous q = u .

t0

Appliquons la méthode variationnelle en introduisant un adjoint p associé à la contrainte q = u . On ajoute la contrainte avec son adjoint dans l’intégrale. tf

 T q + T u + Q q + p T q

t0

T u

T

T

(u − q)  dt = 0

Puis on intègre par parties. tf

 ( T

u

t0

T T + p ) u + ( Tq + Q + p ) q  dt + (pq) t 0 − (pq) t f = 0 

Pour annuler le terme en q , on impose à l’adjoint de vérifier : Tq + Q + p = 0 . L’intégrale doit s’annuler pour une variation u quelconque : Tu + p = 0 . En combinant ces deux équations et avec q = u , on obtient :

d  T  T =Q.  − dt  q  q

Ces équations de Lagrange déduites du principe des travaux virtuels généralisent celles obtenues pour un système conservatif à partir du principe de moindre action. Dans le cas d’un système conservatif : Q = −Vq , on retrouve en effet :

d  T  (T − V) L L T = = avec L(q,q) = T(q,q) − V(q)   = dt  q  q q q q

Contrôle optimal

289

Paramètres Supposons que le système dépend de la commande u(t) et de paramètres réels . Le problème de contrôle hybride se formule comme : tf

min J(u) =  L(x,u, t, )dt + (x f , ) avec x = f (x,u, t, ) u,

(4.31)

t0

L’objectif est ici d’écrire des conditions d’optimalité associées aux paramètres  Pour cette raison, on ne précise pas si les conditions initiales et finales sont libres ou fixées. Le traitement de ces conditions reste identique à (4.17). L’hamiltonien et l’adjoint sont définis comme en (4.14) et (4.19).

H(x,u,p, t, ) = L(x,u, t, ) + p Tf (x,u, t, )  p = − H x Appliquons des variations de commande u(t) et de paramètres  . La variation première du coût augmenté J a (4.16) est alors donnée par : T

 tf  T J a =  H u udt +   H  dt +    t  t0  0  tf

(4.32)

(4.33)

Démonstration Appliquons des variations u(t), x(t),  au coût augmenté défini par (4.16). tf

J a =   H(x,u,p, t, ) + pT x  dt + p(t 0 ) T x(t 0 ) − p(t f ) T x(t f ) + (x f , ) t0

On développe chaque terme à l’ordre 1 (en ignorant les variations des conditions initiales et finales). tf

J a =  (HTx x + HTu u + HT + pTx)dt + T t0

 tf T  T Avec le choix p = −Hx , il reste : J a =  H udt +   Hdt +    . t  t0 0  tf

T u

La formule (4.33) permet d’exprimer des conditions nécessaires d’optimalité d’un problème de contrôle avec des paramètres.

290

Techniques d’optimisation

Si la commande u(t) est optimale, alors Ja = 0 , u , ce qui impose :

Hu = 0 , t

(4.34)

Si les paramètres  sont optimaux, alors Ja = 0 ,  , ce qui impose : tf

 H dt +  



=0

(4.35)

t0

Chaque paramètre donne une équation (4.35) qui vient compléter les équations (4.22) et (4.23) associées aux conditions initiales et finales (si libres). La formule (4.33) est également intéressante lorsque les réels  sont des paramètres fixés du système dynamique. La trajectoire optimisée pour des valeurs nominales  donne une commande u* et un coût optimal J* . La dérivée du coût optimal par rapport à ces paramètres est alors donnée par : t

J * f = H dt +   t0

(4.36)

où l’intégrale est calculée sur la trajectoire optimale associée à la commande u* . Cette formule permet d’évaluer l’effet au premier ordre d’incertitudes de modèle, sans résoudre à nouveau le problème de contrôle avec des paramètres  +  .

Paramètres de modèle On examine ici une méthode alternative pour démontrer la condition (4.35), ainsi que son utilisation pour traiter un problème à temps final libre. Composante d’état supplémentaire Une méthode alternative pour démontrer (4.35) consiste à ajouter une composante d’état x n+1 associée au paramètre  . L’équation d’état de cette composante est :

x n+1 = 0 , x n+1 (t 0 ) =  . En remplaçant  par x n+1 , le problème (4.31) se met sous la forme : tf

x1:n = f (x1:n ,u, t) min J(u) =  L(x1:n +1 ,u, t)dt + [x1:n (t f ), x n +1 (t 0 )] avec  x n +1 = 0 t0 L’adjoint pn +1 associé à x n+1 suit l’équation : pn+1 = −Hxn+1 = −H . u,x n +1 (t 0 )

Contrôle optimal

291

Les conditions de transversalité sur l’adjoint pn +1 sont : - pn+1 (t 0 ) = −xn+1 (t 0 ) = − , car x n +1 (t 0 ) est libre ; - pn+1 (t f ) = xn+1 (t f ) = 0 ,

car x n +1 (t f ) est libre et  n’en dépend. tf

En intégrant de t 0 à t f , on a : pn +1 (t f ) = pn +1 (t 0 ) +  pn +1dt t0

tf

  +  Hdt = 0 t0

On retrouve bien la condition d’optimalité (4.35) sur  .

Temps final libre Le temps final libre peut être optimisé en effectuant le changement de variable : t − t0 t − t0 = = → dt = d tf − t0  Le temps normalisé  varie de 0 à 1. Le paramètre  est à optimiser. Le problème de contrôle est alors à temps final fixé f = 1 et se formule comme : f

min J =  L(x,u, t 0 + ) d + (x f , t 0 + f ) avec u,

0

dx =  f (x,u, t 0 + ) d

T L’hamiltonien est : H(x,u,p, t, ) = L(x,u, t 0 + ) + p  f (x,u, t 0 + )

La condition d’optimalité (4.35) sur le paramètre  est :

f

H



  d +  = 0 .

0

Calculons les dérivées partielles de l’hamiltonien et du coût final par rapport à .

dH H = démontré plus bas (4.44) dt t H L f H dH d = L + pT f +  + pT = H +  = H + (t − t 0 ) = (t − t 0 )H   t t t dt dt



Dérivée de l’hamiltonien en utilisant

f

t

f H H dt 1 t −t t d  = = (t − t 0 )Htf = f 0 H(t f ) = H(t f ) qui s’intègre en :   0      0 t0

• Dérivée du coût final   = (t f ) car  = t f − t 0  t

 (t f ) = 0 . t On retrouve la condition de transversalité (4.23) associée au temps final libre. Avec ces dérivées, la condition d’optimalité sur  donne : H(t f ) +

292

Techniques d’optimisation

4.1.4 Problème aux deux bouts Considérons un problème de contrôle à temps final libre. t

f x = f (x,u, t) min J(u) =  L(x,u, t)dt + (x f , t f ) avec  u,t f x(t 0 ) = x 0 t0

(4.37)

Les équations d’état et les équations adjointes forment un système hamiltonien.

 x = H p  p = − H x

avec H = L + pT f

(4.38)

La commande optimale est déterminée en minimisant l’hamiltonien.

H u = 0 (4.39)   → u *(x,p, t) u Huu  0 Les conditions initiales portent sur l’état et les conditions finales sur l’adjoint. min H(x,u,p, t)

x(t 0 ) = x 0  p(t f ) = x (x f , t f )

(4.40)

Si le temps final est libre, on a la condition finale supplémentaire :

H(t f ) = −t (x f , t f )

(4.41)

Les conditions initiales et finales forment les conditions de transversalité. La trajectoire optimale est obtenue en intégrant (4.38) avec la commande déterminée à chaque temps par (4.39). La difficulté provient des conditions aux extrémités (4.40) : l’état initial x(t 0 ) est connu, mais pas l’adjoint p(t 0 ). Il faut trouver cet adjoint initial de façon à satisfaire la condition finale sur p(t f ). Les inconnues du problème sont : - l’adjoint initial p(t 0 ) , soit n composantes ; - le temps final t f (si libre).

Les conditions à vérifier sont : - la condition de transversalité sur l’adjoint final p(t f ) , soit n conditions ;

- la condition de transversalité sur l’hamiltonien final H(t f ) (si t f est libre). Ce problème aux deux bouts (Two Point Boundary Value Problem, TPBVP) à n + 1 inconnues et n + 1 équations est schématisé sur la Figure 4-4.

Contrôle optimal

293

Figure 4-4 : Problème aux deux bouts Les conditions d’optimalité d’un problème de contrôle conduisent systématiquement à un problème aux deux bouts, avec une partie des conditions sur (x, p) exprimées au temps initial et l’autre partie exprimée au temps final. Les méthodes de résolution de ce type de problème sont présentées au chapitre 5. Dans certains cas, l’existence d’une intégrale première simplifie la résolution. Intégrale première Calculons la dérivée totale de l’hamiltonien le long de la trajectoire optimale.

dH H dx H du H dp H (x,u,p, t) = + + + dt x dt u dt p dt t

(4.42)

En utilisant les équations (4.38) et (4.39) :

H dp H dx H =− , = , =0 x dt p dt u

(4.43)

la dérivée totale se réduit à :

dH H (4.44) = dt t Dans le cas fréquent d’un système autonome, la dynamique (fonction f) et le coût (fonction L) ne dépendent pas explicitement du temps. On a alors : H (4.45) =0 t Dans ce cas, l’hamiltonien est constant le long de la trajectoire optimale et représente une intégrale première (grandeur constante sur la trajectoire). Si le temps final est libre, sa valeur est donnée par la condition de transversalité (4.41). H(x,u,p, t) = L(x,u) + pTf (x,u) 

H(t) = H(t f ) = −t (xf ,t f )

(4.46)

294

Techniques d’optimisation

Problème de temps minimal Le problème de rejoindre une cible en temps minimal se formule comme : tf

x = f (x,u, t) min J =  1dt avec  u,t f x(t 0 ) = x 0 t0

(4.47)

La condition de transversalité (4.41) donne : H(t f ) = 0 . Si le système est autonome, l’hamiltonien est constant sur toute la trajectoire. (4.48)

H = 1 + pT f (x,u) = 0 , t

Cette relation entre x et p peut remplacer une condition finale, ce qui simplifie la résolution du problème aux deux bouts. Les deux exemples qui suivent illustrent la résolution d’un problème de temps minimal en dimension 2. Le premier exemple concerne un problème de navigation dans un courant fluide.

Exemple 4-3 : Navigation dans un courant fluide (d’après [R3]) On considère la trajectoire plane d’un véhicule dans un fluide en mouvement, par exemple un avion en présence de vent ou un bateau en présence de courant. Modélisation Les hypothèses sur le mouvement sont les suivantes. • La vitesse e du fluide est fonction de la position (vitesse d’entraînement). • La vitesse w du véhicule par rapport au fluide est de module w constant • La commande est l’orientation  de la vitesse relative. La Figure 4-5 montre les vitesses relative w , absolue va et d’entraînement e.

 u(x, y)    v(x, y) 

Vitesse d’entraînement du fluide : e = 

 cos   w = w   sin    x = w cos  + u(x, y) Équations d’état :   y = w sin  + v(x, y) Vitesse relative du véhicule :

Figure 4-5 : Vitesse relative et absolue

Contrôle optimal

295

Problème de contrôle L’objectif est de revenir à l’origine O en temps minimal à partir d’une position donnée (x 0 ; y0 ) . La vitesse finale est libre. Le problème se formule comme : tf

x(t f ) = 0 x = w cos  + u min J =  1 dt avec  et  ,t f  y = w sin  + v  y(t f ) = 0 t0 Application du PMP L’hamiltonien est : H = 1 + p(w cos  + u) + q(w sin  + v) avec l’adjoint (p,q) . L’application du PMP donne : min H → H = −psin  + qcos  = 0 

H(t) = H(t f ) = 0 (temps minimal) p = − H x = − pu x − qv x Les équations adjointes sont :  q = − H y = − pu y − qv y Le système est autonome :

Détermination de la commande et de la trajectoire On cherche à exprimer la commande en fonction de la position. Utilisons les deux équations sur H pour exprimer l’adjoint (p,q) en fonction de la commande  .

H = 0 p(w cos  + u) + q(w sin  + v) = −1    − q cos  = 0 psin  H  = 0 pW = − cos    avec W = w + u cos + vsin  qW = − sin 

pW + pW =  sin  pW = − cos  →  qW + qW = − cos  qW = − sin  p = − H x = − pu x − qv x (équations adjointes)  q = − H y = − pu y − qv y Wu x cos  + Wv x sin  − Wcos  = W sin   Wu y cos  + Wv y sin  − Wsin  = −W cos   = v x sin 2  + (u x − v y )sin  cos  − u y cos 2 

En dérivant ces équations :  avec (p,q) donnés par : on obtient le système : Puis on élimine W :

La trajectoire optimale est obtenue en intégrant le système différentiel en (x, y, ).

 x = w cos  + u(x, y)   y = w sin  + v(x, y)  2 2  = v x sin  + (u x − v y )sin  cos  − u y cos 

296

Techniques d’optimisation

Les conditions initiales (x 0 ; y0 ) sont données. On cherche la commande initiale

0 telle que la trajectoire passe par l’origine O.

Examinons deux cas particuliers simples permettant une résolution analytique. Cas d’un courant constant Si u et v sont constants, les dérivées u x ,u y ,vx ,v y sont nulles et l’équation en  se réduit à  = 0 . La solution :  = 0 = Cte correspond à une trajectoire en ligne droite dirigée vers l’origine. Cas d’un courant parallèle à (Ox) et linéaire en fonction de y : u = cy , v = 0 L’équation en  s’intègre. d  = −u y cos 2  = −ccos 2   = −cdt  tan  = tan f + c(t f − t) cos2  La commande (t) suit une loi tangente linéaire en fonction du temps. On écrit les équations du mouvement en passant en variable  au lieu de t. d d = −ccos2   dt = − Changement de variable : dt ccos2  Équation en y :

dy = w sin  dt Équation en x :



dy w sin  w 1 1  =−  y=  −  2 d ccos  c  cos f cos  

dx dx w w  1 1  = w cos  + cy  =− − −  2  dt d ccos  ccos   cos f cos   Cette équation différentielle s’intègre analytiquement. On obtient après calculs (longs) :

 w  tan  − tan f  1  1  1  1   + tan   − x =   + ln  tan  +   − ln  tan f + cos   cos f     2c  cos f  cos f cos     1   w 1  y = c  cos  − cos   f    Les conditions initiales (x 0 ; y0 ) permettent de déterminer les inconnues (0 ; f ) en résolvant un système non linéaire de dimension 2.

Contrôle optimal

297

Application numérique La Figure 4-6 montre l’application pour un courant défini par : u = − y , v = 0 . Les conditions initiales sont : x 0 = y0 = −4,5m .

La solution : 0 = 98,8 deg , f = 240,0 deg donne un temps final : t f = 8,2s . Les flèches indiquent la direction de la vitesse relative toutes les secondes.

Figure 4-6 : Trajectoire optimale dans un courant linéaire

Le deuxième exemple est un problème de double intégrateur en dimension 2.

Exemple 4-4 : Double intégrateur en dimension 2 (d’après [R3]) On considère une trajectoire plane commandée en accélération. Modélisation Les hypothèses sur le mouvement sont les suivantes. • L’accélération a est de module constant. • La commande est la direction u de l’accélération orientée par un angle .

298

Techniques d’optimisation

Position : Vitesse : Commande : Accélération :

x → r =v r =  y  vx  v =  → v=a  vy   cos   u =   sin   a = au Figure 4-7 : Modèle de double intégrateur

Problème de contrôle L’objectif est de revenir et s’arrêter en O en temps minimal à partir de conditions initiales données (r0 ;v0 ) . Le problème se formule comme : tf

min J =  1 dt u,t f

t0

r = v  r(t 0 ) = r0  r(t ) = 0  avec  ,  ,  f   v(t f ) = 0  v(t 0 ) = v0  v = au

Application du PMP L’hamiltonien est : H = 1 + pr .v + apv .u avec l’adjoint de composantes (pr ;pv ). L’application du PMP donne : min H u

→ u=−

pv pv

(vecteur unitaire).

 p r = −H r = 0 → p r = B Les équations adjointes sont :   p v = −H v = −pr → p v = B(t f − t) + A avec des vecteurs A et B constants Détermination de la commande et de la trajectoire On remplace les adjoints dans l’expression de u et on en déduit l’angle  . u A + By (t f − t) p A + B(t f − t) → tan  = y = y u=− v =− pv u x A x + Bx (t f − t) A + B(t f − t) La commande (t) suit une loi tangente bilinéaire en fonction du temps. Pour intégrer la trajectoire, on se ramène à une loi tangente linéaire équivalente. A + By (t f − t) tan  = y  tan( − ) = tan(f − ) + e(t f − t) A x + Bx (t f − t)

Contrôle optimal

299

Les constantes relations entre (Ax ,Ay ,Bx ,By ) et ( ,e, 0 , f ) sont déterminées en développant tan( − ) et en identifiant les termes.

A x = 1 − tan(f − ) tan  A = tan( − ) + tan  tan(f − ) + tan  + e(t f − t) f  y tan  = →  1 − tan(f − ) tan  − e(t f − t) tan  Bx = − e tan  By = e  On écrit les équations du mouvement en passant en variable  au lieu de t. Le changement de variable est défini par : d tan( − ) = tan(f − ) + e(t f − t)  dt = − 2 ecos ( − ) On note pour les calculs qui suivent : - (x , y) les composantes cartésiennes de position ; - (u , v) les composantes cartésiennes de vitesse ; - (x , y, u , v) les dérivées par rapport à t ; - (x ', y',u ', v') les dérivées par rapport à  .  x = u , u = a cos  d À partir des équations en t :  et avec dt = − 2 ecos ( − )  y = v , v = a sin  −u −a cos    x ' = ecos 2 ( − ) , u ' = ecos 2 ( − )  on obtient les équations en  :  −v −a sin  y ' = , v' = 2  ecos ( − ) ecos 2 ( − )  Ces équations s’intègrent analytiquement. On obtient après calculs (longs) : a a  x − x f = 2 (f x cos  − f y sin ) − u f (t f − t) , u − u f = (f u cos  − f v sin )   e e   y − y = a (f sin  + f cos ) − v (t − t) , v − v = a (f sin  + f cos ) f x y f f f u v  e2 e  f x = − f u tan( − ) + f v  f y = − 1 f u − 1 f v tan( − ) + 1 tan(f − ) − tan( − )  2 2 2 cos(f − )  avec  1 1 f u = ln tan(f − ) + cos( − ) − ln tan( − ) + cos( − ) f   1 1 − f v = cos(f − ) cos( − ) 

300

Techniques d’optimisation

Les valeurs courantes (x, y,u, v, ) le long de la trajectoire sont ainsi exprimées en fonction des valeurs finales (xf , yf ,u f , vf , f ) , du temps final t f et des constantes  et e. Conditions finales L’objectif est de revenir à l’origine (xf = yf = 0) et de s’y arrêter (u f = vf = 0) . Avec ces conditions finales, les équations de la trajectoire se simplifient en : a a  x = 2 (f x cos  − f y sin ) , u = (f u cos  − f v sin )   e e   y = a (f sin  + f cos ) , v = a (f sin  + f cos ) x y u v  e2 e  avec (f x ,f y ,f u ,f v ) exprimés en fonction de ( −  , f − ) . Plaçons-nous en un point quelconque (x, y,u, v) . Les équations ci-dessus forment un système de dimension 4 dont les inconnues sont ( ,e, f , ) . Réduction du système Pour résoudre ce système, on passe en coordonnées polaires. La position r est repérée par (r; ) : - r est le rayon polaire ; -  est appelé angle de visée. La vitesse v est repérée par (w;  ) : - w est le module de la vitesse ; -  est l’angle de la vitesse avec la ligne de visée. Figure 4-8 : Coordonnées polaires Le passage en coordonnées polaires est défini par :  x = r cos  , u = w cos ( +  )   y = r sin  , v = w sin ( +  ) Exprimons à partir de (x, y,u, v) les deux grandeurs

w2 et  . ar

Contrôle optimal

301

a   w2 f u2 + f v2 x = 2 (f x cos  − f y sin )  w2 u 2 + v2  = e  ar =  2 2  f x2 + f y2   ar a x + y a  y = (f sin  + f cos )  x y   xu + yv a2 f f + f f   e2 avec  → cos  = 3 x u y v cos  = rw e rw  u = a (f cos  − f sin )  u v 2 xv − yu    e a f f −f f sin  = 3 x v y u sin  = rw   a e rw   v = (f u sin  + f v cos )    e  (f ,f ,f ,f ) Les fonctions x y u v ne dépendent que des 2 inconnues ( −  , f − ) . On se ramène ainsi à un système non linéaire de dimension 2.  w2 f u2 + f v2  ar = 2 f x + f y2 où Atan2 désigne la fonction Arctan(x,y)     = Atan2( f x f u + f yf v , f x f v − f y f u ) Les valeurs de (w, r,  ) sont fonctions de (x, y,u, v) connus (point courant). La résolution numérique du système donne ( −  , f − ) .

a f u2 + f v2 tan( − ) − tan(f − ) et : t f − t = . e w La valeur de  s’obtient à partir de la condition de transversalité : H(t f ) = 0 . On en déduit ensuite : e =

H(t f ) = (1 + p r .v + ap v .u ) t = 1 − a A f

en utilisant vf = 0 , u = −

pv , p v = B(t f − t) + A pv

A x = 1 − tan(f − ) tan  A y = tan(f − ) + tan 

Le vecteur A a pour composantes : 

L’équation : H(t f ) = 1 − a A = 0 donne : cos  =

a cos(f − )

,

ce qui permet d’obtenir  à partir de (f − ) calculé plus haut. Application numérique −1   x = 10 m u = 0 m  s Les conditions initiales sont :  et  . −1 y = 4 m  v = 0,5 m  s

−2 L’accélération est : a = 0,1 m  s . La solution donne un temps final : t f = 24,13 s.

302

Techniques d’optimisation

La Figure 4-9 montre l’évolution de l’angle  . La courbe en pointillés est l’angle v = 180 +  −  entre la ligne de visée (vers O) et la direction de l’accélération. On observe une phase d’accélération vers l’origine (v  90) jusqu’à t  14 s , puis une phase de décélération (v  180) pour réduire la vitesse et s’arrêter à l’origine. La valeur de  pendant la décélération indique la direction d’approche de la cible (ici   50 ).

Figure 4-9 : Commande double intégrateur en dimension 2 La Figure 4-10 montre la position (x; y) et la vitesse (u;v) . On retrouve l’approche finale quasi rectiligne suivant l’angle   50 vu sur la Figure 4-9.

Figure 4-10 : Trajectoire double intégrateur en dimension 2

Contrôle optimal

303

w2 . Ces 2ar deux variables dépendent des coordonnées de position et vitesse (x, y,u, v) . L’angle  v = 180 −  (abscisse) entre la direction de la cible et la vitesse varie de 0° à 180°. Un angle  v  90 (resp.  v  90 ) indique un rapprochement (resp. La Figure 4-11 synthétise l’ensemble des solutions en fonction de  et

éloignement) de la cible. Le rapport

w2 (ordonnée) ou inverse varie de 0 à 1. 2ar

Figure 4-11 : Synthèse des solutions du double intégrateur Les courbes en traits pleins sont des trajectoires parcourues suivant les flèches (dans le sens horaire). Les courbes en traits pointillés sont des lignes de niveau de a(t f − t) . Un angle v  90 (respectivement v  90 ) v = 180 +  −  et de w indique une accélération vers (respectivement opposée à) la cible. Les trajectoires se terminent dans le quadrant en bas à gauche et convergent vers le point de coordonnées (0 ; 1) . Sur la phase d’arrivée proche de la cible :

w2  1 augmente ; 2ar - la vitesse est dirigée vers la cible : l’angle  v  90 décroît jusqu’à 0° (trajectoire rectiligne) ; - l’accélération est toujours opposée à la cible : v  90 (pour freiner). - la vitesse est faible et la distance décroît : le rapport

304

Techniques d’optimisation

Selon les conditions initiales, la trajectoire peut commencer par une phase d’accélération vers la cible : v  90 , avant la phase de décélération à l’arrivée décrite ci-dessus. Ceci se produit en particulier lorsque le point initial est dans le

 w2   1 et dirigée quadrant en haut à gauche, avec une vitesse initiale élevée   2ar  vers la cible ( v  90) .

4.2 Contraintes Cette section présente les conditions d’optimalité lorsque le problème de contrôle est soumis à divers types de contraintes ou de discontinuités.

4.2.1 Contraintes terminales Considérons un problème de contrôle avec des contraintes initiales et finales. tf

min J =  L(x, u, t)dt + (x 0 , t 0 , x f , t f ) avec x = f (x, u, t)

u,x 0 ,t 0 ,x f ,t f

et

t0

(4.49)

(x 0 , t 0 , x f , t f ) = 0

Les conditions initiales (x 0 ;t 0 ) et finales (x f ;t f ) peuvent varier, mais la solution doit respecter q contraintes de la forme : (x 0 ,t 0 ,x f ,t f ) = 0 .

On introduit comme en (4.10) l’adjoint p(t) et l’hamiltonien H(x,u,p, t) .

H(x, u, p, t) = L(x, u, t) + p Tf (x, u, t)   H p = − x 

(4.50)

La commande u(t) est obtenue en minimisant l’hamiltonien à chaque temps.

min H(x,u,p, t) → u(t) u

(4.51)

L’hamiltonien considéré ici est normal (on fait l’hypothèse : p0 = 1 ), ce qui exclut les extrémales anormales. On se restreint ici aux extrémales normales. On a alors les conditions nécessaires d’optimalité suivantes.

Contrôle optimal

305

Propriété 4-2 : Conditions nécessaires d’optimalité avec contraintes terminales Supposons que la commande u(t) définie par (4.51) est solution de (4.49). Alors il existe q multiplicateurs  associés aux q contraintes  = 0 tels que : •

Les contraintes terminales sont respectées :

(x0 ,t 0 ,xf ,t f ) = 0 •

L’adjoint initial (si x 0 libre) et l’adjoint final (si x f libre) vérifient :

p(t 0 ) = − x (t 0 ) −  x (t 0 )  p(t f ) = x (t f ) +  x (t f ) •

(4.52)

(4.53)

L’hamiltonien initial (si t 0 libre) et l’hamiltonien final (si t f libre) vérifient :

H(t 0 ) = t (t 0 ) +  t (t 0 )  H(t f ) = − t (t f ) −  t (t f )

(4.54)

Ces conditions forment un problème aux deux bouts. - Les q équations (4.52) sont associées aux inconnues  . - Les n conditions de transversalité sur p(t 0 ) sont associées aux inconnues x(t 0 ). - Les n conditions de transversalité sur p(t f ) sont associées aux inconnues x(t f ). - La condition de transversalité sur H(t 0 ) est associée à l’inconnue t 0 . - La condition de transversalité sur H(t f ) est associée à l’inconnue t f .

Démonstration On utilise la méthode variationnelle en ajoutant au coût augmenté (4.13) les q contraintes  avec des multiplicateurs  . La formule (4.16) devient : tf

J a =   H(x, u, p, t) + p T x  dt + p(t 0 ) T x(t 0 ) − p(t f ) T x(t f ) t0

+ (x 0 , t 0 , x f , t f ) +  T (x 0 , t 0 , x f , t f ) En appliquant des variations u(t), x(t), t 0 , t f au coût augmenté, on obtient

306

Techniques d’optimisation

la formule (4.17) avec des termes supplémentaires venant de  T (x 0 , t 0 , x f , t f ) .

J a =

tf

T

 H udt

+ x 0 +  x 0  + p(t 0 )  x 0 + t 0 +  t 0  − H(t 0 )  t 0

T u

t0 tf

T

+  (H x + p)T xdt + x f +  x f  − p(t f )  x f +  t f +  t f  + H(t f )  t f t0

La condition d’optimalité d’ordre 1 est : Ja = 0 , u, x 0 , t 0 , x f , t f .

Les variations u, x0 , t 0 , x f , t f étant indépendantes, leurs coefficients doivent être nuls. Ceci conduit au choix (4.50) pour éliminer x et à la condition Hu = 0 pour le terme en u . Les conditions de transversalité (4.53) et (4.54) éliminent les termes en (x0 ; xf ) et en (t 0 ; t f ) .

L’exemple suivant montre l’application à un problème de mise en orbite.

Exemple 4-5 : Mise en orbite (d’après [R3]) On considère une trajectoire commandée en accélération dans le plan vertical. Modélisation Les hypothèses sur le mouvement sont les suivantes. • La Terre est plate, la gravité g est constante et verticale. • •

L’orbite visée est définie par une altitude z c et une vitesse horizontale vc . L’accélération a de module constant est suivant u orienté par l’assiette  .

La Figure 4-12 montre la trajectoire dans le plan vertical (Oxz).

x y

Position : r =   → r = v

 vx   → v = g + au  vy 

Vitesse : v = 

 0   −g 

Gravité : g = 

 cos    , a = au  sin  

Commande : u = 

Figure 4-12 : Mise en orbite

Contrôle optimal

307

Problème de contrôle L’objectif est d’atteindre l’orbite en temps minimal en décollant à vitesse nulle. L’abscisse d’injection x(t f ) est libre. Le problème se formule comme :

z(t f ) = z c  r = v  r(t 0 ) = 0  min J =  1 dt avec  et  , v x (t f ) = v c u,t f  v(t 0 ) = 0  v (t ) = 0 t0  v = g + au  z f tf

Application du PMP L’hamiltonien est : H = 1 + pr .v + pv .(g + au) avec l’adjoint (pr ,pv ) . L’application du PMP donne : min H → u = − u

pr = −H r = 0

pv pv

(vecteur unitaire).

→ pr = B

Les équations adjointes sont : 

p v = −H v = −pr → p v = B(t f − t) + A

avec des vecteurs A et B constants L’abscisse d’injection x(t f ) étant libre, on a la condition de transversalité :

px (t f ) = 0  Bx = 0 .

Détermination de la commande et de la trajectoire On remplace les adjoints dans l’expression de u et on en déduit l’angle  .

u=−

pv A + B(t f − t) =− pv A + B(t f − t)

→ tan  =

uy ux

=

A y + By (t f − t) Ax

La commande (t) suit une loi tangente linéaire de la forme : tan  = tan 0 − ct. On écrit les équations du mouvement en passant en variable  au lieu de t.

dv  dv = −ccos 2  = g + au  d  dt d tan  = tan 0 − ct  dt = − →  2 ccos   dr = −ccos 2  dr = v  dt d On intègre d’abord les composantes de la vitesse en variable  .  a  1  a  1  a  dv x v x = ln  tan 0 +   − ln  tan  +  = −  d c  cos 0  c  cos    ccos  →   dv a sin  dt z   v = a  1 − 1  − gt =− −g 2   z  d  ccos  d c  cos 0 cos   

308

Techniques d’optimisation

On intègre ensuite les composantes de la position en variable  (calculs longs).

  a  1 1 1  1   − + tan  ln  tan  + x = 2    − tan  ln  tan 0 + c  cos 0 cos  cos   cos 0        a  tan 0 tan  2 tan  1  1   gt 2   z = + − + ln tan  + − ln tan  +    − 0   2  cos   cos 0   2    2c  cos 0 cos  cos 0 Conditions finales Les conditions finales portent sur vx , vz ,z avec la commande tan f = tan 0 − ct. On forme ainsi un système de dimension 4 dont les inconnues sont (0 , f ,t f ,c).

 tan f = tan 0 − ct f   v (t ) = a ln  tan  + 1  − a ln  tan  + 1  = v    c 0 f  x f c  cos 0  c  cos f    a 1 1    v z (t f ) = c  cos  − cos   − gt f = 0 0 f      a  tan 0 tan f 2tan f 1   1   gt f2 z(t f ) = 2  + − + ln  tan f + −  + ln tan = zc  −   0 2c  cos 0 cos f cos 0 cos f   cos 0   2   Réduction du système On élimine (c, t f ) avec les 2 premières équations. Il reste un système en (0 , f ).

a  1 1  −    = tan 0 − tan f  g  cos 0 cos f   1  1     tan 0 + tan 0 +    cos 0 2az c 2 cos 0   tan 0 tan f    =0 − − ln − ln  cos  cos  1  vc2 1    f 0 tan f + tan f +    cos f  cos f   La première équation donne 0 fonction de f (équation de degré 2 en cos0 ). Il reste une équation en f résolue numériquement. On en déduit 0 , puis t f par : 1    tan 0 + cos   v 0  = c (tan 0 − tan f ) t f ln   tan  + 1  a f  cos f 

Contrôle optimal

309

Application numérique

 z c = 200 km Les conditions finales visées sont :  (orbite circulaire à 200 km) −1  v c = 7 784 m  s La gravité vaut g = 9 m  s −2 . L’impulsion totale délivrée au cours de la trajectoire est donnée par : V = at f . Le tableau ci-contre donne les solutions obtenues pour des niveaux d’accélération de 2g, 3g et 5g. Une accélération plus forte réduit le temps final et diminue l’impulsion totale requise.

Accélération a = 2g a = 3g a = 5g 0 (°) 45,64 43,90 49,24 f (°) tf (s)

V (m/s)

11,46 −9,20 −31,75 509,5 319,1 195,4 9 171 8 616 8 792

Les trajectoires correspondantes sont tracées sur la Figure 4-13. Les flèches indiquent la direction de poussée sur la trajectoire à 3g.

Figure 4-13 : Trajectoire optimale de mise en orbite On s’intéresse ensuite à la détermination du niveau d’accélération minimisant l’impulsion totale V = at f . Le problème est résolu pour des niveaux d’accélération entre 1,5g et 6g et des orbites d’altitude 200, 300 et 400 km. La vitesse en orbite circulaire à l’altitude z c est donnée par : vc = g(R T + z c ) , avec R T = 6 378 km le rayon terrestre et g = 9 m  s la gravité moyenne. Les résultats tracés sur la Figure 4-14 page suivante montrent que l’accélération optimale dépend de l’altitude visée et que l’impulsion est assez sensible au niveau d’accélération, surtout si celui-ci est faible. −2

310

Techniques d’optimisation

Figure 4-14 : Impulsion requise fonction de l’altitude et de l’accélération

La Propriété 4-2 s’applique également pour une contrainte intégrale de la forme : tf

 g(x,u, t)dt = c

(4.55)

t0

Pour cela, on définit une variable d’état supplémentaire x n+1 telle que :

x n +1 (t 0 ) = 0 x n +1 = g(x,u, t) avec  x n +1 (t f ) = c L’hamiltonien et les équations adjointes deviennent :

(4.56)

T H(x1:n +1 ,u,p1:n +1, t) = L(x1:n ,u, t) + p1:n f (x1:n ,u, t) + p n +1g(x 1:n ,u, t)

p1:n = −H x1:n p1:n +1 = −H x1:n+1   te pn +1 = −H x n+1 = 0  p n +1 = C

(4.57)

L’adjoint pn +1 constant est une inconnue associée à la contrainte x n+1 (t f ) = c . Cette inconnue et l’équation associée complètent le problème aux deux bouts.

Contrôle optimal

311

4.2.2 Contraintes intérieures Considérons un système présentant une discontinuité à un temps t1 [t 0 ;t f ] . Une discontinuité d’état se traduit par un état différent à t1− et t1+ .

 x(t1− ) = x1− (4.58)  + +  x(t1 ) = x1 Une discontinuité de dynamique se traduit par un changement d’équation d’état. f − (x, u, t) si t 0  t  t1 f (x, u, t) =  + f (x, u, t) si t1  t  t f

(4.59)

La fonctionnelle de coût intégral peut également différer sur [t 0 ;t1[ et [t1 ;t f ] .

L− (x, u, t) si t 0  t  t1 L(x, u, t) =  + L (x, u, t) si t1  t  t f

(4.60)

On suppose par ailleurs que q contraintes sont à respecter au temps t1 . (4.61)

(x1− , x1+ , t1 ) = 0

Le problème de contrôle dit hybride avec ces contraintes intérieures (appelées aussi ponctuelles ou intermédiaires) se formule comme : t1−

tf

min J =  L (x, u, t)dt +  L+ (x, u, t)dt + (x1− , x1+ , t1 )

u,x1− ,x1+ ,t1

t0



t1+

 x = f − (x, u, t) si t 0  t  t1 avec  +  x = f (x, u, t) si t1  t  t f

(4.62)

et (x1− , x1+ , t1 ) = 0

− + Les variables (x1 , x1 , t1 ) sont à optimiser au même titre que la commande u(t) .

− + Les dérivées de  (ou  ) par rapport à x 1 ou x 1 sont notées :

 =  (t  )  noté x 1 . x1

− + L’objectif est ici d’écrire des conditions d’optimalité associées à (x1 , x1 , t1 ) .

Pour simplifier, on suppose qu’il n’existe qu’un seul point intérieur au temps t1 et on ne précise pas si les conditions terminales sont contraintes. Ces conditions terminales n’apparaissent ni dans le coût, ni dans les contraintes de (4.62). La généralisation à plusieurs points intérieurs et à des conditions terminales est discutée en page 314.

312

Techniques d’optimisation

On définit l’hamiltonien H − sur [t 0 ;t1[ et H + sur [t1 ;t f ] .

H − (x,u,p, t) = L− (x,u, t) + p Tf − (x,u, t) si t 0  t  t 1 (4.63) H(x,u,p, t) =  + + T + H (x,u,p, t) = L (x,u, t) + p f (x,u, t) si t 1  t  t f Les équations adjointes et la commande optimale sont définies sur chaque intervalle avec l’hamiltonien correspondant.

 H − p = −  x  + p = − H  x

, min H − (x, u, p, t) → u(t) si t 0  t  t1 u

(4.64)

, min H (x, u, p, t) → u(t) si t1  t  t f +

u

On a alors les conditions nécessaires d’optimalité suivantes. Propriété 4-3 : Conditions nécessaires d’optimalité avec contraintes intérieures Supposons que la commande u(t) définie par (4.64) est solution de (4.62). Alors il existe q multiplicateurs  associés aux q contraintes  = 0 tels que : - les contraintes intérieures sont respectées :

(x1− , x1+ , t1 ) = 0

(4.65)

− + - les adjoints à t1 et t1 vérifient :

p(t1− ) = x (t1− ) +  x (t1− )  + + + p(t1 ) = − x (t1 ) −  x (t1 )

(4.66)

− + - les hamiltoniens à t1 et t1 vérifient :

H+ (t1+ ) − H − (t1− ) = t (t1 ) +  t (t1 )

(4.67)

Ces conditions forment un problème aux deux bouts. - Les q équations (4.65) sont associées aux inconnues  . − − - Les n conditions de transversalité sur p(t1 ) sont associées aux inconnues x(t1 ). + + - Les n conditions de transversalité sur p(t1 ) sont associées aux inconnues x(t1 ).  - La condition de transversalité sur H(t1 ) est associée à l’inconnue t1 .

Contrôle optimal

313

Cas d’un état continu Si l’état est continu : x(t1+ ) = x(t1− ) = x(t1 ) , la condition (4.66) est remplacée par : (4.68)

p(t1+ ) − p(t1− ) = − x (t1 ) −  x (t1 )

Ces n conditions de transversalité sur p(t1 ) sont associées aux n inconnues x(t1 ). L’adjoint subit une discontinuité liée à la contrainte, bien que l’état soit continu.

Démonstration On utilise la méthode variationnelle en ajoutant au coût augmenté (4.13) les q contraintes  avec des multiplicateurs  . En intégrant par parties sur chaque + − intervalle [t 0 ;t1 ] et [t1 ;t f ] , la formule (4.16) devient : t1−

 H

Ja =

t0



(x, u, p, t) + p T x  dt + p(t 0 ) T x(t 0 ) − p(t 1− ) T x(t 1− ) +  T (x 1− , x 1+ , t 1)

tf

+   H + (x, u, p, t) + p T x  dt + p(t1+ ) T x(t1+ ) − p(t f ) T x(t f ) + (x 1− , x 1+ , t 1) + t1

− + En appliquant des variations u(t), x(t), x1 , x1 , t1 au coût augmenté, on

+ − obtient l’équivalent de la formule (4.17) sur chaque intervalle [t 0 ;t1 ] et [t1 ;t f ] . − − Sur [t 0 ;t1 ] , les variations en t1 équivalent à des variations finales (x f , t f ) . + + Sur [t1 ;t f ] , les variations en t1 équivalent à des variations finales (x 0 , t 0 ) .

T − − + + On y ajoute les variations venant de  (x1 , x1 , t1 ) et (x1 , x1 , t1 ) pour obtenir :

J a =

t1−

H

t0

−T u

t1−

tf

tf

udt +  (H + p) xdt +  H udt +  (H +x + p) T xdt − x

T

t1+

t0

+T u

t1+

T

+ x (t1− ) +  x (t1− ) − p(t1− )  x1− +  t1  + H(t1− )  t1 T

+ x (t1+ ) +  x (t1+ ) + p(t1+ )  x1+ + t1 − H(t1+ )  t1 − + La condition d’optimalité d’ordre 1 est : J a = 0 , u(t), x(t), x1 , x1 , t1 . Les variations u(t), x(t), x1 , x1 , t1 étant indépendantes, leurs coefficients doivent être nuls. Ceci conduit à (4.64) pour éliminer x et à Hu = 0 pour le terme en u . −

+

− + Les conditions (4.66) et (4.67) éliminent les termes en (x1 ; x1 ) et en t1 .

314

Techniques d’optimisation

Cas d’un état continu Si l’état est continu en t1 , les variations sont égales : x1− = x1+ = x1 . Le terme en x1 vient de l’intégration par parties et de T (x1 , t1 ) et de (x1 , t1 ). T

+ − Son expression :  p(t1 ) − p(t1 ) + x1 +  x1   x1 conduit à la condition (4.68).

Les conditions (4.66-67) sont appelées conditions de saut, car elles génèrent des discontinuités sur l’adjoint et l’hamiltonien, et par conséquent sur la commande. La généralisation à plusieurs points intérieurs à t1 ,t 2 , ,t k est immédiate. − + − + - Les contraintes sont de la forme : (x1 , x1 , t1 , x 2 , x 2 , t 2 ,

, x k− , x k+ , t k ) = 0 .

(x1− , x1+ , t1 , x −2 , x +2 , t 2 , , x −k , x +k , t k ) . - Le coût intégral est décomposé en k intervalles avec des fonctions Lk et f k . - Le coût final est de la forme :

− + Au temps t k , les conditions (4.65-67) sont associées aux inconnues (x k , x k , t k ) .

Les conditions (4.66) et (4.67) permettent également de retrouver les conditions de transversalité (4.53) et (4.54) associées à des contraintes terminales.

p(t 0 ) = − x (t 0 ) −  x (t 0 ) .  H(t 0 ) = t (t 0 ) +  t (t 0 ) p(t f ) = x (t f ) +  x (t f )  t1− → t f Au temps final, en posant :  − , on a :  .  x1 → x f H(t f ) = − t (t f ) −  t (t f )  t1+ → t 0 , on a : +  x1 → x 0

Au temps initial, en posant : 

L’exemple suivant montre l’effet des conditions de saut dans des cas simples.

Exemple 4-6 : Conditions de saut On suppose que le coût final  ne dépend pas des conditions en t1 . 1er cas : Supposons que l’état présente une discontinuité fixée à un temps t1 libre. − + + − La contrainte intérieure est de la forme : (x1 , x1 , t1 ) = x1 − x1 − c = 0 . Les conditions (4.66-67) donnent :

H(t1+ ) − H(t1− ) =  t (t1 ) = 0 H(t1+ ) = H(t1− )  + + p(t ) = − (t )  = −    1  + x 1 − p(t1 ) = p(t1 ) p(t1− ) =  x (t1− ) = −   L’hamiltonien et l’adjoint sont continus à t1 . La contrainte ne génère pas de saut.

Contrôle optimal

315

2e cas : Supposons que l’état présente une discontinuité fixée à t1 =  fixé.

1 (x1− , x1+ , t1 ) = x1+ − x1− − c = 0 − +  2 (x1 , x1 , t1 ) = t1 −  = 0

Les deux contraintes intérieures sont de la forme :  Les conditions (4.66-67) donnent :

H(t1+ ) − H(t1− ) = 1,t (t1 )1 +  2,t (t1 ) 2 =  2 H(t + ) = H(t1− ) +  2  + + +   +1 p(t1 ) = −1,x (t1 )1 −  2,x (t1 ) 2 = −1 − p(t1 ) = p(t1 ) p(t − ) =  (t − ) +  (t − ) = − 1,x 1 1 2,x 1 2 1  1 L’adjoint est continu, mais l’hamiltonien est discontinu. 3e cas : Supposons que l’état est continu et que la contrainte ne dépend pas explicitement de t1 . La contrainte intérieure est de la forme : (x1 ) = 0 et le temps t1 est libre. Les conditions (4.66-67) donnent :

H(t1+ ) − H(t1− ) =  t (t1 ) = 0 H(t1+ ) = H(t1− )   +  + − − p(t1 ) = p(t1 ) −  x (t1 ) p(t1 ) − p(t1 ) = −  x (t1 )

L’hamiltonien est continu, mais l’adjoint est discontinu.

4.2.3 Contraintes courantes Considérons un problème de contrôle avec des contraintes égalité et inégalité. tf

min J =  L(x, u, t)dt + (x f ) avec x = f (x, u, t) u

t0

 E (x, u, t) = 0 et  , t  I (x, u, t)  0

(4.69)

Les qE contraintes égalité  E et les qI contraintes inégalité  I sont appelées des contraintes courantes. Elles doivent être respectées en tout point de la trajectoire. Le principe du minimum (Théorème 4-1) s’applique alors sous la forme :

 E (x, u, t) = 0 min H(x, u, p, t) sous  u  I (x, u, t)  0

→ u *(t)

L’hamiltonien est minimisé sous les contraintes E = 0 et I  0 .

(4.70)

316

Techniques d’optimisation

Ce problème d’optimisation sous contraintes est à résoudre à chaque temps. En introduisant les multiplicateurs de Lagrange  E et I associés respectivement

aux contraintes  E et  I , on forme le lagrangien du problème (4.70). Ce lagrangien est appelé ici hamiltonien augmenté et il est noté H a pour ne pas le confondre avec la fonction du coût intégral L(x,u, t) .

Ha (x,u,p, t,  E ,  I ) = H(x,u,p, t) +  TE  E (x,u, t) +  TI  I (x,u, t)

(4.71)

Les conditions KKT d’ordre 1 du problème (4.70) sont :

 E (x, u, t) = 0  (x, u, t)  0 H a  I = 0 et  u  I  0 si  I = 0  = 0 si   0 I  I

(4.72)

Une contrainte inégalité inactive au temps t a son multiplicateur nul. Le système (4.72) est à résoudre à chaque temps pour trouver la commande u*(t).

Ha =0. u - Les qE multiplicateurs  E sont associés aux qE équations E (x,u,t) = 0 . - Les qI multiplicateurs I sont nuls ou associés aux qI équations I (x,u,t) = 0. - Les m composantes de u* sont associées aux m équations

L’exemple suivant est un double intégrateur avec des bornes sur la commande.

Exemple 4-7 : Double intégrateur en dimension 1 On considère un point matériel se déplaçant sur une droite. L’état est composé de la position r et de la vitesse v. La commande est l’accélération u entre −1 et +1.

r = v . v = u

Les équations d’état sont : 

Problème de contrôle L’objectif est de revenir et s’arrêter en O en temps minimal à partir de conditions initiales (r0 , v0 ) . Le problème de contrôle en temps minimal se formule comme : tf

r(t f ) = 0 r = v r(t 0 ) = r0 min J =  1 dt avec  ,  ,  , − 1  u  +1 u,t f v = u v(t 0 ) = v0 v(t f ) = 0 t0

Contrôle optimal

317

Application du PMP L’hamiltonien est : H = 1 + pr v + pvu avec l’adjoint de composantes (pr ,pv ) .

−1 si p v  0 +1 si p v  0

L’application du PMP donne : min H sous − 1  u  +1 → u =  u

Cette commande est de type bang (u = 1) avec une fonction de commutation définie par l’adjoint pv .

p r = −H r = 0 → p r = b p v = −H v = −pr → p v = b(t f − t) + a

Les équations adjointes sont : 

avec des constantes a et b Détermination de la commande et de la trajectoire L’adjoint pv linéaire en fonction du temps change de signe au plus une fois. La trajectoire se compose au plus de deux arcs commandés avec u = 1 . Intégrons les équations de chaque arc avec leur commande respective. • Le premier arc part de l’état initial (t 0 ,r0 ,v0 ) avec la commande u 0 = 1 .



 v = v0 + u 0 (t − t 0 ) v = u 0   v 2 − 2u 0 r = v02 − 2u 0 r0  2 r = r0 + v0 (t − t 0 ) + u 0 (t − t 0 ) / 2 r = v Le deuxième arc arrive à l’état final (t f ,rf ,vf ) avec la commande u f = 1 .

 v = vf + u f (t − t f ) v = u f   v 2 − 2u f r = v f2 − 2u f rf = 0  2 r = rf + vf (t − t f ) + u f (t − t f ) / 2 r = v Ces arcs sont représentés par des arcs de parabole dans le plan de phase (r , v) . − 2 Si u f = −1 , l’arc final est sur la parabole  : v = −2r (quadrant r  0, v  0 ). + 2 Si u f = +1 , l’arc final est sur la parabole  : v = +2r (quadrant r  0, v  0 ).

La courbe  formée des demi-paraboles − et + est la courbe de commutation. 2

Cette courbe  d’équation : v sgn(v) = −2r est tracée en traits pleins sur la Figure 4-15 page suivante. Elle sépare le plan en deux régions. La commande dépend de la position courante (r , v) par rapport à la courbe  . • Si le point est au-dessus de  , la commande est u = −1 . Cette commande fait décroître la vitesse et le point rejoint la courbe + . • Si le point est au-dessous de  , la commande est u = +1 . Cette commande fait croître la vitesse et le point rejoint la courbe − . Deux trajectoires sont tracées en pointillés partant de chacune des deux régions.

318

Techniques d’optimisation

Figure 4-15 : Double intégrateur dans le plan de phase Calculons le temps final en fonction des conditions initiales (r0 ,v0 ) .

L’arc initial et final se croisent en (t c ,rc ,vc ) . Les coordonnées sont solution de :

 vc2 − 2u 0 rc = v02 − 2u 0 r0 (initial : u = u 0 ) 1  vc2 = v02 − u 0 r0  2 2 (final : u = u f = −u 0 et rf = v f = 0)  vc + 2u 0 rc = 0

Le temps passé sur l’arc initial est obtenu par :

vc − v0 u0 Le temps passé sur l’arc final est obtenu par : v − vc vc vf = vc + u f (t f − t c )  t f − t c = f = uf u0 vc = v0 + u 0 (t c − t 0 )  t c − t 0 =

On en déduit le temps total : t = t f − t 0 =

2vc − v0 u0

 2vc = v0 + u 0t .

2 2 En remplaçant vc fonction de (r0 ,v0 ) , on a : 2t − 4u 0r0 + (v0 − u 0 t) = 0 .

Cette équation donne le temps total en fonction de (r0 ,v0 ) . La commande initiale

u 0 est déterminé par le signe de v02 sgn(v0 ) + 2r0 (position par rapport à  ).

La Figure 4-15 montre la ligne de niveau du temps final (temps pour revenir à l’origine) associée aux points de commutation des deux trajectoires déjà tracées.

Contrôle optimal

319

Si une contrainte courante n’est pas explicite en u, l’approche (4.70) ne s’applique pas, car la minimisation de l’hamiltonien ne tiendrait pas compte des contraintes. Ces contraintes non explicites en u appelées contraintes d’état sont de la forme :

 E (x, t) = 0 (4.73)   I (x, t)  0 Considérons successivement le cas d’une contrainte égalité, puis d’une inégalité. Contrainte d’état égalité : (x, t) = 0 La contrainte (x, t) = 0 est vérifiée à chaque temps de la trajectoire. La fonction  (x, t) étant constante, sa dérivée par rapport au temps est nulle. En utilisant l’équation d’état : x = f (x,u, t) , cette dérivée s’exprime comme : T

d    dx  (4.74) = + =  Tx (x, t)f (x, u, t) +  t (x, t)  dt  x  dt t La fonction  (x, t) est nulle si et seulement si sa dérivée est nulle et sa valeur initiale ou finale est nulle. On peut donc remplacer la contrainte (x, t) = 0 par : T  x (x, t)f (x, u, t) +  t (x, t) = 0 , t (4.75)  (x 0 , t 0 ) = 0 ou (x f , t f ) = 0 Si la dérivée est explicite en u, on peut appliquer l’approche (4.70) en remplaçant la contrainte (x, t) = 0 par sa dérivée (4.74) et en ajoutant une contrainte sur la valeur initiale ou finale de  . Cette contrainte est prise en compte dans la

condition de transversalité sur p(t 0 ) ou p(t f ) avec un multiplicateur  .

(x 0 , t 0 ) = 0 → p(t 0 ) = −x (t 0 ) −  x (t 0 ) ou (x f , t f ) = 0 → p(t f ) = x (t f ) +  x (t f )

(4.76)

Si la dérivée de  n’est pas explicite en u, on continue à dériver jusqu’à obtenir une fonction explicite en u. La contrainte d’état est dite d’ordre k s’il est nécessaire de dériver k fois la fonction  pour obtenir une expression explicite en u. La contrainte est alors remplacée par :

(k) (x, t) = 0 , t (x, t) = 0 , t   ( j)  (x 0 , t 0 ) = 0 pour 0  j  k − 1

dk . def dt k

(k) avec la notation  =

(4.77)

320

Techniques d’optimisation

Les contraintes initiales portent sur les dérivées d’ordre 0 à k − 1. Ces contraintes initiales sont prises en compte dans les conditions de transversalité avec leurs multiplicateurs respectifs. Contrainte d’état inégalité : (x, t)  0 Une contrainte inégalité peut être active ( = 0) ou inactive (  0)

sur

différents arcs de la trajectoire. Supposons que la contrainte devienne active à t1 . Sur la portion t  t1 , la contrainte n’est pas prise en compte dans (4.70).

Sur la portion t  t1 , la contrainte est traitée comme une égalité. En dérivant k fois pour faire apparaître la commande u, on remplace la contrainte par les conditions (4.77) appliquées à partir de t1 .

(k) (x, t) = 0 , t  t1 (x, t) = 0 , t  t1   ( j)  (x1 , t1 ) = 0 pour 0  j  k

(4.78)

Les k contraintes au temps t1 sont des contraintes intérieures. Elles sont prises en compte dans les conditions de transversalité de la forme (4.66) et (4.67) avec leurs multiplicateurs respectifs. Le passage d’une contrainte d’active à inactive se traite de la même manière. Les raccordements entre arcs saturés ( = 0) et non saturés (  0) sont appelés jonctions. Une difficulté importante est que l’on ne connaît pas à l’avance le nombre optimal de jonctions (sauf cas simples). Il faut généralement faire une hypothèse arbitraire sur ce nombre pour introduire les temps correspondants t1,t 2 , dans la formulation du problème aux deux bouts. L’exemple suivant montre un problème avec contrainte d’état inégalité conduisant à des jonctions entre arcs saturés et non saturés.

Exemple 4-8 : Distance minimale avec jonction On cherche le chemin le plus court entre deux points donnés du plan sans entrer dans le cercle de centre O et de rayon a comme illustré sur la Figure 4-16 ci-après. On se ramène à un problème de temps minimal en supposant une vitesse constante de direction u . L’état est la position r et l’équation d’état est : r = u . La commande est le vecteur u unitaire : u = 1 .

Contrôle optimal

321

La contrainte d’état (ne pas entrer dans le cercle) se formule par (r) = a 2 − r 2  0.

Figure 4-16 : Distance minimale avec jonction

Problème de contrôle Le problème de contrôle en temps minimal se formule comme : 2 2 tf  r(t 0 ) = r0 (r) = a − r  0 min J =  1 dt avec r = u ,  ,  u,t f  u = 1  r(t f ) = rf t0

Application du PMP L’hamiltonien est : H = 1 + p  u avec l’adjoint p .

 u = 1 2 2 (r) = a − r  0 On détermine la commande sur les arcs non saturés (  0) et saturés ( = 0) , L’application du PMP donne : min H sous  u puis on cherche les conditions de jonction. Arc non saturé La commande est donnée par : min H = 1 + p  u sous u = 1 → u = − u

p p

L’équation adjointe est : p = −H r = 0  p constant La commande u (direction de la vitesse) est constante et la trajectoire est un segment de droite, qui minimise en effet la distance en l’absence de contrainte.

322

Techniques d’optimisation

Arc saturé On dérive la contrainte d’état jusqu’à faire apparaître la commande.

(r) = a 2 − r 2  (r) = −2r  r = −2r  u La contrainte  est d’ordre 1. On la remplace par sa dérivée. (r) = 0 (r) = 0   (r1 ) = 0 On en déduit la commande sur l’arc saturé : (r) = −2r  u = 0  u ⊥ r L’arc saturé suit le cercle avec la commande u (vitesse) perpendiculaire au rayon. Conditions de jonction Les conditions de jonction entre arc non saturé et arc saturé à un temps t1 sont :

p(t1+ ) − p(t1− ) = − r (t1 )  r = −2r avec (r) = a 2 − r 2    + −  t = 0 H(t1 ) − H(t1 ) =  t (t1 ) p+ = p− + 2 r d’où l’on déduit :  + . − H = H

Exprimons l’hamiltonien avant et après jonction.

 − p− − − − = +  = − H 1 p u avec u (segment)  − p   + + + + (arc de cercle) H = 1 + p  u avec u ⊥ r On reporte ces expressions de H − et H + dans les conditions de jonction. + − − − − p = p + 2 r p = −p u − + − − − +  (p + 2  r)  u = p  u  u  u = 1 car  + +  + − − p  u = p  u u  r = 0 d’où l’on déduit : u + = u − (vecteurs unitaires). La jonction est tangentielle au cercle. Ce résultat est bien celui attendu pour minimiser la distance en contournant le cercle.

Remarque La commande est ici continue à la jonction (ce qui n’est pas le cas en général).

Contrôle optimal

323

Si l’on reprend le calcul en considérant des vitesses différentes v − hors du cercle v− − + + et v sur le cercle, on obtient la relation : u  u = + . v Il s’agit de la loi de la réfraction de Descartes qui traduit un changement de direction lorsque le milieu change d’indice (vitesse de propagation différente).

Discontinuités de commande On appelle coin ou arête une discontinuité de la commande. Les discontinuités sont généralement associées à : - un point intérieur modifiant la définition de l’hamiltonien comme en (4.63) ; - une contrainte intérieure générant un saut d’adjoint comme en (4.66) ou (4.68) ; - une contrainte d’état passant d’active à inactive ou inversement. La commande obtenue par minimisation globale de l’hamiltonien peut être discontinue même en l’absence de contraintes intérieures ou d’état. La Figure 4-17 montre un hamiltonien présentant deux minima locaux en fonction − + de u. La fonction H(u) est tracée aux temps t , t et t . Les minima évoluent avec le temps. Le minimum global passe de u − à u + créant ainsi une discontinuité de commande à t.

Figure 4-17 : Saut de minimum global

4.2.4 Problème linéaire quadratique La formulation standard d’un problème de contrôle linéaire quadratique (LQ) est : t x = Fx + Gu 1 1f min J = (x TSx) tf +  (x TQx + u T Ru)dt avec  u 2 2 t0 x(t 0 ) = x 0

Le temps initial t 0 , le temps final t f et l’état initial x(t 0 ) sont fixés.

(4.79)

324

Techniques d’optimisation

L’objectif est d’approcher un état final nul x(t f ) = 0 en limitant les valeurs d’état x(t) et de commande u(t) sur la trajectoire. Ceci justifie le choix d’un coût quadratique comportant un terme intégral avec des matrices de pondérations Q et R sur l’état et la commande et un terme final avec une matrice de pondération Sf sur l’état final. Les hypothèses sur ces matrices sont les suivantes. - Les matrices F, G, Q et R sont fonctions du temps → F(t), G(t), Q(t), R(t). - Les matrices Q et Sf sont semi-définies positives (on peut les choisir nulles). - La matrice R est définie positive. Les matrices Q, R et Sf sont à régler selon la forme souhaitée de la solution. Supposons que l’on souhaite limiter les composantes d’état et de commande par :

 x i (t f )  x i,max (t f ) , i = 1 à n  (4.80)  x i (t)  x i,max (t) , i = 1 à n   u j (t)  u j,max (t) , j = 1 à m Chaque composante d’état et de commande doit rester inférieure à un seuil qui peut être variable le long de la trajectoire. On choisit par exemple des matrices diagonales : Sf = diag(si ) , Q = diag(qi ) , R = diag(ri ) avec les coefficients : si =

1 1 1 , qi = , ri = 2 2 x i max (t f ) (t f − t 0 )x i max (t) (t f − t 0 )u i max (t) 2

(4.81)

Ces coefficients sont à ajuster par essais en observant l’effet sur la solution. Appliquons le principe du minimum au problème LQ (4.79). L’hamiltonien et l’adjoint sont donnés par :

p = −Qx − FT p 1 1 H = x T Qx + u T Ru + p T (Fx + Gu) avec  2 2 p(t f ) = Sf x(t f ) La commande optimale minimise l’hamiltonien.

min H  Ru + G T p = 0  u = −R −1G T p u

(4.82)

(4.83)

La matrice R est supposée définie positive, donc inversible. En remplaçant u dans l’équation d’état, on forme un problème aux deux bouts.

 x(t 0 ) = x 0  x   F −GR −1G T   x     avec   = T −F  p   −Q p(t f ) = Sf x(t f )  p  L’exemple suivant montre l’application à un problème d’interception.

(4.84)

Contrôle optimal

325

Exemple 4-9 : Interception

 r = v

On considère un mobile de position r , de vitesse v , d’accélération u : 

 v = u

.

Le temps initial t 0 , le temps final t f et l’état initial (r0 ,v0 ) sont donnés. La commande est l’accélération. On cherche à s’approcher d’une position et d’une vitesse finales nulles (rf = 0 , vf = 0) en minimisant l’énergie consommée. tf

Cette énergie est mesurée par l’intégrale :

 u dt 2

(norme L2 de l’accélération).

t0

Problème de contrôle LQ Le problème de contrôle LQ se formule comme : t

1 1 1f min J = K r r(t f ) 2 + K v v(t f ) 2 +  u 2dt u 2 2 2 t0

Les réels positifs Kr et Kv sont les pondérations sur la position et la vitesse finales. Application du PMP

1 2

2 L’hamiltonien est : H = u + p r  v + p v  u avec l’adjoint (pr ,pv ) .

Les équations adjointes sont : te pr (t f ) = K r r(t f ) pr = 0 pr = K r r(t f ) = C avec  →   p v (t f ) = K v v(t f ) p v = (t f − t)K r r(t f ) + K v v(t f ) p v = −pr L’application du PMP donne : min H  u = −pv = (t − t f )Kr r(t f ) − K v v(t f )

u

Les équations d’état s’intègrent avec cette commande.

1  2  v = u → v(t) = 2 (t − t f ) K r r(t f ) − (t − t f )K v v(t f ) + v(t f )   r = v → r(t) = 1 (t − t )3 K r(t ) − 1 (t − t ) 2 K v(t ) + (t − t )v(t ) + r(t ) f r f f v f f f f  6 2 En exprimant r(t f ),v(t f ) en fonction de r(t), v(t) et de  = t f − t (time to go) : 1 2  Dr(t f ) = ( + 2  K v )v + (1 + K v )r  Dv(t ) = (1 − 1 3K )v − 1 2 K r f r r  6 2

1 1 avec D = 1 + K v + 3K r + 4K r K v 3 12

326

Techniques d’optimisation

on obtient une expression de la commande en retour d’état (feedback).

1 1 K r (1 + K v )r + (K v + 2 K r + 3K r K v )v 2 3 u=− 1 3 1 4 1 + K v +  K r +  K r K v 3 12

avec  = t f − t

Application à l’interception Considérons un mobile M visant une cible C : - M a une position rM (t) , une vitesse vM (t) et une accélération u M (t) ;

- C a une position rC (t) , une vitesse vC (t) et une accélération u C (t) . Les écarts de position et de vitesse entre C et M notés r et v vérifient :

 r = r M − r C  r = v     v = u M − u C = u  v = v M − vC

On retrouve les équations précédentes avec u représentant l’écart d’accélération entre C et M. Les coefficients K r et K v sont choisis selon les conditions visées. • Vitesse à atteindre L’objectif est d’atteindre une vitesse donnée (injection en orbite ou portée).

K r = 0 1 → u=− v   K v = 

Cette commande est de la forme vitesse à gagner. L’accélération requise est l’écart de vitesse divisé par le temps restant. • Interception parfaite L’objectif est d’atteindre une position donnée. La vitesse finale est libre.

K r =  3 → u = − 2 (r + v)   K v = 0

Cette commande est de la forme navigation proportionnelle (analysée plus bas). • Rendez-vous parfait L’objectif est d’atteindre parfaitement une position et une vitesse données.

K r =  1 → u = − 2 (6r + 4v)   K v = 

Cette commande est également de la forme navigation proportionnelle.

Contrôle optimal

327

Interprétation géométrique de la navigation proportionnelle La trajectoire de référence (on nominale) est la droite D parcourue à vitesse constante vs . On note I la position d’interception visée à t f . La position et la vitesse sont projetées suivant D et la direction normale.

 r = rs + rn   v = vs + v n

Le mouvement suivant D n’est pas commandé.

vs = −

rs = Cte 

La commande agit suivant la direction normale.

rn = vn  vn = u n

L’angle de visée  entre IM et D est donné à l’ordre 1 par :

=

rn rn = rs vs

 =

rn + v n 2 vs

rn = vs  que l’on reporte dans la commande. 2 rn + v n =  vs

On en déduit :  •

Interception parfaite

u=− •

3 3 (r + v)  u n = − 2 (rn + vn )  u n = −3vs 2  

Rendez-vous parfait

1 1  2  (6r + 4v)  u n = − 2 (6rn + 4v n )  u n = − vs  + 4  2      L’accélération u n normale à la ligne de visée est ainsi exprimée en fonction de l’angle de visée  . Cette commande contrôle l’écart transverse (normal à D). Il faut y ajouter une correction u s suivant D pour contrôler le temps de passage en I par rapport au mouvement de la cible. u=−

328

Techniques d’optimisation

Méthode de transport Pour résoudre le système linéaire (4.84), on cherche une solution semblable à la condition finale, c’est-à-dire de la forme :

p(t) = S(t)x(t)

(4.85)

Justification La solution du système linéaire (4.84) s’exprime avec sa matrice de transition.

 x(t)    xx (t, t f )  xp (t, t f )   x(t f )     =  p(t)    px (t, t f )  pp (t, t f )   p(t f ) 

Utilisons la condition de transversalité : p(t f ) = S(t f )x(t f ) pour remplacer l’adjoint final.

x f = ( xx +  xpSf ) −1 x  x = ( xx +  xpSf )x f    −1 p = ( px +  ppSf )( xx +  xpSf ) x p = ( px +  ppSf )x f L’adjoint est bien de la forme : p(t) = S(t)x(t) . avec S(t) =  px (t, t f ) +  pp (t, t f )S(t f )   xx (t, t f ) +  xp (t, t f )S(t f )  def

−1

En remplaçant p = Sx dans les équations (4.84) :

x x = Fx − GR −1G T p = (F − GR −1G TS)x →   T T p = −Qx − F p Sx + Sx = − (Q + F S)x

(4.86)

puis en éliminant x , on obtient l’équation différentielle vérifiée par la matrice S.

S = −SF − FTS + SGR −1G TS − Q

(4.87)

Cette équation de Riccati (terme quadratique en S) s’intègre à rebours à partir de la matrice finale S(t f ) = Sf connue, choisie par exemple par (4.81). On en déduit l’adjoint initial : p(t 0 ) = S(t 0 )x(t 0 ) , puis la trajectoire par intégration directe du système (4.84). La matrice S(t) permet d’exprimer la commande (4.83) en retour d’état : u = −R −1G TSx . Le processus de résolution par la méthode de transport est schématisé sur la Figure 4-18 ci-après.

Contrôle optimal

329

Figure 4-18 : Résolution du problème LQ par méthode de transport Régulateur Pour un système stationnaire (matrices F,G,Q,R constantes), l’équation de Riccati (4.87) peut admettre une solution constante notée S . (4.88)

−S F − FTS + SGR −1G TS − Q = 0

Ceci peut se produire en particulier lorsque le temps final t f tend vers l’infini.

Pour calculer la matrice S , on peut résoudre directement l’équation matricielle (4.88) ou intégrer à rebours l’équation différentielle (4.87) en partant de S(t f ) = 0 jusqu’à obtenir une stabilisation (S  0) . Cette matrice doit être définie positive. La commande s’exprime alors en retour d’état avec une matrice de gain constante. (4.89)

u = −C x avec C = R −1G TS

Cette commande est appelée régulateur. Elle permet de borner les variations de x(t) et u(t) sur un temps infini, comme dans l’exemple suivant.

Exemple 4-10 : Régulateur

1 

On cherche un régulateur pour un système du premier ordre : x = − x + u .

330

Techniques d’optimisation

− x m  x  + x m . −u m  u  + u m

L’objectif est de maintenir x et u entre les bornes  Le problème quadratique est formulé comme : t

1 f  x2 u2  1 min J =   2 + 2  dt avec x = − x + u . u 2 t0  x m u m   2 1 2 2 L’équation (4.88) s’écrit : S + u mS − 2 = 0  xm avec les matrices : F = −

1 1 1 , G =1 , Q = 2 , R = 2  xm um

2  1  2 um 1 +  − 1    u 2m  x m2  2  1 −1 T 2 u La commande du régulateur est : u(t) = −R G S x(t) = −  1 +  m2 − 1 x(t)   x m  Si x n’est pas borné (x m → ) , la commande optimale est nulle. u Si u n’est pas borné (u m → ) , la commande optimale est : u(t) = − m x(t) . xm

La seule solution définie positive est : S =

Contraintes finales Supposons que l’état final est soumis à des contraintes linéaires de la forme :

(x f ) = Mf x f = c

(4.90)

Mf est une matrice donnée, c est la valeur cible. Le problème linéaire quadratique est formulé comme : min J = u

t x = Fx + Gu , x(t 0 ) = x 0 1f T (x Qx + u T Ru)dt avec   2 t0 (x f ) = Mf x f = c

(4.91)

Les conditions (4.82-84) sont inchangées. Seule la condition de transversalité sur p(t f ) est modifiée et devient, avec les multiplicateurs  des contraintes finales

p(t f ) = M(t f )T 

(4.92)

Contrôle optimal

331

La méthode de transport consiste à exprimer l’adjoint et les contraintes par :

p(t) = S(t)x(t) + T(t)  (x f ) = M(t)x(t) + N(t) = c

(4.93)

Justification La solution du système linéaire (4.84) s’exprime avec sa matrice de transition.

 x(t)    xx (t, t f )  xp (t, t f )   x(t f )     =  p(t)    px (t, t f )  pp (t, t f )   p(t f ) 

Utilisons la condition de transversalité : p(t f ) = M(t f ) pour remplacer l’adjoint final. T −1 T  x =  xx x f +  xp M f   x f =  xx (x −  xp M f )    T −1 −1 T p =  px x f +  pp M f  p =  px  xx x + ( pp −  px  xx  xp )Mf  L’adjoint est bien de la forme : p(t) = S(t)x(t) + T(t)

S(t) =  px (t, t f ) xx (t, t f ) −1  def avec  T(t) =  pp (t, t f ) −  px (t, t f ) xx (t, t f ) −1  xp (t, t f )  M fT def 

Les contraintes finales sont bien de la forme :

M(t) =  xx (t, t f ) −1  def  (x f ) = M(t)x(t) + N(t) avec  = −  xx (t, t f ) −1  xp (t, t f )M Tf  N(t) def

En dérivant les expressions (4.93), en remplaçant dans les équations (4.84) et en identifiant les termes en x et  , on obtient un système différentiel vérifié par les matrices S, T, M, N, avec les valeurs finales données par les contraintes (4.90).

S = −SF − FTS − Q + SGR −1G TS S(t f ) = 0   T −1 T T T = −F T + SGR G T T(t f ) = M(t f ) avec   −1 T M = −MF + MGR G S M(t f ) = M f donnée  N = MGR −1G T T  N(t ) = 0  f 

(4.94)

On observe que : T = MT , car ces matrices vérifient les mêmes équations. Le système (4.94) s’intègre à rebours à partir des conditions finales connues.

332

Techniques d’optimisation

Supposons que l’on résolve le problème (4.91) sans les contraintes finales, ce qui revient à ignorer les multiplicateurs  dans la solution (4.93). La valeur prise par les contraintes finales serait alors : (xf ) = M(t)x(t) . La fonction (x) = Mx donne ainsi la valeur libre (ou naturelle) des contraintes si l’on résout le problème (4.91) à partir de l’état courant x sans les contraintes. Les multiplicateurs  sont déterminés à partir de (4.93) au temps initial.

c = M(t 0 )x(t 0 ) + N(t 0 )   = N(t 0 )−1 ( c −  0 )

(4.95)

La matrice N est négative.

 N = MGR −1G T M T  0  N(t)  0 pour t  t f .   N(t f ) = 0 Dans le cas général, N(t 0 ) est inversible et la formule (4.95) donne  . On en déduit l’adjoint initial par (4.93) et la trajectoire par intégration directe du système (4.84). Les matrices S,M, N donnent la commande (4.83) en retour d’état.

u = −R −1G TSx − R −1G T MT N −1 ( c − ) avec  = Mx

(4.96)

Les multiplicateurs  (4.95) et la commande u (4.96) sont fonctions de l’écart entre c (valeur visée) et  (valeur libre sans contrainte). La solution du problème sans contraintes correspond à des multiplicateurs nuls :  = 0 . Le processus de résolution est schématisé sur la Figure 4-19.

Figure 4-19 : Résolution LQ avec contraintes par méthode de transport

Contrôle optimal

333

4.2.5 Contrôle robuste Considérons un système linéaire d’état x soumis à des perturbations w. Les sorties observables forment un vecteur z fonction linéaire de l’état.

 x = Ax + Dw (4.97)  z = Cx Les matrices A, C et D sont constantes. Les vecteurs x et z peuvent représenter les écarts à une solution nominale. Les équations (4.97) sont alors les équations variationnelles d’un système non linéaire. Supposons que la sortie nominale est z = 0 et cherchons les perturbations pires au sens de la maximisation de z. Pour cela, on considère le coût : 

1 min J =  ( w T w −  z T z)dt avec   0 w  t0

(4.98)

T L’objectif est de maximiser la norme de z (terme −z z ) tout en appliquant les

perturbations les plus faibles possibles (terme + second terme, la solution ne serait pas bornée.

1 T w w ). En l’absence de ce 

La propriété suivante donne une méthode de calcul de la solution. Propriété 4-4 : Perturbations pires Supposons qu’il existe une matrice P symétrique définie positive telle que : - la matrice P vérifie l’équation différentielle de Riccati :

PA + AT P +  CT C +  PDDT P = 0

(4.99)

T

- la matrice A +  DD P est une matrice de Hurwitz, ce qui signifie que toutes ses valeurs propres sont à partie réelle négative. Alors la solution du problème (4.98) est donnée par :

w* =  DT Px*

(4.100)

et le coût minimal vaut :

J* = −x T0 Px 0

(4.101)

334

Techniques d’optimisation

Démonstration On vérifie la solution énoncée en dérivant la fonction : V(x) = x T Px .

V = x T Px + x T Px = (Ax + Dw)T Px + x T P(Ax + Dw) = x T (PA + AT P)x + 2x T PDw = − x T (CT C + PDDT P)x + 2x T PDw car PA + AT P = − CT C −  PDDT P = − zT z −  x T PDDT Px + 2x T PDw car Z = Cx 1 1 = w T w −  zT z − (w −  DT Px)T (w −  DT Px) en factorisant   Intégrons de t 0 à t1 . t1

t

1 2 1 1 2 2 V(x1 ) − V(x 0 ) =  ( w −  z )dt −  w −  DT Px dt   t0 t0

Puis prenons la limite t1 →  pour obtenir le coût J. t1   2 1 1 2 2 w −  z )dt = lim  x1T Px1 +  w −  DT Px dt  − x T0 Px 0 t1 →     t0 t0 T Le minimum de J est obtenu pour la perturbation : w =  D Px . 

J = (

T Avec cette solution, l’équation d’état donne : x = Ax + Dw = (A + DD P)x .

T

Par hypothèse, la matrice A + DD P a toutes ses valeurs propres à partie réelle négative. Le système est donc exponentiellement stable : lim x(t1 ) = 0 . t1 →

T 0

Le coût optimal se réduit finalement à : J* = −x Px 0 .

Interprétation La solution s’interprète avec les normes L2 de la perturbation w et de la sortie z. Le coût (4.98) s’exprime comme :

J=

1 2 w 2 − z 

2 2

avec z 2 =

def



 z zdt T

(4.102)

t0

Le coût optimal étant donné par (4.101), on a pour toute perturbation w :

J*  J  − x T0 Px 0 

1 2 w 2 − z 

2 2

(4.103)

Contrôle optimal

335

Pour un état initial nul, on obtient l’inégalité :

 z2 w

(4.104)

, w

2

Le gain L2 du système (4.97) est défini comme le facteur maximal d’amplification entre la perturbation w et la sortie z. Ce gain est noté k.

k = sup def w 0

z w

(4.105)

2 2

Si la matrice P définie à la Propriété 4-4 existe, alors le gain k est borné par

1 . 

Par une démonstration analogue à ci-dessus, on établit l’équivalence suivante. Propriété 4-5 : Gain L2 Le gain L2 est borné par  si et seulement si il existe une matrice P symétrique définie positive telle que :

1 T 1  T T PA + A P +  C C +  PDD P = 0  A + 1 DDT P matrice de Hurwitz  

(4.106)

Une condition suffisante pour que le gain L2 soit borné par  est obtenue en relaxant l’égalité (4.106) en une inégalité de Riccati :

1 T 1  T T PA + A P +  C C +  PDD P  0  A + 1 DDT P matrice de Hurwitz  

(4.107)

Pour calculer le gain k défini par (4.105), on utilise la matrice de transfert G du système (4.97) qui relie les transformées de Laplace de w et z.  x = Ax + Dw (4.108)  z = C(sI − A) −1 Dw = Gw  def z = Cx On démontre que le gain k est la plus grande valeur singulière de la matrice G( j) pour toutes les fréquences possibles 

: k= G



= sup  ( G( j) ) . 

Cette valeur est appelée norme H de la matrice de transfert.

336

Techniques d’optimisation

Stabilisation Reprenons le système linéaire (4.97) en introduisant un contrôle u.

 x = Ax + Bu + Dw  z = Cx

(4.109)

L’objectif est de stabiliser la sortie z en présence de la perturbation w. Cherchons pour cela un contrôle en retour d’état : u = Kx . Le système prend la forme :  x = A f x + Dw (4.110) avec A f = A + BK  z = Cx avec la matrice A f du système en boucle fermée. La stabilisation consiste à chercher une matrice de gain K telle que : - le gain L2 soit inférieur à une borne donnée  ; - le système en boucle fermée soit stable. Une condition suffisante est qu’il existe P symétrique définie positive telle que :

1 1 PAf + AfT P + CTC + PDDT P  0  

(4.111)

T Cette condition implique : PAf + Af P  0 qui est la condition de Lyapunov pour

que la matrice A f soit stable (matrice de Hurwitz).

On est ainsi amené à chercher une matrice de gain K et une matrice P symétrique définie positive vérifiant (4.111). Cette recherche s’effectue en introduisant des matrices Q et R symétriques définies positives et un paramètre   0 . • L’inégalité (4.111) est transformée en égalité en ajoutant Q .

1 1 PAf + AfT P + CTC + PDDT P + Q = 0   •

Le gain K est cherché sous la forme : 1 K = − R −1BT P 2

(4.112)

(4.113)

En remplaçant dans (4.112) la matrice Af = A + BK avec K donné par (4.113), on obtient une équation de Riccati.

1 1 1 PA + AT P + CT C + PDDT P − PBR −1BT P + Q = 0   

(4.114)

Il faut alors trouver des paramètres de réglages Q, R,  pour que cette équation admette une solution P. Cette recherche peut être réalisée par une procédure systématique comme indiqué dans la référence [R14].

Contrôle optimal

337

4.3 Extrémales Cette section présente les différents types de solutions d’un problème de contrôle.

4.3.1 Définitions Considérons un problème de contrôle sous forme de Lagrange sans spécifier les conditions terminales. tf

min J =  L(x,u, t)dt avec x = f (x,u, t) u

(4.115)

t0

L’hamiltonien est défini avec l’adjoint p(t) et le multiplicateur anormal p0  0 .

H(x,u,p, t) = p0L(x,u, t) + p Tf (x,u, t)

(4.116)

Une extrémale est un quadruplet (x,p0 ,p,u) vérifiant le système hamiltonien suivant où la commande minimise l’hamiltonien (convention p0  0 ).

 x = H p (4.117) avec u → min H(x, u, p, t)  u p = − H x Le champ d’extrémales (appelé aussi flot du système hamiltonien) est l’ensemble des trajectoires obtenues par intégration de (4.117) en faisant varier l’état et l’adjoint initial. La solution d’un problème de contrôle à conditions terminales spécifiées est une extrémale particulière. Les extrémales peuvent être normales ou anormales, régulières ou singulières. •



Une extrémale est dite normale si p0  0 , anormale si p0 = 0 . Une extrémale anormale survient par exemple lorsque la solution est complètement déterminée par les contraintes. Cette solution est alors indifférente à la fonction coût. Pour une extrémale normale, on fixe généralement p0 = 1 . Une extrémale est dite régulière si H u est explicite en u, singulière sinon.

Pour une extrémale régulière, la commande optimale est solution de Hu = 0 . Une extrémale singulière requiert l’examen de conditions d’ordre supérieur. Une trajectoire optimale peut comporter des arcs réguliers et des arcs singuliers.

338

Techniques d’optimisation

4.3.2 Extrémale anormale Supposons qu’il n’existe localement qu’une seule loi de commande u* satisfaisant les contraintes du problème de contrôle. La solution du problème est alors u*, indépendamment de la fonction coût. D’après le PMP, cette commande réalise le minimum de l’hamiltonien (4.116), ceci pour toute fonction L(x,u, t) . (4.118)

Hu = p0 Lu + pTf u = 0 , L

Ceci n’est possible que si p0 = 0 , ce qui constitue une extrémale anormale. Des extrémales anormales peuvent survenir dans d’autres cas. L’exemple suivant montre un problème de contrôle admettant des extrémales normales ou anormales selon les conditions initiales.

Exemple 4-11 : Oscillateur On cherche à ramener un oscillateur harmonique au repos en temps minimal à partir de conditions initiales données. La commande est l’accélération bornée entre −1 et +1. Le problème se formule comme : tf  x1(t 0 ) = x10  x1(t f ) = 0  x1 = x 2 min J =  1dt avec  ,  ,  , −1  u  1 u,t f x 2 = −x1 + u  x 2 (t 0 ) = x 20  x 2 (t f ) = 0 t0

Application du PMP L’hamiltonien est : H = p0 + p1x 2 + p2 (−x1 + u) avec l’adjoint (p1 ,p2 ) et le multiplicateur anormal p0 .

−1 si p2  0 +1 si p2  0

L’application du PMP donne : min H sous − 1  u  +1 → u =  u

La commande u = 1 est déterminée par l’adjoint p2 (fonction de commutation).

 p1 = p2  p2 = −p2  p2 = a cos(t + )  p2 = −p1

Les équations adjointes sont : 

Les commutations (changement de signe de p2 ) sont espacées d’une durée  . Représentation dans le plan de phase On peut représenter les arcs de trajectoire à u = 1 dans le plan de phase.

 x1 = x 2 dx 2 −x1 + u  =  (x1 − u)dx1 + x 2dx 2 = 0  (x1 − u)2 + x 22 = c2  x = − x + u dx x 1  2 1 2

Contrôle optimal

339

Les arcs de trajectoire sont des demi-cercles de centre A − (−1;0) pour u = −1 et

A + (+1;0) pour u = +1 . On construit les extrémales à rebours à partir de l’origine. Le dernier arc qui doit arriver à l’origine est situé sur : - le demi-cercle C− (centre A − , rayon 1) si u = −1 ; - le demi-cercle C+ (centre A + , rayon 1) si u = +1 . L’arc précédent est un demi-cercle : - de centre A + si l’on finit sur C− ; - de centre A − si l’on finit sur C+ . La Figure 4-20 montre l’ensemble des conditions initiales du plan de phase : - conduisant à une arrivée sur le demi-cercle C+ (en haut) ; - conduisant à une arrivée sur le demi-cercle C− (en bas).

Figure 4-20 : Avant-dernier arc En poursuivant l’étude à rebours, on déduit que les arcs précédents sont des demicercles croissants de centres alternativement en A − et A + . Les commutations se produisent sur un ensemble de demi-cercles obtenus par translation de C− et C+

340

Techniques d’optimisation

suivant x1 . Cet ensemble de demi-cercles tracé sur la Figure 4-21 forme la courbe de commutation C. La commande est u = −1 au-dessus de la courbe C et u = +1 au-dessous. En faisant varier la position de la dernière commutation sur les demicercles C− et C+ , on génère à rebours l’ensemble des extrémales possibles qui constituent le portrait de phase du système.

Figure 4-21 : Courbe de commutation Il passe une seule extrémale par chaque point du plan de phase (= condition initiale particulière). La Figure 4-22 montre l’extrémale partant des conditions initiales : x1 (t 0 ) = −1,77 , x 2 (t 0 ) = −3,36 .

Figure 4-22 : Extrémale dans le plan de phase

Contrôle optimal

341

Extrémales anormales Cherchons si le problème admet des extrémales anormales. Le système est autonome et à temps final libre. L’hamiltonien est donc constant et nul : H = p0 + p1x 2 + p2 (−x1 + u) = 0 .

x1 (t f ) = 0  H = p0 + p2u = 0 avec u(t f ) = 1 . x 2 (t f ) = 0

Au temps final : 

- Si p2 (t f )  0 , alors p0  0 et l’extrémale est normale.

- Si p2 (t f ) = 0 , alors p0 = 0 et l’extrémale est anormale.

Les commutations sont espacées de  et se produisent lorsque p2 s’annule. Pour une extrémale anormale, le dernier demi-cercle C− ou C+ est entièrement parcouru et les commutations se produisent sur l’axe x1 . Le problème admet une infinité d’extrémales anormales, passant par les points de coordonnées (x1 = 2k ; x 2 = 0) , k  . Selon le point initial, l’extrémale ramenant à l’origine peut ainsi être normale ou anormale.

4.3.3 Extrémale singulière La commande optimale est obtenue en résolvant l’équation : Hu = 0 .

Une extrémale singulière survient lorsque la dérivée H u n’est pas explicite en u. Ceci se produit dans le cas fréquent d’un système à contrôle affine de la forme :

min J = (xf , t f ) avec x = f (x, t) + g(x, t)u u

(4.119)

Il faut dans ce cas passer par des conditions d’ordre supérieur pour déterminer la commande optimale. Ces conditions sont présentées en section 4.4.3. Le problème de Goddard montre les conditions d’existence d’extrémales singulières et leur détermination.

Exemple 4-12 : Problème de Goddard (d’après [R3]) On cherche à maximiser l’altitude atteinte par une fusée tirée verticalement du sol. Modélisation Les hypothèses sur le mouvement sont les suivantes.

342

• • • • •

Techniques d’optimisation

L’état est composé de l’altitude h, la vitesse v et la masse m de la fusée. La fusée décolle du sol (h 0 = 0 , v0 = 0) suivant la verticale. La masse totale initiale m0 et la masse d’ergols me sont fixées. Les forces agissant sur la fusée sont le poids W, la poussée T, la trainée D. La commande est le niveau de poussée compris entre 0 et T max. Lorsque tous les ergols sont consommés, la poussée s’annule. Le débit massique est : q = T / ve où ve est la vitesse d’éjection des gaz.

h = v  Les équations d’état sont :  v = (T − D − W) / m . m = − T / v e  Le poids vaut : W = mg . L’accélération de gravité g est supposée constante.

1 2

2 La trainée vaut : D = v SCD .

S est la surface de référence, C D est le coefficient de trainée,  est la densité atmosphérique fonction de l’altitude par un modèle exponentiel :  = 0e 0 est la densité au sol, H est le facteur d’échelle de l’atmosphère.



h H

.

Problème de contrôle L’objectif est de trouver la loi de poussée maximisant l’altitude atteinte par la fusée. Le problème de contrôle se formule comme :

h = v  min J = − h(t f ) avec v = (T − D − W) / m T,t f m = − T / v e  Application du PMP L’hamiltonien est : H = p h v + p v

h(t 0 ) = 0  et v(t 0 ) = 0  m(t 0 ) = m0 , m(t f ) = m 0 − m e

T−D−W T − pm avec l’adjoint (ph ,pv ,pm ) . m ve

D   +g+ T  m  mve

En notant  = vepv − mpm , l’hamiltonien s’écrit : H = ph v − p v 

T = 0 si   0 et T = ? si  = 0 T = Tmax si   0

L’application du PMP donne : min H   0TTmax

La poussée optimale dépend de la fonction de commutation :  = vepv − mpm . Un arc singulier peut se produire si la fonction  s’annule sur un intervalle.

Contrôle optimal

343

Recherche des arcs singuliers Cherchons des conditions sur l’adjoint (ph ,pv ,pm ) pour obtenir un arc singulier. Si  s’annule sur un intervalle, ses dérivées successives sont nulles. Par ailleurs, l’hamiltonien est constant et nul, car le système est autonome à temps final libre.

 H = 0  On a le système noté (S) :  = 0   = 0 

→ ph v + pv

T−D−W T − pm = 0 m ve

→ ve p v − mpm = 0 → ve p v − mpm − mp m = 0

Les équations adjointes sont, en notant D h et D v les dérivées de la trainée :

p v Dh  p h = − H h = m  pvDv  p v = − H v = − p h + m  T−D  p m = − H m = p v m 2 

 1 2 1 − Hh 2 =  = 0e v SCD D v SC  D 2 2  D 1 2  D  = v SC D =− avec D h = . h 2 h H  D 2D  D v = v = vSCD = v 

On remplace m,pv ,pm dans  , avec  = vepv − mpm = 0 pour remplacer pm .

pD  T T − D pv  v    = ve pv − mpm − mpm = ve  −ph + v v  + pm − p v = 1 + 2 e  D − v e p h m  ve m m v   ph v − p v D + W =0 m   p v ve − pm m = 0 Le système (S) se réduit à :   p m − p  2 + 1  D = 0  v  h  v ve  D’après le PMP l’adjoint (ph ,pv ,pm ) ne peut être identiquement nul. Pour qu’une solution non nulle existe, la matrice du système linéaire (S) doit être singulière. Son déterminant est :

v 0



D+W m ve

2 1  m − + D  v ve 

0  v − m = mW − mD 1 +  = 0  ve  0

344

Techniques d’optimisation



v  s’annule, un arc singulier est possible.  ve  La surface singulière est l’ensemble des états (h , v,m) pour lesquels : Lorsque la fonction  = W − D 1 +

 v  = W − D 1 +  = 0 .  ve  Étudions l’évolution de la fonction  le long du vol. La vitesse est nulle en début de vol (décollage) et en fin de vol (apogée).

(t 0 ) = m0g  0 (t f ) = mf g  0

La trainée étant nulle à ces instants, on a : 

En début de vol, le poids W diminue (perte de masse), alors que la vitesse et la trainée augmentent. La fonction  est décroissante et peut ou non s’annuler. Selon l’évolution de  et  , les structures de contrôle possibles sont :

Tmax → 0  Tmax → Tsin g → 0  Tmax → Tsin g → Tmax → 0 Expression de la poussée Cherchons l’expression de la poussée sur un arc singulier. Pour cela, on dérive la fonction de commutation  jusqu’à faire apparaître la commande T. La dérivée première a déjà été calculée :  = Cette dérivée est nulle sur l’arc singulier.

pv  ve  1 + 2  D − ve p h . m v

2 1   = 0  p vG − mph = 0 avec G =  +  D def v ve   On dérive une deuxième fois : pvG + pvG − mph − mph = 0 avec G = Gh h + G v v En utilisant les équations d’état et adjointes donnant (h,v,m,ph ,pv ) :

 G D Tsin g  G v +  = G + (D + W)G v − mvG h + mDh ve  ve 

puis en remplaçant G et ses dérivées, on obtient l’expression de la poussée sur un arc singulier.

 mv2  v Tsin g (1 + 4 + 22 ) = D(1 + 2) +  2D + 2W + = e  (1 + ) avec  def H  v 

Contrôle optimal

345

La trajectoire débute nécessairement par un arc régulier à poussée maximale T max (car (t 0 )  0 ). Un arc singulier est possible si les fonctions  (commutation) et  (surface singulière) s’annulent simultanément. La poussée devient variable Tsin g (h, v,m) et la trajectoire suit la surface singulière. L’arc singulier est suivi tant que Tsin g  Tmax ou jusqu’à épuisement éventuel des ergols. L’application numérique suivante montre une solution de la forme Tmax → Tsin g → Tmax → 0 . Application numérique Les données numériques sont récapitulées dans le tableau suivant. m0

me

100 kg

90 kg

Tmax

ve

SCD

0

H

g

2 000 N 2 000 m/s 0,1 m2 1,2 kg/m3 5 000 m 10 m/s2

La solution de la forme Tmax → Tsin g → Tmax → 0 est tracée sur la Figure 4-23.

Figure 4-23 : Loi de poussée comportant un arc singulier (pour me = 90 kg) La structure de la solution dépend de la masse d’ergols disponible. - Si me  81,3 kg , la solution est de la forme : Tmax → Tsin g → Tmax → 0 - Si 16,1 kg  me  81,3 kg , la solution est de la forme : Tmax → Tsin g → 0 - Si me  16,1 kg , la solution est de la forme : Tmax → 0

346

Techniques d’optimisation

Dans le cas me = 90 kg illustré sur la Figure 4-23, une commande Tmax → 0 donnerait un temps de combustion de 90 s (au lieu de 125 s) et terminerait à une altitude maximale de 236,8 km (au lieu de 300,6 km). La solution Tmax → 0 est dans ce cas moins bonne que Tmax → Tsin g → Tmax → 0. Ces deux solutions sont comparées sur la Figure 4-24.

Figure 4-24 : Comparaison solution singulière et solution à poussée maximale

4.3.4 Extrémale voisine Considérons un problème à temps final libre avec des contraintes finales.

 x = f (x, u, t)  min J =  L(x, u, t)dt + (x f , t f ) avec x(t 0 ) = x 0 u,t f t0 (x , t ) = 0 f f  tf

(4.120)

La solution est une extrémale vérifiant les équations :

x = Hp  p = − H x H = 0  u



q

  x(t f ), t f  = 0  avec p(t f ) =  x [x(t f ), t f , ]  H(t f ) = − t [x(t f ), t f , ]

(4.121)

est le multiplicateur des contraintes finales. La fonction  est définie par :

[x(t f ), t f , ] = [x(t f ), t f ] +  T [x(t f ), t f ] def

(4.122)

Cette extrémale nominale est associée à l’état initial x 0 et aux contraintes  = 0.

Contrôle optimal

347

Supposons que l’état initial et le seuil de contrainte varient de x 0 et f petits.

x(t 0 ) = x 0 x(t 0 ) = x 0 + x 0 (4.123) →   (x f , t f ) = 0 (x f , t f ) =  f La nouvelle extrémale est voisine de l’extrémale nominale comme représenté sur la Figure 4-25.

Figure 4-25 : Extrémale voisine L’extrémale voisine peut se calculer à partir de l’extrémale nominale comme suit. Propriété 4-6 : Extrémale voisine Les écarts (x , p, ) entre l’extrémale nominale (x0 ,  = 0) et l’extrémale voisine (x 0 + x 0 ,  = f ) suivent les équations différentielles :

x = (f xT − f uT H −uu1 H xu )x − f uT H −uu1f u p  −1 −1 p = (H ux H uu H xu − H xx )x + (H ux H uu f u − f x )p et vérifient les conditions finales :   xx  T  x  T  x

x 0 T

 x   x f   pf   =  +  T   def          =   f  avec  = t + H =  + L  def    t f   0 

(4.124)

(4.125)

348

Techniques d’optimisation

Démonstration (voir [R3]) On développe les équations de l’extrémale (4.121) à l’ordre 1. Équations différentielles Pour les équations différentielles et la dérivée H u , on a :

x = H Tpx x + HTpu u + HTppp x = f xT x + f uT u x = Hp     T T T p = − H x → p = −H xx x − H xu u − H xpp → p = −H xx x − H ux u − f x p H = 0   −1 T T T  u u = −H uu (H xu x + f u p) 0 = H ux x + H uu u + H upp La dernière équation donne u fonction de x , p en supposant Huu inversible. En remplaçant u dans les deux premières équations, on obtient (4.124). Conditions finales Les variations x 0 et f induisent des variations t f , x f , pf ,  .

dx f = x(t f )t f +x f dpf = p(t f )t f +pf

Les variations totales de l’état et l’adjoint final sont :  La condition de transversalité sur x f s’exprime avec :

 =  +  T → x [x(t f ), t f , ] = p(t f ) La condition de transversalité sur t f s’exprime avec :  = t + H → [x(t f ),t f , ] = 0 T On observe que la fonction  peut s’écrire avec la dérivée totale :  = x x + t

 = t + H = ( − Tx x) + (L + pT x) =  + L car x = p à t f . On développe chaque équation à l’ordre 1 en utilisant x = x et   =  = 

  x(t f ), t f  =  f  Tx x f +  Tx x(t f )t f +  Tt t f =  f   x [x(t f ), t f , ] = p(t f ) →  xx x f +  xx x(t f )t f +  xt t f +  x  =pf + p(t f )t f [x(t ), t , ] = 0  T T T T f f  x x f +  x x(t f )t f +  t t f +   = 0 

En regroupant les termes en x f , t f ,  , on obtient :

 Tx x f + t f =  f   xx x f + ( x − p)t f +  x  = p  T +  T  = 0  x x f + t f Le terme  x − p se simplifie en utilisant x = p à t f .

Contrôle optimal

349

 x =  xt +  xx x =  xt +  xx f      x − p = ( t + L +  x f ) = ( t + H) =  T T x x x −p = H x = L x + f x p = L x + f x  x En remplaçant  x − p dans la deuxième équation, on obtient (4.125).

Les équations (4.124) et (4.125) définissant l’extrémale voisine forment un problème aux deux bouts avec x 0 donné et pf contraint. Ce problème se résout par la méthode de transport. Méthode de transport Le système (4.124) et les contraintes finales (4.125) sont linéaires de la forme :

A = f xT − f uT H −uu1 H xu   x = Ax − Bp −1 avec B = f uT H uu fu  T p = −Cx − A p  −1 C = H xx − H ux H uu H xu  pf    xx  x  x   x f  T  =  +      T        avec  0   f  =   x  =  t + H =  + L  0    T  T    t     x  f 

(4.126)

Les variations (x0 , f ) sont fixées, les inconnues sont (p0 , t f , ) . La méthode de transport (§3.5.4) consiste à chercher une solution linéaire sous la même forme que les conditions finales (on sait que la solution est de cette forme).

 p(t)   S M    x(t)     T   N        f  =  M  0    T T    t      f 

(4.127)

Les matrices S,M, N,  ,  ,  vérifient le système différentiel :

S = − SA − A TS + SBS − C  T M = (SB − A )M  N = M T BM   T  = (SB − A )  T  = M B   =  T B

S(t f ) =  xx (t f ) M(t ) =  (t ) f x f   N(t f ) = 0 avec  (t f ) =  x (t f ) (t f ) = (t f )    (t f ) =  (t f )

(4.128)

350

Techniques d’optimisation

Démonstration (voir [R3]) Les conditions finales se déduisent directement de (4.126) par identification. Les équations différentielles sont obtenues en dérivant (4.127).

 p(t)   S M    x(t)     T     f  =  M N      T    T    0        t f   p   S M    x   S M         0  =  M T N      +  M T N  0    T T    t    T T     f   x = Ax − Bp et en remplaçant x , p :  T p = −Cx − A p

   x      0     0  avec p(t) = Sx(t) + M + t f

L’extrémale nominale a été préalablement calculée et les valeurs nominales de (xf ,pf ,t f , ) sont connues. On en déduit les matrices S,M, N,  ,  ,  à t f . L’intégration à rebours permet d’obtenir les matrices au temps initial. Les inconnues (p0 , t f , ) sont alors solution du système (4.127) à t 0 .

 p0   S M    x 0     T    N   (t 0 )      f  =  M  0    T T    t       f

(4.129)

La solution s’exprime en fonction des variations données (x0 , f ) .

 = N  f − M x 0     T T   x 0 +   t f = −   p = (S − MN −1M T )x + MN −1 0 f  0 −1

T

 T M = M −    T  avec  N = N −     T S = S −  

(4.130)

Contrôle optimal

351

Méthode de transport réduite Une simplification possible consiste à éliminer t f à partir de la troisième −1 T T condition finale (4.127) : t f = −   x x f +    .

Les conditions finales se réduisent à :

 S(t f ) M(t f )T   x f   pf    xx −  x  −1 Tx  x −  x  −1 Tx   x f     = T =   −1 T −   −1 T     def  M(t f ) N(t f )          x −    x

La méthode de transport est ensuite appliquée à la forme réduite.

S = −SA − A T S + SBS − C   p(t)   S M   x(t)   T = avec M = (SB − A )M     T      M N      T  N = M BM Les matrices S,M, N suivent les mêmes équations différentielles que S,M , N . Si le temps final est fixé, on retrouve :  =  =  = 0 et S = S , M = M , N = N .

La Figure 4-26 récapitule le processus de calcul de l’extrémale voisine à partir de l’extrémale nominale et des variations (x0 , f ) .

Figure 4-26 : Calcul de l’extrémale voisine

352

Techniques d’optimisation

4.3.5 Commande en retour d’état L’intégration à rebours de (4.128) donne les matrices S,M, N,  ,  ,  (4.130) en fonction du temps. Ces matrices permettent d’exprimer les corrections de commande u(t) et de temps final t f à appliquer au temps t en fonction des écarts d’état x(t) et de contraintes  constatés à ce même temps.

u = −H −uu1 ( H xu + f u (S − MN −1M T ) ) x + f u MN −1      −1 T T −1 T T −1 t f = − ( −  N M )x −  N  

(4.131)

Démonstration La variation de temps final t f est donnée par (4.130) en remplaçant  . −1 La variation u est donnée par Hu = 0 à l’ordre 1 : u = −Huu (H xu x + f u p) .

Les équations (4.127) permettent d’exprimer p,  , t f en fonction de x, f au temps t. Le calcul est similaire à celui réalisé au temps initial et donnant les formules (4.130). En substituant p,  , t f , on obtient la formule (4.131).

Les formules (4.131) se mettent sous la forme plus compacte :

u(t) = −K x (t)x(t) − K  (t)  t f = −k x (t) x(t) − k  (t) 

(4.132)

Les matrices Kx ,K ,k x ,k  sont les gains calculés sur la trajectoire nominale et stockés en fonction du temps écoulé t − t 0 ou du temps restant t f − t (time to go). Les écarts d’état x(t) entre état réel et nominal sont estimés à partir de mesures réalisées par des capteurs ou senseurs. Les écarts de contraintes  représentent un changement d’objectif (optionnel) pouvant survenir en cours de trajectoire. La commande en retour d’état (feedback) sous la forme (4.132) permet de corriger la trajectoire en temps réel en fonction des perturbations rencontrées. La Figure 4-27 ci-après illustre le processus de correction en retour d’état.

Contrôle optimal

353

Figure 4-27 : Correction de commande en retour d’état

Exemple 4-13 : Mise en orbite (d’après [R3]) Reprenons le problème de mise en orbite de l’Exemple 4-5. On cherche ici à atteindre l’orbite (altitude z c , vitesse verticale nulle) en maximisant la vitesse horizontale finale à temps final fixé. L’accélération de module constant a est orientée par l’angle  . Le problème se formule comme : tf

z(t f ) = zc z = v z min J = −v x (t f ) = −a  cos  dt avec  et   vz = a sin  − g vz (t f ) = 0 t0 Extrémale nominale Ce problème se résout de la même manière que le problème de temps minimal de l’Exemple 4-5. La commande (t) suit une loi tangente linéaire de la forme :

tan f − tan  = −c(t f − t) En passant en variable  , on obtient les équations de trajectoire de l’Exemple 4-5. Extrémales voisines On doit calculer les matrices S,M , N intervenant dans la méthode de transport (4.128) avec  =  =  = 0 , car le problème est à temps fixé. Les matrices utiles sont les suivantes.

354

Techniques d’optimisation

Dérivées de f (dynamique) :

v   0 0 f =   fx =   , f u = ( 0 , a cos  )  a sin  − g  1 0 

Dérivées de H (hamiltonien) :

0 0 0 a H xx =   , H ux =   , H uu = a cos  − p va sin  = cos  0 0 0

Dérivées de  (contrainte) :

 z(t f ) − zc  1 0  =   x =    0 1  v(t f )  Matrices A,B,C :

A = f xT − f uT H −uu1 H xu  0 1  0 0 T −1 3 0 0  A= B = f u H uu f u  , B = a cos    , C=   0 0 0 1  0 0  −1 C = H xx − H ux H uu H xu Les matrices S,M , N sont calculées en intégrant à rebours le système (4.128).

S = −SA − A TS + SBS − C 0 0 → S(t) =    S(t f ) =  xx (t f ) 0 0  M11 = 0 , M11 (t f ) =1  T M 21 (t f ) = 0 M = (SB − A )M M = 0 , →  21   M12 = − M11 , M12 (t f ) = 0 M(t f ) =  x (t f )  M 22 = − M 21 , M 22 (t f ) =1  1 tf − t  → M(t) =   1  0  N = M T BM   N(t f ) = 0

2  N11 N12  tf − t  3  (t f − t) →   = a cos    1   N 21 N 22   tf − t

Les termes de la matrice N sont intégrés en variable  .

tf − t =

 M11 = 1 M = 0  →  21 M12 = t f − t  M 22 = 1

tan  − tan f d  dt = − c ccos2 

Contrôle optimal

355

dN11 dN11 a = a(t f − t)2 cos3   = 3 (tan  − tan f )2 cos  dt d c  a  sin f − sin  1  1   → N11 = 3  + ln  tan f +  − ln  tan  +  2 c  cos f cos f  cos     

Terme N11 :

avec N11 (t f ) = 0

dN12 dN12 a = a(t f − t)cos3   = (tan  − tan f )cos  dt d c2 a cos(f − ) − 1 → N12 = 2 avec N12 (t f ) = 0 c cos f

Terme N12 :

dN 22 dN 22 a = a cos3   = − cos  dt d c a → N22 = (sin f − sin ) avec N22 (t f ) = 0 c

Terme N22 :

Correction de commande La correction de commande est donnée par (4.131), avec (S,M, N) = (S,M, N) .

u = −H−uu1 ( H xu + f u (S − MN −1MT ) ) x(t) + f u MN −1 

Cette formule donne la correction  fonction de l’écart d’état et de contrainte.

 zf   z   et l’écart de contrainte   .  v   vf 

En notant v = vz , l’écart d’état est 

On obtient : = Kz z + (t f − t)v −zf  + K v v −vf 

 cos 2  (N 22 (t f − t) − N12 ) K z = det N avec les gains :  2 K = cos  (N − N (t − t)) 12 f  v det N 11 Les gains K z et K v fonctions du temps sont calculés sur la trajectoire nominale.

Ils sont associés aux écarts prévus sur l’altitude finale et sur la vitesse finale. Si les conditions finales visées ne varient pas au cours de la trajectoire (zf = 0 , vf = 0) , la correction se met sous la forme plus simple :

 = K1 (v + K 2z)

K 2 = K z / K1 avec  K1 = K v + K z (t f − t)

356

Techniques d’optimisation

La Figure 4-28 montre l’évolution des gains K1 et K 2 sur une trajectoire visant une altitude de 200 km en 300 s avec l’accélération a = 3g ( g = 9 m  s −2 ). La solution nominale donne (Exemple 4-5) : 0 = 28,08 deg et = − 0,0035 . Les gains sont tracés en log(−K) .

Figure 4-28 : Évolution des gains le long de la trajectoire nominale

Un guidage implicite applique une correction de commande de la forme (4.132) avec des gains précalculés. Cette correction basée sur une linéarisation locale au voisinage de la solution nominale ne donne pas l’extrémale vraie partant de l’état courant. Par opposition, un guidage explicite consiste à recalculer l’extrémale vraie partant de l’état courant. Cette stratégie est plus coûteuse en calculs, mais peut s’avérer plus robuste en présence de fortes perturbations.

4.3.6 Équation de Hamilton-Jacobi-Bellman Considérons un problème à temps final libre avec des contraintes finales.

 x = f (x, u, t)  min J =  L(x, u, t)dt + (x f , t f ) avec x(t 0 ) = x 0 u,t f t0 (x , t ) = 0 f f  tf

(4.133)

La solution et le coût J dépendent du point initial (x 0 ;t 0 ) . La fonction valeur

V(x, t) est définie comme le coût minimal en partant de (x; t) .

La Figure 4-29 ci-après montre quatre extrémales obtenues en faisant varier le temps et l’état initial.

Contrôle optimal

357

Figure 4-29 : Extrémales et fonction valeur

Propriété 4-7 : Équation de Hamilton-Jacobi-Bellman La fonction valeur V(x, t) vérifie l’équation de Hamilton-Jacobi-Bellman (HJB).

min H(x,u,Vx , t) + Vt = 0 u

(4.134)

T où H(x,u,p, t) = L(x,u, t) + p f (x,u, t) est l’hamiltonien du problème (4.133)

et Vx =

V V et Vt = sont les dérivées partielles de la fonction valeur. t x

Démonstration Notons u* la commande optimale et plaçons-nous en un point quelconque (x1;t1 ) de la trajectoire optimale. D’après le principe d’optimalité de Bellman (« Tout sous-chemin d’un chemin optimal est lui-même optimal »), la commande optimale à partir de (x1;t1 ) est u*. Sinon on pourrait améliorer la solution du problème (4.133) avec une autre commande à partir de (x1;t1 ) .

La fonction valeur en (x1;t1 ) est obtenue avec la commande u*. tf

V(x1 , t1 ) =  L(x,u*, t)dt + (x f , t f ) t1

358

Techniques d’optimisation

On décompose la trajectoire partant de (x1;t1 ) en deux parties.

- La commande u* de t1 à t1 + t1 amène en x1 + x1 = x1 + f (x1,u*,t1 )t1 .

- La trajectoire optimale issue de (x1 +x1 ;t1 +t1 ) a un coût V(x1 +x1 ,t1 +t1 ). Le coût sur la deuxième partie s’obtient avec la commande u* (toujours d’après le principe d’optimalité de Bellman). Le coût optimal à partir de (x1;t1 ) est la somme de ces deux contributions.

V(x1 , t1 ) =

t1 +t1



L(x,u*, t)dt + V(x1 + x1, t1 + t1 )

t1

Développons chaque terme à l’ordre 1 pour t1 petit.

V(x1 , t1 ) = L(x1 ,u*, t1 )t1 + V(x1, t1 ) + VxTx1 + Vt t1 avec x1 = f (x1,u*,t1)t1 On obtient après simplification : qui peut s’écrire avec l’hamiltonien :

L(x1 ,u*, t1 ) + VxTf (x1 ,u*, t1 ) + Vt = 0 H(x1 ,u*,Vx ,t1) + Vt = 0

Le point (x1;t1 ) sur la trajectoire optimale est quelconque. D’après le PMP, la commande u* minimise l’hamiltonien en tout point de la trajectoire optimale. On obtient ainsi l’équation HJB (4.134).

Si l’on sait résoudre l’équation HJB, on peut ensuite définir l’adjoint par : p = Vx . On retrouve ainsi les fonctions d’influence (4.25) ainsi que les équations adjointes.

Équations adjointes à partir de HJB Calculons la dérivée de l’adjoint.

p = Vx  p = Vx = Vxx x + Vxt = Vxx f (x,u*, t) + Vxt

L’équation HJB donne :

Vt = −H(x,u*,Vx , t) = −L(x,u*, t) − VxTf (x,u*, t)

On dérive par rapport à x.

Vtx = −Lx (x,u*, t) − Vxx f (x,u*, t) − VxTf x (x,u*, t) En reportant dans p , on obtient : p = −Lx (x,u*, t) − VxTf x (x,u*, t) = −L x (x,u*, t) − p Tf x (x,u*, t) qui est l’équation adjointe : p = −Hx (x,u*,p,t)

Contrôle optimal

359

Solution non différentiable L’équation HJB (4.134) suppose la fonction valeur de classe C1. Cette hypothèse forte n’est pas forcément satisfaite comme le montre l’exemple suivant.

Exemple 4-14 : Solution HJB non différentiable

x = xu x(t 0 ) = x 0

Considérons le problème à temps final fixé : min J = x(t f ) avec  −1u +1

L’équation HJB de ce problème est : min (Vx xu) + Vt = 0  − Vx x + Vt = 0 −1u +1

Cherchons la commande optimale par examen des possibilités de signe de x 0 .

- Si x0  0 , il faut prendre u = +1 pour avoir x  0 et ainsi minimiser x(t f ) .

 x = + x  x(t f ) = x 0e+ (tf −t0 ) - Si x 0  0 , il faut prendre u = −1 pour avoir x  0 et ainsi minimiser x(t f ) .  x = − x  x(t f ) = x 0e−(tf −t0 ) - Si x 0 = 0 , alors x(t f ) = 0 , u La fonction valeur est ainsi définie par :

 xe + (t f −t ) si x  0  V(x, t) =  0 si x = 0  − (t f −t ) si x  0  xe

→ Vx x = V  0 , Vt = −V → Vx x = V  0 , Vt = + V

Cette fonction satisfait l’équation HJB, mais elle n’est pas différentiable en x = 0. L’équation HJB de ce problème n’admet pas de solution différentiable sur .

Sous-gradient et sur-gradient Pour généraliser l’équation HJB à des solutions non différentiables, on définit le sous-gradient et le sur-gradient d’une fonction. n n → Un sous-gradient de f : en x 0 est un vecteur g vérifiant localement :

f (x)  f (x 0 ) + g T (x − x 0 )

Un sur-gradient de f :

n



en x 0 est un vecteur g

n

vérifiant localement :

f (x)  f (x 0 ) + g T (x − x 0 ) − Le sous-différentiel f (x 0 ) de f en x 0 est l’ensemble des sous-gradients.

360

Techniques d’optimisation

Le sur-différentiel f (x 0 ) de f en x 0 est l’ensemble des sur-gradients. Ces définitions sont illustrées sur la Figure 4-30. +

Figure 4-30 : Sous-gradient et sur-gradient, sous-différentiel et sur-différentiel Si la fonction f est différentiable en x 0 , alors son gradient f (x 0 ) est l’unique − + sous-gradient et sur-gradient : f (x0 ) = f (x 0 ) = f (x 0 ) .

Exemple 4-15 : Sous-gradient et sur-gradient Considérons la fonction :

 0 si x  0  f (x) =  x si 0  x  1   1 si 1  x

Cette fonction est dérivable sauf en 0 et en 1. Calculons son sous-différentiel et son sur-différentiel en 0 et en 1.

f − (0) = [0; + [ + f (0) = 

Pour x 0 = 0 : 

− f (1) =  + f (1) = [0;0,5]

Pour x 0 = 1 : 

Contrôle optimal

361

Solution de viscosité Considérons une équation aux dérivées partielles (EDP) : F x,f (x), f (x) = 0 L’inconnue est la fonction f :

n

→ .

n n → . L’équation (EDP) est définie par la fonction F :   Une fonction continue f est appelée : + - solution de sous-viscosité si : F x,f (x),g  0 , x , g f (x) ;

- solution de sur-viscosité si : F x,f (x),g  0 , x , g f (x) ; - solution de viscosité si elle est à la fois une solution de sous-viscosité et une solution de sur-viscosité. −

Exemple 4-16 : Solution de viscosité Considérons l’équation aux dérivées partielles : 1 − f (x) = 0 avec f : Pour cette EDP, la fonction F est définie par : Une solution classique de classe C1 est :

→ .

F(x,f ,g) = 1 − g . f (x) =  x + c .

Montrons qu’il existe aussi la solution de viscosité : f (x) = x . - Cette fonction est continue. - Pour x  0 , la fonction f est dérivable et vérifie bien l’équation. - Pour x = 0 , il faut examiner les sous-gradients et les sur-gradients de f. − Sous-gradient en x 0 = 0 : f (x 0 ) = [−1, + 1]

→ F(x0 ,f (x 0 ),g) = 1 − g  0 , g f − (x 0 ) → f est solution de sur-viscosité en x 0 = 0 . + Sur-gradient en x 0 = 0 : f (x 0 ) = 

→ f est solution de sous-viscosité en x 0 = 0 . f est donc à la fois solution de sous-viscosité et de sur-viscosité.

La notion de solution de viscosité élargit l’ensemble des solutions de l’équation HJB aux fonctions continues. On peut alors montrer que la fonction valeur V(x, t) est l’unique solution de viscosité de l’équation HJB.

362

Techniques d’optimisation

4.4 Conditions d’optimalité d’ordre 2 Cette section présente les conditions suffisantes d’optimalité issues du problème de minimum auxiliaire, ainsi que les conditions associées aux arcs singuliers.

4.4.1 Problème de minimum auxiliaire Considérons un problème à temps final libre avec des contraintes finales.

 x = f (x, u, t)  min J =  L(x, u, t)dt + (x f , t f ) avec x(t 0 ) = x 0 u,t f t0 (x , t ) = 0 f f  tf

(4.135)

Le coût augmenté J a est défini avec l’adjoint p et les multiplicateurs  . tf

J a =   L + pT (f − x)  dt +  +  T

(4.136)

t0

On introduit l’hamiltonien normal H (avec p0 = 1 ) et les fonctions  et  :

H = L + pT f  T  =  +     =  + L

(4.137)

Les conditions d’optimalité sont établies à partir des variations premières et secondes du coût augmenté en considérant des variations x, u, p, t f , x f . Ces variations doivent être admissibles vis-à-vis des contraintes finales (x f ,t f ) = 0.

Pour généraliser les résultats, on considère également des variations x 0 sur l’état

initial et f sur les contraintes finales qui deviennent : (x f ,t f ) = f . Les conditions d’optimalité d’une extrémale seront établies pour x 0 = 0 et f = 0 . Propriété 4-8 : Variation première et seconde du coût augmenté La variation première J a est donnée par :

J a =

tf

 (H

t0

x

+ p)T x + H Tu u + (f − x) T p  dt T f

T

T 0

(4.138) T

+ ( x − p) x f +  f t f +   + p x 0 −   f

Contrôle optimal

363

2 La variation seconde  J a au voisinage d’une extrémale est donnée par : T

tf

T

 x   H xx H ux   x   x   Ja =        dt +   u   H xu H uu   u   t f t0  2

  xx  x   x   T     x    t f

(4.139)

Démonstration Le coût augmenté (4.136) est mis sous la forme : J a =

tf

 ( H − p x ) dt +  . T

t0

Montrons successivement les formules donnant la variation première et la variation seconde du coût augmenté. Variation première On applique des variations x, u, p, x f , t f ,  ainsi que x 0 , f . tf

 (H x + H u + f

J a =

T x

T u

T

p − p T x − x T p)dt

t0

+ (H − p T x)f + Tx (x f + x f t f ) +  t t f +  T −  T f en incluant la variation de borne de l’intégrale et la contribution xf t f sur x(t f ) . tf

On intègre par parties le terme :

 p x dt = (p x) T

T

t0

tf

tf

− (p x) t0 −  pT x dt . T

t0

T x

En introduisant la dérivée totale :  =  x + t et avec  =  , on obtient :

J a =

tf

 (H

t0

x

+ p)T x + H Tu u + (f − x) T p  dt

+ ( x − p)fT x f +  f t f +  T  + p0Tx 0 −  T f Les conditions de stationnarité sont (pour x 0 et f fixés) :

J a = 0 , x, u, p, x f , t f , 

x = f  f = 0    p = − H x ,   f = 0 H = 0 p =  x  u  f

(équations E)

364

Techniques d’optimisation

Variation seconde Appliquons à nouveau des variations x, u, p, x f , t f ,  et x 0 , f sur J a . tf

 J a =  x T (H xx x + H ux u + H px p + p) + u T (H xu x + H uu u + H pu p) 2

t0

+ pT (f xT x + f uT u − x)  dt + (H x + p)T x + H Tu u + (f − x) T p  t f

(borne de l'intégrale)

f

+ x Tf   xx (x + xt) +  xt t +  x  − p − pt f + t f   Tx (x + xt) +  t t +  Tu u +  T   T

T x

T 0

f

T

+  ( x + t)f + p x 0 −   f tf

On intègre par parties le terme :

 x pdt = (x p) T

T

t0

f

tf

− (x p)0 −  x Tpdt . T

t0

2

La variation  J a est à évaluer au voisinage d’une extrémale. En utilisant les équations (E) vérifiées sur l’extrémale et en exprimant les dérivées de  ,  :

 =  Tx x +  t    ( ) x = = Txx f + Tx f x +  tx =  x + Tx f x T T   =  x +  =  f +    x x t x t ,     =   = d x = T f +  x xx tx  =  dt   

on obtient après regroupement des termes : tf

 J a =  x T H xx x + x T H ux u + u T H xu x + u T H uu u + 2p T (f xT x + f uT u − x)  dt 2

t0

+ x fT ( xx x +  x t)f + t f ( Tx x + t)f + 2 T ( Tx x + t −  )f Le développement à l’ordre 1 de l’équation d’état et des contraintes (en

x = f xT x + f uT u  x = f (x,u, t)  T considérant la variation f ) donne :   x x f + t f =  f (x f , t f ) =  f 2 ce qui élimine les termes associés dans  J a . Il reste sous forme matricielle : tf

T

T

 x   H xx H ux   x   x   Ja =        dt +   u   H xu H uu   u   t f t0  2

  xx  x   x   T     x    t f

Contrôle optimal

365

J a = 0 , u , t f admissibles. 2  J a  0

Les conditions d’optimalité d’ordre 1 et 2 sont : 

Les variations u et t f sont admissibles si elles vérifient les contraintes finales. La condition d’ordre 1 conduit aux équations de l’extrémale (4.121) rappelées ici.

x = f  f = 0   (4.140) J a = 0 , u , t f  p = − H x ,  f = 0 H = 0 p =  x  u  f Pour vérifier la condition d’ordre 2, on cherche la valeur minimale que peut prendre la variation seconde (4.121) pour des variations admissibles u et t f au voisinage d’une extrémale. Les écarts x propagés jusqu’au temps final doivent respecter les contraintes finales (valeur f ). Ceci conduit à formuler le problème suivant, dit de minimum auxiliaire (accessory minimum problem). T

T

t 2 J 1 f  x   H xx H ux   x  1  x  min a =     dt +      u,t f 2 2 t 0  u   H xu H uu   u  2  t f

  xx  x   x   T     x    t f

x = f xT x + f uT u avec  T  x x f + t f =  f

(4.141)

Le problème est ici formulé de manière générale pour des variations fixées x 0 et f de l’état initial et des contraintes finales. Les conditions d’optimalité seront établies en considérant des variations nulles : x 0 = 0 et f = 0 .

Les dérivées de H,  et  sont évaluées sur l’extrémale de référence. Les variables sont les écarts u et t f par rapport à l’extrémale de référence. Propriété 4-9 : Solution du problème de minimum auxiliaire La solution du problème de minimum auxiliaire est l’extrémale voisine définie par les équations (4.124-125) et la variation du coût à l’ordre 2 est donnée par : tf

T

 x 0   S − M N −1M T  J a =  v H uu v dt +    −1 T   f   N M t0 2

T

M N −1   − N −1  t

 x 0      f  0

(4.142)

avec v = u + H −uu1 (H xu + f uS)x + f u M + f u t f  def

où les matrices S, M et N sont déterminées par les équations (4.128) et (4.130).

366

Techniques d’optimisation

Démonstration (d’après [R3]) Étape 1 : Montrons d’abord que la solution de (4.141) est l’extrémale voisine associée à x 0 et f . Le problème auxiliaire (4.141) est un problème avec contraintes finales et avec un paramètre t f intervenant dans le coût final. On écrit ses conditions d’optimalité en notant pq l’adjoint et H q l’hamiltonien. T

 H xx Hux   x  T T T     + pq (f x x + f u u) H H  u  xu uu    La commande optimale u minimise l’hamiltonien H q . 1  x  Hq =   2  u 

−1 min Hq  Huu u + H xu x + f u pq = 0  u = −Huu (H xu x + f u pq ) u

Les équations adjointes sont : pq = −

H q x

= −H xx x − H ux u − f x pq .

On introduit les multiplicateurs  q des contraintes finales. Les conditions de transversalité (4.53) donnent :

pq (t f ) = xx x f +  x t f + xq

La condition (4.35) sur le paramètre t f donne : tf

 x f + t f + q +  T x

Hq

t f t0

dt = 0   Tx x f + t f +  q = 0

Regroupons ces conditions d’optimalité en notant p q = p et q =  . noté

noté

 x f +  t f x = f x + f u =  f   p = −H xx x − H ux u − f x p avec  xx x f +  x t f +  x  = p(t f )   T −1 u = −H uu (H xu x + f u p)  x x f +  t f +   = 0 T x

T u

T x

On retrouve les équations des extrémales voisines (4.124) et (4.125). 2 Étape 2 : Calculons ensuite la valeur de  J a . 2 Il faut calculer la valeur de  J a donnée par (4.139) sur l’extrémale voisine

associée à x 0 et f .

Contrôle optimal

367

On utilise la relation suivante :

 x T  S M    x    x   H xx H ux   x  d    T    T    = v H uu v −     M N          dt    T  u   H xu H uu   u   T    t f   t  f    −1 avec v = u + H uu (H xu + f uS)x + f u M + f u t f  T

def

Cette relation se vérifie en dérivant et en utilisant les équations (4.126) et (4.128) donnant les dérivées de x et des matrices S,M, N, , ,  . Le calcul (très long) n’est pas détaillé ici. Avec cette formule et en exprimant le terme final en fonction des matrices S, ,  , la variation seconde (4.139) se met sous la forme : tf

 x T  S M   x   T    T     x   S    x  2 T  J a =  v H uu v dt −     M N      +    T    (t f ) t0  t    T T   t    t f       t f   f   t  f   0 tf

qui devient en simplifiant les termes en S, ,  à t f : tf

tf

 x  2 J a =  vT H uu v dt +    t f  t0

T

S  T 

 x T  0 M 0  x      T    x        (t 0 ) −     M N         t f   t   0 T 0  t    f   t  f   0

T Le dernier terme s’exprime en utilisant (4.127) : f = M x + N + t f .

 x        t   f

T

 0 M  T M N  0 T  T Le terme   f tf

0  x        = 2 T (M T x + t f ) +  T N = 2 T f −  T N  0   t f  est constant et N(t f ) = 0 d’après (4.128). Il reste : T

 x   S    x  T  J a =  v H uu v dt +    T    (t 0 ) −  N(t 0 )  t f       t f  t0 Avec les relations (4.130) donnant t f ,  en fonction de x 0 , f , on a : 2

 x     t f 

T

T

T

 x 0   S − M N−1MT M N−1   x 0   S    x  T (t ) −  N(t )  =        T   0 0 −1 T − N−1 t  f       t f   f   N M 0

ce qui permet d’établir la formule (4.142).

368

Techniques d’optimisation

4.4.2 Conditions suffisantes de minimum Considérons une extrémale du problème (4.135), définie par les équations (4.140). Les matrices S, M et N associées aux extrémales voisines sont définies par les équations (4.128) et (4.130). Le théorème suivant donne les conditions suffisantes pour que l’extrémale soit un minimum. Théorème 4-10 : Conditions suffisantes de minimum local Une extrémale est un minimum local si elle satisfait les conditions suivantes. •

Condition de convexité (condition de Legendre-Clebsch)

Huu  0 , t [t 0 ;t f ] •

Condition de normalité

N  0 , t [t 0 ;t f ] •

(4.143)

(4.144)

Condition de d’absence de point conjugué (condition de Jacobi)

S − M N−1 MT finie , t [t 0 ; t f ]

(4.145)

Démonstration 2 Il faut montrer que, sous les conditions (4.143-145), le minimum de  J a (4.142) est obtenu pour u = 0 .

2 Si Huu  0 (condition de convexité),  J a (4.142) est minimale pour v = 0 .

La matrice Huu définie positive est inversible et la variation de commande u est −1 alors donnée par : v = 0  u = −Huu (Hxu + f uS)x + f u M + f u t f  .

Si N  0 (condition de normalité), la matrice N est inversible. Avec les équations de l’extrémale voisine (4.130), la variation u s’exprime en retour d’état (4.131).

u = −H−uu1 ( H xu + f u (S − M N −1 MT ) ) x + f u M N −1 

−1 T Si la matrice S − M N M reste finie, alors les variations u et x restent nulles

sur l’extrémale de référence (pour x 0 = 0 et  = 0 ). La seule solution donnant

2 J a = 0 est alors l’extrémale de référence (u = 0) qui est un minimum local.

Contrôle optimal

369

Remarque sur la condition de normalité La matrice N est obtenue par intégration à rebours à partir des équations (4.128). T −1 T Si Huu  0 , alors B = f u H uu f u  0 et N = M BM  0 (méthode de transport réduite).

Si (t f )  0 , alors N(t f )  0 car N = N −

T et N(t f ) = 0 . 

On a alors : N(t)  N(t f )  0 . La condition de normalité renforce cette inégalité

N  0 pour assurer que N est inversible. Point conjugué

(

)

−1 T L’extrémale admet un point conjugué C au temps tc si : S − M N M (t c ) =  .

La commande en retour d’état (4.131) n’est alors plus nécessairement nulle à tc. Une impulsion u donne une dérivée x(t c ) non nulle et un chemin admissible différent de l’extrémale de référence OCF associée à x = 0 sur la Figure 4-31. Ce chemin atteint les conditions finales  = 0 en un point F’ différent du point 2

de référence F et avec une variation de coût  J a nulle sur CF’ (car v = 0 ). Il peut alors exister un chemin OF’ direct ne passant pas par C et de coût inférieur au chemin OCF (car on enlève la contrainte de point intermédiaire C).

Figure 4-31 : Point conjugué L’exemple suivant (déjà traité par le calcul des variations dans l’Exemple 3-5) illustre la notion de point conjugué pour le problème des géodésiques de la sphère.

370

Techniques d’optimisation

Exemple 4-17 : Géodésiques sur une sphère On cherche les courbes de distance minimale entre les points O et F sur la sphère unité. Les axes sont choisis pour que les deux points soient sur l’équateur.

 0 = 0   f  O  , F   f = 0   0 = 0  Le problème est formulé avec :

 x1     x = =   x2     = u1  u1  - le vecteur de commande : u =   →   = u 2  u2  - le vecteur d’état :

2 2 2 2 2 2 L’élément de distance est : ds = d + d cos  = u 2 + u1 cos x 2 dt

Formulation du problème de contrôle tf

x(t 0 ) = x O x1 = u1 min J =  u 22 + u12 cos2 x 2 dt avec  et  u,t f x 2 = u 2 x(t f ) = x F t0 Recherche des extrémales La commande optimale minimise l’hamiltonien.

min H = u 22 + u12 cos 2 x 2 + p1u1 + p 2 u 2 u1 ,u 2

u12 cos2 x 2 (cos2 x 2 − p12 ) − u 22p12 =0 Hu = 0   2 2 2 − u 22 (1 − p22 ) = 0 u1 cos x 2 (p2 )  x 2 = 0 , p1 = 1 Une solution possible (parmi d’autres) est :  . u 2 = 0 , p 2 = 0 Cette extrémale est un arc de grand cercle suivant l’équateur (x 2 =  = 0) . Cherchons si cette extrémale vérifie les conditions suffisantes de minimum. Conditions d’ordre 2 La solution étant suivant l’équateur, on reformule le problème en variable  au lieu de t. L’état se réduit à une seule composante () , ce qui simplifie l’étude des conditions d’ordre 2.

Contrôle optimal

371

(0 ) = 0 = 0 d u et =   u d (f ) = f = 0 0 L’extrémale a pour équation : u = 0 ,  = 0 . min J =

f

u 2 + cos2  d avec  ' =

On calcule les matrices A, B, C, S, M et N données par (4.126) et (4.128). Dérivées de f :

f = u  f = 0 , f u = 1

Dérivées de H :

H = u 2 + cos2  + pu = L + pu avec L = u 2 + cos2 

− sin 2 u , Lu = 2L L L 1 2Lcos 2 − L sin 2 L − uL u H  = − , H u = −u 2 , H uu = 2 2 L L L2 L = 1 H = − 1 u = 0    L = 0  Hu = 0 Valeurs sur l’extrémale :   = 0   L u = 0 H uu = 1 A = 0 , B = 1 , C = −1 Matrices A, B, C : H  = L , H u = L u + p

avec L =

Matrices S, M, N :

S = S2 + 1 avec S( f ) =  xx (t f ) = 0 → S() = − tan( f − )  1  avec M( f ) =  x (t f ) = 1 → M() = M = SM cos( f − )  T  → N() = − tan( f − )  N = M BM avec N(t f ) = 0 Commande en retour d’état :

1  −1 T S − MN M = tan( − )  f  −1 MN −1 =  sin( f − )

→ u = −

  f + tan( f − ) sin( f − )

−1 T Un point conjugué apparaît si :  f −  =   S − MN M =

1 =. tan( f − )

L’extrémale passe par un point conjugué si l’angle OF atteint 180° (distance supérieure à un demi-tour). Elle n’est pas optimale dans ce cas : le chemin en sens inverse est plus court).

372

Techniques d’optimisation

Dérivées du coût optimal Les formules (4.138) et (4.142) ont été utilisées pour exprimer les conditions suffisantes de minimum sur l’extrémale de référence (x 0 = 0 , f = 0) . Elles donnent également les dérivées premières et secondes du coût optimal par rapport à des variations d’état initial x 0 et de contraintes finales f .

J  2J (t 0 ) = p(t 0 ) , (t 0 ) = S − M N −1 M T x x 2 J  2J  2J −1 = − , = − N , = N −1 M T   2 x

(4.146)

4.4.3 Arcs singuliers Considérons un problème de temps minimal avec une commande linéaire bornée.

min J = t f

−1u+1

avec x = f (x) + g(x)u

(4.147)

L’état est de dimension n. On se restreint ici à une commande u de dimension 1. L’hamiltonien s’exprime avec l’adjoint p et le multiplicateur anormal p0. (4.148)

H = p0 + pT (f + ug)

La commande optimale minimise l’hamiltonien. Elle dépend du signe de la fonction de commutation  définie par :

 = Hu = pTg(x) →



u = +1 si   0 , u = ? si  = 0 u = −1 si   0

(4.149)

Les arcs réguliers u = 1 sont appelés arcs « bang ». Un arc singulier survient si

 est identiquement nulle sur un intervalle. Les dérivées successives  ,  ,

sont alors toutes nulles. La commande sur l’arc singulier est déterminée par la première dérivée explicite en u. Les questions qui se posent concernent l’optimalité d’un arc singulier, ainsi que son raccordement à des arcs réguliers. Condition de Kelley La condition de Kelley (ou condition généralisée de Legendre-Clebsch) est une condition nécessaire d’optimalité d’un arc singulier du système (4.147).

(−1)k

  d 2k H    0 u  dt 2k u 

 (−1)k ( (2k) )u  0 avec  = H u

(4.150)

Contrôle optimal

373

La dérivée (2k) est la première dérivée explicite en u. On montre que cette dérivée est nécessairement paire. L’entier k est appelé ordre de l’arc singulier. Dérivées et crochets de Lie Pour étudier les arcs singuliers, on introduit les dérivées et crochets de Lie. Un champ de vecteurs X est une fonction de n dans n . Les composantes de X sont n fonctions de n dans . Le gradient de X noté X est défini par :

 X1    X=  X   n

 X1  x  1 , X n ) =    X1  x  n

→ X = ( X1 ,

La dérivée de Lie d’une fonction  :

n

la fonction notée LX de

définie par :

n

dans



X n  x1     X n  x n 

(4.151)

suivant le champ de vecteurs X est

LX  = XT

(4.152)

def

Cette fonction également notée LX = X est associée au champ de vecteurs X. noté

Elle représente la dérivée directionnelle de  suivant X en tout point x  n . Le crochet de Lie des champs de vecteurs X et Y est l’opérateur défini par :

 X,Y def= XY − YX

(4.153)

Cet opérateur consiste à appliquer successivement les dérivées de Lie L X et L Y sur des fonctions  :

n

→ . Il est équivalent à l’opérateur Z défini par : (4.154)

Z = YT X − XT Y

Démonstration (voir [R17]) Appliquons l’opérateur [X,Y] sur une fonction  :

X,Y = XY− YX = LX (LY) − LY (LX)

n

→ .

374

Techniques d’optimisation

En explicitant les dérivées de Lie définies par (4.152), on obtient :

 X,Y   = LX (Y T) − L Y (X T) = X T(Y T) − Y T(X T) = X T (Y  +  2 Y) − Y T (X  +  2 X) = (X TY − Y TX) 

car le hessien  2 est symétrique

= (Y T X − X T Y) T  = L Z = Z en posant Z = Y T X − X T Y

Le crochet de Lie possède les propriétés suivantes, faciles à démontrer.

 X, X = 0  X, Y = −  Y, X  X,  Y, Z +  Y,  Z, X  +  Z,  X, Y  = 0

(4.155)

La troisième égalité est l’identité de Jacobi. Dérivée d’une fonction suivant une extrémale Les crochets de Lie sont utiles pour exprimer de manière compacte les dérivées  ,  , de la fonction de commutation. Le système (4.147) a pour équation d’état : x = f (x) + ug(x) . En associant aux fonctions f et g les champs de vecteurs F et G sur n , les extrémales du problème (4.147) ont pour équations : f (x) + ug(x)  x = H p = F + uG x = (4.156)    p = − (  F + u  G)p p = − H = − f (x) + ug (x) p     x x x Considérons un champ de vecteurs Z et une fonction  :



de la forme : (4.157)

(t) = p(t)T Z[x(t)]

La dérivée de  suivant une extrémale s’exprime alors avec le crochet de Lie.

 = pT  F + uG, Z = pT f + ug, Z

(4.158)

noté

Démonstration (voir [R17])

p = − (F + uG)p

T T La dérivée de  est :  = p Z + p Z avec 

T T  Z = Z x = Z (F + uG)

où les dérivées de x et p sont prises suivant l’extrémale d’équations (4.156).

Contrôle optimal

375

T T T T On obtient :  = − p (F + uG) Z + p Z (F + uG)

T T qui s’écrit en utilisant le crochet de Lie :  = p  F + uG, Z = p f + ug, Z noté

Dérivées de la fonction de commutation Appliquons la formule (4.158) pour calculer les dérivées successives de la T T fonction de commutation (4.149) :  = p g = p G . La dérivée première est donnée par :

 = pT g

→  = pT [f + ug,g] = pT [f ,g]

(4.159)

La dérivée seconde est donnée par :

 = pT [f ,g] →  = pT [f + ug,[f ,g]] →  = pT [f ,[f ,g]] + upT [g,[f ,g]]

(4.160)

Les dérivées successives de  sont toutes nulles le long d’un arc singulier. T Si p [g,[f ,g]]  0 , la dérivée seconde explicite en u détermine la commande.

u sing = −

pT [f ,[f ,g]] pT [g,[f ,g]]

(4.161)

L’arc singulier obtenu avec cette commande est d’ordre 1. T Si p [g,[f ,g]] = 0 , il faut continuer à dériver  jusqu’à obtenir une expression explicite en u. L’arc singulier est d’ordre supérieur. Arc singulier d’ordre 1 La commande sur un arc singulier d’ordre 1 est déterminée par (4.161). Pour être admissible, cette commande doit vérifier les bornes : −1  using  +1 . Pour être optimale, elle doit vérifier la condition de Kelley (4.150) pour k = 1 .



  d 2 H   T  2   0  −   0  p [g,[f ,g]]  0 u  dt u  u

(4.162)

Propriété 4-11 : Jonction d’un arc singulier d’ordre 1 et d’un arc bang Un arc singulier vérifiant la condition de Kelley au sens strict peut se raccorder à un arc bang (u bang = 1) à un temps  tel que : −1  using ()  +1 .

376

Techniques d’optimisation

Démonstration (voir [R17]) Supposons que l’arc singulier se raccorde à un arc bang au temps  tel que : −1  using ()  +1 . −

Si l’arc bang précède l’arc singulier, il s’arrête à  . + Si l’arc bang succède à l’arc singulier, il commence à  . 

Montrons que cette jonction satisfait le principe du minimum en  . T T L’hamiltonien est donné par : H = p0 + p (f + ug) = p0 + p f + u T T Les fonctions  = p g et  = p [f ,g] sont continues, car elles ne dépendent que



de x et p. Elles sont nulles à  (sur l’arc singulier), donc aussi à  par continuité. T T La dérivée seconde de  est donnée par (4.160) :  = p [f ,[f ,g]] + up [g,[f ,g]] T T Sur l’arc singulier à  : () = p [f ,[f ,g]] + u sin g p [g,[f ,g]] = 0

 Sur l’arc bang à  :

( ) = pT [f ,[f ,g]] + u bang pT [g,[f ,g]]

1er cas : u bang =−1  u sin g ()  On a : ( )  ()

car pT [g,[f ,g]]  0

(condition stricte de Kelley)

car () = 0 (sur l’arc singulier) Écrivons le développement de  d’ordre 2 en  en utilisant  () = 0 et  ( )  0 

() = 0.

1 1 ( ) = () + ( − )() + ( − ) 2 ( ) = ( − ) 2 ( )  ( )  0 2 2 T   Appliquons le PMP à  : min H = p0 + p f + u  u(t ) = −1 car   0 −1u +1

On obtient la commande u bang =−1 , en cohérence de l’hypothèse. Cette jonction est donc possible. 2e cas : u bang =+1  usin g () La vérification s’effectue de manière similaire.    Le PMP à  donne : ( )  0 et u(t ) = +1 .

Contrôle optimal

377

L’exemple suivant illustre une solution présentant une jonction avec un arc singulier d’ordre 1.

Exemple 4-18 : Jonction avec un arc singulier d’ordre 1 Formulation Le problème est un double intégrateur en dimension 2 à ramener à l’origine en minimisant un coût quadratique. L’état initial et le temps final sont fixés. La commande n’est pas bornée. t

1 f min J =  x12dt u 2 t 0 =0

x1 = x 2 + u x1 (t f ) = 0 avec  et  x 2 (t f ) = 0 x 2 = − u

L’hamiltonien H constant (système autonome) s’exprime avec l’adjoint (p1 ,p2 ) .

1 1 p1 = − x1 H = x12 + p1 (x 2 + u) − p 2 u = x12 + p1x 2 + u →  2 2 p 2 = −p1 La fonction de commutation est définie par :  = p1 − p2 . Recherche des arcs singuliers Un arc singulier se produit si la fonction  reste identiquement nulle.

  p1 = x 1  = −x1 + p1 = 0  = p1 − p2 = 0     u = − (x1 + x 2 )   = −x 2 − u − x1 = 0

L’arc singulier est d’ordre 1, car la dérivée seconde est explicite en u. Cet arc peut être optimal, car il satisfait la condition nécessaire de Kelley (4.162). k On a en effet pour k = 1 : (−1)

  d 2k H    2k  = −  =1  0 u  dt u  u

D’après la Propriété 4-11, cet arc d’ordre 1 peut se raccorder à un arc régulier. Les équations de l’arc singulier s’obtiennent à partir de l’hamiltonien.

 = 0 1 H = x12 + p1x 2 + u = C te avec  2 p1 = x1 On obtient un arc d’hyperbole d’équation : x1 (x1 + 2x 2 ) = 2H

ayant pour asymptotes : x1 = 0 et x1 + 2x 2 = 0 .

378

Techniques d’optimisation

Déterminons les évolutions temporelles de x1 et x 2 .

p1 = − x1  x1 = − x1 p1 = x1



Pour x1 : 



Pour x 2 : x 2 =

H 1 − x1 x1 2

 x1 (t) = ae− t  x 2 (t) =

H t 1 −t e − ae a 2

Recherche des jonctions On envisage des solutions composites raccordant des arcs réguliers et singuliers.

 x1 (t 0 ) = x10  x1 (t f ) = 0 et  .  x 2 (t 0 ) = x 20  x 2 (t f ) = 0

Les temps et états initial et final sont fixés : 

La commande n’est pas bornée et n’intervient pas dans le coût J. En conséquence, on peut appliquer des impulsions u « gratuites » déplaçant l’état de (x1 , x 2 ) à

(x1 +u,x 2 −u) . Ces déplacements suivent les lignes d’équation : x1 + x 2 = Cte . On peut ainsi construire une solution en 3 arcs de la forme suivante. - Une impulsion à t 0 fait passer de (x10 ,x 20 ) à (x10 +x 0 ,x 20 −x 0 ) .

- L’arc singulier est suivi de t 0 à t f avec la commande singulière u = −(x1 + x 2 ). - Une impulsion à t f fait passer de (x1f ,x 2f ) à (x1f +xf ,x 2f −xf ) = (0 , 0) . Notons (y10 , y20 ) et (y1f , y2f ) les états au début et à la fin de l’arc singulier. Ces conditions aux extrémités déterminent les équations de l’arc singulier.

 y10 = a a = y10 −t    y1f = y10e f    H 1   1 2 t  y 2f = y 20e f + y10 sh t f  y 20 = a − 2 a H = 2 y10 + y10 y 20 Écrivons les conditions de raccordement à t 0 et t f .

 y10 + y 20 = x10 + x 20 = c à t 0 def   y1f + y 2f = x1f + x 2f = 0 à t f

−t  y1f = y10e f   t  y 2f = y 20e f + y10 sh t f

On obtient l’état au début et à la fin de l’arc singulier.

y10 = 2c

e2tf 1 + e2tf = , y c 20 e2tf − 1 1 − e2tf

Le coût de cette solution est : J =

c = x10 + x 20 fixé avec  t f fixé t

t

1 f 2 1 f 2 −2t c2 x dt = y e dt = . 1 10 2 t0=0 2 t 0=0 1 − e−2tf

Contrôle optimal

379

Cette solution n’est pas forcément la meilleure. Il faut la comparer à d’autres solutions (combinaisons d’arcs réguliers et singuliers) pour établir son optimalité globale. On observe cependant qu’une solution du même type arrivant plus tôt au point final serait moins bonne, car J est une fonction décroissante de t f . Application numérique

 x10 = 1 . Le temps final est fixé à : t f = 1,5 .  x 20 = 3,28

On place l’état initial en : 

 y10  9,01  y1f  2 et  .  y 20  − 4,72  y 2f  − 2

Les états initial et final sur l’arc singulier sont : 

Le coût est égal à : J  19,28 . La Figure 4-32 montre la trajectoire dans le plan de phase avec l’impulsion initiale amenant sur l’hyperbole (arc singulier) et l’impulsion finale amenant à l’origine.

Figure 4-32 : Trajectoire composite impulsion - arc singulier - impulsion

380

Techniques d’optimisation

Intéressons-nous maintenant aux arcs singuliers d’ordre supérieur à 1. Arc singulier d’ordre supérieur T Un arc singulier est d’ordre supérieur à 1 si : p [g,[f ,g]] = 0 . T

La dérivée seconde de  étant nulle, on a aussi : p [f ,[f ,g]] = 0 . Ces conditions très restrictives sont rarement vérifiées en pratique. Il existe cependant des systèmes pour lesquels : [g,[f ,g]] = 0 . Calculons les dérivées de  dans ce cas en appliquant la formule (4.158). Pour alléger les formules, on introduit la notation :  X,Y = adX (Y) . L’opérateur adX (appelé opérateur adjoint) est associé au champ de vecteurs X. En utilisant l’identité de Jacobi (4.155), les dérivées de  s’expriment comme :

(3) = pT ad3f (g) , (4) = pTad f4 (g) + upT [g,ad3f (g)]

(4.163)

L’arc singulier est d’ordre k si la première dérivée explicite en u est (2k) . On montre que cette dérivée est nécessairement paire. La commande sur un arc singulier d’ordre k est déterminée par l’annulation de la dérivée (2k) . Pour être admissible, cette commande doit vérifier les bornes : −1  using  +1 . Pour être optimale, elle doit vérifier la condition de Kelley (4.150) :

(−1)k

  d 2k H  k T 2k −1   = (−1) p [g,ad f (g)]  0 u  dt 2k u 

(4.164)

Propriété 4-12 : Jonction d’un arc singulier d’ordre 2 et d’un arc bang Un arc singulier d’ordre 2 vérifiant la condition de Kelley au sens strict ne peut pas se raccorder à un arc bang (u bang = 1) à un temps  tel que −1  using ()  +1.

Démonstration (voir [R17]) Supposons que l’arc singulier se raccorde à un arc bang au temps  tel que : −1  using ()  +1 .

Contrôle optimal

381

− Si l’arc bang précède l’arc singulier, il s’arrête à  .

+ Si l’arc bang succède à l’arc singulier, il commence à  .  Montrons que cette jonction ne satisfait pas le principe du minimum en  . L’hamiltonien est donné par : H = p0 + pT (f + ug) = p0 + pTf + u (i) T i Les fonctions  = p ad f (g)

i =0,1, 2,3

sont continues, car elles ne dépendent que

 de x et p. Elles sont nulles à  (sur l’arc singulier), donc aussi à  par continuité.

La dérivée quatrième de  est donnée par (4.163).

(4) = pT ad f4 (g) + upT [g,ad3f (g)]

Sur l’arc singulier à  :

(4) () = pT ad f4 (g) + u sin g pT [g,ad 3f (g)] = 0

(4) ( ) = pT ad f4 (g) + u bang pT [g,ad3f (g)]



Sur l’arc bang à  : 1er cas : u bang =−1  u sin g () (4)  (4) On a :  ( )   ()

car pT [g,ad3f (g)]  0 (condition stricte de Kelley)

  (4) ( )  0

car  (4) () = 0 (sur l’arc singulier) Écrivons le développement de  à l’ordre 4 en  , en utilisant : () = () = (2) () = (3) () = 0 1 ( ) = ( − )4  (4) ( )   (  )  0 . 24 T   Appliquons le PMP à  : min H = p0 + p f + u  u(t ) = +1 car   0 −1u +1

Ce résultat est en contradiction avec l’hypothèse u bang =−1 . Cette jonction n’est donc pas possible. 2e cas : u bang =+1  usin g ()  La vérification s’effectue de manière similaire. Le PMP à  donne : ( )  0 et u(t  ) = −1 .

Une jonction entre un arc singulier d’ordre 2 et un arc bang est incompatible du PMP. Ce type de situation conduit au phénomène de chattering avec une infinité de commutations (u bang = 1) à l’approche de la jonction. Le problème de Fuller illustre ce phénomène, qui peut survenir dans des applications concrètes.

382

Techniques d’optimisation

Exemple 4-19 : Problème de Fuller (d’après [R17]) Formulation Le problème de Fuller (PF) est un double intégrateur en dimension 2 à ramener à l’origine en minimisant un coût quadratique. Le temps final est libre et la commande est bornée : −1  u  1 . Le problème (PF) se formule comme : t 1f 2 x1 = x 2 x1 (t f ) = 0 min J =  x1 dt avec  ,  , − 1  u  +1 (problème PF) u,t f 2 t0 x 2 = u x 2 (t f ) = 0 L’hamiltonien H dépend de l’adjoint (p1 ,p2 ) et du multiplicateur anormal p0 .

1 p1 = −p0 x1 H = p0 x12 + p1x 2 + p 2 u →  2 p 2 = −p1

La commande optimale minimise l’hamiltonien.

u = +1 si p 2  0  min H → u = −1 si p 2  0 u u = ? si p 2 = 0

Pour étudier les extrémales, on formule un problème équivalent de temps minimal. Problème de temps minimal Considérons le problème de temps minimal (TM) suivant.

 x1 (t f ) = 0   x 2 (t f ) = 0 , − 1  u  +1 (problème TM)   x 3 (t f ) = 0 L’hamiltonien Hq dépend de l’adjoint (q1,q2 ,q3 ) et du multiplicateur anormal q 0 .  x1 = x 2  min K =  1dt avec  x 2 = u , u,t f t0  2  x 3 = x1 / 2 tf

q1 = −q3 x1  1 H q = q 0 + q1x 2 + q 2 u + q 3 x12 → q 2 = −q1 2  q 3 = 0 On observe que les extrémales des problèmes (TM) et (PF) ont les mêmes équations en (x1 ;x 2 ) , car l’adjoint q3 est constant et joue le même rôle que le multiplicateur anormal p0 . Les hamiltoniens Hq et H sont donc être identiques.

q 0 = 0 1 1 q 0 + q1x 2 + q 2 u + q3 x12 = p1x 2 + p 2 u + p0 x12 = 0 , x1 , x 2   2 2 q3 = p0

q1 = p1 , q 2 = p 2

Contrôle optimal

383

Les adjoints (q1 ,q 2 ) et (p1 ,p2 ) coïncident. Par ailleurs, les extrémales de (PF) sont des extrémales anormales (q0 = 0) de (TM). Ceci vient du fait que la solution de (PF) est unique (non démontré ici) et qu’il existe un seul temps final permettant d’atteindre l’origine. Notons (u *, t f *) la solution de (PF), J* son coût, et choisissons x3 (t 0 ) = −J*  0 La solution de (PF) est alors la solution de (TM) pour cette condition initiale particulière. On obtient en effet avec la commande u* : t *

t *

1f 1f x 3 (t f *) = x 3 (t 0 ) +  x12dt = −J * +  x12dt = 0 2 t0 2 t0 Extrémales singulières On cherche les extrémales singulières de (TM) avec les crochets de Lie.

 x1 = x 2  x2   0      → x = f (x) + ug(x) avec f =  0  , g =  1  x 2 = u   x2 / 2   0 2  1     x 3 = x1 / 2

Les crochets d’ordre 1 valent :

 0 0 x1   0 0 0     → fx =  1 0 0  , gx =  0 0 0   0 0 0 0 0 0     

 −1 0 0       [f ,g] = g f − f g =  0  , [f ,[f ,g]] =  0  , [g,[f ,g]] =  0  0 x  0    1   Le crochet [g,[f ,g]] étant nul, il n’existe pas d’arc singulier d’ordre 1. T x

T x

Les crochets d’ordre 2 valent :

0  0     3 ad (g) = [f ,[f ,[f ,g]]] =  0  , [g,ad f (g)] = [g,[f ,[f ,[f ,g]]]] =  0  x  1  2   3 Le crochet [g,ad f (g)] ne s’annule pas. Les arcs singuliers sont d’ordre 2. 3 f

3

La condition de Kelley [g,ad f (g)]  0 est vérifiée. Ces arcs singuliers peuvent donc être optimaux. Pour les déterminer, on dérive la fonction de commutation  = q2 = p2 en utilisant les équations adjointes et les équations d’état jusqu’à faire apparaître la commande u.

 = p2 →  =− p1 →  = p0 x1 → (3) = p0 x 2 → (4) = p0u

384

Techniques d’optimisation

La fonction  et toutes ses dérivées sont nulles le long d’un arc singulier. D’après le PMP, l’adjoint (p1 ,p2 ) et le multiplicateur anormal p0 ne peuvent être simultanément nuls.

 p1 = p 2 = 0  La seule solution singulière est donc :  x 1 = x 2 = 0 avec p0  0 u = 0  sin g

Cet arc singulier d’ordre 2 se réduit à l’origine qui est le point final visé. D’après la Propriété 4-12, il n’existe pas de raccordement possible avec un arc bang. L’origine ne peut donc être atteinte qu’avec du chattering, c’est-à-dire avec une infinité de commutations u = 1 ). Extrémales régulières Toutes les extrémales de (PF) sont régulières (sauf l’origine). La solution de (PF) est une suite d’arcs bangs définis par :

 x1 = x 2 p1 = −p0 x1 1 ,  , H = p0 x12 + p1x 2 + p 2u = 0 , u = 1  2 p 2 = −p1  x 2 = u Si p0 = 0 (cas anormal), alors p1 est constant et p2 est linéaire. Il y a une seule

commutation et le raccordement avec le point final (arc singulier d’ordre 2) ne peut être optimal. Les arcs bangs sont donc normaux et on peut poser p0 = 1 . • Intégrales premières Les arcs bangs (u = 1) possèdent les deux intégrales premières suivantes.

1 I1 = x1 − ux 22 2

2 (Vérification : I1 = x1 − ux 2 x 2 = x 2 − u x 2 = 0 )

1 I2 = −p1 − ux1x 2 + x 32 3 2 2 2 2 (Vérification : I2 = − p1 − ux1x 2 − ux1x 2 + x 2 x 2 = x1 − ux 2 − u x1 + ux 2 = 0 ) • Sens des commutations Les commutations de u = −1 à u = +1 se produisent pour x 2  0 . Les commutations de u = +1 à u = −1 se produisent pour x 2  0 . Vérifions cette propriété relative au sens des commutations. Le sens de commutation dépend du signe de la première dérivée non nulle de  . À un temps de commutation, on a :  = p2 = 0  H =

1 2 x1 + p1x 2 = 0 2

Contrôle optimal

385

Si p1 = 0 , alors x1 = 0 (car H = 0 ) et x 2  0 (car l’origine ne peut être sur un arc régulier). On a alors :  =  =  = 0 →  (3) = x 2 qui détermine le sens de commutation.

1 2

2 Si p1  0 , alors x1  0 (sinon on aurait x1 = x 2 = 0 ) et H = 0  p1x 2 = − x1  0

Le sens de la commutation est déterminé par  = −p1 qui est du signe de x 2 . Extrémales invariantes Considérons le changement de variable (u,x1,x 2 ,p1,p2 ) → (v, y1, y2 ,q1,q 2 ) défini avec un paramètre  par :

t t t v(t) = −u   , y1 (t) = − 2 x1   , y 2 (t) = −x 2      t t q1 (t) = − 3p1   , q 2 (t) = − 4p 2     Remarque : on reprend la notation (q1,q2), sans lien avec les adjoints de (TM). Si (u,x1,x 2 ,p1,p2 ) est une extrémale :

 x1 = x 2 p1 = − x1 1 ,  , H = x12 + p1x 2 + p 2u = 0  2  x 2 = u p 2 = −p1 alors (v, y1, y2 ,q1,q2 ) est aussi une extrémale : 1  y1 = y 2 q1 = − y1 ,  , H = y12 + q1y 2 + q 2 v = 0  2 q 2 = −q1  y 2 = v

Ceci se vérifie directement par substitution.

L’extrémale est dite invariante point par point si :

(u,x1,x 2 ,p1,p2 )(t) = (v, y1, y2 ,q1,q 2 )(t) , t On cherche la plus petite valeur de  donnant une extrémale invariante. Si t k est un temps de commutation :  2 (t k ) = p2 (t k ) = q 2 (t k ) = − 4p 2 ( t k /  ) = 0 Les temps de commutations forment donc une suite géométrique :

t 0  t1 =

t0 t  t2 = 1   

 tf

Considérons un arc bang u = +1 de t0 à t1 suivi d’un arc bang u = −1 de t1 à t2.

386

Techniques d’optimisation

1 2

2 On utilise l’intégrale première : I1 = x1 − ux 2





1 2

1 2 x1 (t 0 ) = y1 (t 0 ) = −2 x1 ( t 0 /  ) = −2 x1 (t1 ) Par invariance de l’extrémale  x 2 (t 0 ) = y2 (t 0 ) = − x 2 ( t 0 /  ) = − x 2 (t1 ) 1 2 − 1 2 En remplaçant x1 (t 0 ) et x 2 (t 0 ) : x1 (t1 ) = −x 2 (t1 ) avec  = 2 2 + 1 1 2 1 2 Sur l’arc de t1 à t2 : x1 (t 2 ) + x 2 (t 2 ) = x1 (t1 ) + x 2 (t1 ) 2 2 x1 (t1 ) = y1 (t1 ) = −2 x1 ( t1 /  ) = −2 x1 (t 2 ) Par invariance de l’extrémale  x 2 (t1 ) = y2 (t1 ) = − x 2 ( t1 /  ) = − x 2 (t 2 ) 1 2 − 1 2 x (t ) = + x (t ) avec  = En remplaçant x1 (t1 ) et x 2 (t1 ) : 1 2 2 2 2 2 + 1 2 2 Sur l’arc de t0 à t1 : x1 (t1 ) − x 2 (t1 ) = x1 (t 0 ) − x 2 (t 0 )

On obtient les relations suivantes aux temps de commutations t 1 et t2. x1 (t1 ) = −x 22 (t1 ) avec x 2 (t1 )  0 pour la commutation de u = +1 à u = −1 à t1

x1 (t 2 ) = +x 22 (t 2 ) avec x 2 (t 2 )  0 pour la commutation de u = −1 à u = +1 à t2

C+ : x1 = +x 22 , x 2  0 Les courbes de commutation ont pour équations :  − 2 C : x1 = −x 2 , x 2  0 Valeurs de  et  Plaçons-nous sur l’arc de t1 à t2 avec u = −1 . L’hamiltonien permet d’exprimer p1 en fonction de x1 et x 2 .

1 x2 H = x12 + p1x 2 + p2 u = 0 avec p2 = 0 à chaque commutation → p1 = − 1 2x 2 2 1 3 Utilisons ensuite l’intégrale première : I2 = −p1 − ux1x 2 + x 2 . 3 1  1    I2 =  −p1 + x1x 2 + x 32  (t1 ) =  −p1 + x1x 2 + x 32  (t 2 ) 3  3     x1 (t1 ) = −x 22 (t1 ) x2 avec  et p1 = − 1 2 2x 2  x1 (t 2 ) = +x 2 (t 2 )

Contrôle optimal

387

Par invariance de l’extrémale, on a : x 2 (t1 ) = y2 (t1 ) = −x 2 ( t1 /  ) = −x 2 (t 2 ) En remplaçant x1 (t1 ) et x 2 (t1 ) dans l’intégrale première I2 , on obtient :

1 1 1 1 2 −1 1 + 2 1 −3  2 −  +  =  2 +  +  avec  =  2 = 2 3  2 3 2  +1 1 − 2 2 qui résulte en une équation bicarrée en  :

4 +

1 2 1  − =0 → = 12 18

33 − 1 1 + 2  0,44462 et  =  4,13016 24 1 − 2

Synthèse Les extrémales invariantes permettent de construire une solution complète. t k = t k+1 → convergent vers t f = 0 Temps de commutation :

C+ : x1 = +x 22 , x 2  0 → passage de u = −1 à + 1

Courbes de commutation : 

2 − C : x1 = −x 2 , x 2  0 → passage de u = +1 à − 1 u = +1 si x1  −x 22 sgn(x 2 ) Commande en retour d’état :  2 u = −1 si x1  −x 2 sgn(x 2 )

avec les constantes :  =

33 − 1 1 + 2  0,44462 ,  =  4,13016 24 1 − 2

Cette synthèse est obtenue en raccordant les arcs bangs associés aux extrémales invariantes. On peut montrer [R17] que cette synthèse est la synthèse optimale du problème de Fuller, c’est-à-dire que ces extrémales invariantes sont les seules et que leur raccordement est optimal. La Figure 4-33 montre les courbes de commutations C + et C − dans le plan de phase (x1,x 2 ) et une trajectoire en pointillés comportant 4 arcs bangs successifs. Contrairement au problème de double intégrateur (Exemple 4-7), les courbes de commutation ne sont pas des trajectoires. Ces courbes sont croisées une infinité de fois, provoquant ainsi le chattering.

388

Techniques d’optimisation

Figure 4-33 : Synthèse optimale du problème de Fuller La Figure 4-34 illustre le chattering à l’approche du point final. Les conditions + initiales sont choisies sur la courbe de commutation C : x1 = 88,92 , x 2 = −20 . Le premier arc bang avec u = +1 va de t0 à t1. À partir de l’équation de cet arc initial : x 2 (t1 ) − x 2 (t 0 ) = u.(t1 − t 0 )

x 2 (t 0 ) = −x 2 (t1 ) t 0 = t1

et des conditions de commutation en t1 : 

on détermine le temps initial (pour t f = 0 ) : t 0 =

 +1 x 2 (t 0 )  −32,779 .  −1

Figure 4-34 : Commande optimale avec chattering

Contrôle optimal

389

Fonction valeur On peut obtenir la fonction valeur V(x1 ,x 2 ) du problème (PF) en résolvant l’équation HJB :

V  V  min H  x,u, , t  + =0 u x  t   V  1 2 avec H = x1 + p1x 2 + p2 u et min H → u = − sgn   −1u +1 2  x 2  L’équation HJB se met sous la forme : x 2

V V 1 2 − + x1 = 0 x1 x 2 2

On peut montrer [R17] que la solution est :

1 5 1 3 V (x1 , x 2 ) = x 2 + x1x 2 15 3

5

1 2 1 2 x1 x 2 + A  x 22 x1  2 2  3

− V = V+ si x1  −x 22 sgn(x 2 ) 1 2 1 2 2  avec A =  + 2 +    +   0,382  2 5 3  2  V = V− si x1  −x 2 sgn(x 2 )

4.5 Conclusion 4.5.1 Les points essentiels •

Le principe du minimum de Pontryaguin donne des conditions nécessaires d’optimalité d’ordre 1 que doit satisfaire la commande optimale.



Les contraintes terminales, intérieures ou courantes induisent des conditions supplémentaires pouvant provoquer des discontinuités de commande.



La détermination de la commande et de la trajectoire optimale nécessite la résolution d’un problème aux deux bouts.



La méthode de transport permet de déterminer les extrémales voisines d’une solution de référence et de construire une commande en retour d’état.



La trajectoire optimale peut comporter des arcs singuliers dont la détermination passe par des conditions d’optimalité d’ordre supérieur à 1.

390

Techniques d’optimisation

4.5.2 Pour aller plus loin •

Contrôle optimal – Théorie et applications (E. Trélat, Vuibert 2005) Ce livre présente la théorie du contrôle optimal de manière très pédagogique, tout en conservant une très grande rigueur. L’auteur est l’un des meilleurs spécialistes mondiaux du domaine. De nombreux exercices commentés aident à comprendre comment appliquer les conditions d’optimalité à des problèmes concrets.



Les mathématiques du mieux-faire (J.B. Hiriart-Urruty, Ellipses 2008) Le deuxième tome explique pas à pas l’établissement du principe du minimum avec toutes les démonstrations et de nombreuses remarques en marge qui aident à la compréhension.



Applied optimal control (A.E. Bryson, Y.C. Ho, Hemisphere Publishing Corporation 1975) Ce livre orienté vers l’application pratique du contrôle optimal est destiné aux ingénieurs. La présentation très progressive au cours des chapitres permet de bien se familiariser avec les techniques de calcul, en particulier grâce à de nombreux exemples très détaillés.



Calculus of variations and optimal control theory (D. Liberzon, Princeton University Press, 2012) Ce livre plutôt orienté vers la théorie explique le passage du calcul des variations au contrôle optimal. La présentation très didactique et claire reste rigoureuse sans formalisme excessif. Un livre à recommander pour se familiariser avec les aspects théoriques de l’optimisation fonctionnelle.



Optimal control theory for applications (D.G. Hull, Springer, 2003) Ce livre est basé sur l’approche variationnelle du contrôle optimal. Il offre l’intérêt de développer de manière détaillée les conditions d’optimalité associées aux différentes formulations (paramètres, contraintes…). Trois exemples d’applications sont repris tout au long du livre pour illustrer les résultats.



Geometric optimal control (H. Schättler, U. Ledzewicz, Springer, 2012) Ce livre aborde les méthodes géométriques du contrôle optimal et s’intéresse en particulier aux propriétés des arcs singuliers. Le propos est plutôt orienté vers la théorie avec les démonstrations des résultats. Bien que le sujet soit difficile, le contenu reste accessible sans formalisme excessif.

Méthodes numériques en contrôle optimal

391

5. Méthodes numériques en contrôle optimal La résolution numérique d’un problème de contrôle optimal impose de discrétiser l’état et la commande. Ce chapitre est une introduction aux approches usuelles. La section 1 introduit les méthodes de transcription, qui consistent à formuler un problème de dimension finie « équivalent » au problème de contrôle. Les deux choix principaux concernent la résolution des équations différentielles et l’utilisation ou non des conditions d’optimalité du problème de contrôle. La section 2 est consacrée aux méthodes de Runge-Kutta qui résolvent un système différentiel en progressant par des pas de temps. Ces méthodes à pas simples n’utilisent que l’état courant à chaque pas. La précision dépend de l’ordre de la méthode et peut être contrôlée par réglage du pas de temps. La section 3 est consacrée aux méthodes d’Adams. Comme les méthodes de Runge-Kutta, la résolution s’effectue par pas de temps, mais en utilisant plusieurs pas précédents pour construire la solution au pas suivant. Ces méthodes à pas multiples sont plus précises, mais plus complexes à mettre en œuvre. La section 4 introduit les méthodes de collocation. La solution de l’équation différentielle est approchée par des polynômes respectant des conditions sur leurs dérivées en certains points. La précision de ces méthodes dépend du degré des polynômes et du nombre de points de discrétisation. La section 5 présente les méthodes directes qui ramènent le problème en dimension finie. Selon la méthode de résolution des équations différentielles, on discrétise la commande (Runge-Kutta) ou la commande et l’état (collocation). Le problème discrétisé de grande taille se résout par un algorithme de programmation non linéaire ou par une méthode variationnelle basée sur les équations d’écarts. La section 6 présente les méthodes indirectes qui résolvent les conditions d’optimalité du principe du minimum. Le problème se réduit à un système d’équations résolu par la méthode de tir (méthode de Newton avec propagation de l’état et l’adjoint). Cette méthode est rapide et précise si l’on dispose d’une bonne initialisation, ce qui peut s’avérer très difficile. Le tir multiple ou l’approche variationnelle atténuent cette difficulté, mais en augmentant la taille du problème.

392

Techniques d’optimisation

5.1 Transcription On cherche à résoudre un problème de contrôle à temps final libre de la forme : tf

x(t) = f (x,u, t) , x(t 0 ) = x 0 (5.1) min J(u) =  L(x,u, t)dt + (x f , t f ) avec  u,t f  (x , t ) = 0 f f  t0 L’état x est de dimension n, la commande u est de dimension m, le nombre de contraintes finales est q. Le problème est de dimension infinie, car l’inconnue est une fonction u(t). Une solution analytique est rarement possible, même pour des problèmes simples. On doit utiliser des méthodes numériques donnant une solution approchée en un nombre fini de dates. La transcription consiste à formuler un problème « équivalent » de dimension finie et à le résoudre numériquement. Le problème en dimension finie peut être formulé de différentes manières. Les choix principaux portent sur la résolution des équations différentielles (par propagation ou collocation) et sur l’utilisation ou non des conditions d’optimalité du problème de contrôle (méthode directe ou indirecte).

Figure 5-1 : Processus de transcription

Méthodes numériques en contrôle optimal

393

5.1.1 Équations différentielles Un problème de Cauchy ou problème à valeur initiale (Initial Value Problem, IVP) consiste à résoudre un système différentiel d’ordre 1 à condition initiale donnée.

x(t) = f  x(t), t  , t 0  t  t f  x(t 0 ) = x 0

(5.2)

L’inconnue est la fonction x(t)t0 ttf de dimension n.

On se ramène à un problème en dimension finie en divisant l’intervalle d’intégration [t 0 ;t f ] en N segments : t 0  t1   t i   t N = t f et en cherchant

les valeurs prises par x aux temps (t i )i=0 à N . La suite des valeurs (xi )i=0 à N est une solution approchée de l’équation différentielle (5.2). Cette solution peut être construite par propagation ou par collocation. Méthodes de propagation Les méthodes de propagation calculent la solution en progressant dans le temps. La valeur x i+1 est déterminée par des formules de quadrature à partir des valeurs précédentes. Les méthodes à pas simples (de type Runge-Kutta) n’utilisent que la valeur précédente x i . Les méthodes à pas multiples (de type Adams) utilisent les valeurs de plusieurs pas précédents xi−k , ,xi comme illustré sur la Figure 5-2.

Figure 5-2 : Méthode de propagation à pas simples ou multiples

394

Techniques d’optimisation

Méthodes de collocation Les méthodes de collocation construisent une solution polynomiale par morceaux. La solution inconnue x(t) est approchée par un polynôme (t) de degré K sur chaque intervalle [t i ;t i+1 ] . Ce polynôme vérifie des conditions de raccordement aux extrémités et sa dérivée vérifie l’équation différentielle à des temps intermédiaires (k )k=1 à K . La précision de la solution dépend du degré du polynôme et du positionnement des points intermédiaires appelés points de collocation (Figure 5-3). La solution complète sur [t 0 ;t f ] est obtenue globalement en résolvant un système non linéaire de grande taille.

Figure 5-3 : Méthode de collocation

Problème bien posé et conditionnement La résolution du problème (5.2) peut poser des difficultés mathématiques ou numériques. Le problème est dit mathématiquement bien posé si la solution exacte est unique et dépend continûment de la condition initiale x 0 . Le problème est dit numériquement bien posé si la solution numérique est peu sensible aux erreurs d’arrondi. Le problème est dit bien conditionné si une solution numérique précise peut être obtenue sans réduction excessive du pas de temps.

Méthodes numériques en contrôle optimal

395

Exemple 5-1 : Problème bien posé et conditionnement Exemple 1 : Considérons l’équation différentielle x = 2 x avec x(t 0 = 0) =  .

−(t −  )2 si t   Si   0 , une solution possible est : x(t) =  2 +(t −  ) si t   Si  = 0 , il existe une infinité de solutions de la forme : pour t   0 x(t) =  2 (t − ) pour t   La solution n’est pas unique pour  = 0 , et n’est pas continue lorsque  → 0 . Le problème est mathématiquement mal posé.

 x = ax + b .  x(t 0 = 0) = x 0

Exemple 2 : Considérons l’équation différentielle 

1 (ax 0 + b)eat − b  . a Une erreur d’arrondi  sur x(t 0 ) produit une erreur eat sur x(t) . − ln  Si a  0 , l’erreur devient importante (> 1) à partir de t  . a Le problème est numériquement mal posé pour a  0 si le temps t f est trop grand. La solution générale est : x(t) =

Exemple 3 Appliquons la méthode d’Euler avec un pas de temps h sur le problème précédent.

b b     x i+1 +  = (1 + ah)  x i +  a a   b b n La solution après n pas de temps est donnée par : x n = (1 + ah)  x 0 +  − a a  Si a  0 , la solution exacte converge vers : 1 b lim x(t) = lim (ax 0 + b)eat − b  = − t →+ t →+ a a Pour que la solution numérique ait la même limite, le pas h doit vérifier : 1 + ah  1 Si a est grand, le pas de temps doit être réduit en proportion pour obtenir une solution précise. Le problème est mal conditionné (problème raide).

xi+1 = xi + hf (xi ,t i ) = (1 + ah)xi + bh

396

Techniques d’optimisation

5.1.2 Méthodes directes et indirectes Le problème de contrôle (5.1) peut être résolu de manière directe par discrétisation ou de manière indirecte en utilisant les conditions d’optimalité. Méthodes directes Les méthodes directes transforment le problème de contrôle en un problème « équivalent » en dimension finie. L’intervalle [t 0 ;t f ] est divisé en N segments :

t 0  t1   t i   t N = t f . La fonction u(t) est approchée par ses valeurs (u i )i=0 à N aux temps (t i )i=0 à N et une méthode d’interpolation à choisir (constante,

linéaire, splines…). On se ramène ainsi à un problème d’optimisation en dimension finie à (N + 1)  m variables, où m est la dimension du vecteur commande u. L’équation différentielle d’état est résolue par propagation ou par collocation, en utilisant ou non la même discrétisation (t i )i=0 à N . Dans le cas d’une intégration par collocation, les états (x i )i=1 à N aux temps (t i )i=1 à N s’ajoutent aux variables du problème avec les contraintes de collocation associées. On formule ainsi un problème d’optimisation de grande taille que l’on résout par les méthodes classiques de programmation non linéaire. Les méthodes directes ont l’intérêt de découpler l’optimisation et la simulation. Il est ainsi possible de modifier le modèle dynamique ou les contraintes sans effort de codage spécifique. Elles ne présupposent pas de forme particulière de la solution (arcs réguliers/singuliers, contraintes inégalité actives/inactives). Les inconnues du problème sont des variables physiques (loi de commande), ce qui facilite l’initialisation et l’interprétation des résultats. Les méthodes directes s’appliquent aisément à de nombreux problèmes. Leur principal inconvénient est la dimension du problème d’optimisation (beaucoup de variables et de contraintes) qui peut conduire à une convergence lente et parfois peu précise. Méthodes indirectes Les méthodes indirectes résolvent les conditions d’optimalité du problème (5.1). Ces conditions font intervenir l’adjoint p(t) de même dimension n que l’état x(t) T et l’hamiltonien normal défini par : H(x,u,p, t) = L(x,u, t) + p f (x,u, t) . Elles conduisent au problème aux deux bouts suivant.

 x = H p , (x f , t f ) = 0  p = − H x , pf = xf +  xf  H = 0 , H = −  −   f tf tf  u

(5.3)

Méthodes numériques en contrôle optimal

397

Le système différentiel est intégré en utilisant la commande obtenue par Hu = 0 .

Les inconnues sont les n composantes de l’adjoint initial p(t 0 ) , les q

multiplicateurs  des contraintes finales et le temps final t f . Les équations à satisfaire sont les q contraintes finales, les n conditions de transversalité sur l’adjoint final et la condition de transversalité sur l’hamiltonien final. On formule ainsi un système d’équations de dimension n + q + 1 qui peut se résoudre par une méthode de type Newton. Les méthodes indirectes ont l’intérêt de réduire le problème à un système d’équations de petite dimension. La résolution de ce système est généralement très rapide et précise, à condition de disposer d’une bonne initialisation. Les inconvénients sont la difficulté d’initialisation (variables non physiques, grande sensibilité), la nécessité d’un codage spécifique au problème traité (équations adjointes, conditions de transversalité, structure de la solution). La difficulté d’initialisation peut s’avérer rédhibitoire dans certains cas. Les méthodes indirectes sont à réserver à des problèmes dont la formulation est stable (dynamique, contraintes) et la structure de commande est connue. Il est possible dans ce cadre de développer des stratégies spécifiques d’initialisation. Le Tableau 5-1 compare les caractéristiques des méthodes directes et indirectes. Méthode directe

Méthode indirecte

Problème

Optimisation sous contrainte

Problème aux deux bouts

Inconnues (dimensions)

Commande discrétisée ui (Nn) , tf (1)

Adjoint initial, multiplicateurs p0 (n) ,  (q) , tf (1)

Initialisation

Facile (variables physiques) Peu sensible

Difficile (variables abstraites) Très sensible

Convergence

Lente (problème de grande taille)

Rapide (peu d’inconnues)

Précision

Selon discrétisation

Très précise

Codage

Non intrusif si propagation Intrusif si collocation

Intrusif (adjoint) Spécifique au problème

Tableau 5-1 : Méthodes directes et indirectes

398

Techniques d’optimisation

5.2 Méthodes de Runge-Kutta Les méthodes de Runge-Kutta sont des méthodes à pas simples pour résoudre numériquement un système différentiel du premier ordre de la forme :

x(t) = f  x(t),t  , t 0  t  t f

(5.4)

Le vecteur d’état x est de dimension n, la fonction f : classe C . La condition initiale est donnée : x(t 0 ) = x0 .

n



n

est supposée de

1

L’intervalle [t 0 ;t f ] est divisé en N segments : t 0  t1  - Les temps t i sont les nœuds.

 t i  t i+1 

 t N = tf .

- Les segments [t i ;t i+1 ] sont les pas d’intégration. - Les inconnues sont les valeurs x(t i ) notées x i .

L’équation différentielle est intégrée sur chaque segment [t i ;t i+1 ] .

x = f (x, t) sur [t i ;t i+1 ]  x i+1 = x i +

t i+1

 f (x, t)dt

(5.5)

ti

L’intégrale est approchée par une formule de quadrature. En partant de x 0 , on calcule successivement x1 , puis x 2 … jusqu’à x N . On obtient ainsi une solution approchée aux N temps de discrétisation.

5.2.1 Formules de quadrature Une quadrature consiste à approcher une intégrale par une somme. L’intervalle [t i ;t i+1 ] est divisé en K+1 segments : t i  1  2   k  k+1   K  t i+1 . Les temps (k )k=1 à K ne sont pas nécessairement distincts.

- La longueur de l’intervalle [t i ;t i+1 ] est notée h i : hi = t i+1 − t i .

- Les temps k sont de la forme k = t i + hik avec des coefficients croissants :

0  1  2 

 k  k+1   K  1 - Les segments [k ; k+1 ] sont les étapes d’intégration.

L’intégrale est approchée par une formule de quadrature du type :

x i+1 − x i =

t i+1

K

ti

k =1

 f (x, t)dt  h i kf (k , k )

(5.6)

Méthodes numériques en contrôle optimal

399

Cette formule nécessite les états (k )k=1 à K aux temps intermédiaires (k )k=1 à K . Les états intermédiaires (k )k=1 à K sont évalués par une seconde quadrature. k

K

ti

j=1

k − x i =  f (x, t)dt  h i   kjf ( j ,  j )

(5.7)

Une méthode de Runge-Kutta se définit ainsi par une combinaison de deux méthodes de quadratures avec un choix particulier des coefficients k , k et  kj . On impose que les quadratures (5.6-7) soient exactes si la fonction f est constante. K  x − x = (t − t )f = h i +1 i i  k f  i+1 i  k =1  K  − x = ( − t )f = h  f i k i i  kj  k j=1



K

 k =1



k

K

 j=1

kj

=1 (5.8)

= k , k = 1 à K

Méthode explicite ou implicite Les K valeurs intermédiaires (k )k=1 à K vérifient un système de K équations. K

k = x i + h i   kjf ( j ,  j ) , k = 1 à K

(5.9)

j=1

Si les coefficients  kj sont nuls pour j  k , l’état k ne dépend que des états précédents ( j ) jk . On peut dans ce cas calculer les k successivement et la méthode est dite explicite. Sinon il faut résoudre le système non linéaire (5.9) de dimension K dont les inconnues sont (k )k=1 à K . On obtient simultanément toutes les valeurs k et la méthode est dite implicite. Ce système d’équations (5.9) est résolu en deux étapes. - L’initialisation (prédiction) est réalisée par une méthode explicite. - Les itérations (correction) sont réalisées par une méthode de point fixe ou une méthode de Newton. Une méthode implicite est plus stable (comme le montre l’Exemple 5-2), mais plus difficile à mettre en œuvre car il faut résoudre un système non linéaire à chaque pas. Lorsque les états k ont été déterminés, on obtient x i+1 par la quadrature (5.6).

400

Techniques d’optimisation

Exemple 5-2 : Stabilité des méthodes d’Euler avant et arrière Considérons l’équation différentielle : x = − x dont la solution est : x(t) = x 0e − t . La solution a pour limite : lim x(t) = 0 . t →+

Comparons la stabilité des méthodes d’Euler avant (explicite) et arrière (implicite) en fonction du pas h. • La méthode d’Euler avant avec un pas h conduit à : xi+1 = xi − hxi = (1 − h)xi (formule explicite) La méthode est stable si : 1 − h  1  h  2 (on retrouve alors lim xi = 0 ). •

La méthode d’Euler arrière avec un pas h conduit à :

i→+

1 x i (en résolvant l’équation implicite) 1+ h La méthode est stable pour tout pas h (on obtient lim xi = 0 ). x i+1 = x i − hx i+1  x i+1 =

i→+

Les méthodes implicites ont en général une stabilité meilleure que les méthodes explicites. Elles autorisent des pas de temps plus grands au prix de davantage de calculs à chaque pas pour résoudre l’équation donnant x i+1 .

Tableau de Butcher Une méthode de Runge-Kutta est complètement définie par le nombre d’étapes K et le choix des coefficients k , k ,  kj . Ces coefficients sont regroupés dans le tableau de Butcher. Chaque ligne du tableau correspond à une intégrale approchée par une quadrature, comme représenté ci-dessous.

1 K

11  K1 1

1K  KK K

 →

k = t i + h i  k

 →

k = x i + h i   kjf ( j ,  j ) , k = 1 à K

K

j=1

 →

K

x i+1 = x i + h i  k f (k , k ) k =1

Pour une méthode explicite, les éléments sur la diagonale du tableau et au-dessus sont nuls : ( kj ) jk = 0 . Les méthodes de Runge-Kutta les plus simples sont : - Euler explicite, implicite → K = 1 étape - Euler modifié, Heun, Crank-Nicolson → K = 2 étapes

Méthodes numériques en contrôle optimal

401

Méthode d’Euler explicite (ou méthode d’Euler vers l’avant) Cette méthode à une étape utilise le tableau et les états intermédiaires suivants.

0 0 1

1 = t i → x i+1 = x i + h i f (1 , 1 )  1 = x i

On obtient la formule explicite : xi+1 = xi + hif (xi ,t i ) . Ceci revient à supposer la

solution linéaire sur [t i ;t i+1 ] avec la dérivée prise au point initial (x i ;t i ) connu, comme illustré sur la Figure 5-4.

Figure 5-4 : Méthode d’Euler explicite Méthode d’Euler implicite (ou méthode d’Euler vers l’arrière) Cette méthode à une étape utilise le tableau et les états intermédiaires suivants.

1 1 1

1 = t i + h i = t i+1 → x i+1 = x i + h i f (1 , 1 )  1 = x i + h if (1 , 1 )

On obtient la formule implicite : xi+1 = xi + hif (xi+1,t i+1 ) qui donne une équation en x i+1 . Ceci revient à supposer la solution linéaire sur [t i ;t i+1 ] avec la dérivée prise au point final (xi+1;t i+1 ) inconnu, comme illustré sur la Figure 5-5.

Figure 5-5 : Méthode d’Euler implicite

402

Techniques d’optimisation

Méthode d’Euler modifiée (ou méthode du point milieu) Cette méthode à une étape utilise le tableau et les états intermédiaires suivants.

0 0 0 1/ 2 1/ 2 0 0 1

1  1 = t i , 2 = t i + 2 h i → x i+1 = x i + h i f (2 , 2 )  1  = x ,  = x + h f ( ,  )  1 i 2 i 2 i 1 1

 

1

1

 

On obtient la formule explicite : x i+1 = x i + h i f  x i + h i f (x i , t i ) , t i + h i  . 2 2 Ceci revient à supposer la solution linéaire sur [t i ;t i+1 ] avec la dérivée prise au point milieu (2 ; 2 ) inconnu, comme illustré sur la Figure 5-6.

Figure 5-6 : Méthode d’Euler modifiée Méthode de Heun Cette méthode à deux étapes utilise le tableau et les états intermédiaires suivants.

0 1

0 0 1 0 1/ 2 1/ 2

1 = t i , 2 = t i + h i = t i +1  1 = x i , 2 = x i + h i f (1 , 1 ) 1 1 → x i+1 = x i + h i f (1 , 1 ) + h i f ( 2 , 2 ) 2 2

On obtient la formule explicite :

1 1   x i+1 = x i + h i f (x i , t i ) + h if  x i + h if (x i , t i ) , t i+1  . 2 2  

Ceci revient à supposer la solution linéaire par morceaux sur [t i ;t i+1 ] et à calculer

l’intégrale par la méthode des trapèzes. Le point 2 est estimé en t i+1 par la méthode d’Euler explicite, comme illustré sur la Figure 5-7.

Méthodes numériques en contrôle optimal

403

Figure 5-7 : Méthode de Heun Méthode de Crank-Nicolson (ou méthode des trapèzes) Cette méthode à deux étapes utilise le tableau et les états intermédiaires suivants.

0 0 0 1 1/ 2 1/ 2 1/ 2 1/ 2

1 = t i , 2 = t i + h i = t i+1   1 1 1 = x i , 2 = x i + 2 h if (1 , 1 ) + 2 h if (2 , 2 ) 1 1 → x i+1 = x i + h i f (1 , 1 ) + h if (2 , 2 ) 2 2

1 2

1 2

On obtient la formule implicite : x i+1 = x i + h if (x i , t i ) + h if (x i+1, t i+1 ) qui donne une équation en x i+1 .

Ceci revient à supposer la solution linéaire par morceaux sur [t i ;t i+1 ] et à calculer

l’intégrale par la méthode des trapèzes. Le point 2 = x i+1 est tel que les tangentes issues de x i et x i+1 se joignent au point milieu, comme illustré sur la Figure 5-8.

Figure 5-8 : Méthode de Crank-Nicolson L’exemple suivant compare la précision de ces méthodes sur un cas simple.

404

Techniques d’optimisation

Exemple 5-3 : Méthode à une et deux étapes Considérons l’équation différentielle : x = x dont la solution est : x(t) = x 0e 0 . Appliquons les méthodes précédentes pour résoudre numériquement cette équation sur l’intervalle de t 0 = 0 à t1 = 1 avec la condition initiale : x(t 0 ) = 1 . t −t

L’intervalle est divisé en N pas équidistants de longueur : h = Euler explicite

xi+1 = xi + hxi

→ xi+1 = (1 + h)xi

Euler implicite

xi+1 = xi + hxi+1 x i + x i+1 2

→ x N = (1 + h) N x 0 N

→ x i+1 =

1 xi 1− h

 1  → xN =   x0  1− h 

→ x i+1 =

2+h xi 2−h

 2+h  → xN =   x0  2−h 

Crank-Nicolson

x i+1 = x i + h

1 . N

N

Le Tableau 5-2 donne l’erreur commise en fonction du nombre de pas.

Tableau 5-2 : Comparaison des méthodes d’Euler et de Crank-Nicolson On observe que l’erreur est de l’ordre de h pour les méthodes d’Euler et de l’ordre de h² pour la méthode de Crank-Nicolson. Il faut en conséquence un grand nombre de pas pour obtenir une solution très précise. L’erreur dépend de l’ordre de la méthode, comme analysé au paragraphe suivant.

Méthodes numériques en contrôle optimal

405

5.2.2 Analyse d’erreur Une méthode de Runge-Kutta produit une solution approchée de l’équation différentielle. Cette section introduit les notions permettant de quantifier l’écart entre la solution approchée et la solution exacte. Erreur de consistance Considérons l’équation différentielle : y = f (y, t) . En réalisant un pas de t i à

t i+1 = t i + hi avec une méthode de Runge-Kutta à partir de la condition initiale (t i ;x i ) , on obtient l’état x i+1 sous la forme : xi+1 = xi + hi(t i ,xi ,hi )

(5.10)

Notons par ailleurs yi (t) la solution exacte (inconnue) à partir de la condition initiale (t i ;x i ) . Cette solution exacte prend la valeur yi (t i+1 ) à t i+1 .

L’erreur de consistance notée ei+1 est l’écart sur un pas de temps entre la solution numérique et la solution exacte à partir de la même condition initiale (Figure 5-9). (5.11)

ei+1 = yi (t i+1 ) − xi+1

Figure 5-9 : Erreur de consistance

Erreur globale L’erreur globale notée Ei est l’écart à t i entre la solution numérique x i et la solution exacte y0 (t i ) obtenue en partant de la condition initiale x(t 0 ) = x0 .

L’erreur de consistance ei+1 au pas h i suppose la condition initiale à t i recalée en y0 (t i ) .

406

Techniques d’optimisation

Cette erreur théorique ne tient pas compte de l’écart de valeur initiale entre y0 (t i )

et x i venant des pas précédents. L’erreur globale vient du cumul des erreurs de consistance à chaque pas de temps ainsi que du décalage de la condition initiale à chaque pas comme illustré sur la Figure 5-10.

Figure 5-10 : Erreur globale

Consistance, stabilité, convergence et ordre Une méthode numérique génère à chaque pas des erreurs de consistance : (ei )i=1 à N et des erreurs d’arrondi : (i )i=1 à N . On note :

,x N ) la solution sans erreurs d’arrondi : xi+1 = xi + hi(t i ,xi ,hi ) - (x1 ,x 2 , ,x N ) la solution avec erreurs d’arrondi : xi+1 = xi + hi(t i ,xi ,hi ) + i Le point initial subit également une erreur d’arrondi : x 0 = x 0 + 0 - (x1 ,x 2 ,

On définit les notions de consistance, stabilité, convergence et ordre comme suit. •

La méthode est consistante si :

N

e i =1

i

⎯⎯⎯⎯ → 0 h max → 0

La somme des erreurs de consistance tend vers 0 lorsqu’on réduit le pas. •

La méthode est stable si :

N

max x i − x i  S  i 0i N

i =0

Les erreurs d’arrondi produisent une erreur finale bornée. La constante S  0 est la constante de stabilité de la méthode.

Méthodes numériques en contrôle optimal





La méthode est convergente si :

407

max y 0 (t i ) − x i ⎯⎯⎯⎯ → 0 h max → 0 0 i  N

On peut alors approcher la solution exacte avec la précision voulue en réduisant le pas. p +1 La méthode est d’ordre p si l’erreur de consistance est majorée par Ch avec une constante C  0 .

Ces notions sont liées par les propriétés suivantes (voir [R4], [R9]). • La méthode définie par : xi+1 = xi + hi(t i ,xi ,hi ) est d’ordre p si :

• • •

k 1 dkf (5.12) (t, x,0) = (x, t) , k = 0 à p − 1 h k k + 1 dt k Une méthode est consistante si elle est au moins d’ordre 1 : (t, x,0) = f (x, t). Une méthode consistante et stable est convergente. Si la fonction (t, x,h) est lipschitzienne en x, alors la méthode est stable. L(t − t )



La constante de stabilité est S = e f 0 avec L constante de Lipschitz de  . L’erreur globale d’une méthode stable d’ordre p est majorée : p max y 0 (t i ) − x i  SCTh max avec T = t f − t 0 , S constante de stabilité de  et 0 i  N

C constante associée à l’erreur de consistance en hp+1 . Démonstration de la propriété (5.12) (voir [R4]) L’erreur de consistance est l’écart sur un pas de temps entre : y = f (y,t) avec y(t i ) = xi - la solution exacte y vérifiant : - la solution approchée obtenue par :

xi+1 = xi + hi(t i ,xi ,hi )

On écrit le développement de Taylor de y et x par rapport au pas en h i = 0 . •

Développement de y à l’ordre p+1 en h i = 0



p +1 k h ik d k y h i d k −1f p +1 (t ) + o(h ) = x + (x i , t i ) + o(h ip+1 )  i i i k k −1 k! dt k! dt k =1 k =1 dy (t i ) = f  y(t i ), t i  = f (x i , t i ) en utilisant y(t i ) = xi et dt Développement de x à l’ordre p en h i = 0 p +1

y(t i+1 ) = y(t i ) + 

 p h ik  k   x i+1 = x i + h i  (t i , x i ,0) + o(h ip )  k  k =0 k! h  L’erreur de consistance est la différence : ei+1 = y(t i+1 ) − xi+1 .

408

Techniques d’optimisation

Le terme en hk+1 dans le développement de ei+1 est :

 h k +1  1 d k f k (x i , t i ) − k (t i , x i ,0)   k k!  k + 1 dt h  p+1

La méthode est d’ordre p si : ei+1 = y(t i+1 ) − xi+1  Chi . Les termes d’ordre inférieur à p doivent être nuls, ce qui conduit aux relations (5.12).

L’exemple suivant donne l’ordre des méthodes les plus simples.

Exemple 5-4 : Méthodes d’ordre 1 et 2 Cherchons l’ordre des méthodes d’Euler explicite, du point milieu et de Heun. Il faut pour cela exprimer la fonction (x, t, h) , la dériver par rapport au pas h et vérifier jusqu’à quel ordre p la relation (5.12) est satisfaite. Les formules xi+1 = xi + hi(t i ,xi ,hi ) pour ces méthodes ont été déterminées plus haut. Euler explicite : xi+1 = xi + hif (xi ,t i )

(t, x,h) = f (x, t) → h (t,x,0) = 0 La relation (5.12) n’est pas vérifiée pour k = 1 . La méthode est d’ordre p = 1 .

1 1   x i+1 = x i + h i f  x i + h if (x i , t i ) , t i + h i  2 2   1   1 (t, x,h) = f  x + hf (x, t) , t + h  2 2   1 1 1 → h (t, x,0) = f x f + f t = f 2 2 2 La relation (5.12) est vérifiée pour k = 1 . La méthode est d’ordre p = 2 . 1 1 x i+1 = x i + h i f (x i , t i ) + h if  x i + h if (x i , t i ) , t i+1  Heun : 2 2 1 1 (t, x,h) = f (x, t) + f  x + hf (x, t) , t + h  2 2 1 1 1 → h (t, x,0) = f x f + f t = f 2 2 2 La relation (5.12) est vérifiée pour k = 1 . La méthode est d’ordre p = 2 . Point milieu :

Méthodes numériques en contrôle optimal

409

Réglage du pas Considérons une méthode stable d’ordre p sur N pas de temps de t 0 à t f . L’erreur globale théorique est majorée en fonction du pas h max = max(h1,

xi+1 = xi + hi(t i ,xi ,hi )



max y 0 (t i ) − x i  SCTh 0 i  N

,h N ).

p max

Les erreurs d’arrondi (1 )i=1 à N génèrent une erreur supplémentaire bornée.

xi+1 = xi + hi(t i ,xi ,hi ) + i



N

max x i − x i  S  i  SNmax 0i N

i =0

L’erreur totale (théorique + arrondi) est majorée par : p max y0 (t i ) − x i  S CTh max + Nmax  = E max noté 0i N

Avec des pas équidistants : h =

T  p  , l’erreur totale vaut : E max = ST Ch +  h N 

Le pas optimal qui minimise l’erreur totale est alors : 1

h opt

   p+1 =   pC 

(5.13)

Exemple 5-5 : Pas optimal pour la méthode du point milieu t −t Considérons l’équation différentielle : x = x dont la solution est : y(t) = y 0e 0

On applique la méthode du point milieu de t 0 = 0 à t f = 1 à partir de : x(t 0 ) = 1 .

L’erreur de consistance sur le pas [t i ;t i+1 ] avec la condition initiale x i est l’écart entre la solution exacte et la solution approchée par la méthode du point milieu.

  h 2 h3 = x i ehi = x i 1 + h i + i + i + o(h i3 )  2 6    hi hi  h i2   Solution approchée : x i+1 = x i + h i f  x i + f (x i , t i ) , t i +  = x i 1 + h i +  2 2 2   x 3 3 L’erreur est en h3 : ei+1 = y(t i+1 ) − x i+1 = i h i + o(h i ) . La méthode est d’ordre 2. 6 t −t 1 L’intervalle est divisé en N pas équidistants : h = f 0 = . N N t −t i

Solution exacte : y(t i+1 ) = y(t i )e i+1

410

Techniques d’optimisation

L’erreur de consistance est majorée par : ei+1  Ch3 avec C = e/ 6 (car xi  e) . 1

Le pas optimal est (5.13) : h opt

   =   p+1 où  est la précision de calcul.  pC 

Application numérique Supposons que la précision de calcul vaut :  = 10−7 . Les tableaux ci-dessous donnent l’erreur totale obtenue en fonction du nombre de pas variant de N = 10 à N = 106 (1er tableau), puis raffiné de N = 100 à N = 1 000 (2e tableau). Nombre de pas 10 100 1000 10000 100000 1000000

Erreur totale 4,20E-03 5,37E-05 8,35E-05 8,60E-04 8,58E-03 8,45E-02

Le pas optimal est déterminé par :

Nombre de pas 100 150 200 250 300 350 400 450 500

Erreur totale 5,37E-05 3,17E-05 2,84E-05 2,84E-05 2,87E-05 3,40E-05 3,63E-05 4,15E-05 4,40E-05

1

p = 2    p+1 → h opt =   = 4,8 10−3 pour  = 10−7   pC  C = e / 6 ce qui donne un nombre optimal de pas : N = 208. La Figure 5-11 montre l’erreur en fonction du nombre de pas.

Figure 5-11 : Erreur en fonction du nombre de pas

Méthodes numériques en contrôle optimal

411

5.2.3 Conditions d’ordre L’ordre d’une méthode de Runge-Kutta dépend des coefficients k , k et  kj . On analyse ici les conditions sur ces coefficients pour obtenir un ordre donné dans le cas des méthodes de Runge-Kutta explicites : ( kj ) jk = 0 . Chaque point intermédiaire k de la quadrature ne dépend que des points précédents ( j ) j=1 à k−1.

 k = t i + h i  k  k −1 avec f ( j ,  j ) = f j et  noté  = x + h  kjf j  k i i  j=1 

K

x i+1 = x i + h i  k f k k =1

(5.14)

La méthode est d’ordre 1 au moins si : k −1

 j=1

kj

= k ,

K

 k =1

k

=1

(5.15)

La méthode est d’ordre 2 au moins si : K

  k =1

k k

=

1 2

(5.16)

La méthode est d’ordre 3 au moins si : K

  k =1

2 k k

=

1 , 3

K



k =1, jk

 jk  kj =

1 6

(5.17)

La méthode est d’ordre 4 au moins si : K

  k =1

3 k k

=

1 , 4

K



k =1, j k

1  = ,  12 k =1, j k K

2 j k kj

 j kk  kj =

1 8

1  ik  kj ji =  12 k =1, j k K

(5.18)

Démonstration (voir [R4], [R9])

k 1 dkf (t, x,0) = (x, t) . Ces relations s’établissent à partir de (5.12) : h k k + 1 dt k On calcule les dérivées successives par rapport à h de la fonction  définie par : K

k −1

k =1

j=1

(t i , x i ,h) =  k f (k , k ) avec k = x i + h   kjf ( j ,  j ) et k = t i + h k

412

Techniques d’optimisation

Valeur de  (k = 0) En h = 0 , on a : k = xi et k = t i . La valeur de  pour h = 0 est : (t, x,0) = La condition : (t, x,0) = f (x, t) donne :

K

 f (x, t) . k =1 K

k

 k =1

k

= 1.

Cette condition a été déjà imposée sur les quadratures (5.8). Les conditions (5.15) assurent que les quadratures sont exactes si la fonction f est constante. Dérivée première de  (k = 1) On dérive par rapport à h la formule donnant .

 K f (k , k ) K  k   =  k =  k f x + ft k  h k =1 h h   h k =1 k −1 k −1 k  k avec =   kjf ( j ,  j ) + h   kjf ( j ,  j ) et = k h h j=1 h j=1

En h = 0 :

 k −1  k k −1 =   kjf ( j ,  j ) =    kj  f (x, t) =  k f (x, t) h j=1  j=1  car

On obtient :

k −1

 j=1

kj

=  k (ordre 1)

K   K  df (t, x,0) =  k (f x fk + f t  k ) =    kk  . h k =1  k =1  dt

La condition :

 1 df (t, x,0) = (x, t) donne la condition (5.16) : h 2 dt

K

  k =1

k k

1 = . 2

Dérivée seconde de  (k = 2) On dérive à nouveau par rapport à h la formule donnant . 2 2  2 K  2f (k , k ) K   k  k k  2 k   k  =  =  f + 2f + f + f     k k xx xt tt x     h 2 k =1 h 2 h h h 2   h  k =1   h 

avec

 2k  k −1 2 =   kjf ( j ,  j ) h 2 en h =0 h j=1

 k −1  df  2k = 2    j kj  En h = 0 : 2 h  j=1  dt

et et

f ( j ,  j ) h

= fx

 j

k =  k f (x, t) h

h

+ ft

 j h

= j

en h =0

df dt

Méthodes numériques en contrôle optimal

413

On obtient :

 K   2  K  (t, x,0) =    k2k  (f xx f 2 + 2f xt f + f tt ) + 2    jk  kj  (f x2f + f x f t ) 2 h  k =1   k =1, jk 

d 2f  2 1 d 2f = f xx f 2 + 2f xt f + f tt + f x (f x f + f t ) (t, x,0) = avec 2 2 2 dt h 3 dt K K 1 1 2 donne les conditions (5.17) :   kk = et   jk  kj = . 3 6 k =1 k =1, j k La condition :

Le calcul de la dérivée tierce est similaire et conduit aux conditions d’ordre 4 (5.18). Ce calcul très long n’est pas détaillé ici.

Une méthode de Runge-Kutta se définit par le nombre d’étapes K (nombre d’évaluations intermédiaires de f) et le choix de k , k et  kj . Les conditions (5.15) à (5.18) permettent de choisir ces coefficients pour obtenir un ordre donné. Examinons les possibilités les plus courantes pour les méthodes de 1 à 4 étapes. Méthodes explicites à 1 étape (K = 1) La méthode est explicite : Conditions d’ordre 1 :

11 = 0 1 = 0 , 1 = 1

On obtient la méthode explicite d’Euler dont le tableau est :

0 0 1

Méthodes explicites à 2 étapes (K = 2) La méthode est explicite :

11 = 12 =  22 = 0

Conditions d’ordre 1 :

 11 + 12 = 1 1 = 0    21 +  22 =  2    =  =  2  21  +  = 1 noté  1 2

Conditions d’ordre 2 :

11 + 22 =

1 1 1  2 = , 1 = 1 − 2 2 2

414

Techniques d’optimisation

On obtient des méthodes d’ordre 2 à un paramètre 

0 

avec le tableau ci-contre. La méthode du point milieu correspond à  = 0,5 .

0  1−

La méthode de Heun d’ordre 2 correspond à  = 1 .

1 2

0 0 1 2

Méthodes à 3 ou 4 étapes (K = 3 ou 4) Les méthodes à 3 ou 4 étapes les plus usitées sont les suivantes.











Heun explicite à 3 étapes d’ordre 3

0 0 0 0 1/ 3 1/ 3 0 0 2/3 0 2/3 0 1/ 4 0 3/ 4

Hermite-Simpson implicite à 3 étapes d’ordre 3

0 0 0 0 1 / 2 5 / 24 1 / 3 −5 / 24 1 1/ 6 2 / 3 1/ 6 1/ 6 2 / 3 1/ 6

Runge explicite à 4 étapes d’ordre 3

0 0 0 1/ 2 1/ 2 0 1 0 1 1 0 0 1/ 6 2 / 3

Méthode des 3/8 explicite à 4 étapes d’ordre 4

Runge-Kutta explicite à 4 étapes d’ordre 4

0 0 1/ 3 1/ 3 2 / 3 −1 / 3 1 1 1/ 8

0 0 0 0 0 0 1 0 0 1/ 6

0 0 0 0 0 0 1 0 0 −1 1 0 3 / 8 3 / 8 1/ 8

0 0 0 0 0 1/ 2 1/ 2 0 0 0 1/ 2 0 1/ 2 0 0 1 0 0 1 0 1/ 6 2 / 6 2 / 6 1/ 6

Cette dernière méthode appelée « méthode classique de Runge-Kutta d’ordre 4 » est très utilisée en pratique, car elle est facile à programmer et extrêmement L(t − t ) robuste. Ceci s’explique par sa constante de stabilité S = e f 0 , où L est la constante de Lipschitz de la fonction f.

Méthodes numériques en contrôle optimal

415

Les formules détaillées de la méthode de Runge-Kutta d’ordre 4 sont les suivantes.

k1 = h i f (x i , t i )  k = h f  x + 1 k , t + 1 h  i  i 1 i i  2 2 2    k = h f  x + 1 k , t + 1 h  i  i 2 i i  3 2 2    k 4 = h i f (x i + k 3 , t i+1 )

1 → x i+1 = x i + (k1 + 2k 2 + 2k 3 + k 4 ) 6

(5.19)

Les quadratures associées au tableau de Butcher s’interprètent comme suit.

5.2.4 Méthodes emboîtées Estimation d’erreur Pour estimer l’erreur sur un pas de t 0 à t1 , on réalise le calcul de deux manières. - L’intégration en un seul pas de longueur 2h = t1 − t 0 donne une solution x1 .

- L’intégration en un deux pas successifs de longueur h donne une solution x 2 . p +1

Si la méthode est d’ordre p, l’erreur de consistance est en Ch . Les erreurs de consistance e1,e2 entre les solutions x1 , x 2 et la solution exacte y(t1 ) sont alors :

e1 = y(t1 ) − x1 = C(2h) p+1 + o(2h p+1 )  p+1 + o(h p+1 ) e2 = y(t1 ) − x 2 = 2C(h)

(5.20)

En observant l’écart  entre x 2 (2 pas de h) et x1 (1 pas de 2h), on peut estimer la constante C et choisir un pas h max pour obtenir une erreur donnée max . 1

p +1

p

p +1

 = x 2 − x1 = 2Ch (2 − 1) + o(h )



h max

   p+1   max  h   

(5.21)

416

Techniques d’optimisation

L’écart  permet aussi d’éliminer le terme en hp+1 dans x 2 (5.20) donnant une solution x 2 d’ordre p + 1 à partir de x 2 (méthode d’extrapolation locale).

 = 2Ch p+1 (2p − 1)

→ x2 = x2 +

 avec y(t1 ) − x 2 = o(h p+1 ) (5.22) 2 −1 p

Méthode emboîtée Les méthodes de Runge-Kutta emboîtées (embedded method) utilisent ce processus de double évaluation à chaque pas pour estimer l’erreur et adapter le pas d’intégration. Une méthode à K étapes réalise K évaluations de f pour construire la solution. Si les coefficients de la méthode sont bien choisis, il est possible de réutiliser ces évaluations pour construire une deuxième solution d’ordre différent (méthode emboîtée). L’écart entre les deux solutions donne une estimation d’erreur sans évaluation supplémentaire. Le pas est ensuite réglé afin que l’erreur reste dans une tolérance donnée. On utilise aussi les évaluations pour construire une sortie dense. La sortie dense est une interpolation à un ordre donné de la solution sur le pas de temps. Elle permet de générer une solution discrétisée sans passer nécessairement par tous les temps intermédiaires. Il existe un très grand nombre de possibilités pour construire des méthodes emboîtées. Ces méthodes sont désignées sous la forme p(p’) où p et p’ sont les ordres respectifs de la solution calculée et de la solution emboîtée permettant de contrôler l’erreur. On peut montrer qu’il faut au moins 6 étapes pour construire une méthode emboîtée d’ordre supérieur à 4. Les méthodes d’ordre 4 et 5 les plus utilisées sont listées ci-dessous. Pour chaque méthode, la colonne k correspond * à la solution calculée et la colonne k à l’estimation d’erreur.



Méthode de Cash-Karp d’ordre 5(4) k

 kj

0

0

1 5 3 10 3 5

1 5 3 40 3 10 11 − 54 1631 55296

1 7 8

0

0

0

0

0

0

0

0

9 0 0 40 9 6 − 0 10 5 5 70 35 − 2 27 27 175 575 44275 512 13824 110592

k 37 378

*k 2825 27648

0

0

18575 48384 13525 0 55296 277 0 0 14336 253 512 1 4096 1771 4 0

250 621 125 694

Méthodes numériques en contrôle optimal



417

Méthode de Fehlberg d’ordre 4(5) k

 kj

0

0

1 4 3 8 12 13

1 4 3 32 1932 2197 439 216 8 − 27

1 1 2

0

0

0

0

0

0

0

0

0

0

0

0

0

9 32 7200 − 2197 −8 2

7296 2197 3680 513 3544 − 2565

845 4104 1859 4104

0





11 40

k 25 216

*k 16 135

0

0

1408 2565 2197 4104 1 − 5

6656 12825 28561 56430 9 − 50 2 55

0

Parmi les méthodes d’ordre supérieur les plus performantes, on trouve - la méthode 5(4) à 7 étapes de Dormand-Prince (logiciel DOPRI5) ; - la méthode 8(6) à 16 étapes de Dormand-Prince (logiciel DOPR86) ; - la méthode 8(5,3) à 17 étapes de Dormand-Prince (logiciel DOP853). Le logiciel DOP853 inclut une estimation d’erreur à l’ordre 5 et une autre à l’ordre 3 (qui améliore l’estimation) ainsi qu’une sortie dense à l’ordre 7. L’ouvrage de référence pour le développement de ces méthodes est [R9]. Méthode d’extrapolation Une approche alternative pour contrôler l’erreur d’intégration consiste à appliquer une méthode d’ordre p sur l’intervalle [t i ;t i+1 ] avec n k pas égaux à hi / n k . En variant le nombre de pas (n1  n 2 

 n k ) , on construit K évaluations de x i+1 .

Une extrapolation de Richardson (tome I §1.2) permet de calculer la solution limite lorsque le pas h tend vers 0. On obtient ainsi une solution extrapolée x i+1 d’ordre p + K − 1 . Cette méthode permet d’obtenir une solution numérique très précise au prix d’un nombre d’évaluations plus important de la fonction. Les méthodes de Gragg-Bulirsch-Stoer (GBS) utilisent ce principe avec le pas défini par une séquence de Romberg (n k = 2k) ou par une séquence harmonique

(n k = k) . Le logiciel ODEX basé sur ce choix permet d’obtenir des solutions

jusqu’à l’ordre 18.

418

Techniques d’optimisation

5.3 Méthodes d’Adams Les méthodes d’Adams sont des méthodes à pas multiples pour résoudre numériquement un système différentiel du premier ordre de la forme :

x(t) = f  x(t),t  , t 0  t  t f

(5.23)

On suppose que la solution a été calculée aux K + 1 temps : t i−K  t i−K+1   t i−1  t i . Les valeurs de x à ces temps sont : Les valeurs de f à ces temps sont : La valeur de x au temps t i+1

xi−K , xi−K+1 , fi−K , fi−K+1 ,

est définie par : x i+1 = x i +

, xi−1 , xi , fi−1 , fi

t i+1

 f (x, t)dt . ti

Pour calculer l’intégrale, on remplace f par son polynôme d’interpolation P ou P*. - Le polynôme P est basé sur les K + 1 valeurs connues (fk )k=i−K à i à (t k )k=i−K à i . - Le polynôme P* utilise en plus la valeur inconnue f i+1 au temps t i+1 . Ces deux polynômes sont schématisés sur la Figure 5-12.

Figure 5-12 : Polynôme d’interpolation Les méthodes d’Adams-Bashford (section 5.3.1) utilisent le polynôme P qui ne dépend que des valeurs précédentes connues de la fonction. Ces méthodes sont explicites. Les méthodes d’Adams-Moulton (section 5.3.2) utilisent le polynôme P* qui dépend de la valeur inconnue de la fonction au nouveau point. Ces méthodes sont implicites. Les méthodes à pas multiples nécessitent une initialisation des K + 1 premiers points par une méthode à pas simples. On utilise généralement une méthode explicite de Runge-Kutta de même ordre que la méthode d’Adams choisie.

Méthodes numériques en contrôle optimal

419

5.3.1 Méthodes d’Adams-Bashford Le polynôme P de degré K prend les valeurs (fk )k=i−K à i aux temps (t k )k=i−K à i . On l’exprime avec les polynômes de Lagrange (Lk )k=0 à K associés à (t k )k=i−K à i .

t − t i− j

K

Lk (t) =  j=0 j k

t i −k − t i − j

K

P(t) =  f i−k L k (t) k =0

0 si j  k → L k (t i− j ) =   1 si j = k

(5.24)

→ P(t i− j ) = f i− j

La méthode d’Adams-Bashford à K + 1 pas approche x i+1 par :

x i+1  x i +

t i+1

 P(t)dt = x ti

K

i

+ h i  k f i − k k =0

1 avec k = hi

t i+1

 L (t)dt

(5.25)

k

ti

Cette formule explicite donne x i+1 en fonction des K + 1 valeurs précédentes. Cette méthode notée ABK+1 est d’ordre K + 1. Sa constante de stabilité pour une bL(t − t ) fonction lipschitzienne de constante L vaut : S = e f 0 avec b =

K

 k =0

k

.

La stabilité est faible lorsque le nombre de pas K augmente (car b et S deviennent grands). Détaillons les méthodes d’Adams-Bashford à 1, 2, 3 et 4 pas. • Méthode AB1 Le polynôme d’interpolation est constant : P(t) = fi . La formule (5.25) donne : xi+1 = xi + hifi •

(méthode d’Euler explicite).

Méthode AB2

Le polynôme d’interpolation est affine : P(t) = f i + Son intégrale sur [t i ;t i+1 ] donne :

t i+1



f i − f i−1 (t − t i ) . t i − t i−1

i

ti

i

 (f i − fi−1 )  . i −1 

hi

 P(t)dt = h f + 2h

Les pas hi−1 = t i − t i−1 et hi = t i+1 − t i ne sont pas nécessairement identiques. Avec un pas h constant, la formule (5.25) donne : x i+1 = x i + h

3fi − fi−1 . 2

420



Techniques d’optimisation

Méthode AB3 à pas constant

La formule (5.25) donne : x i+1 = x i + h •

Méthode AB4 à pas constant

La formule (5.25) donne : x i+1 = x i + h

23fi −16fi−1 + 5fi−2 . 12 55fi − 59fi−1 + 37f i−2 − 9f i−3 . 24

La méthode de Nyström est une variante de la méthode d’Adams-Bashford consistant à calculer le point x i+1 à partir du point x i−1 (au lieu de x i ). Avec un pas h constant, la formule (5.25) devient : t i+1

K

t i−1

k =0

 P(t)dt = xi−1 + hkfi−k

x i+1  x i−1 +

• Méthode de Nyström à 1 ou 2 étapes La formule (5.26) donne : xi+1 = xi−1 + 2hfi •

Méthode de Nyström à 3 étapes

La formule (5.26) donne : x i+1 = x i−1 + h

avec k =

t

1 i+1 Lk (t)dt h ti−1

(5.26)

(méthode du point milieu).

7fi − 2fi−1 + fi−2 . 3

5.3.2 Méthodes d’Adams-Moulton Le polynôme P* de degré K + 1 prend les valeurs (f k )k=i−K à i+1 aux temps

(t k )k=i−K à i+1 . Le point (t i+1 ;fi+1 ) n’est pas connu (on cherche x i+1 ). On exprime * P* avec les K + 2 polynômes de Lagrange (Lk )k =−1 à K associés à (t k )k=i−K à i+1 .

t − t i− j

K

L*k (t) = 

t

− t i− j

f

L*k (t)

j=−1 i −k j k

P* (t) =

K

k =−1

i−k

0 si j  k → L*k (t i− j ) =   1 si j = k

(5.27)

→ P* (t i− j ) = f i− j

La méthode d’Adams-Moulton à K + 1 pas approche x i+1 par :

x i+1  x i +

t i+1

K

ti

k =−1

* *  P (t)dt = xi + hi  kfi−k

avec *k =

1 hi

t i+1

 L (t)dt ti

* k

(5.28)

Méthodes numériques en contrôle optimal

421

La méthode est implicite, car le second membre dépend de x i+1 (indice k = −1 ). Pour obtenir x i+1 , il faut résoudre l’équation non linéaire : K

x i+1 = x i + h i  *k fi−k + h i*−1f (x i+1 , t i+1 )

(5.29)

k =0

La résolution s’effectue par prédiction-correction. - Une prédiction i+1 est réalisée par une méthode explicite (par exemple AB K+1). - La fonction est évaluée en (i+1 ,t i+1 ) : i+1 = f (i+1 ,t i+1 ) . - La correction est réalisée par (5.28) : x i+1 = x i + h i

K

 f k =0

* k i −k

+ h i*−1i+1 .

- La fonction est évaluée en (xi+1 , t i+1 ) : fi+1 = f (xi+1 ,t i+1 ) . Si besoin, on itère (5.28) pour augmenter la précision (méthode de point fixe). En général, une seule correction suffit si la prédiction est d’ordre K + 1. Cette résolution est notée PECE (Prédiction-Évaluation-Correction-Évaluation). La variante PEC consiste à omettre l’évaluation de f i+1 en gardant la valeur i+1 . Le calcul est plus rapide, mais légèrement moins stable. Cette méthode notée AMK+1 est d’ordre K + 2. Sa constante de stabilité pour une *

b L(t − t ) * * fonction lipschitzienne de constante L vaut : S = e f 0 avec b =

La stabilité de AMK+1 est meilleure que celle de ABK+1, car b*  b .

K

 k =0

* k

.

Détaillons les formules des méthodes d’Adams-Moulton à 1, 2, 3 et 4 pas. •

Méthode AM1

* Le polynôme d’interpolation est affine : P (t) = f i +

Son intégrale sur [t i , t i+1 ] donne :

t i+1

 P (t)dt = h *

i

ti

La formule (5.28) donne : x i+1 = x i + h i

f i+1 − fi (t − t i ) . t i+1 − t i

fi + fi+1 . 2

fi + fi+1 . 2

On retrouve la méthode de Crank-Nicolson (ou méthode des trapèzes).

1 2

L’équation à résoudre pour obtenir x i+1 est : x i+1 − h i f (x i+1 , t i+1 ) = x i +

1 h if i . 2

422

Techniques d’optimisation

On peut appliquer une méthode PECE avec comme prédicteur AB 1 (= Euler) d’ordre 1. L’algorithme est alors identique à la méthode de Heun. - Prédiction (Euler) : i+1 = xi + hifi

x i+1 = x i +

- Correction :

1 1 h ifi + h i i+1 2 2

• Méthode AM2 Le polynôme d’interpolation est de degré 2.

P* (t) = fi+1

(t − t i−1 )(t − t i ) (t − t i−1 )(t − t i+1 ) (t − t i )(t − t i+1 ) − fi + f i−1 h i (h i−1 + h i ) h i−1h i h i−1 (h i−1 + h i )

On obtient en l’intégrant sur [t i ;t i+1 ] :

x i+1 = x i + h i

3h i−1 + 2h i 3h + h h i2 fi+1 + h i i−1 i fi − h i fi−1 6(h i−1 + h i ) 6h i−1 6h i−1 (h i−1 + h i )

On choisit généralement un pas h constant.

8 1 5  fi+1 + fi − fi−1  . 12 12   12

La formule (5.28) donne : x i+1 = x i + h i  •

Méthode AM3 à pas constant

La formule (5.28) donne : x i+1 = x i + h •

Méthode AM4 à pas constant

La formule (5.28) donne : x i+1 = x i + h

9fi+1 + 19fi − 5fi−1 + fi−2 . 24 251fi+1 + 646fi − 264fi−1 + 106fi−2 − 19fi−3 . 720

Comme la méthode de Nyström (section 5.3.1), la méthode de Milne-Simpson est une variante de d’Adams-Moulton consistant à calculer le point x i+1 à partir du point x i−1 (au lieu de x i ). Avec un pas constant, la formule (5.28) devient :

x i+1  x i−1 +

t i+1

K

ti

k =−1

* *  P (t)dt = xi−1 + h  kfi−k

• Méthode de Milne-Simpson à 1 étape La formule (5.30) donne : xi+1 = xi−1 + 2hfi •

Méthode de Milne-Simpson à 2 étapes

La formule (5.30) donne : x i+1 = x i−1 + h

avec *k =

t

1 i+1 * Lk (t)dt h ti−1

(5.30)

(méthode du point milieu).

fi + 4fi−1 + fi−2 . 3

Méthodes numériques en contrôle optimal

423

5.4 Méthodes de collocation Les méthodes de collocation cherchent une solution polynomiale par morceaux d’un système différentiel du premier ordre de la forme :

x(t) = f  x(t), t  , t 0  t  t f  x(t 0 ) = x 0

(5.31)

L’intervalle [t 0 ;t f ] est divisé en N segments : t 0  t1   t i  t i+1   t N = t f . La solution sur chaque segment est approchée par un polynôme de degré K.

(t) = a 0 + a1t + a 2 t 2 +

+ a K t K , t i  t  t i+1

(5.32)

Il faut déterminer les K + 1 coefficients a 0 ,a1 ,

,a K pour que le polynôme soit proche de la solution exacte de l’équation différentielle sur le segment [t i ;t i+1 ].

5.4.1 Conditions de collocation Pour déterminer les K+1 coefficients du polynôme (5.32), on choisit K temps (k )k=1 à K dans [t i ;t i+1 ]. et on impose les K + 1 conditions :

(t i ) = x(t i )  (  ) = f (  ,  ) = f , k = 1 à K k k k  k noté

(5.33)

Les temps (k )k=1 à K appelés points ou nœuds de collocation sont choisis librement entre t i et t i+1 comme sur la Figure 5-3 :

t i  1  2 

 K−1  K  ti+1

Les conditions (5.33) imposent que les dérivées du polynôme vérifient l’équation différentielle x = f (x, t) aux points de collocation et que le polynôme se raccorde à la valeur initiale connue x(t i ) . Lien avec les méthodes de Runge-Kutta La dérivée du polynôme (5.32) est un polynôme de degré K − 1 prenant les valeurs (fk )k=1 à K aux temps (k )k=1 à K . Ce polynôme dérivé peut s’exprimer avec les K polynômes d’interpolation de Lagrange (L j ) j=1 à K associés à (k )k=1 à K .

424

Techniques d’optimisation K

L j (t) =  k =1 k j

0 si k  j → L j ( k ) =   1 si k = j

t − k  j − k

K

(t) =  f jL j (t)

(5.34)

→  (k ) = f k

j=1

En intégrant le polynôme dérivé (t) sur [t i ; k ] , on obtient : K

k

j=1

ti

(k ) = (t i ) +  f j  L j (t)dt

avec (t i ) = x(t i )

(5.35)

Supposons maintenant que l’on applique une méthode de Runge-Kutta à K étapes avec les coefficients k , k et  kj . Les formules (5.6) et (5.7) donnent : K

K

k =1

j=1

x i+1 = x i + h i  k f (k , k ) avec k = x i + h i   kjf ( j ,  j ) , k = 1 à K (5.36) En choisissant les coefficients k , k et  kj tels que :

k = t i +  k h i , k =

1 hi

t i+1

 Lk (t)dt ,  kj = ti



1 k L j (t)dt h i ti

(5.37)

on retrouve les valeurs du polynôme (t) aux temps (k )k=1 à K et au temps t i+1 . Une méthode de collocation de degré K peut être considérée comme une méthode implicite particulière de Runge-Kutta à K étapes. Elle aura les mêmes propriétés d’ordre et de stabilité.

5.4.2 Points de collocation Le polynôme de collocation (t) peut s’exprimer avec les K + 1 polynômes d’interpolation de Lagrange (L j ) j=0 à K associés à (k )k=0 à K , avec la convention

0 = t i et 0 = x(t i ) . K

L j (t) =  k =0 k j

K

t − k  j − k

(t) =   jL j (t) j=0

0 si k  j → L j ( k ) =   1 si k = j → ( k ) =  k

(5.38)

Méthodes numériques en contrôle optimal

425

Les inconnues sont les valeurs k = (k ) prises par le polynôme aux temps de collocation. La condition initiale est imposée : 0 = x(t i ) . Les conditions de collocation aux temps k forment un système non linéaire de dimension K. K

  L (  ) = f ( ,  ) j=0

j

j

k

k

k

, k =1 à K

(5.39)

La solution de l’équation (5.31) est approchée par une suite de N polynômes de degré K de la forme (5.32) définis sur les segments successifs [t i ;t i+1 ] et vérifiant les conditions (5.39). La qualité de l’approximation dépend du nombre N de segments, du degré K des polynômes et du positionnement des points de collocation. De nombreuses variantes sont possibles et sont détaillées dans la référence [R2]. Collocation locale ou globale Les méthodes de collocation locale consistent à fixer le degré K des polynômes et à faire varier le nombre N de segments. Les méthodes de collocation globale consistent inversement à fixer le nombre N de segments (éventuellement réduit à un seul segment) et à faire varier le degré K des polynômes. La discrétisation (valeur de N ou K) est raffinée progressivement jusqu’à obtenir une solution stable avec une tolérance d’erreur donnée. Collocation standard ou orthogonale La collocation standard utilise des points (k )k=1 à K équidistants dans l’intervalle

[t i ;t i+1 ] , généralement avec des polynômes de degré 3. Cette approche s’applique de manière simple à de nombreux problèmes (section 5.4.3). La collocation orthogonale prend comme temps de collocation k les racines d’un polynôme d’une famille de polynômes orthogonaux (Legendre, Tchebychev). Ce positionnement augmente la précision des formules de quadrature. On utilise fréquemment les polynômes de Legendre PK (de degré K) définis sur

t − ti  +1 . = t i+1 − t i 2 Pour un temps final infini, on peut appliquer une collocation globale en passant 1+  de [−1; + 1] à l’intervalle d’intégration [t 0 ; + ] par : t − t 0 = . 1−  [−1; + 1] en se ramenant à l’intervalle d’intégration [t i ;t i+1 ] par :

Les principales méthodes de placement des points sont les suivantes.

426

Techniques d’optimisation

• Méthode de Legendre-Gauss ou Legendre-Gauss-Radau La méthode de Legendre-Gauss définit les temps (k )k=1 à K comme les K racines de PK , auxquelles on ajoute le temps initial 0 = −1 . La méthode de LegendreGauss-Radau est similaire en prenant les K racines de PK−1 + PK .

K

Le polynôme de collocation (t) est défini sur [−1; + 1] par : () =   jL j () . j=0

Les conditions de collocation forment un système de dimension K + 1.

(k ) = f (k ), k  , k = 0 à K

(5.40)

L’état final en t i+1 est ensuite calculé pour  = +1 . • Méthode de Legendre-Gauss-Lobatto Les temps (k )k=1 à K−1 sont les K − 1 racines du polynôme dérivé PK auxquelles on ajoute le temps initial 0 = −1 et le temps final K = +1 .

K

Le polynôme de collocation (t) est défini sur [−1; + 1] par : () =   jL j () . j=0

Les conditions de collocation forment un système de dimension K + 1.

(k ) = f (k ), k  , k = 0 à K

(5.41)

L’état final en t i+1 est obtenu directement en résolvant le système, car K = +1 . Ceci constitue la différence principale avec la méthode de Legendre-Gauss. Les méthodes pseudospectrales utilisent une collocation globale (sur [t 0 ;t f ] ) orthogonale (généralement avec les points de Legendre-Gauss-Lobatto).

5.4.3 Collocation de degré 3 La forme de collocation la plus simple utilise des polynômes de degré 3.

(t) = a 0 + a1t + a 2 t 2 + a 3t 3 sur [t 0 ;t1 ] On se ramène à l’intervalle [0; 1] par le changement de variable : s =

(s) = 0 + 1s +  2s2 + 3s3 sur [0 ; 1]

(5.42)

t − t0 . t1 − t 0 (5.43)

Méthodes numériques en contrôle optimal

427

La dérivée de  par rapport à s est notée  ' .

' =

d d dt = = Tf (, t) ds dt ds

avec t1 − t 0 = T noté

(5.44)

Les conditions de collocation en variable s sur l’intervalle [0; 1] sont de la forme :

 '(s) = 1 + 2 2s + 33s 2 = Tf (, t)

(5.45)

Les inconnues sont les coefficients (0 , 1 , 2 , 3 ) . Pour les déterminer, on choisit 3 points de collocation (s1 ,s2 ,s3 ) généralement équidistants. - Le point s1 = 0 correspond au temps initial t 0 .

- Le point s2 = 0,5 correspond au temps milieu t c . - Le point s3 = 1 correspond au temps final t1 .

Les conditions de collocation (5.33) donnent un système de dimension 4.

 0 = x 0  0 = x 0   1 = T f ( 0 , t 0 )  '0 = T f (0 , t 0 )   3 1 1 1   (5.46)   'c = T f (c , t c ) 1 +  2 + 4 3 = T f   0 + 2 1 + 4  2 + 8  3 , t c   '1 = T f (1 , t1 )   1 + 2 2 + 33 = T f (  0 + 1 +  2 +  3 , t1 ) Ce système se réduit en exprimant (0 , 1, 2 , 3 ) fonction de (0 , 1 ,  '0 ,  '1 ).

 0 =  0  0    '0 = 1 1  =  +  +  +    0 1 2 3  1  2    '1 = 1 + 2 2 + 3 3  3

= 0 =  '0 = − 30 − 2 '0 + 31 −  '1

(5.47)

= 20 +  '0 − 21 +  '1

Les conditions de collocation en t 0 , t1 donnent  '0 ,  '1 en fonction de 0 , 1 .

 ' = T 0 = T f (0 , t 0 ) = Tf 0  0 noté  = Tf1  '1 = T 1 = T f (1 , t1 ) noté

0 = 0 , 1 = f 0  →  2 = − 30 + 31 − 2f 0 − f1  3 = 20 − 21 + f 0 + f1

(5.48)

Les coefficients (0 , 1, 2 , 3 ) ne dépendent ainsi que des valeurs (0 , 1 ) . - La valeur initiale est connue : 0 = x 0 .

428

Techniques d’optimisation

- La valeur finale inconnue 1 doit respecter la condition de collocation en t c :

1 1 1  c = 0 + 2 1 + 4  2 + 8 3 (5.49)  'c = T c = T f (c , t c ) avec   ' =  +  + 3  1 2 3  c 4 En remplaçant les coefficients (0 , 1, 2 , 3 ) donnés par (5.48), on se ramène à une équation d’inconnue 1 . Cette équation est appelée équation d’écart. 1 1 1  3 (5.50) T f  (0 + 1 ) + (f 0 − f1 ) , t c  + (0 − 1 ) + (f 0 + f1 ) = 0 8 4 2  2 La Figure 5-13 récapitule le processus de détermination du polynôme de degré 3.

Figure 5-13 : Polynôme de collocation de degré 3

Exemple 5-6 : Collocation de degré 3 Considérons l’équation différentielle : x = x sur l’intervalle de t 0 = 0 à t1 = 1 . On cherche le polynôme de collocation de degré 3 pour la condition initiale : x(t 0 ) = 1 .

Méthodes numériques en contrôle optimal

429

L’équation d’écart associée au point milieu est :

T = t1 − t 0 = 1 1 1 1  3 T f  (0 + 1 ) + (f 0 − f1 ) , t c  + (0 − 1 ) + (f 0 + f1 ) = 0 avec  8 4 2  2 f (x, t) = x f 0 = T f (0 , t 0 ) = T 0 = 0 En remplaçant  , l’équation se réduit : 190 − 71 = 0. f1 = T f (1 , t1 ) = T 1 = 1 19 On obtient la solution : 1 = 0  2,71429 pour la condition initiale : 0 = 1 . 7 t −t Cette solution est proche de la solution exacte : x(t1 ) = e 1 0 = e  2,71828 . 2 3 Le polynôme de collocation sur [0; 1] est : (t) = 1+ t + 0,42857 t + 0,28571t

5.4.4 Collocation de degré 5 Une solution plus précise peut être obtenue avec des polynômes de degré 5.

(t) = a 0 + a1t + a 2 t 2 + a 3t 3 + a 4 t 4 + a 5t 5 sur [t 0 ; t1 ] On se ramène à l’intervalle [0; 1] par le changement de variable : s =

(s) = 0 + 1s +  2s 2 + 3s3 +  4s 4 + 5s5 sur [0 ; 1]

(5.51)

t − t0 . t1 − t 0 (5.52)

Les conditions de collocation en variable s sur l’intervalle [0; 1] sont de la forme :

 '(s) = 1 + 22s + 33s 2 + 44s3 + 55s 4 = Tf (, t)

(5.53)

Les inconnues sont les coefficients (0 , 1, 2 , 3 , 4 , 5 ) . Pour les déterminer,

on choisit 5 points de collocation (s1 ,s2 ,s3 ,s4 ,s5 ) . L’erreur d’interpolation est minimisée en choisissant les points orthogonaux de Gauss-Lobatto.

 1 s1 = 0 , s 2 = 1 − 2   1 1  s3 = 2 , s 4 = 2 1 +  

3   0,173 7  3   0,827 , s5 = 1 7 

Ces points correspondent à des temps t 0 ,t g1 ,t c ,t g2 ,t1 .

(5.54)

430

Techniques d’optimisation

Les conditions de collocation (5.33) donnent un système de dimension 6.

 0 =  0  avec  '0 = T 0 = T f (0 , t 0 )  '0 = 1  =  +  +  +  +  +  0 1 2 3 4 5  1  ' =  + 2 + 3 + 4 + 5 avec  '1 = T 1 = T f (1 , t1 ) (5.55) 1 2 3 4 5  1  1 1 1 1 1 c =  0 + 1 +  2 +  3 +  4 +  5 2 4 8 16 32   3 1 5 avec  'c = T c = T f (c , t c )  'c = 1 +  2 +  3 +  4 +  5 4 2 16  Ce système linéaire donne (0 , 1, 2 , 3 , 4 , 5 ) en fonction de (0 , c , 1 ) . - La valeur initiale est connue : 0 = x 0 .

- Les valeurs c , 1 doivent respecter les conditions de collocation en t g1 , t g2 . On se ramène ainsi à un système de deux équations à deux inconnues. La Figure 5-14 récapitule le processus de détermination du polynôme de degré 5.

Figure 5-14 : Polynôme de collocation de degré 5

Méthodes numériques en contrôle optimal

431

5.5 Méthodes directes Les méthodes directes consistent à discrétiser le problème de contrôle pour formuler un problème « équivalent » d’optimisation sous contraintes en dimension finie. Ce problème est résolu par un algorithme de programmation non linéaire ou par une méthode variationnelle.

5.5.1 Discrétisation Considérons le problème à temps final fixé sous forme de Mayer (coût final). On peut toujours se ramener à cette formulation par changement de variables.

x = f (x,u, t) , x(t 0 ) = x 0 min J = (x f ) avec  u (x f ) = 0

(5.56)

Les conditions d’optimalité du PMP s’expriment avec l’adjoint p, les q multiplicateurs   des q contraintes finales et l’hamiltonien défini par : T H(x,u,p, t) = p f (x,u, t) .

x = f x = Hp   T p = − f x p p = − H x    f uT p = 0 H u = 0 (x ) = 0 (x ) = 0 f f   pf = xf +  xf  pf = xf +  xf   Discrétisons l’état et la commande sur N intervalles t 0  t1 

(5.57)

 ti 

 t N = tf .

Les valeurs d’état (xi )i=0 à N et de commande (u i )i=0 à N définissent une approximation de la solution exacte du problème (5.56). En considérant la commande constante par morceaux sur chaque intervalle [t i ;t i+1 ] , on peut approcher l’équation d’état x = f (x, t) par :

xi 

x i+1 − x i = f (x i , u i , t i ) avec h i = t i+1 − t i hi

(5.58)

Les équations (5.58) sont des contraintes liant les valeurs (xi )i=0 à N et (u i )i=0 à N . Ces N contraintes sont de la forme :

Ci (ui ,xi ,xi+1 ) = xi+1 − xi − hif (xi ,ui ,t i ) = 0

(5.59)

432

Techniques d’optimisation

On formule ainsi un problème d’optimisation sous contraintes en dimension finie.

min F = (x N ) u i ,x i

Ci (u i , x i , x i+1 ) = 0 , i = 0 à N − 1 sous  (x N ) = 0

(5.60)

Ce problème comporte 2N + 1 variables ( x 0 est fixé) et N + q contraintes. Conditions d’optimalité Les conditions d’optimalité KKT du problème (5.60) s’expriment avec les N multiplicateurs (i )i=0 à N−1 des contraintes (Ci )i=0 à N−1 , les q multiplicateurs



q

des q contraintes finales et le lagrangien défini par : N −1

L(u i , x i , i , ) = (x N ) +  iTCi (u i , x i , x i+1 ) +  T(x N ) . i =0

 ui L = 0 f uT (x i , u i , t i ) i = 0   T  xi L = 0  i−1 −  i − h i f x (x i , u i , t i ) i = 0    x N L = 0  x (x N ) +  x (x N ) +  N −1 = 0 pour i = 0 à N − 1  C (u , x , x ) = 0  i L = 0  i i i i+1  L = 0 (x N ) = 0   

(5.61)

Ces conditions d’optimalité forment un système discret aux deux bouts. L’état se propage dans le sens direct par (5.58) : xi+1 = xi + hif (xi ,ui ,t i ) .

 N−1 = − x (x N ) −  x (x N ) . T  i−1 =  i + h i f x (x i , u i , t i ) i

L’adjoint se propage à rebours à partir de  N−1 : 

Cherchons la limite des conditions KKT lorsque le pas h i tend vers 0.

Les multiplicateurs (i )i=0 à N−1 deviennent une fonction  (t) et on obtient :

f uT (x, u, t) = 0 f uT (x i , u i , t i ) i = 0   T T  = − f x (x, u, t)  i−1 −  i − h i f x (x i , u i , t i ) i = 0   →  (t f ) = −  x (x f ) −  x (x f ) (5.62) x (x N ) +  x (x N ) +  N−1 = 0 ⎯⎯⎯ h i →0 C (u , x , x ) = 0  x = f (x, u, t)  i i i i+1   (x N ) = 0  (x f ) = 0   On retrouve les conditions d’optimalité (5.57) du problème de contrôle en posant  = − p . Les multiplicateurs (i ) représentent des approximations de

Méthodes numériques en contrôle optimal

433

l’adjoint p aux temps (t i ) . Le signe opposé vient du choix du multiplicateur anormal (p0 = 1) pour définir l’hamiltonien.

Choix de discrétisation La discrétisation peut s’effectuer de différentes manières. La commande représentée par ses valeurs (u i )i=0 à N aux temps (t i )i=0 à N peut être interpolée constante par morceaux, linéaire par morceaux, par splines… L’équation différentielle d’état peut être résolue par propagation ou par collocation. Avec une résolution par propagation, l’état est calculé à partir de x 0 en appliquant la commande définie par les valeurs (u i )i=0 à N . On choisit une méthode de type

Runge-Kutta d’ordre approprié (selon la précision souhaitée) en utilisant ou non les mêmes temps de discrétisation que la commande. Lorsqu’on sait par expérience que la commande solution ne présente pas de grandes variations, on peut appliquer une discrétisation (t i )i=0 à N grossière pour limiter le nombre de variables, tout en appliquant une méthode d’intégration précise avec un grand nombre de pas. Avec une résolution par collocation, l’état est également discrétisé et les variables (x i )i=1 à N font partie des inconnues du problème d’optimisation. Les contraintes (5.59) sont remplacées par les conditions de collocation. On formule ainsi un problème d’optimisation de grande taille qui se résout par les méthodes standards de programmation non linéaire ou par la méthode variationnelle présentée dans la section suivante. On observe que chaque contrainte de collocation porte sur un segment [t i ;t i+1 ] et ne fait intervenir que les variables « locales » ui ,xi et x i+1 . La matrice jacobienne de ces contraintes est creuse et ne présente des éléments non nuls qu’au voisinage de la diagonale. Les algorithmes d’optimisation spécifiques aux problèmes de grande taille exploitent cette caractéristique (en particulier lors du calcul des gradients) de manière à réduire le temps de calcul.

5.5.2 Approche variationnelle Considérons un problème de contrôle avec q contraintes finales. tf x = f (x,u, t) , x(t 0 ) = x 0 min J =  L(x,u, t)dt + (x f , t f ) avec  u,t f  j (x f , t f ) = 0 , j = 1 à q t0

(5.63)

434

Techniques d’optimisation

On se donne une solution quelconque définie par le temps final t f et la commande

u(t)t0 ttf . Cette solution n’est pas optimale et ne respecte pas les contraintes.

La méthode variationnelle utilise les variations premières J et  pour trouver des corrections t f et u(t)t0 ttf améliorant la solution. Variation du coût et des contraintes La variation du coût J s’exprime avec l’adjoint p0 et l’hamiltonien H 0 (4.17). La notation p0 désigne ici l’adjoint au coût (et non le multiplicateur anormal).

p0 = − H0x  (5.64) J = [L + ]tf t f +  H udt avec p0 (t f ) = x (x f , t f ) t0  T H0 (x,u,p0 , t) = L(x,u, t) + p 0 f (x,u, t) tf

T 0u

On applique la même technique pour la variation de la contrainte  j . Pour cela, on définit un adjoint p j et un hamiltonien H j associés à la contrainte. La formule (5.64) s’applique de manière similaire en remplaçant le coût final  par  j et le coût intégral L par 0.

p j = − H jx  T  j = [ j ]t f t f +  H ju udt avec p j (t f ) =  jx (x f , t f ) t0  T H j (x,u,p j , t) = p j f (x,u, t) tf

Notons P = (p1 ,

,pq )

nq

la matrice des adjoints et G = (H1 ,

(5.65)

,Hq )T 

q

le

vecteur des hamiltoniens. Les équations (5.65) se mettent sous forme matricielle :

p j = − H jx P = − G x = − f x P   → P(t f ) =  x (x f , t f ) p j (t f ) =  jx (x f , t f )   t T G = P f H j (x, u, p j , t) = p j f (x, u, t) tf

(5.66)

tf

 j = [ j ]t f t f +  H udt →  = [ ]t f t f +  G Tu udt t0

T ju

t0

Supposons que la solution initiale (t f ;u) donne une valeur des contraintes f  0.

L’objectif est de trouver des corrections (t f ; u) pour d’annuler les contraintes  en minimisant la fonctionnelle J.

Méthodes numériques en contrôle optimal

435

Problème de minimisation locale Le problème de minimisation locale se formule comme :

min J sous  = −  f

(5.67)

u,t f

Ce problème n’a pas de solution, car les variations J et  sont linéaires en fonction de t f et u . Pour obtenir une correction bornée, on convexifie le problème en ajoutant des termes quadratiques en t f et u .

min J c = J + u,t f

def

t

1 1f b(t f ) 2 +  uT Wu dt sous  = −  f 2 2 t0

(5.68)

Le réel positif b et la matrice symétrique positive W  mm sont des poids permettant de contrôler l’amplitude des corrections t f et u . Le problème quadratique linéaire (5.68) se résout en introduisant les multiplicateurs  = (1 , , q )T  q des contraintes et en formant le coût augmenté J a .

J a = J c +  T ( +  f ) =

1 b(t f ) 2 + [L +  +  T ]t f t f 2 t

1f +  uT Wudt + 2 t0

tf

 (H

t0

T 0u

+  G ) udt +   f T

T u

T

(5.69)

Les variations première et seconde de J a sont données par :

(

)

T

J a = bt f + [L +  +   ]t f (t f ) + tf

tf

 ( u W + H

t0

T

T 0u

+  T G Tu ) (u)dt (5.70)

 J a = b (t f ) +  (u) W (u)dt 2

2

T

t0

Calcul des corrections 2 Les conditions nécessaires de minimum sont : Ja = 0 et  J a  0 . La variation seconde est toujours positive, car b  0 et W est définie positive. L’annulation de la variation première donne les corrections (t f ; u) .

u = − W −1 ( H 0u + G u  )   1 T t f = − [L +  +  ]t f b 

(5.71)

436

Techniques d’optimisation

Les corrections (t f ; u) produisent des variations  des contraintes. t

f 1  = − [L +  +  T]tf []tf −  G Tu W −1 ( H0u + G u  ) dt b t0

(5.72)

Ces variations sont égales à −f (5.68), ce qui détermine les multiplicateurs  . tf 1   =  []tf []Tt f +  G Tu W −1G u dt    t0 b 

−1

tf   1   f − [L + ]t f []t f −  G Tu W −1H 0u dt  (5.73)   b t0  

Réglage des corrections Si le modèle linéarisé est correct, les corrections (5.71) produisent des variations

ˆ (variations attendues). du coût et des contraintes Jˆ et  tf

1 T Jˆ = [L + ]t f t f +  H 0u udt = − [L +  +  T ]t f [L + ]t f − ( I JJ + I J ) b t0 tf

ˆ = [ ]t f t f +  G Tu udt t0

1 = − [L +  +  T ]t f [ ]t f b

− ( IJ + I )

(5.74)

où l’on a introduit les matrices d’influence I , IJ ,IJJ définies par : tf

tf

tf

t0

t0

t0

T I =  G Tu W −1G u dt , IJ =  G Tu W −1H0u dt = ITJ , IJJ =  H0u W −1H0u dt (5.75)

ˆ ˆ ), Si les variations observées (J r ; r ) s’écartent des variations attendues (J; les corrections sont à réduire pour rester dans le domaine linéaire. Ceci se fait : - soit en modifiant les pondérations b et W ; - soit en visant un rattrapage partiel des contraintes :  = −f , 0    1 ; - soit en appliquant progressivement la correction : u , 0    1 . La solution optimale est obtenue lorsque les corrections (t f ; u) et les variations (J;  ) sont suffisamment petites. On a alors les relations suivantes.

 H = H 0 + G = L + p T f  def  → PMP avec  T t f = 0 → [L +  +  ]t f = 0   p = p 0 + P (5.76)  def −1 −1  = 0 →  = − I IJ , J = 0 → I JJ − I J I I J = 0

u = 0 → H 0u + G u  = 0

Les 2 premières conditions correspondent aux conditions d’optimalité du PMP.

Méthodes numériques en contrôle optimal

437

Implémentation Le calcul des corrections (t f ; u) nécessite une intégration directe et une intégration rebours. - L’intégration directe de l’état x avec la commande u donne l’état final x(t f ) . - Les adjoints p0 et (p j ) j=1 à q sont évalués à t f par les dérivées x et  x . - L’intégration à rebours des adjoints donne les matrices I , IJ et IJJ . - Les corrections (t f ; u) sont calculées par :

u = − W −1 ( H 0u + G u  )   1 T t f = − [L +  +   ]t f b 

(5.77) −1

1 1    avec  =  [ ]t f [ ]Tt f + I    f − [L + ]t f [ ]t f − I J  b b    La Figure 5-15 récapitule les étapes de calcul à chaque itération. Cette méthode consistant à minimiser « directement » la variation de J est appelée méthode variationnelle directe.

Figure 5-15 : Méthode variationnelle directe L’exemple suivant illustre une itération de la méthode variationnelle directe.

438

Techniques d’optimisation

Exemple 5-7 : Méthode variationnelle directe Reprenons le problème de mise en orbite en terre plate (Exemple 4-5 et 4.13). On cherche la trajectoire maximisant la vitesse horizontale finale à altitude et temps fixés. L’accélération de module constant a est orientée par l’angle  . En notant v = vz la vitesse verticale, le problème se formule comme : tf

z(t f ) = zc z = v min J = − v x (t f ) = −a  cos  dt avec  et   v = a sin  − g v(t f ) = 0 t0

Ce problème a été résolu dans l’Exemple 4-5. Rappelons que la commande optimale suit une loi tangente linéaire de la forme : tan  = tan 0 − ct . Pour appliquer la méthode variationnelle directe, on définit les adjoints et hamiltoniens associés respectivement au coût et aux contraintes. Les fonctions définissant le coût, la dynamique et les contraintes sont :

 z − zc  (z, v) = 0 v  , f (z, v, ) =     , (z, v) =  L(z, v, ) = − cos   a sin  − g  v 

Adjoint au coût L’adjoint p0 et l’hamiltonien H 0 sont définis par (5.64).

p 0z = 0 H 0 = L + p T0 f = − cos  + p 0z v + p 0v (a sin  − g) →  p 0v = − p0z p 0z (t f ) = 0 (z, v) = 0 → p 0v (t f ) = 0 L’hamiltonien H 0 se réduit à : H0 = − cos  .

  0   → p0 (t) =   0   

Adjoint à la contrainte d’altitude L’adjoint p1 et l’hamiltonien H1 sont définis par (5.65).

H1 = p1T f = p1z v + p1v (a sin  − g) 1 (z, v) = z − z c

p1z = 0 →  p1v = − p1z p1z (t f ) = 1 →  p1v (t f ) = 0

   1    → p1 (t) =    tf − t    

Méthodes numériques en contrôle optimal

439

Adjoint à la contrainte de vitesse L’adjoint p2 et l’hamiltonien H 2 sont définis par (5.65).

p 2z = 0 H 2 = p T2 f = p 2z v + p 2v (a sin  − g) →  p 2v = − p 2z p 2z (t f ) = 0  2 (z, v) = v →  p 2v (t f ) = 1

    →   

0 p 2 (t) =   1

Matrices d’influence Les adjoints sont regroupés sous la forme matricielle (5.66) pour calculer les matrices d’influence (5.75). Supposons pour cet exemple que les poids b et W sont unitaires (b = 1, W = I) et que la méthode variationnelle est initialisée avec une commande constante (t) = c . Avec une commande constante, les matrices d’influence se calculent analytiquement. Matrices P et G : Matrices H0u et G u : Matrice I :

0 v  1  1 tf − t    t P=  , G=Pf =   1   a sin  − g  0  tf − t 1  t −t H 0 = − cos  → H 0u = sin  , G Tu = a cos   f   1  tf

 2t 2 3t f  1 I =  G Tu W −1G u dt = a 2 t f cos 2   f  6  3t f 6  t0 tf

Matrice IJ :

t  1 IJ =  G Tu W −1H0u dt = at f sin  cos   f  2 2 t0

Matrice IJJ :

IJJ =  HT0u W −1H0u dt = t f sin 2 

tf

t0

Correction de commande Calculons la valeur des contraintes pour la commande initiale constante (t) = c .

 v(t f ) = (a sin c − g) t f 1   z(t f ) − z c   (a sin c − g) t f2 − z c   →  = = 2  1    f 2   v(t f )   (a sin  − g) t z(t f ) = 2 (a sin c − g) t f c   f Les formules (5.77) donnent les multiplicateurs  et la correction de commande  pour réaliser un rattrapage total des contraintes :  = −f .

440

Techniques d’optimisation

−12zc    3  6zc t f + [a sin c (1 − cos c ) − g]t f  g − a sin c 6z  = − W −1 ( H 0u + G u  ) = + 3 c (t f − 2t) a cos c at f cos c −1  = I ( f − IJ ) =

1 a t cos2 c 2 3 f

Supposons que l’on choisisse c pour atteindre la vitesse finale : asin c − g = 0. La commande corrigée à la première itération est : (t) = c +

6z c ( t f − 2t ). at cos c

Si la correction est petite par rapport à c : tan (t)  tan c +

6z c ( t f − 2t ). at cos c

3 f

3 f

Comparaison à la commande optimale La commande optimale est de la forme tangente linéaire : tan (t) = tan 0 − ct .

1 1 t f . On a : tan m = tan 0 − ct f . 2 2 1 La commande optimale s’exprime comme : tan (t) = tan m + c(t f − 2t) . 2 Notons m l’angle à la moitié du vol : t m =

On observe l’analogie avec la commande corrigée par la méthode variationnelle. La commande initiale constante c satisfaisant la contrainte de vitesse finale est proche de la valeur « moyenne » m et le terme correctif est linéaire en (t f − 2t). La commande corrigée se rapproche bien de la commande optimale.

5.6 Méthodes indirectes Les méthodes indirectes consistent à résoudre le problème aux deux bouts associés aux conditions d’optimalité du PMP. Ce système d’équations non linéaires peut se résoudre par une méthode de tir ou par une méthode variationnelle.

5.6.1 Méthode de tir Considérons un problème de contrôle à temps final libre. tf x = f (x,u, t) , x(t 0 ) = x 0 (5.78) min J =  L(x,u, t)dt + (x f , t f ) avec  u,t f  j (x f , t f ) = 0 , j = 1 à q t0

Méthodes numériques en contrôle optimal

441

Les conditions d’optimalité du PMP s’expriment avec l’adjoint p, les multiplicateurs  des contraintes finales et l’hamiltonien normal défini par :

H(x,u,p, t) = L(x,u,p, t) + p Tf (x,u, t) . La commande optimale minimise l’hamiltonien : min H → u*(x,p, t) . u

Avec cette commande u*(x,p, t) , l’hamiltonien devient une fonction de x et p. On conserve par simplicité la notation H pour désigner la fonction H x,u*(x,p,t),p,t  . L’état et l’adjoint vérifient le problème aux deux bouts :

 x(t 0 ) = x 0   x = H p (x, p)  (x f , t f ) = 0 ,   p = − H x (x, p) p(t f ) =  x +  x   (x f , t f ) H(t ) = −   +    (x , t ) t t f f  f

(5.79)

Les inconnues sont l’adjoint initial p(t 0 ) , le temps final t f et les multiplicateurs  . Les équations correspondantes sont les conditions de transversalité sur p(t f ) , sur H(t f ) et les contraintes (x f ,t f ) . Le problème aux deux bouts (5.79) représenté sur la Figure 5-16 forme un système d’équations non linéaires de dimension n + q + 1 .

Figure 5-16 : Problème aux deux bouts Le système à résoudre est noté de manière compacte : S(p0 , , t f ) = 0 . n +q +1

n +q +1

→ La fonction S : donnant les valeurs des seconds membres est appelée fonction de tir (shooting function). Sa valeur mesure l’écart à la solution, la cible étant zéro.

442

Techniques d’optimisation

Le problème de tir (shooting problem) consiste à trouver les inconnues p0 , , t f pour atteindre la cible, comme schématisé sur la Figure 5-17.

Figure 5-17 : Problème de tir La méthode de tir (shooting method) consiste à résoudre le système d’équations non linéaires S(p0 , , t f ) = 0 par une méthode de type Newton. Les points critiques sont le calcul numérique des dérivées et l’initialisation de l’adjoint p 0 . Dérivées du système différentiel L’évaluation de la fonction de tir S(p0 , ,t f ) nécessite d’intégrer numériquement les équations différentielles de l’état et de l’adjoint. Pour appliquer une méthode de type Newton, il faut évaluer le gradient de la fonction de tir par rapport à l’adjoint initial p0 . En notant z = (x,p) , le système différentiel est de la forme : z = F(z, t) .

Figure 5-18 : Calcul de la fonction de tir

On peut envisager trois méthodes pour calculer la matrice de transition

z f . z 0

Méthodes numériques en contrôle optimal



443

Dérivation externe

La dérivation externe consiste à appliquer un incrément k sur la composante k de l’état initial z0 et à intégrer jusqu’à t f pour observer la variation résultante de

l’état final z f . En faisant varier successivement chaque composante comme illustré sur la Figure 5-19, on obtient l’ensemble des dérivées partielles constituant

z f . z 0 Ce calcul requiert n + 1 intégrations successives du système différentiel. la matrice de transition

Figure 5-19 : Dérivation externe La dérivation externe est simple à implémenter, car l’intégrateur du système différentiel est utilisé comme une « boîte noire ». Cette méthode nécessite cependant un choix approprié des incréments k (à adapter selon le problème) et peut donner des dérivées peu précises si l’intégrateur est à pas variable.

Exemple 5-8 : Effet d’un pas d’intégration variable sur les dérivées Considérons l’équation différentielle : x = f (x) de condition initiale : x(t 0 ) = x 0 . Appliquons la méthode d’Euler sur deux pas consécutifs de longueurs h1 et h 2 .

x1 = x 0 + f (x 0 )h1  x 2 = x 0 + f (x 0 )h1 + f  x 0 + f (x 0 )h1  h 2  x 2 = x1 + f (x1 )h 2 En développant f à l’ordre 1 pour h1 petit, et en notant f0 = f (x 0 ) et f1 = f (x1 ) , on obtient : x 2 = x 0 + f0 (h1 + h 2 + f '0 h1h 2 ) .

444

Techniques d’optimisation

Utilisons cette formule pour calculer d’une part la dérivée finie, d’autre part l’effet d’une variation de pas.

x 2 par différence x 0

• Dérivée par différence finie Un incrément x 0 sur x 0 produit une variation x x 2 sur x 2 . En développant à l’ordre 1 la formule donnant x 2 avec :

f (x 0 + x 0 )  f 0 + f '0 x 0 2 , on a : x x 2 =x 0 1+ f 0 (h1 + h 2 ) + (f '0 + f 0f ''0 )h1h 2   f '(x +  x )  f ' + f ''  x 0 0 0 0 0  • Variation du pas Faisons varier le pas h1 de +h et le pas h 2 de −h .

La solution x 2 varie de : h x 2 = f0f '0 h(h 2 − h1 − h) . Comparons ces variations x x 2 et h x 2 en supposant les pas égaux : h1 = h 2 .

 x x 2 = x 0 1 + 2hf 0 + h 2 (f '02 + f 0f ''0 )     2 h x 2 = h  −f 0f '0  En supposant que les valeurs et dérivées de f sont de l’ordre de 1, on observe qu’un x 0 . Cette pas de temps variable peut fausser l’évaluation de la dérivée si h variation de pas qui dépend de l’intégrateur peut apparaître entre l’évaluation nominale (x0 ) et l’évaluation avec incrément (x 0 + x 0 ) . En pratique, si l’incrément x 0 est choisi petit, il est préférable d’utiliser un intégrateur à pas fixe pour calculer la dérivée par différence finie.



Dérivation interne

La dérivation interne consiste à réaliser simultanément les n + 1 intégrations. On propage un vecteur Z de taille (n + 1)  n contenant n + 1 copies du vecteur z. - La copie numéro 0 est la solution nominale initialisée avec z0 .

- La copie numéro k est la solution perturbée initialisée avec z0 + k . Ce processus de dérivation interne est illustré sur la Figure 5-20 ci-après.

Méthodes numériques en contrôle optimal

445

Figure 5-20 : Dérivation interne

z f en une seule intégration du vecteur Z. z 0 Les n + 1 intégrations étant simultanées, elles utilisent le même pas de temps et ne présentent pas d’erreur de consistance, même si l’intégrateur est à pas variable. Cette méthode nécessite cependant de modifier l’implémentation du système différentiel de manière à propager le vecteur d’état Z de dimension (n + 1)  n . On obtient la matrice de transition

• Dérivée variationnelle Les équations variationnelles du système z = F(z, t) sont les équations différentielles des écarts. On les obtient par un développement à l’ordre 1.

z nom + z = F(z nom + z, t)  z =

F z z

avec Fz =

F (z nom , t) z

(5.80)

La matrice de ce système linéaire est évaluée sur la solution nominale znom .

L’intégration de (5.80) à partir d’un écart initial z 0 donne l’écart final z f .

n z f  , 0  , l’écart final z f est la dérivée .  (z 0 ) k  Les n dérivées partielles sont obtenues en intégrant la matrice Z de taille n  n .

1 

2

Pour z0 =  0 , 0 ,

k

,1,

F (5.81) Z avec Z0 = I z Cette méthode est plus précise que la dérivation externe ou interne, mais elle nécessite d’une part de précalculer et stocker la matrice Fz , d’autre part d’implémenter et propager les équations variationnelles qui sont spécifiques au problème donné. Z=

446

Techniques d’optimisation

Exemple 5-9 : Dérivées d’un système différentiel Considérons l’équation différentielle : x = −x 2 avec : x(t = 0) = x 0 . On cherche la dérivée de x(t) par rapport à la condition initiale. Dérivée exacte La solution exacte est : x =

x x0 1 = et sa dérivée est : . x 0 (x 0 t + 1) 2 x 0 t + 1

Dérivée externe Un incrément x 0 perturbe la solution de x : x + x = On obtient : x =

x 0 + x 0 . (x 0 + x 0 )t + 1

x 0 . (x 0 + x 0 )t + 1 (x 0 t + 1)

La dérivée externe approche la dérivée exacte lorsque l’incrément x 0 décroît.

L’erreur par rapport à la dérivée exacte dépend de l’incrément x 0 qui en pratique ne peut pas être trop petit (à adapter selon le problème et la méthode numérique d’intégration). Dérivée variationnelle L’équation variationnelle est : x = −2x nom x

avec x nom =

x0 . x 0 t + 1

2x 0 x 1 x → = . x 0 t + 1 x 0 (x 0 t + 1) 2 La dérivée variationnelle donne la dérivée exacte par rapport à la condition initiale. En pratique, on ne dispose pas de la solution analytique et il faut intégrer numériquement l’équation variationnelle à partir d’une condition initiale unitaire. Cette équation s’intègre :

x = −

Si le problème de contrôle dépend de paramètres  (problème hybride), les dérivées du système différentiel par rapport à  se calculent de manière similaire par l’une des trois méthodes précédentes. Les équations variationnelles sont de la forme : z =

F F z +  . z 

Méthodes numériques en contrôle optimal

447

Le temps final peut également être traité comme paramètre par changement de variable. On définit le temps  normalisé variant entre 0 et 1.

=

t − t0 dz 1 dz 1 = (t − t 0 ) → = = F(z, , t) tf − t0 d  dt 

(5.82)

Le problème de contrôle est alors à temps final fixé (f = 1) avec le paramètre  à optimiser. Sensibilité aux conditions initiales L’évaluation de la fonction de tir nécessite d’intégrer le système hamiltonien :

 x = H p (x,u,p, t) (5.83) avec H(x,u,p, t) = L(x,u, t) + p Tf (x,u, t)  p = − H x (x,u,p, t) Écrivons les équations variationnelles de ce système avec les écarts (x; p) au voisinage d’une trajectoire de référence. x = H Tpx x + H Tppp = f xT x (5.84)  T T T T p = − H xx x − H xpp = − f x p − H xx x Les matrices dérivées de f et H sont évaluées sur la trajectoire de référence. On T observe que les systèmes linéaires en x et p ont la même matrice f x , mais T

avec un signe opposé. Les valeurs propres négatives de f x ont un effet convergent sur l’équation en x et un effet divergent sur l’équation en p . L’effet des valeurs propres positives est inverse. Il n’est par conséquent pas possible que les évolutions de x et p soient simultanément stables. Le système hamiltonien est par nature très sensible à des variations de conditions initiales. Du fait de cette caractéristique intrinsèque, le rayon de convergence d’une méthode de tir est assez petit autour de la solution et l’adjoint initial p0 demande une initialisation très précise. Dans certains cas (en particulier lorsque le temps de propagation est grand), les erreurs numériques liées à la méthode d’intégration peuvent suffire à provoquer la divergence, même lorsque l’adjoint initial correspond à la solution optimale. L’exemple quadratique linéaire suivant illustre cette forte sensibilité.

448

Techniques d’optimisation

Exemple 5-10 : Sensibilité du système hamiltonien Considérons le problème de contrôle quadratique-linéaire à temps et état final fixé. t x(t 0 ) = x 0 , t 0 = 0 1f 2 min J =  u dt sous x = ax + bu avec  u 2 t0 x(t f ) = x f , t f fixé

Ce problème se résout analytiquement. •

Hamiltonien :



Commande :



Adjoint :



État :

1 2 u + p(ax + bu) 2 → u = −bp Hu = u + bp = 0

H=

→ p = p0e− at p = − Hx = − ap x = ax + bu = ax − b2p0e− at

b 2 − at at (e − e ) 2a L’inconnue du problème de tir est l’adjoint initial p0 . La contrainte finale porte sur l’état x(t f ) . La fonction de tir est définie par : → x = x 0eat + p 0

b 2 − at f (e − e at f ) + x 0e at f − x f 2a dS b2 − at f at f = (e − e ) La dérivée de S est donnée par : dp0 2a S(p0 ) = x(t f ) − x f = p 0

Cette fonction exponentielle de t f prend une valeur forte si le temps final est

grand, ceci indépendamment du signe de a. Un écart même faible de p0 au voisinage de la solution peut alors produire une valeur très forte de la fonction de tir, voire son explosion numérique.

Tir multiple La sensibilité intrinsèque du système hamiltonien rend la méthode de tir numériquement inapplicable dans certains cas, en particulier si le temps final est grand. La méthode de tir multiple a pour but de réduire cette sensibilité en découpant la trajectoire en N segments : t 0  t1   t i   t N = t f .

Méthodes numériques en contrôle optimal

449

Chaque segment [t i ;t i+1 ] est intégré indépendamment à partir d’un état initial x i

et d’un adjoint initial p i choisis librement. L’intégration donne des conditions en fin du segment i notées x(t i−+1 ) et p(t i−+1 ) . Ces conditions finales diffèrent des conditions (xi+1 ,pi+1 ) considérées au début du segment suivant.

x = Hp , x(t i+ ) = x i  + p =− H x , p(t i ) = pi

x(t i−+1 ) intégration de t i à t i+1 ⎯⎯⎯⎯⎯⎯⎯⎯ →  − p(t i+1 )

(5.85)

Les variables (xi ,pi )i=1 à N deviennent des inconnues supplémentaires du problème de tir. On cherche à satisfaire les conditions de continuité sur l’état et l’adjoint entre segments successifs.

x(t i− ) = x i (5.86) , i = 1 à N −1  − p(t i ) = pi Notons z = (x , p) le vecteur de dimension 2n formé de l’état et de l’adjoint. Les (N − 1)  2n inconnues supplémentaires sont : (z1 ,z2 , ,z N−1 ) auxquelles on − impose les conditions de continuité : zi = z(t i ) − zi = 0 comme illustré cidessous.

Figure 5-21 : Méthode de tir multiple La fonction de tir simple est associée au problème aux deux bouts (5.79).

 (x f )   →q   S(p 0 , , t f ) =  p f − (xf +  xf  )  → n  H + ( +   )  → 1 tf tf  f 

(5.87)

450

Techniques d’optimisation

La fonction de tir multiple sur N segments est définie par :

SN (p 0 , , t f , z1 ,

 S(p 0 , , t f )  → n + q + 1   z1   → 2n , z N −1 ) =      z N −1  → 2n

(5.88)

Le problème de tir multiple est le système de dimension n + q + 1 + (N − 1)  2n . (5.89)

SN (p0 , , t f ,z1, ,z N−1 ) = 0

Le découpage de la trajectoire en plusieurs segments intégrés indépendamment a pour effet de réduire la sensibilité de la fonction de tir. Ceci est atteint au détriment de l’augmentation de la dimension du problème de tir. Le choix du nombre de segments résulte d’un compromis sensibilité / dimension.

5.6.2 Approche variationnelle Reprenons le problème de contrôle (5.78) avec q contraintes finales. tf  x = f (x, u, t) , x(t 0 ) = x 0 (5.90) min J =  L(x, u, t)dt + (x f , t f ) avec  u,t f  t0  j (x f , t f ) = 0 , j = 1 à q

Les conditions d’optimalité donnée par le PMP donnent le système hamiltonien :

x = Hp  p = − H x H = 0  u

(5.91)

avec H = L + pTf

et les conditions finales (transversalité et contraintes) :

 x = p   = 0  = 0 

avec  =  +  T  avec  =  t + H =  + L

à tf

(5.92)

Donnons-nous une solution arbitraire définie par une commande u(t)t0 ttf , un temps final t f et des multiplicateurs  et effectuons les calculs suivants.

- L’intégration directe (5.91) de l’état x avec la commande u donne x(t f ) . - L’adjoint final p(t f ) est évalué par (5.92) avec les multiplicateurs  .

- L’intégration à rebours (5.91) de l’adjoint permet d’évaluer Hu (t)t0 ttf .

Méthodes numériques en contrôle optimal

451

Si la solution (u, t f , ) n’est pas optimale, les conditions (Hu = 0,  = 0,  = 0) ne sont pas satisfaites. La méthode variationnelle consiste à chercher des corrections (u, t f , ) à partir des équations (5.91) et (5.92) développées à l’ordre 1. Ces équations variationnelles (ou de voisinage) portent sur les écarts (x, p, u, t f , ) .

x = Hp →  p = − H x →  H u = 0 →  x = p →   = 0 →  = 0 → 

x = H Tpx x + H Tpu u + H Tppp =

f xT x + f uTu

p = −H Txx x − H Txu u − H Txpp = −H xx x − H ux u − f x p H u = H Tux x + H Tuu u + H Tupp = H xu x + H uu u + f u p pf =  xx x f +  xt t f +  x  =  xx x f +  xt t f +  x 

(5.93)

 =  Tx x f +  Tt t f +  T  =  Tx x f +  Tt t f +  T  =  x x f +  t t f

La première étape consiste à réduire le système variationnel (5.93). Réduction du système variationnel Notons (Huc , c , c ) les valeurs obtenues avec la solution initiale arbitraire

(u, t f , ) . L’objectif étant d’annuler (Hu ,  , ) , on cherche des corrections (u, t f , ) telles que : H u = −H uc   = − c   = − c

H xu x + H uu u + f u p = −H uc    Tx x f +  Tt t f +  T = − c   x +  t = − c t f  x f

(5.94)

L’équation en Hu donne la correction de commande u en fonction de (x, p).

u = − H −uu1 (H uc + H xu x + f u p)

(5.95)

En remplaçant u dans les équations différentielles (5.93), on obtient :

x = f xT x + f uT u = Ax − B p + DH uc  T p = −H xx x − H ux u − f x p = −Cx − A p + EH uc

(5.96)

452

Techniques d’optimisation

avec les matrices A, B, C, D, E données par :

A = f xT − f uT H −uu1 H xu −1 D = − f uT H uu  T −1 B = f H f ,   u uu u −1 E = −H ux H uu  −1 = − C H H H H xx ux uu xu 

(5.97)

Les conditions aux extrémités du système différentiel (5.96) sont les suivantes. - La variation d’état initial x 0 est nulle, car x(t 0 ) = x 0 est fixé. - La variation d’adjoint final pf est donnée par (5.93).

x 0 = 0  pf = xx x f + xt t f +  x 

(5.98)

Les équations (5.96) et (5.98) définissent un système aux deux bouts. Si l’on se donne (x f , t f , ) , on peut intégrer à rebours les équations (5.96) en (x, p)

pour obtenir la valeur de x 0 . L’objectif est alors de trouver les inconnues

(x f , t f , ) pour satisfaire les deux dernières équations de (5.94). x 0 = 0  T T T  x x f +  t t f +   = − c   x +  t = − c t f  x f

(5.99)

Résolution du système variationnel Pour résoudre le système (5.99), on cherche à exprimer x 0 en fonction de

(x f , t f , ) . Le système différentiel linéaire (5.96) est non homogène à cause du terme en Huc . Sa solution générale est de la forme : x(t) = X(t)x(t f ) + P(t)p(t f ) + (t)

(5.100)

Les matrices X(t) et P(t) sont les matrices de solutions unitaires obtenues en intégrant le système homogène (avec Huc = 0 ) à rebours à partir de conditions

finales unitaires. Pour chaque intégration, les vecteurs x(t f ) et p(t f ) sont nuls, sauf une composante de x (pour générer la matrice X) ou de p (pour générer la matrice P). La solution particulière (t) est obtenue en intégrant (5.96) à rebours à partir de x(t f ) = 0 , p(t f ) = 0 et avec Hu = − Huc (correction visée sur H u ).

Méthodes numériques en contrôle optimal

453

Avec (5.100), la variation d’état initial s’exprime en fonction de (x f , pf ) .

x0 = X(t 0 )x f + P(t 0 )pf + (t 0 ) = X0x f + P0pf + 0 noté

(5.101)

En remplaçant pf par son expression (5.98), les équations (5.99) donnent un système linéaire en fonction des inconnues (x f , t f , ) .

 X 0 + P0 xx   Tx    Tx 

P0 xt  Tt t

P0 x   x f   0   0       T   t f  +  0  =  − c 0      0   − c

    

(5.102)

Correction de commande La résolution du système linéaire (5.102) donne (x f , t f , ) . L’évolution des écarts (x, p) est obtenue avec les solutions unitaires déjà calculées (X , P, ) en partant de x f et pf donné par (5.98). On en déduit la correction de commande u par (5.95). L’application de ces corrections produit des variations réelles (Hur , r , r ) qui peuvent différer des variations attendues (5.94). Si la différence est trop importante, les corrections doivent être réduites pour rester dans le domaine linéaire. Ceci peut se faire : - soit par un rattrapage partiel (Hu ,  , ) = −(Huc , c , c ) , 0    1 ; - soit en modulant la correction de commande : u , 0    1 . On peut choisir un coefficient  constant ou croissant en fonction du temps pour limiter la sensibilité aux corrections en début de trajectoire. La solution optimale est obtenue lorsque les corrections (u, t f , ) et les valeurs de (Hu ,  , ) sont suffisamment petites.

Implémentation Les corrections (u, t f , ) sont calculées selon les étapes suivantes.

- L’intégration directe de l’état x par (5.91) avec la commande u donne x(t f ) . -

L’adjoint final p(t f ) est évalué par (5.92) avec les multiplicateurs  . L’intégration à rebours de l’adjoint par (5.91) donne A, B, C, D, E (5.97). Les matrices unitaires X, P sont calculées par intégration à rebours de (5.96) Le système linéaire (5.102) est résolu pour trouver (x f , t f , ) . Les écarts (x, p) sont calculés avec les solutions unitaires (X , P, ) . La correction de commande u est donnée par (5.95).

454

Techniques d’optimisation

Ces corrections sont acceptées ou non selon les écarts entre variations observées et attendues. La Figure 5-22 récapitule les étapes de calcul à chaque itération. Cette méthode consistant à atteindre les conditions d’optimalité du PMP est appelée méthode variationnelle indirecte.

Figure 5-22 : Méthode variationnelle indirecte Une itération de la méthode variationnelle indirecte peut s’interpréter comme la résolution du problème de minimum auxiliaire (section 4.4.1) formulé en développant le coût à l’ordre 2, la dynamique et les contraintes à l’ordre 1. T

T

t 2 J 1 f  x   H xx H ux   x  1  x  min a =     dt +      u,t f 2 2 t 0  u   H xu H uu   u  2  t f

x = f xT x + f uT u , x 0 fixé  T sous  =  x x f + t f ,  fixé  T  =  x x f + t f ,  fixé

  xx  x   x   T     x    t f (5.103)

Comme avec les méthodes de tir, les difficultés numériques viennent de la grande sensibilité des équations adjointes. De manière similaire au tir multiple, les méthodes de programmation dynamique différentielle (DDP) atténuent ces difficultés en découpant la trajectoire en plusieurs segments avec des conditions de raccordement.

Méthodes numériques en contrôle optimal

455

5.7 Conclusion 5.7.1 Les points essentiels •

Les équations différentielles peuvent se résoudre par des méthodes de propagation (de type Runge-Kutta) ou des méthodes de collocation approchant la solution par des polynômes.



Les méthodes directes transforment le problème de contrôle en un problème d’optimisation sous contraintes de dimension finie. Elles n’utilisent pas les conditions d’optimalité du principe du minimum.



Les méthodes indirectes résolvent le problème aux deux bouts issu des conditions d’optimalité du principe du minimum.



Les méthodes directes s’appliquent facilement à tout type de problème (dynamique, commande et contraintes). Leur inconvénient est le compromis à trouver entre le temps de résolution (taille du problème discrétisé) et la précision souhaitée sur la solution.



Les méthodes indirectes donnent une solution très rapide et précise. Leur inconvénient est la difficulté de mise en œuvre (équations adjointes, difficulté d’initialisation).

5.7.2 Pour aller plus loin •

Analyse numérique et équations différentielles (J.-P. Demailly, EDP Sciences 2006) Ce livre présente de manière détaillée les méthodes numériques de résolution d’équations différentielles. Les propriétés des méthodes sont démontrées de manière rigoureuse, tout en restant à un niveau mathématique très accessible. La présentation est parfaitement claire et la lecture est très agréable.



Solving ordinary differential equations (E. Hairer, S.P. Norsett, G. Wanner, Springer 1993) Ce livre en deux tomes est une référence incontournable écrite par les meilleurs spécialistes du domaine. On y trouve une présentation exhaustive des méthodes numériques de résolution d’équations différentielles avec leur historique, les démonstrations de leurs propriétés, des exemples détaillés d’applications et des comparaisons numériques. Le découpage en chapitres courts et quasiment indépendants permet d’accéder directement à

456

Techniques d’optimisation

l’information recherchée. Les listings des différents logiciels développés par les auteurs sont donnés en annexe et peuvent être téléchargés sur leur site. •

Practical methods for optimal control and estimation using nonlinear programming (J.T. Betts, Siam 2010) Ce livre est consacré aux méthodes numériques en contrôle optimal. Après un rappel sur les algorithmes de programmation non linéaire, il compare les méthodes directes et indirectes. Les avantages et inconvénients des deux approches sont discutés en détail, avec des exemples d’applications et de nombreux conseils pratiques pour surmonter les difficultés. L’auteur est un spécialiste réputé des méthodes directes (et ne cache pas sa préférence pour celles-ci). La lecture de ce livre est recommandée pour une personne souhaitant approfondir le sujet et appliquer ces méthodes directes.



A survey of numerical methods for optimal control (A.V. Rao, AAS 09-334 Preprint 2010) Cet article donne un panorama très complet des méthodes numériques en contrôle optimal. Il discute successivement les méthodes de propagation et collocation pour les équations différentielles, puis les approches directes et indirectes. La présentation est parfaitement claire et se lit aisément. Cet article permet d’avoir une très bonne vue d’ensemble des méthodes.



Applied optimal control (A.E. Bryson, Y.C. Ho, Hemisphere Publishing Corporation 1975) Ce livre orienté vers l’application pratique du contrôle optimal est destiné aux ingénieurs. La présentation très progressive au cours des chapitres permet de bien se familiariser avec les techniques de calcul, en particulier grâce à de nombreux exemples très détaillés. Un chapitre est consacré aux méthodes numériques, en particulier celles basées sur l’approche variationnelle.

457

Index action ....................................................................................................... 244, 286 adjoint ............................................................................................. 259, 272, 304 algorithme A* ............................................................................................................... 110 complexité..................................................................................................... 91 de Bellman .................................................................................................... 99 de Demoucron et Floyd ............................................................................... 124 de Dijkstra ................................................................................................... 107 de Ford .................................................................................................. 95, 147 de Ford-Fulkerson ............................................................................... 138, 154 de Roy-Busacker-Gowen .................................................................... 144, 157 polynomial .................................................................................................... 91 arborescence ...................................................................................................... 87 exploration .............................................................................................. 51, 53 racine ............................................................................................................ 32 sommet.......................................................................................................... 32 arbre .................................................................................................................. 87 arc...................................................................................................................... 84 bang ............................................................................................................ 372 direct, indirect ............................................................................................. 138 régulier ........................................................................................................ 372 saturé ........................................................................................................... 138 singulier ...................................................................................... 343, 372, 375 arête ................................................................................................................... 84 chaîne améliorante ................................................................................................. 138 élémentaire .................................................................................................. 138 chattering ......................................................................................................... 381 chemin critique ................................................................................................ 130 circuit absorbant ................................................................................................ 98 clique ................................................................................................................. 66 commande bang ............................................................................................................ 317 en retour d'état ..................................................................................... 326, 352 navigation proportionnelle .......................................................................... 326 tangente linéaire ........................................................... 296, 298, 307, 353, 438 vitesse à gagner ........................................................................................... 326 condition ......................................................................................................... 262 de coin......................................................................................................... 206 de collocation ............................................................... 423, 425, 427, 430, 433

458

Techniques d’optimisation

de commandabilité ...................................................................................... 262 de convexité ................................................................................................ 368 de Jacobi ..................................................................................... 200, 218, 368 de jonction .................................................................................................. 375 de Kelley ..................................................................................................... 372 de Legendre................................................................................. 184, 200, 218 de Legendre-Clebsch........................................................................... 368, 372 de normalité ................................................................................................ 368 de saut ......................................................................................................... 314 de transversalité ................................................... 222, 224, 284, 305, 441, 450 de Weierstrass ..................................................................................... 214, 219 de Weierstrass-Erdmann ..................................................................... 210, 219 d'observabilité ............................................................................................. 261 d'ordre ......................................................................................................... 411 conservation énergie ........................................................................................................ 245 moment cinétique ........................................................................................ 246 quantité de mouvement ............................................................................... 246 contrainte courante............................................................................................... 232, 315 de potentiel.................................................................................................. 129 d'état ............................................................................................................ 319 d'intégrité ...................................................................................................... 12 d'ordre k ...................................................................................................... 319 finale ........................................................................................................... 224 intégrale .............................................................................................. 226, 310 intérieure ............................................................................................. 311, 312 terminale ..................................................................................................... 305 convexification .......................................................................................... 75, 435 coupe associée à un flot ......................................................................................... 142 intégrale ........................................................................................................ 22 mixte ............................................................................................................. 24 sur le coût ...................................................................................................... 14 sur une variable ............................................................................................. 13 courbe géodésique ....................................................................194, 195, 202, 369 coût augmenté .............................................................. 226, 232, 281, 289, 362, 435 final ............................................................................................................. 270 intégral ........................................................................................................ 270 crochet de Lie .......................................................................................................... 373 de Poisson ................................................................................................... 239

459

dérivée de Lie .................................................................................................. 373 équation adjointe ............................................................................................... 260, 283 canonique .................................................................................................... 238 d’écart ................................................................................................. 250, 256 d’Euler-Lagrange .................................................................184, 187, 200, 218 de Hamilton-Jacobi-Bellman............................................................... 241, 357 de Jacobi ..................................................................................................... 196 de Lagrange................................................................................................. 287 de Riccati ............................................................................................ 328, 333 d'écart .......................................................................................................... 428 d'état .................................................................................................... 249, 270 variationnelle .......................................................................197, 445, 447, 451 erreur de consistance ....................................................................................... 405 extrémale ......................................................................................... 187, 337, 365 anormale ..............................................................................337, 338, 341, 383 régulière .............................................................................................. 337, 384 singulière..................................................................................... 337, 341, 383 voisine ................................................................................................. 196, 347 fonction de commutation....................................................................317, 338, 342, 372 de Lyapunov ............................................................................................... 255 de tir .................................................................................................... 441, 449 de Weierstrass ..................................................................................... 214, 218 d'influence ................................................................................... 260, 284, 358 génératrice ................................................................................................... 240 valeur .................................................................................................. 241, 356 fonctionnelle invariante ................................................................................... 236 gain L2 ............................................................................................................. 335 graphe biparti .......................................................................................................... 149 complet ......................................................................................................... 87 connexe ......................................................................................................... 87 d'écart .......................................................................................................... 144 densité ................................................................................................... 85, 110 orienté ........................................................................................................... 84 planaire ................................................................................................. 87, 110 sommet.......................................................................................................... 84 valué.............................................................................................................. 85 guidage ............................................................................................................ 356 hamiltonien....................................................................... 237, 245, 272, 286, 304 augmenté ..................................................................................................... 316 heuristique

460

Techniques d’optimisation

A* ............................................................................................................... 110 admissible ................................................................................................... 122 coloration .................................................................................................... 168 consistante ................................................................................................... 123 emboîtement................................................................................................ 165 empilement ................................................................................................. 164 recouvrement .............................................................................................. 166 impulsion................................................................................................. 237, 245 intégrale première ............................................................. 187, 236, 239, 242, 293 jonction ........................................................................................................... 320 lagrangien ........................................................................................ 181, 245, 286 augmenté ............................................................................................. 226, 232 marge............................................................................................................... 136 matrice booléenne ...................................................................................................... 88 d'adjacence .................................................................................................... 85 de commandabilité ...................................................................................... 262 de covariance .............................................................................................. 258 de transition......................................................................................... 256, 443 d'incidence .............................................................................................. 68, 85 d'influence ................................................................................................... 436 d'observabilité ............................................................................................. 261 symplectique ............................................................................................... 257 unimodulaire ................................................................................... 63, 68, 160 méthode d'Adams-Bashford....................................................................................... 419 d'Adams-Moulton ....................................................................................... 420 de collocation ...................................................................................... 394, 423 de Legendre-Gauss ...................................................................................... 426 de prédiction-correction .............................................................................. 421 de propagation............................................................................................. 393 de Runge-Kutta ........................................................................... 398, 414, 424 de transport ..........................................................................264, 328, 331, 349 d'Euler ......................................................................................................... 401 d'extrapolation ............................................................................................. 417 directe ................................................................................................. 396, 431 emboîtée ...................................................................................................... 416 explicite....................................................................................... 399, 411, 419 gloutonne .......................................................................................... 37, 56, 71 hongroise..................................................................................................... 152 indirecte .............................................................................................. 396, 440 MPM ........................................................................................................... 132 PERT .......................................................................................................... 129

461

variationnelle ............................................................... 281, 305, 313, 434, 451 minimum faible ........................................................................................... 180, 184, 218 fort .............................................................................................. 180, 214, 218 multiplicateur anormal ................................................................................228, 272, 337, 372 de Lagrange.......................................... 159, 226, 305, 312, 316, 330, 362, 432 nœud adjacent ......................................................................................................... 84 ascendant....................................................................................................... 88 degré ............................................................................................................. 85 descendant..................................................................................................... 88 marquage..................................................................................................... 139 prédécesseur .................................................................................................. 84 successeur ..................................................................................................... 84 nombre chromatique .......................................................................................... 66 norme .............................................................................................................. 178 pas d'intégration .............................................................................................. 409 plan de phase ........................................................................................... 251, 338 point conjugué...................................................................................... 198, 200, 369 d’équilibre ................................................................................................... 252 polynôme de collocation .............................................................................. 423, 426, 429 de Lagrange......................................................................................... 419, 423 de Legendre................................................................................................. 425 Pontryaguin ..................................................................................................... 273 portrait de phase ...................................................................................... 251, 340 principe de Bellman .......................................................................................... 101, 285 de moindre action ........................................................................................ 287 des travaux virtuels ..................................................................................... 288 d'optimalité de Bellman .............................................................................. 357 du minimum ................................................................................................ 273 problème aux deux bouts ............................................................. 264, 292, 324, 349, 441 auxiliaire ............................................................................................. 197, 365 d’affectation .................................................................................................. 62 d’affectation quadratique .............................................................................. 80 d’emboîtement ............................................................................................ 165 d’empilement .............................................................................................. 164 de Bolza ...................................................................................................... 270 de Cauchy ................................................................................................... 393

462

Techniques d’optimisation

de coloration ......................................................................................... 66, 168 de Didon...................................................................................................... 228 de flot ............................................................................................................ 69 de Fuller ...................................................................................................... 381 de Goddard.................................................................................................. 341 de l’ensemble stable ...................................................................................... 67 de la brachistochrone .......................................................................... 189, 249 de la caténaire ............................................................................................. 211 de Lagrange................................................................................................. 270 de Mayer ............................................................................................. 270, 431 de recouvrement .......................................................................................... 166 de sac à dos ..................................................................................... 37, 71, 164 de temps minimal ........................................................................ 294, 316, 382 de tir .................................................................................................... 442, 450 du voyageur de commerce .................................................................... 58, 172 hybride ................................................................................................ 289, 311 linéaire quadratique ..................................................................................... 323 NP ................................................................................................................. 93 relaxé .......................................................................................2, 12, 15, 21, 23 programmation dynamique.............................................................................. 102 quadrature........................................................................................................ 398 régulateur ........................................................................................................ 329 réseau capacité ......................................................................................................... 85 coût ............................................................................................................... 85 puits .............................................................................................................. 85 source ............................................................................................................ 85 séparation .......................................................................................................... 33 sur variable binaire ........................................................................................ 35 sur variable entière ........................................................................................ 42 simplexe dual ............................................................................................................... 15 pivotage......................................................................................................... 35 tableau ........................................................................................................... 12 solution de viscosité ........................................................................................ 361 sous-différentiel ............................................................................................... 359 sous-gradient ................................................................................................... 359 système autonome..................................................................................................... 293 hamiltonien ................................................................................. 292, 447, 450 tableau de Butcher ........................................................................................... 400 transformation de Legendre ............................................................................. 238 troncature .......................................................................................................... 13

463

variable canonique........................................................................................... 237 variation en aiguille.................................................................................................... 273 première ...............................................................................179, 282, 289, 362 seconde ....................................................................................... 180, 286, 363 voisinage ......................................................................................................... 179 warm start ................................................................................................... 34, 56

465

Bibliographie succincte [R1] [R2] [R3] [R4] [R5] [R6] [R7] [R8] [R9] [R10] [R11] [R12] [R13] [R14] [R15] [R16] [R17]

Optimisation discrète (A. Billionnet, Dunod 2007) Practical methods for optimal control and estimation using nonlinear programming (J.T. Betts, Siam 2010) Applied optimal control (A.E. Bryson, Y.C. Ho, Hemisphere Publishing Corporation 1975) Analyse numérique et équations différentielles (J.-P. Demailly, EDP Sciences 2006) Calculus of variations with applications (G.M. Ewing, Dover 1985) Précis de recherche opérationnelle (R. Faure, B. Lemaire, C. Picouleau, Dunod 2009) Calculus of variations (I.M. Gelfand, S.V. Fomin, Dover 1963) Programmation linéaire (C. Guéret, C. Prins, M. Sevaux, Eyrolles 2003) Solving ordinary differential equations (E. Hairer, S.P. Norsett, G. Wanner, Springer 1993) Les mathématiques du mieux-faire (J.B. Hiriart-Urruty, Ellipses 2008) Optimal control theory for applications (D.G. Hull, Springer, 2003) Algorithmes de graphes (P. Lacomme, C. Prins, M. Sevaux, Eyrolles 2007) The variational principles of mechanics (C. Lanczos-Urruty, Dover 1949) Calculus of variations and optimal control theory (D. Liberzon, Princeton University Press 2012) Programmation mathématique (M. Minoux, Lavoisier 2008, 2e édition) A survey of numerical methods for optimal control (A.V. Rao, AAS 09-334 Preprint 2010) Geometric optimal control (H. Schättler, U. Ledzewicz, Springer 2012)

466

[R18] Stochastic optimization (J.J. Schneider, S. Kirkpatrick, Springer 2006) [R19] Contrôle optimal – Théorie et applications (E. Trélat, Vuibert 2005)

Techniques d’optimisation