Techniques d’optimisation Tome 1: Optimisation continue 9782759827695

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

181 82 11MB

French Pages 484 Year 2022

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Préface
Introduction
Table des matières
1. Optimisation continue
2. Optimisation sans gradient
3. Optimisation sans contraintes
4. Optimisation avec contraintes
5. Programmation linéaire
Index
Bibliographie succincte
Recommend Papers

Techniques d’optimisation Tome 1: Optimisation continue
 9782759827695

  • 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 1 Optimisation continue

Max CERF

Imprimé en France

ISBN (papier) : 978-2-7598-2768-8 – ISBN (ebook) : 978-2-7598-2769-5 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 méthodes de coupes ou 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. Optimisation continue 1.1

1.2

1.3

1.4

1.5

1.6

Formulation 1.1.1 Forme standard 1.1.2 Fonction de plusieurs variables 1.1.3 Lignes de niveau 1.1.4 Direction de descente 1.1.5 Variation directionnelle 1.1.6 Solution Dérivées numériques 1.2.1 Dérivées premières 1.2.2 Dérivées secondes 1.2.3 Réglage de l’incrément 1.2.4 Dérivée complexe 1.2.5 Dérivées par extrapolation Réduction du problème 1.3.1 Réduction linéaire 1.3.2 Réduction généralisée Optimum global 1.4.1 Problème dual 1.4.2 Point-selle 1.4.3 Programmation linéaire Optimum local 1.5.1 Directions admissibles 1.5.2 Conditions de Karush, Kuhn et Tucker 1.5.3 Interprétation géométrique 1.5.4 Problème linéaire-quadratique 1.5.5 Analyse de sensibilité Conclusion 1.6.1 Les points essentiels 1.6.2 Pour aller plus loin

1 2 2 3 5 6 7 10 14 15 15 16 19 20 25 25 31 37 37 40 45 49 49 54 70 76 77 82 82 82

2. Optimisation sans gradient 2.1

2.2

2.3

2.4

2.5

2.6

2.7

2.8

2.9

Optimisation difficile 2.1.1 Variables discrètes 2.1.2 Minima locaux 2.1.3 Méthodes locales et globales Optimisation unidimensionnelle 2.2.1 Partage d’intervalles 2.2.2 Positionnement des points 2.2.3 Méthode du nombre d’or 2.2.4 Interpolation quadratique Méthode DIRECT 2.3.1 Fonction lipschitzienne 2.3.2 Algorithme en dimension 1 2.3.3 Algorithme en dimension n Méthode de Nelder-Mead 2.4.1 Polytope 2.4.2 Nouveau point 2.4.3 Améliorations Affine shaker 2.5.1 Principe 2.5.2 Transformation affine 2.5.3 Algorithme CMAES 2.6.1 Principe 2.6.2 Adaptation de la covariance 2.6.3 Algorithme Recuit simulé 2.7.1 Principe 2.7.2 Probabilité de transition 2.7.3 Algorithme Recherche avec tabou 2.8.1 Principe 2.8.2 Liste taboue et voisinage 2.8.3 Affectation quadratique Essaims de particules 2.9.1 Principe 2.9.2 Déplacement des particules 2.9.3 Voisinage 2.9.4 Algorithme

85 86 86 88 93 96 96 97 99 102 105 105 107 118 131 131 134 136 140 140 142 144 146 146 147 150 153 153 154 155 161 161 161 163 171 171 171 173 174

2.10 Colonies de fourmis 2.10.1 Principe 2.10.2 Mouvement des fourmis 2.10.3 Problème du voyageur de commerce 2.11 Algorithmes évolutionnaires 2.11.1 Principe 2.11.2 Mécanismes d’évolution 2.11.3 Algorithme 2.12 Conclusion 2.12.1 Les points essentiels 2.12.2 Pour aller plus loin

176 176 177 177 179 179 180 181 186 186 186

3. Optimisation sans contraintes

189

3.1

190 190 196 204 207 213 213 217 227 231 232 248 251 256 257 259 261 265 268 268 272 275 278 280 284 284

3.2

3.3

3.4

3.5

3.6

Méthode de Newton 3.1.1 Système d’équations 3.1.2 Méthode d’homotopie 3.1.3 Minimisation 3.1.4 Moindres carrés Méthodes de quasi-Newton 3.2.1 Méthode de Broyden 3.2.2 Méthodes DFP, BFGS et SR1 3.2.3 Améliorations BFGS Recherche linéaire 3.3.1 Direction de descente 3.3.2 Pas de déplacement 3.3.3 Algorithme Région de confiance 3.4.1 Modèle quadratique 3.4.2 Solution directe 3.4.3 Solution dogleg 3.4.4 Algorithme Méthodes proximales 3.5.1 Opérateur proximal 3.5.2 Interprétations 3.5.3 Gradient proximal 3.5.4 Méthode primale-duale 3.5.5 Calcul de l’opérateur proximal Convergence 3.6.1 Convergence globale

3.7

3.6.2 Vitesse de convergence 3.6.3 Précision numérique Conclusion 3.7.1 Les points essentiels 3.7.2 Pour aller plus loin

286 290 292 292 292

4. Optimisation avec contraintes

295

4.1

296 296 298 301 308 308 311 312 315 322 323 323 330 332 336 337 341 341 347 352 356 358 362 362 365 366 367 367 371 375 377

4.2

4.3

4.4

4.5

4.6

Classification des méthodes 4.1.1 Formulations du problème 4.1.2 Méthodes primales, primales-duales et duales 4.1.3 Mesure de l’amélioration Pénalisation 4.2.1 Problème pénalisé 4.2.2 Pénalisation différentiable 4.2.3 Pénalisation exacte 4.2.4 Pénalisation quadratique 4.2.5 Pénalisation barrière Gradient réduit 4.3.1 Déplacement dans l’espace tangent 4.3.2 Déplacement de restauration 4.3.3 Recherche linéaire 4.3.4 Méthode de quasi-Newton 4.3.5 Algorithme Programmation quadratique séquentielle 4.4.1 Modèle quadratique local 4.4.2 Globalisation 4.4.3 Gestion des contraintes 4.4.4 Méthode de quasi-Newton 4.4.5 Algorithme Point intérieur 4.5.1 Problème barrière 4.5.2 Globalisation 4.5.3 Hauteur de barrière Lagrangien augmenté 4.6.1 Problème dual 4.6.2 Problème dual augmenté 4.6.3 Contraintes inégalité 4.6.4 Algorithme

4.7

Conclusion 4.7.1 Les points essentiels 4.7.2 Pour aller plus loin

381 381 381

5. Programmation linéaire

383

5.1

384 384 387 398 404 410 415 422 423 430 436 436 443 448 455 458 460 460 461

5.2

5.3

Simplexe 5.1.1 Forme standard 5.1.2 Base 5.1.3 Pivotage 5.1.4 Tableau du simplexe 5.1.5 Problème auxiliaire 5.1.6 Méthode des deux phases 5.1.7 Simplexe révisé 5.1.8 Simplexe dual 5.1.9 Simplexe complémentaire Point intérieur 5.2.1 Chemin central 5.2.2 Direction de déplacement 5.2.3 Pas de déplacement 5.2.4 Algorithme de prédiction-correction 5.2.5 Extensions Conclusion 5.3.1 Les points essentiels 5.3.2 Pour aller plus loin

Index Bibliographie

Optimisation continue

1

1. Optimisation continue L’optimisation continue appelée également optimisation paramétrique concerne les problèmes à variables réelles. Ce chapitre en présente les notions théoriques principales, formant la base des algorithmes numériques. La section 1 introduit la formulation standard d’un problème d’optimisation sous contraintes. Après les rappels sur les fonctions de plusieurs variables, le problème d’optimisation est abordé par les notions de ligne de niveau et de direction de descente. Cette approche géométrique permet d’illustrer l’effet des contraintes sur la solution. La section 2 est consacrée au calcul numérique de dérivées par différences finies. Cette méthode est la seule utilisable dans la plupart des applications pratiques. Son efficacité dépend du réglage de l’incrément qui fait l’objet d’une discussion détaillée. La section 3 présente les méthodes de réduction. L’objectif est d’utiliser les contraintes pour éliminer une partie des variables et se ramener localement à un problème sans contraintes. Les méthodes de réduction sont détaillées pour des contraintes linéaires, puis généralisées à des contraintes non linéaires. La section 4 formule des conditions d’optimalité globale basées sur l’existence d’un point-selle du lagrangien. Ces conditions sont applicables en particulier à la programmation linéaire, mais elles s’avèrent très difficiles à vérifier dans le cas général de problèmes non linéaires. La section 5 formule les conditions d’optimalité locale de Karush, Kuhn et Tucker. Ces conditions qui forment la base de l’optimisation continue et des algorithmes numériques conduisent à un système d’équations et d’inéquations non linéaires. L’accent est mis sur leur interprétation géométrique en lien avec les lignes de niveaux.

2

Techniques d’optimisation

1.1 Formulation Cette section introduit les notions de base de l’optimisation continue. Après quelques rappels sur les fonctions de plusieurs variables, l’accent est mis sur l’interprétation géométrique des lignes de niveaux et des directions de descente. Les caractéristiques de la solution et l’effet des contraintes sont ensuite discutés.

1.1.1 Forme standard La forme standard d’un problème d’optimisation continue est la suivante.

c (x) = 0 minn f (x) sous  E x cI (x)  0 Le vecteur x 

n

représente les n variables ou paramètres du problème.

 x1  x =      xn 

n

(1.2)

La fonction à minimiser f : La fonction cE :

n



p

n



q

n



est appelée coût ou objectif ou encore critère.

représente un vecteur de p contraintes d’égalité.

 c E1 (x)   c E (x) =     c Ep (x)  La fonction cI :

(1.1)

avec c Ej :

n



(1.3)

représente un vecteur de q contraintes d’inégalité.

 c I1 (x)   avec c : n → (1.4) c I (x) =  Ij    c Iq (x)  Les contraintes cE et cI sont regroupées dans le vecteur c de dimension m = p + q.

 c (x)  c(x) =  E   cI (x) 

m

(1.5)

Optimisation continue

3

Tout problème d’optimisation peut se mettre sous la forme standard (1.1) en utilisant les transformations suivantes. •

Maximisation/minimisation :

max f (x)  min − f (x)



Contrainte supérieur / inférieur :

c(x)  0

x

x

 − c(x)  0

Une inégalité peut être transformée en égalité en introduisant une variable d’écart positive. La contrainte de positivité est plus simple qu’une inégalité non linéaire. •

Contrainte inégalité/égalité :

c(x)  0





c(x) + y = 0 y0

Par ailleurs, certains algorithmes supposent les variables positives. Ceci est réalisé en remplaçant une variable par la différence de deux variables positives. •

Passage en variables positives :

x = x+ − x−

x +  0 avec  − x  0

1.1.2 Fonction de plusieurs variables Les fonctions f et c sont supposées « suffisamment dérivables ». Le gradient de la fonction f est le vecteur des dérivées partielles premières.

 f  x  1 f =   f  x  n

      

(1.6)

Par convention, la notation f désigne un vecteur colonne de

n

.

La matrice gradient des contraintes c a pour colonnes les gradients des contraintes. La matrice jacobienne J des contraintes est la transposée de la matrice gradient.

c = ( c1 ,

   , c m ) =     

c1 x1 c1 x n

cm  x1   = JT  cm  x n 

(1.7)

4

Techniques d’optimisation

Le hessien de la fonction f est la matrice des dérivées partielles secondes. Cette matrice de nn est symétrique.

  2f  2   x1 2f =   2  f  x x n 1 

 2f   x1x n     2f   2 x n 

(1.8)

Le développement de Taylor d’une fonction d’une variable au point x 0 s’écrit : f (x) = f (x 0 ) + h

f (x 0 ) + x

+

hk kf (x 0 ) + k! x k

(1.9)

Cette formule donne la valeur de f en x = x0 + h , où h représente l’incrément. Pour une fonction de plusieurs variables, la formule de Taylor se généralise en développant par rapport à chaque variable et en regroupant les termes de même ordre. L’incrément h est un vecteur de n de composantes (h1, ,h n ) . f (x) = f (x 0 ) + Dh (x 0 ) +

+

1 k D h f (x 0 ) + k!

(1.10)

k

 n   avec la notation : D f =   h i  f où k est l’ordre de dérivation.  i=1 x i  k h

Les deux premiers termes s’expriment en fonction du gradient et du hessien. f (x 0 + h) = f (x 0 ) + f (x 0 )T h +

1 T 2 h  f (x 0 ) h + 2

(1.11)

Remarque sur la notation La notation x0 désigne ici un vecteur de n . Dans certaines formules, la notation xk pourra désigner la composante k du vecteur x. En cas d’ambiguïté, la signification sera explicitée. Dans le cas d’une fonction quadratique définie par une matrice symétrique Q  nn et un vecteur c  n le gradient et le hessien sont donnés par :

1 f = Qx + c f (x) = x T Qx + cT x   2 2  f = Q

(1.12)

Optimisation continue

5

1.1.3 Lignes de niveau Une ligne de niveau d’une fonction est l’ensemble des points en lesquels la fonction prend la même valeur. La ligne de niveau notée L0 passant par le point x 0  n est définie par :



L0 = x 

n



/ f (x) = f (x 0 )

(1.13)

Une ligne de niveau dans n est une hypersurface (espace de dimension n−1). Pour simplifier le texte, on conservera le terme « ligne de niveau ». Le tracé de lignes de niveau en dimension 2 permet d’appréhender les concepts principaux de l’optimisation. Ce tracé est comparable à une carte géographique sur laquelle le relief est matérialisé par les courbes d’iso-altitude. Les minima et maxima correspondent respectivement à des creux et pointes entourés par des lignes de niveau. Des lignes de niveau resserrées indiquent un relief « abrupt ». L’exemple suivant montre les lignes de niveaux de la fonction dite de Rosenbrock. Exemple 1-1 : Fonction de Rosenbrock Cette fonction est définie par : f ( x1 , x 2 ) = 100 ( x 2 − x12 ) + (1 − x1 ) . 2

2

f=10

f=7

f=4

f=1

f=0.5

Minimum f=0

Figure 1-1 : Lignes de niveau de la fonction de Rosenbrock

6

Techniques d’optimisation

Cette fonction présente une longue « vallée » très étroite autour de son minimum situé en (1 ; 1). La fonction de Rosenbrock est parfois appelée fonction « banane » en raison de la forme de ses lignes de niveau. La Figure 1-1 montre les lignes de niveaux 0 ; 0,5 ; 1 ; 4 ; 7 ; 10.

1.1.4 Direction de descente Un petit déplacement d à partir du point x0 produit une variation de la fonction f. La valeur de f au nouveau point x = x0 + d est donnée par le développement de Taylor à l’ordre 1. En notant g0 = f (x 0 ) le gradient de f au point x0, on a :

f (x 0 + d) = f (x 0 ) + goTd +

(1.14)

T Le sens de variation de f dépend du produit scalaire g0 d et donc de l’angle entre le déplacement d et le gradient g0 . T



Un déplacement suivant le gradient (g 0 d  0) fait augmenter f. La direction d est une direction de montée.



Un déplacement opposé au gradient (g0 d  0) fait diminuer f. La direction d est une direction de descente.



Un déplacement orthogonal au gradient (g 0 d = 0) ne change pas f. La direction d est une direction tangente à la ligne de niveau.

T

T

Le gradient possède donc la propriété géométrique suivante. Propriété 1-1 : Direction du vecteur gradient Le gradient en un point est orthogonal à la ligne de niveau passant par ce point. Il représente également la direction de plus forte montée en ce point.

La Figure 1-2 ci-après montre la ligne de niveau passant par x 0 ayant pour équation f (x) = f (x 0 ) et le minimum situé en x*. La ligne de niveau sépare l’espace en deux domaines : - vers l’intérieur les points x tels que f (x)  f (x 0 ) (zone grisée) ; - vers l’extérieur les points x tels que f (x)  f (x 0 ) .

Optimisation continue

7

L’hyperplan tangent à la ligne de niveau en x 0 détermine d’un côté les directions de montée, de l’autre côté les directions de descente. Parmi les trois directions de descente tracées, on observe que la direction d 2 est celle qui passe le plus près du minimum x* alors que la direction d 1 s’en éloigne.

Figure 1-2 : Directions de montée/descente et ligne de niveau

1.1.5 Variation directionnelle La variation de f suivant une direction unitaire d s’exprime par la fonction  :

(s) = f (x 0 + sd)

(1.15)

def

Cette fonction « directionnelle » ne dépend que du réel s qui représente le pas de déplacement suivant la direction unitaire d  n . Le développement de Taylor d’ordre 2 de la fonction  en s = 0 s’écrit :

(s) = (0) + s  '(0) +

1 2 s  ''(0) + 2

(1.16)

2 Identifions ce développement à celui de f, avec g0 = f (x 0 ) et H0 =  f (x 0 ) .

f (x 0 + sd) = f (x 0 ) + sg T0 d +

1 2 T s d H0 d + 2

(1.17)

On obtient ainsi les dérivées de  en fonction du gradient et de hessien de f en x 0.

 '(0) = g T0 d  T  ''(0) = d H0 d

(1.18)

8

Techniques d’optimisation

La dérivée première de  est appelée dérivée directionnelle de f suivant d. Elle est positive pour une direction de montée, négative pour une direction de descente. La dérivée seconde de  est appelée courbure de f suivant d. Une courbure forte indique une variation rapide de f et des lignes de niveau resserrées. La valeur de la courbure dépend des valeurs propres du hessien H 0. Rappelons quelques définitions et propriétés utiles sur les valeurs propres. •

Une matrice A  nn admet la valeur propre   associé u  n (non nul) si Au = u .



Une matrice A  nn symétrique réelle admet n valeurs propres réelles et une base orthonormée de vecteurs propres.



, u Au  0 . Une matrice A  nn est semi-définie positive si u  Une matrice symétrique semi-définie positive a ses valeurs propres positives ou nulles. On notera en abrégé : A  0 .



, u  0 , u Au  0 . Une matrice A  nn est définie positive si u  Une matrice symétrique définie positive a ses valeurs propres strictement positives. On notera en abrégé : A  0 .

et le vecteur propre

n

n

T

T

La matrice symétrique H0 admet n valeurs propres réelles rangées par valeurs absolues croissantes : 1  2   n et une base orthonormée de vecteurs propres associés (u1,u 2 , ,u n ) vérifiant :

0 si i  j avec u iT u j =  1 si i = j

H 0 u k = k u k

(1.19)

En décomposant la direction unitaire d dans cette base orthonormée :

d = 1u1 +

+ n u n

(1.20)

puis en remplaçant dans (1.18), on obtient la valeur de la dérivée seconde de  :

 ''(0) = 121 +

+  n2 n

La direction d étant unitaire (12 +

(1.21) +  n2 = 1) et les valeurs propres dans l’ordre

croissant, on en déduit que la courbure de f est comprise entre 1 et n .

Optimisation continue

Le rapport  =

9

n

entre la plus grande et la plus petite valeur propre est appelé 1 conditionnement de la matrice H0. Un conditionnement proche de 1 indique que la fonction varie de manière similaire dans toutes les directions, ce qui se traduit par des lignes de niveau circulaires. Un conditionnement élevé se traduit par des lignes de niveau « aplaties » suivant les directions de plus fortes valeurs propres. Exemple 1-2 : Conditionnement de la fonction de Rosenbrock

(

Reprenons la fonction de Rosenbrock : f ( x1 , x 2 ) = 100 x 2 − x12

) + (1 − x ) 2

1

2

.

 −400(x 2 − 3x12 ) + 2 −400x1  Son hessien est : H( x1 , x 2 ) =  . −400x1 200  

 802 −400  La valeur du hessien au point x*(1 ; 1) est : H* =  .  −400 200 

Les valeurs propres sont les solutions de l’équation caractéristique.  802 −  −400  det (H * − I) = det  =0  −400 200 −  

 = 1001,6 →  1 2 = 0,3994

Le conditionnement très grand (  = 2508) se traduit par des lignes de niveaux très allongées autour du minimum x*, visibles sur la Figure 1-1.

Page suivante, la Figure 1-3 (a) montre trois directions de descente d0 ,d1,d2 partant d’un point x0 et la Figure 1-3 (b) les fonctions directionnelles 0 , 1, 2 associées. La direction d0 opposée au gradient donne la plus forte décroissance au point de départ (s = 0) , mais n’aboutit pas au minimum le plus bas. La direction d 2 passe plus près du minimum x* et la fonction directionnelle associée 2 présente un minimum plus bas. Les différences de comportement suivant les directions viennent du conditionnement du hessien en x*. Un conditionnement élevé conduit à des positions (valeur de s) et des niveaux de minimum (valeur de f) très différents selon la direction choisie.

10

Techniques d’optimisation

Figure 1-3 (a) : Directions de descente

(b) : Variation directionnelle

1.1.6 Solution La résolution d’un problème d’optimisation sous contraintes fait appel aux notions de solution admissible, de minimum global ou local et de contraintes actives. Domaine admissible Le domaine admissible noté Xadm est l’ensemble des points x contraintes du problème d’optimisation (1.1).

c (x) = 0 x  Xadm   E cI (x)  0

n

vérifiant les (1.22)

Un point admissible se situe donc : - sur une ligne de niveau 0 pour une contrainte égalité cE (x) = 0 ; - du côté négatif d’une ligne de niveau 0 pour une contrainte inégalité cI (x)  0 . La Figure 1-4 ci -après montre un problème à une contrainte égalité c1 (x) = 0 et deux contraintes inégalité c2 (x)  0 , c3 (x)  0 . La ligne de niveau zéro est tracée pour chaque contrainte. Les zones grisées montrent les domaines non admissibles des contraintes inégalité. Le domaine admissible global Xadm est l’intersection des domaines admissibles de chaque contrainte. Il se réduit à un arc de courbe. Selon les contraintes, le domaine admissible peut être connexe ou non, convexe ou non. La Figure 1-5 illustre les notions de connexité (domaine d’un seul tenant) et de convexité (domaine sans trous). La non-connexité est généralement due aux contraintes inégalité. Un domaine admissible non connexe complique fortement la résolution du problème d’optimisation.

Optimisation continue

11

Figure 1-4 : Domaine admissible et lignes de niveau

Figure 1-5 : Forme du domaine admissible Minimum global et local Un point x* est un minimum global du problème d’optimisation (1.1) s’il n’existe aucun point admissible meilleur que x*.

x  Xadm , f (x*)  f (x)

(1.23)

Un point x* est un minimum local du problème d’optimisation (1.1) s’il n’existe aucun point admissible meilleur que x* au voisinage de x*.

ε  0 / x  Xadm , x − x*  ε  f(x*)  f(x) Un minimum global ou local peut être unique (minimum strict) ou non.

(1.24)

12

Techniques d’optimisation

La Figure 1-6 illustre ces définitions pour une fonction d’une variable.

Figure 1-6 : Minimum global et local n

Pour un problème sans contraintes (X adm = ) , la condition de minimum local en x* peut s’écrire en utilisant le développement de Taylor d’ordre 2 (1.11) :

d 

n

, f (x*)  f (x * +d)

1 avec f (x * + d) = f (x*) + f (x*) T d + d T 2f (x*) d + 2

(1.25)

Cette inégalité doit être satisfaite pour tout déplacement d  n . Ceci n’est possible que si le gradient f (x*) est nul (sinon des déplacements opposés  d 2 feraient croître ou décroître la fonction) et si le hessien  f (x*) est une matrice T

2

semi-définie positive (d , d  f (x*)d  0) . On peut ainsi énoncer des conditions nécessaires / suffisantes de minimum local sans contraintes.

Théorème 1-2 : Conditions nécessaires de minimum local sans contraintes x* minimum local de f



 f (x*) = 0  2  f (x*)  0

Théorème 1-3 : Conditions suffisantes de minimum local sans contraintes

 f (x*) = 0  2  f (x*)  0

 x* minimum local (strict) de f

Optimisation continue

13

Contraintes actives Une contrainte inégalité cI est dite active en x si cI (x) = 0 , inactive si cI (x)  0 . Si une contrainte inégalité cI est inactive en un minimum local x*, elle reste négative dans un voisinage de x* (la fonction c I étant supposée continue) et ne restreint pas localement le domaine admissible. Le minimum local x* défini par (1.24) est dans ce cas indifférent à la contrainte cI. Ceci n’est plus vrai si la contrainte est active, car le point x* est alors en bordure du domaine admissible et une partie de son voisinage n’est plus admissible. La Figure 1-7 ci-dessous montre en gris le domaine admissible associé à la contrainte cI (x)  0 . •

Sur la figure de gauche, le point x* est intérieur au domaine admissible. La contrainte est inactive et tous les points du voisinage (cercle pointillé) sont admissibles.



Sur la figure de droite, le point x* est en limite du domaine admissible. La contrainte est active et une partie seulement du voisinage (arc de cercle pointillé) est admissible. Si la contrainte était ignorée, il pourrait exister un minimum meilleur que x* dans la région extérieure au domaine admissible. contrainte inactive en x*

contrainte active en x*

Figure 1-7 : Contrainte inégalité inactive ou active

14

Techniques d’optimisation

La solution x* étant indifférente aux contraintes inactives, on peut reformuler le problème d’optimisation (1.1) en supprimant ces contraintes, et en transformant les contraintes inégalité actives en contraintes égalité.

c (x) = 0 cE (x) = 0 minn f (x) sous  E  minn f (x) sous  act c (x)  0 x x cI (x) = 0  I

(1.26)

Ces deux problèmes ont la même solution, mais le deuxième qui ne comporte que des contraintes égalité est beaucoup plus simple à résoudre. Remarque Cette observation peut sembler inutile, car pour éliminer les contraintes inactives en x*, il faut déjà connaître la solution x*. Une méthode heuristique pour « deviner » les contraintes actives consiste à résoudre d’abord le problème sans les contraintes inégalité, puis à introduire comme contraintes égalité celles qui ne seraient pas respectées. Cette approche n’offre pas de garantie, mais peut s’avérer efficace sur des problèmes déjà maîtrisés.

Exemple 1-3 : Méthode d’activation progressive des contraintes

x + x  2 2 2 On cherche la solution du problème : min x1 + x2 sous  1 2 . x1 ,x2  x1  1 La solution sans les contraintes inégalité serait : x1 = x2 = 0 . Elle ne satisfait aucune des contraintes. On reprend donc la résolution en activant les deux contraintes non respectées qui sont traitées comme des égalités.

x + x = 2 min x12 + x22 sous  1 2 x1 ,x2  x1 = 1

qui donne la solution correcte : x1 = x2 = 1 .

1.2 Dérivées numériques Dans la plupart des applications, la fonction coût et les contraintes sont évaluées par des simulations numériques et l’expression analytique de leurs dérivées n’est pas connue. Cette section présente l’évaluation des dérivées par différences finies et les méthodes permettant de minimiser les erreurs numériques.

Optimisation continue

15

1.2.1 Dérivées premières Le gradient de la fonction f (x1,

, x n ) est le vecteur des dérivées partielles de f.

f au point a  n x i de composantes (a1, ,a n ) consiste à appliquer un incrément h i sur la ième composante, puis à utiliser la formule de différence finie simple : La méthode la plus simple pour estimer la dérivée partielle

f f (a , ,a i + h i , ,a n ) − f (a1, ,a i , ,a n ) (a1 , ,a i , ,a n )  1 x i hi

(1.27)

En écrivant le développement de Taylor (1.9) de f en a i + hi , on observe que la 2 formule (1.27) tronque les termes à partir de h i dans l’estimation de la dérivée. 2 Cette formule présente donc une erreur de troncature de l’ordre de h i .

L’incrément h i peut être positif ou négatif et n’est pas nécessairement le même pour toutes les dérivées partielles. Son réglage est discuté en section 1.2.3. L’estimation du gradient par cette méthode requiert l’évaluation de f au point a et n évaluations aux points a i + hi , soit n + 1 évaluations au total. La formule de différence finie centrée est très similaire :

f f (a , ,a i + h i , ,a n ) − f (a1, ,a i − h i , ,a n ) (a1 , ,a i , ,a n )  1 x i 2h i

(1.28)

En écrivant le développement de Taylor (1.9) de f en a i + hi et en a i − hi , on 2 observe que les termes en h i s’annulent. L’erreur de troncature de cette formule

3

2

est ainsi de l’ordre de h i au lieu de h i pour la différence finie simple. Ce gain de précision est obtenu au prix de deux évaluations de la fonction f pour chaque dérivée partielle, soit 2n + 1 évaluations au total.

1.2.2 Dérivées secondes Le hessien de la fonction f (x1,

, x n ) est la matrice des dérivées partielles

secondes de f. La dérivée partielle seconde

 2f peut s’estimer en appliquant à x i x j

16

Techniques d’optimisation

nouveau la formule de différence finie sur la dérivée partielle évaluée par (1.27).

f −f −f +f f  ij i j x i x j hih j 2

f ij = f (a1 , f = f (a1 , avec  i f = f (a1 , j f = f (a1 ,

,a i + h i , ,a i + h i , ,a i , ,a i ,

,a j + h j , ,a j , ,a j + h j , ,a j ,

,a n ) ,a n ) ,a n ) ,a n )

(1.29)

En exprimant le développement de Taylor (1.9) de fij , f i et f j , on trouve une erreur de troncature de l’ordre de h i h j . L’estimation du hessien par (1.29) requiert

n(n − 1) / 2 évaluations pour obtenir les valeurs fij . Les valeurs f i et f j ont déjà été calculées pour le gradient. Cette formule est rarement utilisée en raison de son coût de calcul. On préfère employer des méthodes de quasi-Newton (section 3.2).

1.2.3 Réglage de l’incrément Un ordinateur stocke les réels avec un nombre fini de chiffres significatifs. La −16 précision machine est le plus petit réel  m tel que 1 + m  1 (  m = 10 pour un calcul en double précision). L’erreur d’arrondi sur un réel a est a = ma . L’évaluation d’une fonction f (a) est entachée d’une erreur d’arrondi f = f f (a). L’erreur relative  f est généralement bien supérieure à  m lorsque la fonction résulte d’une simulation numérique complexe. Cette erreur d’arrondi se répercute sur l’estimation de la dérivée. Pour évaluer l’erreur sur la dérivée, notons respectivement fvrai et fcalc les valeurs exactes et calculées de f :

= f vrai (a)  f f calc (a) f (a + h) = f (a + h)   f vrai  calc

(1.30)

La dérivée de f est estimée par différence finie simple (1.27) : ' f calc (a) =

f calc (a + h) − f calc (a) f vrai (a + h) − f vrai (a)  2f = h h

(1.31)

En écrivant le développement de Taylor à l’ordre 2 de f : ' f vrai (a + h) = f vrai (a) + hf vrai (a) +

h 2 '' f vrai (a) + o(h 2 ) 2

(1.32)

et en remplaçant dans (1.31), on obtient : ' ' f calc (a) = f vrai (a) +

h '' 2f f vrai (a)  + o(h) 2 h

(1.33)

Optimisation continue

17

L’erreur maximale f ' sur l’estimation de la dérivée est obtenue en sommant les valeurs absolues de chaque terme et en remplaçant f = f f (a) . h '' 2 (1.34) f vrai (a) + f f vrai (a) 2 h Le terme en h est l’erreur de troncature du développement de Taylor. Le terme en 1/h est l’erreur d’arrondi dû au calcul en précision finie. Diminuer l’incrément h réduit l’erreur de troncature, mais augmente l’erreur d’arrondi. f ' =

La valeur optimale de l’incrément h est celle qui minimise l’erreur f ' : min f ' h

→ h opt = 2 f

f vrai (a) '' f vrai (a)

(1.35)

En supposant arbitrairement que la dérivée seconde (inconnue) vaut environ 1, l’incrément optimal est de l’ordre de : (1.36)

h opt = f f vrai (a)

Par ailleurs, l’incrément pour calculer f (a + h) doit être supérieur à ma (sinon on obtiendra a + h = a ). Si la valeur de a est grande et/ou la valeur de f(a) petite, l’incrément optimal (1.36) risque de ne pas vérifier la condition h opt  ma . Cet inconvénient est évité par une mise à l’échelle (scaling). La mise à l’échelle consiste à réaliser des changements de variables affines pour se ramener à des grandeurs de l’ordre de l’unité. Une variable x comprise entre les bornes x min et xmax est remplacée par la variable :

x=

x − x min x max − x min

→ 0  x 1

(1.37)

Une fonction f dont l’ordre de grandeur est f0 est remplacée par la fonction :

f (x) =

f (x) f0

→ f (x)  1

(1.38)

L’ordre de grandeur f0 peut être soit la valeur en un point, soit le minimum estimé. Après mise à l’échelle, l’incrément optimal (1.36) s’exprime simplement comme :

h opt = f

(1.39)

où l’erreur relative  f sur f est supérieure ou égale à la précision machine  m .

18

Techniques d’optimisation

Le réglage de l’incrément suit ainsi la règle empirique suivante. Propriété 1-4 : Dérivée par différence finie Pour obtenir une dérivée précise, il faut mettre le problème à l’échelle et choisir un incrément supérieur à la racine de la précision machine.

L’erreur sur la dérivée (1.34) est alors de l’ordre de f , ce qui signifie qu’une dérivée par différence finie est environ deux fois moins précise que la fonction en termes de chiffres significatifs. Exemple 1-4 : Incrément optimal pour les différences finies 2 On cherche à estimer par différence finie la dérivée de f (x) = x en a = 1 .

L’incrément varie de 10−1 à 10−15. L’écart entre la dérivée numérique et la dérivée exacte f '(1) = 2 est tracé en échelle logarithmique sur la Figure 1-8. On observe que le meilleur incrément est de l’ordre de 10−8 et donne une précision de l’ordre de 10−8 sur la dérivée. Incrément (log) -16 -15 -14 -13 -12 -11 -10

-9

-8

-7

-6

-5

-4

-3

-2

-1

0 0

incrément optimal

-1 -2 -3 -4 -5 -6 -7 -8 -9

Figure 1-8 : Erreur sur la dérivée en fonction de l’incrément

Erreur (log)

Optimisation continue

19

1.2.4 Dérivée complexe En appliquant un incrément complexe ih (au lieu d’un incrément réel h), le développement de Taylor à l’ordre 3 prend la forme : ' f vrai (a + ih) = f vrai (a) + ihf vrai (a) −

h 2 '' ih 3 ''' f vrai (a) − f vrai (a) + o(h 3 ) (1.40) 2 6

La fonction f et la variable a restent des réels. La valeur calculée fcalc (a + ih) est entachée d’erreurs d’arrondi f r sur la partie réelle et fi sur la partie imaginaire :

fcalc (a + ih) = f vrai (a + ih) + f r + ifi

(1.41)

Ces erreurs d’arrondi sont proportionnelles respectivement au premier terme réel et au premier terme imaginaire du développement (1.40) : f r = f f vrai (a)  ' fi = f hf vrai (a)

(1.42)

La dérivée est estimée par la formule : Im  f calc (a + ih) (1.43) h En prenant la partie imaginaire de (1.41), et en utilisant (1.40) et (1.42), on a : ' f calc (a + ih) =

Im  f calc (a + ih)  = Im  f vrai (a + ih)  + f i h 3 ''' ' = (1 + f ) h f vrai (a) − f vrai (a) + o(h 4 ) 6

(1.44)

puis en remplaçant dans (1.43), on obtient : ' ' f calc (a) = (1 +  f )f vrai (a) −

h 2 '' f vrai (a) + o(h 3 ) 6

(1.45)

L’erreur maximale sur l’estimation de la dérivée vaut : ' f ' =  f f vrai (a) +

h 2 '' f vrai (a) 6

(1.46)

L’erreur de troncature est en h 2 et l’erreur d’arrondi ne dépend pas de h. Il est ainsi possible de choisir un incrément arbitrairement petit et d’obtenir la dérivée avec une erreur relative  f du même ordre de grandeur que sur la fonction. En pratique, prendre h  f suffit pour rendre l’erreur de troncature inférieure à l’erreur d’arrondi. Cette technique de dérivée complexe est à l’origine des méthodes de différentiation automatique de code.

20

Techniques d’optimisation

Exemple 1-5 : Différence finie avec incrément complexe Estimons par différence finie complexe la dérivée de f (x) = x4 en a = 2 . La Figure 1-9 compare les dérivées avec incrément réel et complexe variant de 10−1 à 10−15. Le meilleur incrément est de 10−8 dans les 2 cas, mais la dérivée complexe ne subit pas d’erreur d’arrondi et approche la précision machine.

Incrément (log) -16 -15 -14 -13 -12 -11 -10

-9

-8

-7

-6

incrément optimal

Incrément réel Incrément complexe

-5

-4

-3

-2

-1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15

0

Erreur (log)

Figure 1-9 : Erreur sur la dérivée en fonction de l’incrément

La formule de dérivée complexe (1.43) n’utilise qu’une seule évaluation de la fonction et permet d’estimer la dérivée avec une très bonne précision. Elle requiert cependant que toutes les variables du simulateur calculant la fonction f soient déclarées comme complexes, ce qui peut être un frein à son utilisation.

1.2.5 Dérivées par extrapolation La méthode d’extrapolation de Richardson a pour but d’estimer la limite limA(h) h →0

d’une fonction A(h) non définie en h = 0 . Le principe est d’évaluer la fonction

Optimisation continue

21

en plusieurs points au voisinage de 0, puis de les combiner pour éliminer les termes successifs du développement de Taylor. Celui-ci est de la forme :

A(h) = 0 + 1h +  2 h 2 + Les coefficients 0 , 1,

+  n h n + o(h n )

(1.47)

, n sont inconnus. La limite que l’on cherche à estimer

correspond au coefficient 0 = limA(h) . h→0

Algorithme de Richardson La fonction est évaluée en m + 1 points h0 ,h1,

,h m . Ces points sont de la forme

k

h k = r h , où h est un incrément arbitraire et r est un réel compris entre 0 et 1. Les m + 1 valeurs de A sont dites valeurs de rang 0 et notées : Ak,0 = A(h k ) . def

Le développement de Taylor en ces points (h k )k=0 à m donne le système :  A 0,0 = A(r 0 h) =  0  A1,0 = A(r1h) =  0   2  A 2,0 = A(r h) =  0   A = A(r m h) =  0   m,0

+ 1h +  2 h 2 + 2 2 + 1rh +  2 r h + + 1r 2 h +  2 r 4 h 2 +

+ n hn + o(h n ) +  n r n h n + o(h n ) +  n r 2n h n + o(h n )

+ 1r m h +  2 r 2m h 2 +

+  n r mn h n + o(h n )

(1.48)

Pour éliminer les termes en h, les valeurs de rang 0 sont combinées par la formule : A k ,1 =

def

A k ,0 − rA k −1,0 1− r

pour k = 1 à m

On obtient ainsi m valeurs dites de rang 1 avec des coefficients notés 2 ,  A1,1  A 2,1    A 3,1   A   m,1

=  0 + 2 h 2 + =  0 + 2 r 2 h 2 + =  0 + 2 r 4 h 2 +

+ n h n + o(h n ) n n +  n r h + o(h n ) +  n r 2n h n + o(h n )

=  0 +  2 r 2m h 2 +

+  n r mn h n + o(h n )

(1.49)

, n .

(1.50)

les termes en h 2 → m−1 valeurs Ak,2 de rang 2 les termes en h3 → m−2 valeurs Ak,3 de rang 3 ………………… jusqu’aux termes en h m → 1 valeur Am,m de rang m

On élimine de la même façon puis

22

Techniques d’optimisation

La formule pour passer du rang j − 1 au rang j est : Ak, j =

def

A k , j−1 − r j A k −1, j−1 1− rj

pour k = j à m

(1.51)

En pratique, les calculs successifs sont disposés en colonnes.

Figure 1-10 : Calcul des rangs successifs de l’algorithme de Richardson Les m − j + 1 valeurs de rang j représentent chacune une approximation de  0 à l’ordre h j . La dernière valeur A m,m (de rang m) est une approximation de  0 à l’ordre h m .

(

A m,m = 0 + O r m(m +1) h m +1

)

(1.52)

L’erreur de troncature dans (1.52) limite l’ordre m d’extrapolation. Il est en effet inutile que cette erreur devienne inférieure à la précision machine  m (en supposant la fonction mise à l’échelle avec  0 de l’ordre de 1). L’incrément h et l’ordre m doivent ainsi satisfaire l’inégalité :

r m(m+1) h m  m

(1.53)

Cette formule suggère qu’il est préférable de choisir un incrément h suffisamment grand pour maximiser l’ordre m d’extrapolation. −16

Avec les valeurs standards r = 0,5 et  m = 10 , un incrément h = 0,1 permet d’atteindre l’ordre m = 6 , soit 7 évaluations de la fonction à réaliser.

Optimisation continue

23

Application à l’estimation des dérivées La méthode de Richardson est appliquée pour estimer les dérivées premières et secondes de la fonction f au point a. Les fonctions A(h) et B(h) définies par : f (a + rh) − f (a + h)  A(h) =   (r − 1)h  f (a + rh) − rf (a + h) + (r − 1)f (a) B(h) = 2 r(r − 1)h 2  

(1.54)

ont pour développement de Taylor en h = 0 :  1 r2 −1 1 r n − 1 n −1 (n ) A(h) = f '(a) + hf ''(a) + + h f (a) +   2 r −1 n! r − 1 (1.55)  2 n −1 B(h) = f ''(a) + 1 r − 1 hf '''(a) + + 2 r − 1 h n − 2 f (n ) (a) +  3 r −1 n! r − 1  Leurs limites respectives quand h → 0 sont bien les dérivées f '(a) et f ''(a) que l’on cherche à estimer. On peut donc leur appliquer l’algorithme de Richardson décrit précédemment en se donnant un incrément h, un rapport r (généralement 0,5) et un ordre d’extrapolation m.

La fonction f est d’abord évaluée aux m + 1 points (a + r k h)k =0 à m .

f k = f (a + r k h)

pour k = 0 à m

(1.56)

Les valeurs de rang 0 des fonctions A(h) et B(h) sont ensuite calculées par : f −f  A k,0 = k +1 kk   (r − 1) r h  f − rf k + (r − 1)f (a) Bk,0 = 2 k +1 (r − 1) r 2k +1 h 2  

(1.57)

La formule de Richardson (1.51) appliquées aux fonctions A et B fournit des estimations d’ordre m de f '(a) et f ''(a) . Exemple 1-6 : Dérivées numériques par extrapolation Estimons par extrapolation les dérivées premières et secondes de f (x) = x2 +

a = 1 . Les valeurs exactes sont : f '(1) = 1 et f ''(1) = 4 .

1 en x

L’incrément initial est fixé à h = 0,1 et l’ordre d’extrapolation est fixé à m = 6. Les valeurs de f sont d’abord calculées pour les incréments allant de h à h/2 6.

24

Techniques d’optimisation

hk

a+hk

0,10000000 0,05000000 0,02500000 0,01250000 0,00625000 0,00312500 0,00156250

f(a+hk)

1,10000000 1,05000000 1,02500000 1,01250000 1,00625000 1,00312500 1,00156250

2,11909091 2,05488095 2,02623476 2,01281057 2,00632788 2,00314450 2,00156738

Tableau 1-1 : Valeurs de la fonction pour l’extrapolation à l’ordre 6 On calcule ensuite les valeurs de rang 0 de la fonction A (1.57), puis on extrapole jusqu’au rang 5 par (1.51). Une colonne correspond à un rang et produit une estimation de la dérivée. On observe que chaque rang gagne 2 chiffres corrects et que l’estimation de rang 5 donne la dérivée première avec 10 chiffres corrects. A0

A1

A2

A3

A4

A5

1,2841991342 1,0074965685 1,0001968322 1,0000025180 1,0000000159 1,0000000000 1,1458478513 1,0020217662 1,0000268073 1,0000001723 1,0000000005 1,0739348088 1,0005255470 1,0000035017 1,0000000113 1,0372301779 1,0001340130 1,0000004476 1,0186820955 1,0000338389 f(1) = 1 1,0093579672

Tableau 1-2 : Extrapolation à l’ordre 6 de la dérivée première De la même manière, les valeurs de f permettent de calculer les valeurs de rang 0 de la fonction B (1.57), puis d’extrapoler jusqu’au rang 5 par la formule (1.51). La dérivée seconde est également estimée avec 10 chiffres significatifs corrects. B0

B1

B2

B3

B4

B5

3,7316017316 3,9850068631 3,9996063356 3,9999949640 3,9999999683 4,0000000000 3,8583042973 3,9959564675 3,9999463855 3,9999996555 3,9999999990 3,9271303824 3,9989489060 3,9999929968 3,9999999775 3,9630396442 3,9997319741 3,9999991049 3,9813858091 3,9999323222 f(1) = 4 3,9906590657

Tableau 1-3 : Extrapolation à l’ordre 6 de la dérivée seconde

Optimisation continue

25

1.3 Réduction du problème Les contraintes ont pour effet de limiter le domaine des variables d’optimisation. Elles peuvent être prises en compte par réduction, par multiplicateurs ou par pénalisation. Les méthodes de multiplicateurs et de pénalisation font l’objet respectivement des sections 1.5 et 4.2. Cette section présente les méthodes de réduction dont l’intérêt est à la fois pratique (pour certains algorithmes présentés au chapitre 4) et théorique (pour démontrer les conditions d’optimalité). La réduction est développée dans le cas de contraintes linéaires, puis généralisée au cas de contraintes non linéaires.

1.3.1 Réduction linéaire Considérons un problème d’optimisation à contraintes linéaires égalité. minn f (x) sous Ax = b , A  x

m n

, b

m

(1.58)

Les contraintes forment un système linéaire à m équations et n inconnues. A1,1x1 + A1,2 x 2 +  A x + A 2,2 x 2 + Ax = b   2,1 1   A m,1x1 + A m,2 x 2 +

+ A1,n x n = b1 + A 2,n x n = b 2

(1.59)

+ A m,n x n = b m

Ce système doit admettre au moins une solution pour que le problème d’optimisation (1.58) ait un sens. Ceci est réalisé si m  n (nombre d’équations inférieur au nombre d’inconnues) et si la matrice A est de rang plein égal à m (lignes indépendantes). La technique de réduction consiste à utiliser les m équations (1.59) pour exprimer m inconnues en fonction des n − m autres, puis à les remplacer dans la fonction f. La réduction utilise une base quelconque de n composée de n vecteurs indépendants. Les m premiers vecteurs forment une matrice Y  nm à n lignes et m colonnes, les n − m derniers vecteurs forment une matrice Z  n(n −m) à n lignes et n − m colonnes. 1

(Y

Z) = n

1

m

1

    









n −m

    

(1.60)

26

Techniques d’optimisation

Les composantes d’un vecteur p 

n

dans cette base sont notées pY et pZ.

pY et pZ représentent des vecteurs ligne à m et n − m composantes respectivement.

p = YpY + ZpZ

(1.61)

Supposons que l’on parte d’un point initial x0 et que l’on cherche un nouveau point de la forme x = x0 + p , où le vecteur p représente le déplacement à partir de x 0. Le point initial n’est pas nécessairement admissible : Ax 0 = b0  b . Pour que le nouveau point soit admissible, le déplacement p doit vérifier :

A(x0 + p) = b  Ap = b − b0  AYpY + AZpz = b − b0

(1.62)

La matrice AY de dimension m  m est inversible, car A et Y sont de rang m. On en déduit l’expression des composantes p Y en fonction des composantes pZ :

pY = (AY)−1 (b − b0 − AZpZ )

(1.63)

et l’expression du déplacement admissible p :

p = Y(AY)−1 (b − b0 ) + I − Y(AY) −1 A  Zp z

(1.64)

Le problème d’optimisation (1.58) ne dépend plus que des variables p Z.

(

minn−m f x 0 + Y(AY) −1 (b − b0 ) + I − Y(AY) −1 A  Zp z

p Z

)

(1.65)

Les n − m composantes pZ sont appelées variables libres, les m composantes pY s’en déduisent par (1.63) et sont appelées variables liées. Si le point initial x0 est admissible (Ax 0 = b0 = b) , le déplacement admissible (1.64) se simplifie en :

p =  I − Y(AY) −1 A  Zp z

(1.66)

La réduction permet de passer d’un problème à n inconnues et m contraintes linéaires à un problème à n − m inconnues sans contraintes. Le problème réduit (1.65) est équivalent au problème initial, mais beaucoup plus simple à résoudre (moins de variables, pas de contraintes). La base de réduction (1.60) est arbitraire et peut être simplement la base canonique de n . En pratique, il est préférable de construire cette base à partir de la matrice A afin d’exploiter la structure des contraintes.

Optimisation continue

27

Base formée à partir de colonnes de A La base peut être définie en sélectionnant m colonnes indépendantes de la matrice A. Ces colonnes forment une sous-matrice B de dimension m  m, les autres colonnes forment une sous-matrice N de dimension m  (n − m). En supposant que les colonnes sélectionnées sont les m premières (ceci revient à permuter les variables), la matrice A et le déplacement p se décomposent en :

p  →m p= B (1.67)  pN  → n − m Avec cette décomposition, la condition de déplacement admissible (1.62) donne : m A = m B 

Ap = b − b0

 N 

n −m

,

 BpB + Np N = b − b0  pB = B−1 (b − b0 ) − B−1Np N

(1.68)

Les matrices Y, Z et les composantes p Y, pZ sont ensuite définies par : m −1

B m Y=   0 n − m pY = b − b0

, ,

n −m −1

 −B N  m Z=   I n − m pZ = pN

(1.69)

En effet, le déplacement (1.61) avec ces matrices redonne bien la forme (1.67).  B−1 (b − b 0 ) − B−1 Np N   p B  (1.70) p = Yp Y + Zp Z =  =  pN    pN  Ce choix de base est le plus simple, car il s’effectue directement sur la matrice A.

L’inconvénient est que la matrice B à inverser peut s’avérer mal conditionnée. Pour choisir la « meilleure » matrice B, il serait nécessaire d’examiner toutes les combinaisons possibles de m colonnes de A, ce qui est inenvisageable en pratique. La Figure 1-11 page suivante illustre ce problème de conditionnement avec une contrainte dans 2 de la forme : a1x1 + a 2 x 2 = b . La matrice des contraintes est :

A = ( a1 a 2 ) . La base est formée à partir de la première colonne de la matrice A.

Le déplacement libre pN est suivant la composante x2 et le déplacement lié pB suivant x1 s’en déduit par (1.68) qui dans ce cas simple donne :

a2 B = (a1 )  N = (a )  pB = − pN a1 2 

(1.71)

Si le coefficient a1 est petit (droite quasi parallèle à l’axe x 1), le déplacement pB est beaucoup plus grand que pN et sujet à des imprécisions numériques. Ceci vient

28

Techniques d’optimisation

de la matrice B = (a1 ) mal conditionnée (valeur propre proche de zéro). Il vaut mieux dans ce cas sélectionner la deuxième colonne de A pour former la base.

Figure 1-11 : Interprétation géométrique de la réduction Le problème de conditionnement est évité si la base est un vecteur directeur de la  a2  droite : Z =   . Le déplacement p = ZpZ est ainsi directement admissible et  −a 1  n’entraîne pas d’imprécisions numériques même si a1 est petit. Ce procédé consistant à utiliser le noyau de la matrice A est détaillé ci-dessous. Base formée à partir du noyau de A Le noyau (ou espace nul) de la matrice A est l’ensemble des vecteurs z n tels que Az = 0 . Ce système avec plus d’inconnues (n) que d’équations (m) définit un espace de dimension n − m. La base de n (1.60) est composée de n − m vecteurs indépendants du noyau (matrice Z) et m vecteurs indépendants hors-noyau (matrice Y). Les vecteurs hors-noyau peuvent être par exemple les colonnes de la matrice AT, comme le montre le théorème de décomposition suivant. Théorème 1-5 : Décomposition sur le noyau et l’image n

Tout vecteur x  les vecteurs y 

m

T s’écrit de manière unique sous la forme : x = A y + z avec

, z

n

où z appartient au noyau de A (Az = 0) .

La matrice A (m  n , m  n) est supposée de rang plein. Ce théorème exprime que le noyau de A et l’image de AT sont supplémentaires dans

n

.

Optimisation continue

29

Démonstration de l’existence n

Si on se donne z

appartenant au noyau de A, alors on peut trouver y par : Ax = AA y + Az = AA y  y = (AAT )−1 Ax , car AAT est une matrice (m  m) de rang plein. T

T

Démonstration de l’unicité T T Si on suppose x = A y + z = A y'+ z' , avec z et z’ appartenant au noyau de A, alors

Ax = AAT y = AAT y'  AAT (y − y') = 0  y − y' = 0 car AAT est de rang plein et AT y + z = AT y'+ z'  z = z' .

Avec une telle base (Y,Z), la condition de déplacement admissible (1.62) donne :

Ap = b − b0  AYpY = b − b0 car AZ = 0

(1.72)

Ce choix a l’intérêt de rendre les composantes p Y et pZ indépendantes. En particulier, si le point initial x0 est admissible, alors pY = 0. Parmi les bases du noyau, il est préférable de choisir une base orthogonale. Pour cela, la matrice AT (n  m , m  n) est factorisée sous forme QR par la méthode de T Householder ou de Givens avec une matrice Q orthogonale (QQ = I) .

m

m A = QR = n  Q1  T

 R  m Q2  1   0  n − m

n −m

(1.73)

Q1 est orthogonale n  m , Q2 est orthogonale n  (n − m) et R1 est triangulaire supérieure m  m . La base Z du noyau et la base Y hors noyau sont définies par :

 Z = Q2  Y = Q1

→ AZ = R1T Q1T Q2 = 0 → AY = R1T Q1T Q1 = R1T

(1.74)

T

La matrice AY = R1 doit être inversée pour calculer le déplacement (1.64). Cette matrice a le même conditionnement que A.

cond(A) = cond(QR)T = cond(Q1 R1 )T = cond(R1T ) = cond(AY) car la matrice Q1 est orthogonale.

(1.75)

30

Techniques d’optimisation

On montre que le conditionnement de AY est au moins celui de A. Le choix d’une base orthogonale à partir du noyau combine donc le découplage des composantes pY et pZ (1.72) et la minimisation des erreurs numériques d’inversion. Problème réduit En choisissant comme matrice Z une base du noyau de A, et en supposant que le point initial x0 est admissible (b = b0 ) , le problème réduit (1.65) se simplifie en : min f (x 0 + p) = f (x 0 + Zp Z ) = f r (p Z ) n −m def

pZ 

(1.76)

La fonction réduite notée fr ne dépend alors plus que des n − m variables pZ. Le gradient et le hessien de fr sont appelés le gradient réduit et le hessien réduit. Leurs expressions s’obtiennent à partir de (1.76) par composition des dérivées :

g r = ZT g  T H r = Z HZ

(1.77)

H =  2f r g = f r avec les notations  r et  r . 2 g = f H =  f

Les conditions d’optimalité du problème sans contraintes (1.76) sont :

g r = Z T g = 0  T H r = Z HZ  0

(1.78)

Cas d’un problème linéaire T T Si la fonction coût est linéaire : f (x) = c x , le gradient réduit vaut g r = Z c .

Considérons une base du noyau formée de colonnes de A comme en (1.67). La matrice A et le vecteur c sont exprimés en composantes de base et hors-base.

c m , c= B  (1.79)  cN  n − m La matrice Z est alors donnée par (1.69) et le gradient réduit a pour expression : m A = m B 

 N 

n −m

g r = c N − (B−1N)T cB

(1.80)

En programmation linéaire (chapitre 5), les composantes de c sont appelées les coûts et les composantes du gradient réduit gr sont appelées les coûts réduits.

Optimisation continue

31

1.3.2 Réduction généralisée La technique de réduction peut être appliquée aux contraintes non linéaires. Une idée naturelle est la méthode d’élimination qui consiste à utiliser les contraintes pour exprimer certaines variables (liées) en fonction d’autres variables (libres). On se ramène à un problème réduit sans contraintes. Exemple 1-7 : Problème de la boîte On souhaite réaliser une boîte cylindrique de volume donné et de surface minimale. Les variables sont le rayon r et la hauteur h. La fonction coût est la surface à minimiser : S = 2r2 + 2rh . La contrainte est le volume égal à V0 : V = r2 h = V0 . Le problème est formulé en divisant S par 2 et en posant V0 = 2v0 . min f (h, r) = r2 + rh sous c(h, r) = r 2 h − 2v0 = 0 h,r

La contrainte permet d’éliminer la variable h : h = En remplaçant dans la fonction coût, on obtient : 1

1

2v0 . r2 2

2v   min  r2 + 0   r = v03  h = 2v03  f = 3v03 r r  

La technique d’élimination nécessite quelques précautions dans le cas de contraintes non linéaires. En effet, l’élimination directe de variables peut conduire à un résultat faux comme le montre l’exemple suivant.

Exemple 1-8 : Risques liés à l’élimination directe Considérons le problème : min x12 + x22 x1 ,x2

sous x12 + 4x22 = 1 .

La figure, page suivante, montre la ligne de niveau 0 de la contrainte (trait plein) et deux lignes de niveau de la fonction (trait pointillé).

32

Techniques d’optimisation

Le minimum sous contrainte est en : x1 = 0 , x2 = 

1 . 2

Éliminons x1 à partir de la contrainte. x12 = 1 − 4 x22 La fonction à minimiser ne dépend plus que de x2 : min1 − 3x22 . x2

Cette fonction n’est pas minorée. → min = − ! L’erreur vient du domaine de définition implicitement associé à la contrainte : 1 1  −1  x1  1 ; −  x2   . Ce domaine est « oublié » lors de la réduction. 2 2 

Dans les applications, les contraintes sont évaluées par un processus de simulation et n’ont pas d’expression analytique. L’élimination directe n’est alors pas faisable. On peut en revanche utiliser la réduction généralisée qui consiste à linéariser localement les contraintes actives et leur appliquer la réduction linéaire (section 1.3.1). La solution linéarisée doit être ensuite corrigée pour restaurer un point admissible. Le processus comporte les trois étapes détaillées ci-dessous. Sélection des contraintes actives Les contraintes actives au point initial x 0 sont les égalités et les inégalités prenant une valeur nulle. Les inégalités strictement négatives en x 0 ne limitent pas le déplacement au voisinage de x0 comme vu à la section 1.1.6. Le problème limité aux contraintes actives en x0 se formule comme :

minn f (x) sous c(x) = 0 x

(1.81)

Linéarisation locale Les contraintes actives sont linéarisées au voisinage de x 0. Un déplacement p1  n à partir de x0 est admissible si :

c(x 0 + p1 )  c(x 0 ) + c(x 0 )T p1 = 0

(1.82)

Optimisation continue

33

Le problème avec contraintes linéarisées se formule comme :

A = c(x 0 )T minn f (x 0 + p1 ) sous A0p1 = b0 avec  0 p1  b0 = − c(x 0 )

(1.83)

On retrouve une formulation semblable à (1.58), avec comme matrice A 0 la matrice jacobienne des contraintes en x 0. La technique de réduction linéaire avec une base (Y,Z) donne alors un déplacement p 1 (1.64). Ce déplacement minimise la fonction en supposant les contraintes linéaires (1.82), mais il n’est pas nécessairement admissible pour le problème réel (1.81). Il doit être complété d’un déplacement p2 pour restaurer les contraintes comme illustré sur la Figure 1-12.

Figure 1-12 : Déplacement linéaire et restauration

Restauration des contraintes Les contraintes prennent la valeur c(x1 )  0 au point x1 = x0 + p1 issu du problème réduit. La restauration a pour but de trouver un point x 2 = x1 + p2 admissible et « proche » du point x1. Le déplacement de restauration p 2 se base sur les contraintes linéarisées en x1.

c(x1 + p2 )  c(x1 ) + c(x1 )T p 2 = 0

(1.84)

Une première difficulté vient de la matrice jacobienne des contraintes qui doit être calculée au point x1. L’approximation c(x1 )  c(x0 ) illustrée sur la Figure 1-12 (flèche pointillée en x1) est justifiée si le déplacement p1 est petit et évite le calcul coûteux de cette matrice.

34

Techniques d’optimisation

Une deuxième difficulté vient de la sous-détermination du système (1.84) à n inconnues et m < n équations. Deux approches sont privilégiées avec l’objectif de dégrader le moins possible la solution x1 du problème linéarisé. •

Restauration par déplacement de norme minimale

Le déplacement de norme minimale est obtenu en résolvant le problème :

A = A0 = c(x 0 )T minn p2 sous A1p2 = b1 avec  1 p 2  b1 = − c(x1 )

(1.85)

Ce problème de projection est résolu en choisissant une base Z du noyau et Y = A1T comme base complémentaire (Théorème 1-5). Le déplacement p2 = A1T pY + Zp Z doit vérifier :

(

A1p2 = b1  A1A1T pY = b1  p Y = A1A1T

)

−1

b1

(1.86)

La composante pY étant fixée par (1.86), la minimisation (1.85) ne porte que sur pZ, et le minimum est obtenu pour p Z=0. Le déplacement de norme minimale est :

(

p2 = A1T A1A1T •

)

−1

b1

(1.87)

Restauration par déplacement hors-noyau

Le déplacement de restauration est cherché sous la forme (1.61) : p2 = YpY + ZpZ en fixant la composante pZ à zéro. En effet, cette composante représente les variables libres utilisées pour la minimisation (1.83) et l’objectif est de ne pas les modifier. Le calcul similaire à (1.64) donne :

p2 = Y ( A0 Y ) b1 −1

(1.88)

Le déplacement p2 (1.87) ou (1.88) étant défini à partir des contraintes linéarisées et avec la matrice jacobienne non recalculée en x 1, rien ne garantit que le point x 2 = x1 + p2 soit admissible. Si c(x 2 )  0 , il faut, soit calculer un nouveau déplacement p3 à partir de x2 selon la même approche (1.84), soit réduire le déplacement p1 en espérant revenir dans le « domaine de linéarité » des contraintes. Ces situations sont illustrées par la Figure 1-13 ci-après.

Optimisation continue

35

Figure 1-13 : Effet de la non linéarité sur la restauration La restauration produit un point x2 admissible : c(x 2 ) = 0 , mais modifie la solution x1 du problème linéarisé. Cette restauration peut dégrader la fonction coût. Il faut donc vérifier que le point x2 est meilleur que le point initial x0 : f(x 2 )  f(x 0 ) . Si ce n’est pas le cas, le déplacement p1 doit être réduit en espérant atténuer l’effet défavorable de la restauration. Cette situation est illustrée sur la Figure 1-14 où la restauration conduit à s’écarter du minimum de la fonction f.

Figure 1-14 : Effet de la restauration sur la fonction coût Les difficultés liées aux non-linéarités pourraient être atténuées en recalculant la matrice c(x1 ) pour améliorer la direction de restauration (Figure 1-12), mais ce calcul qui serait à réaliser en chaque point x 1 testé serait beaucoup trop coûteux.

36

Techniques d’optimisation

Une méthode plus efficace consiste à utiliser la direction pc = p1 + p2 , où p1 et p2 sont calculés comme précédemment par (1.83) et (1.84). En développant les contraintes à l’ordre 2 au voisinage de x 0, avec leur hessien noté C0 :

1 T  c(x 0 + p1 ) = c(x 0 ) + A 0 p1 + 2 p1 C0 p1  1 c(x 0 + p c ) = c(x 0 ) + A 0 p c + p cTC0 p c 2 

(1.89)

puis en utilisant les relations vérifiées par p 1 et p2 :

A 0 p1 = −c(x 0 ) A p = −c(x + p ) 0 1  0 2

(1.90)

on obtient après calculs les valeurs des contraintes en x 0 + p1 et x 0 + pc , soit : 1 T  c(x 0 + p1 ) = 2 p1 C0 p1  1 c(x 0 + p c ) = p1T C0 p 2 + p T2 C 0 p 2 2 

(1.91)

1 Le déplacement p2 est d’ordre 2 par rapport à p1 : A0 p2 = −c(x 0 + p1 ) = − p1T C0 p1 2

La formule (1.91) montre que l’erreur sur la contrainte passe de l’ordre 2 en x 0 + p1 à l’ordre 3 en x 0 + pc . La direction pc est appelée direction d’ordre 2. La direction pc prend en compte la non-linéarité des contraintes et s’éloigne moins de la ligne admissible que la direction p 1 (Figure 1-15). En réduisant si besoin le déplacement suivant cette direction pc, il devient plus facile de restaurer un point admissible en conservant une amélioration de la fonction coût.

Figure 1-15 : Direction d’ordre 2

Optimisation continue

37

1.4 Optimum global La recherche d’un optimum global est un problème difficile, même pour une fonction d’une seule variable (Figure 1-6). Cette section présente des conditions garantissant qu’un point est un optimum global. Ces conditions se formulent à partir du lagrangien et de la fonction duale.

1.4.1 Problème dual Considérons à nouveau le problème d’optimisation continue sous forme standard avec p contraintes égalité cE et q contraintes inégalité cI. Le domaine de définition des variables x est noté X  n (il peut s’agir de n tout entier). c (x) = 0 min f (x) sous  E xX cI (x)  0

(1.92)

Les méthodes duales traitent les contraintes de manière indirecte en leur associant à chacune un réel appelé multiplicateur de Lagrange. •

Le vecteur  

p

représente les multiplicateurs des contraintes égalité cE.



Le vecteur  

q

représente les multiplicateurs des contraintes inégalité cI.

Le lagrangien (ou fonction de Lagrange) est la fonction L définie par : L(x,λ,μ) = f(x) + λT cE (x) + μT cI (x)

(1.93)

soit en détaillant les termes : p

q

j=1

j=1

L(x,λ,μ) = f(x) +  λ jcEj (x) +  μ jcIj (x)

(1.94)

Le lagrangien est une fonction de n + p+q dans . Les variables x sont appelées variables primales et les multiplicateurs  ,  sont appelés variables duales. La fonction duale  est définie par le minimum du lagrangien par rapport à x : (λ,μ) = min L(x,λ,μ) xX

(1.95)

Notons qu’il s’agit d’un minimum global, dont la recherche peut être difficile.

38

Techniques d’optimisation

Cette fonction  de

p+q

dans

possède les propriétés suivantes.



Son domaine de définition D = λ,μ / (λ,μ)  − est convexe.



La fonction  est concave.



Si μ  0 , elle est majorée par f(x*) où x* est la solution du problème (1.92).

Démonstration Ces propriétés se démontrent à partir de la définition de la fonction duale et du lagrangien. Les variables duales sont notées :  = (, ) ,  est un réel quelconque. • Concavité de  Pour tout x, le lagrangien L est linéaire par rapport à  = (, ) :

L ( x, 1 + (1 − )2 ) = L(x, 1 ) + (1 − )L(x, 2 ) En prenant le minimum en x de chaque terme, on a :  ( 1 + (1 − )2 )  (1 ) + (1 − )(2 ) • Convexité de D Si 1 , 2  D , on a : (1 )  − , (2 )  −

 est concave :  ( 1 + (1 − )2 )  (1 ) + (1 − )(2 )  − D’où l’on déduit : 1 + (1 − )2  D • Majorant de   (λ ,μ) = min L(x,λ,μ) xX

 L(x*,λ,μ) = f(x*) + λT cE (x*) + μT cI (x*) = f(x*) + μT cI (x*) car x* admissible  cE (x*) = 0  f(x*) car x* admissible  cI (x*)  0 et μ  0 (par hypothèse)

La fonction duale étant majorée par f(x*), il est naturel de chercher son maximum. Le problème (1.92) est appelé problème primal. Le problème dual associé au problème (1.92) consiste à maximiser la fonction duale :

max (λ ,μ) λ ,μ

sous μ  0

(1.96)

Optimisation continue

39

Sa solution est notée (*, *) et la valeur maximale (*, *) est un minorant du coût minimal f(x*) . Cette propriété constitue le théorème de la dualité faible. (1.97)

(λ*,μ*)  f(x*)

L’écart f(x*) − (*, *) entre le coût du problème primal et le coût du problème dual est appelée saut de dualité. L’exemple suivant illustre ces notions liées à la dualité.

Exemple 1-9 : Fonction duale et problème dual 1 Considérons le problème à 2 variables : min f ( x1 , x 2 ) = (x12 + x 22 ) sous x1 = 1 x1 ,x 2 2

dont la solution est : (x1 , x 2 )* = (1 , 0) . Ce problème est le problème primal. 1 Le lagrangien est fonction de 3 variables : L( x1 , x 2 , ) = (x12 + x 22 ) + (x1 −1) 2

où  est le multiplicateur de la contrainte égalité. La fonction duale est définie comme : 1 (λ ) = min L( x1 , x 2 , ) = min (x12 + x 22 ) + (x1 − 1) x1 ,x 2 x1 ,x 2 2

En dérivant L par rapport à x1 et x2 :

L x +  = 0  x = − , =0   1   1 x  x2 = 0  x2 = 0

1 x = − on obtient l’expression explicite de  : () = − 2 −  avec  1 2  x2 = 0

Le problème dual peut alors être résolu.  x* = 1 1 max () = − 2 −  → * = −1 →  1*  2  x2 = 0

On retrouve ici la solution du problème primal. Ceci n’est pas toujours le cas.

40

Techniques d’optimisation

1.4.2 Point-selle Un point-selle (ou point-col) du lagrangien est un triplet (x*, *, *) qui minimise le lagrangien par rapport à x et le maximise par rapport à (,   0) . (x*, *, *) point-selle 



L(x*,λ*,μ*)  L(x,λ*,μ*) , x  X (1.98) L(x*,λ*,μ*)  L(x*,λ,μ) , ,   0

La Figure 1-16 illustre un point-selle en deux dimensions (x et  étant des réels).

Figure 1-16 : Point-selle du lagrangien

Un point-selle du lagrangien se caractérise par les conditions suivantes.

(x*, *, *) point-selle



 x* → min L(x,λ*,μ*) xX  c (x*) = 0   E c (x*)  0  I μ*  0 μ*c (x*) = 0 I  

(1.99)

Optimisation continue

41

Démonstration de l’implication  Par définition d’un point-selle :



L(x*, *, *)  L(x, *, *) ,  x  X . L(x*, *, *)  L(x*, , ) ,  ,   0

Les conditions sur x* et * sont vérifiées par définition du point-selle. Il faut montrer les conditions sur cE et cI. Partons de la seconde inégalité ci-dessus. L(x*, *, *)  L(x*, , ) ,  ,   0

 λ*T cE (x*) + μ*T cI (x*)  λT cE (x*) + μT cI (x*) ,  ,   0  (λ* − λ)T cE (x*) + (μ* − μ)T cI (x*)  0 ,  ,   0

Prenons  =  * , alors (λ* − λ)T cE (x*)  0 ,  , qui n’est vérifié que si cE (x*) = 0. Prenons  =  * , alors (* − )T cI (x*)  0 ,   0 , qui n’est vérifié pour  grand que si cI (x*)  0 . Prenons  =  * et  = 0 , alors *T cI (x*)  0 , mais par ailleurs *  0 et cI (x*)  0 d’où *T cI (x*) = 0 . Démonstration de l’implication  Il faut montrer la seconde inégalité : L(x*, *, *)  L(x*, , ) ,  ,   0 . Évaluons chacun des membres de cette inégalité : L(x*, λ,μ) = f (x*) + λT cE (x*) + μT cI (x*) = f (x*) + μTcI (x*)  T T L(x*, λ*,μ*) = f (x*) + λ* cE (x*) + μ* cI (x*) = f (x*)

en utilisant cE (x*) = 0 et *T cI (x*) = 0 . Comme   0 et cI (x*)  0 , on obtient bien l’inégalité attendue.

L’intérêt de la notion de point-selle vient des deux théorèmes suivants sur la dualité forte et l’optimalité globale. Les démonstrations de ces théorèmes sont détaillées dans la référence [R11].

42

Techniques d’optimisation

Théorème 1-6 : Dualité forte L’existence d’un point-selle équivaut à un saut de dualité nul.

Démonstration de l’implication  Supposons qu’un point-selle (x*, *, *) existe :



L(x*, *, *)  L(x, *, *) ,  x  X L(x*, *, *)  L(x*, , ) ,  ,   0

Calculons d’abord L(x*, *, *) en utilisant les propriétés du point-selle (1.99). L(x*,λ*,μ*) = f (x*) + λ*TcE (x*) + μ*TcI (x*) = f (x*)

car cE (x*) = 0 et μ*TcI (x*) = 0

Par définition de la fonction duale (1.95) : (λ*,μ*) = min L(x,λ*,μ*) . xX

D’après la première inégalité de point-selle : L(x*, *, *)  L(x, *, *) ,  x  X

Donc L atteint son minimum en x = x * et ( λ*,μ*) = L(x*, λ*,μ*) = f(x*) . On a montré que f et  prennent la même valeur au point-selle. Il reste à montrer que cette valeur représente le coût optimal du primal et du dual. •

Pour le problème primal

D’après la première inégalité de point-selle : L(x*, *, *)  L(x, *, *) ,  x  X

 f(x*)  f (x) + λ*T cE (x) + μ*T cI (x) ,  x  X c (x) = 0 Si x est un point admissible :  E c I (x)  0

 f(x*)  f (x) .

x* est donc bien la solution du problème primal (minimisation de f). •

Pour le problème dual

Par définition de la fonction duale (1.95) : (λ,μ) = min L(x,λ,μ)  L(x*,λ,μ) . xX

Optimisation continue

43

D’après la deuxième inégalité de point-selle : L(x*, , )  L(x*, *, *) ,  ,   0  ( λ,μ)  L(x*, *, *) = ( λ*,μ*)

(*, *) est donc bien la solution du problème dual (maximisation de ).

Démonstration de l’implication  Supposons que le saut de dualité est nul et notons x* la solution du problème primal, (*, *) la solution du problème dual. Montrons que (x*, *, *) vérifie les conditions de point-selle (1.99). Par définition de la fonction duale (1.95) : (λ*,μ*) = min L(x,λ*,μ*)  L(x*,λ*,μ*) xX

et comme ( λ*,μ*) = f(x*) , on obtient l’inégalité : f( x*)  L(x*, λ*,μ*) . Calculons L(x*, *, *) : L(x*, λ*,μ*) = f (x*) + λ*T cE (x*) + μ*T cI (x*) = f (x*) + μ*T cI (x*) car cE (x*) = 0  f (x*) car cI (x*)  0 et μ*  0

On obtient la double inégalité : f( x*)  L(x*, λ*,μ*) = f (x*) + μ*TcI (x*)  f (x*) d’où l’on déduit : L(x*, λ*,μ*) = f (x*) et μ*TcI (x*) = 0 . Reprenons à nouveau la fonction duale : (λ*,μ*) = min L(x,λ*,μ*) xX

avec ( λ*,μ*) = f(x*) = L(x*, λ*,μ*)  L(x*,λ*,μ*) = min L(x,λ*,μ*) xX

Le point (x*, *, *) vérifie donc l’ensemble des conditions de point-selle (1.99).

Ce premier théorème permet de prouver l’existence d’un point-selle en résolvant le problème primal et le problème dual, puis en comparant leurs coûts. Une fois l’existence démontrée, on peut utiliser le théorème suivant.

44

Techniques d’optimisation

Théorème 1-7 : Optimum global S’il existe un point-selle (x*, *, *) du lagrangien, alors x* est le minimum global du problème (1.92).

Démonstration Partons de la première inégalité définissant le point-selle : L(x*, *, *)  L(x, *, *) ,  x  X

c (x) = 0 Évaluons chaque membre de l’inégalité pour un point x admissible :  E . cI (x)  0 L(x*, λ*,μ*) = f (x*) + λ*T cE (x*) + μ*T cI (x*) = f (x*)  T T L(x, λ*,μ*) = f (x) + λ* cE (x) + μ* cI (x)  f (x)

en utilisant cE (x*) = 0 , *T cI (x*) = 0 et μ*  0 . On obtient donc pour tout point x admissible l’inégalité f (x*)  f (x) .

Ces deux théorèmes permettent de prouver l’optimalité globale par la recherche d’un point-selle. Ils s’appliquent dans le cas très important de la programmation linéaire (section 1.4.3). Mais pour la plupart des problèmes non linéaires, il n’existe pas de point-selle comme le montre l’exemple suivant.

Exemple 1-10 : Problème sans point-selle Considérons le problème : min f (x) = − x2 x[0;2]

sous x − 1  0 .

Le domaine de définition est ici X = [0 ; 2] et la solution du problème est : x* = 1 → f (x*) = −1 Le lagrangien est : L( x, ) = −x 2 + (x − 1) avec le multiplicateur   0 . La fonction duale  est définie en minimisant le lagrangien sur le domaine de définition X. min L( x, ) = min − x 2 + (x − 1)

x[0; 2]

x[0; 2]

Optimisation continue

45

La valeur de x dépend de . On obtient l’expression suivante de la fonction duale : si   2 x = 2   x = 0 ou 2 si  = 2 si   2  x = 0

 − 4    ( ) = − 2 −

si   2 si  = 2 si   2

La fonction duale est maximale pour * = 2 → (*) = −2 et x = 0 ou 2 . Les solutions du problème dual (x = 0 ou 2) et primal (x* = 1) diffèrent. Il n’existe donc pas de point-selle et le saut de dualité vaut f (x*) − (*) = 1 .

1.4.3 Programmation linéaire La programmation linéaire concerne les problèmes à fonction coût et contraintes linéaires. La forme standard d’un problème linéaire est la suivante. minn cT x sous x



Ax = b , A x0

mn

, b

m

, c

n

(1.100)

Le lagrangien est défini avec les multiplicateurs   m pour les contraintes égalité mises sous la forme b − Ax = 0 et les multiplicateurs   n pour les contraintes inégalité mises sous la forme − x  0 . L(x,λ,μ) = cT x + λT (b − Ax) + μT ( − x) = (c − AT λ − μ)T x + T b

(1.101)

La fonction duale  (, ) est le minimum du lagrangien lorsque celui-ci est borné. Le lagrangien (1.101) est une fonction linéaire en x qui n’est bornée que si le coefficient de x est nul. Le domaine de définition D de la fonction duale est donc :





D = (λ ,μ) / AT  +  = c

(1.102)

Sur ce domaine de définition, le lagrangien se réduit à : L(x,λ,μ) = T b

(1.103)

La fonction duale est identique au lagrangien, car celui-ci ne dépend plus de x.

(λ,μ) = min L(x,λ,μ) = T b x

(1.104)

46

Techniques d’optimisation

Le problème dual est la maximisation de la fonction duale.

max (λ,μ) sous λ,μ



(λ,μ)  D AT λ+μ = c  max λT b sous  (1.105) λ,μ μ0 μ  0

Ce problème dual est reformulé en posant y =  et en groupant les contraintes.

minm − bT y sous AT y − c  0

(1.106)

y

Il s’agit d’un nouveau problème de programmation linéaire à m variables y et n contraintes inégalité. Ce problème est analysé de la même façon que le problème initial (1.100). Son lagrangien noté Ld est défini avec des multiplicateurs   contraintes inégalité. Ld (y,) = − bT y + T (AT y − c) = (A − b)T y − T c

n

pour les (1.107)

Ce lagrangien étant linéaire en y, la fonction duale notée d () n’est définie que si le coefficient de y est nul. On obtient : d () = − T c

avec A − b = 0

(1.108)

et le problème dual a pour formulation : maxn − T c sous 



A − b = 0 0

(1.109)

Ce problème linéaire est identique au problème initial (1.100) en posant x =  . Le dual du dual d’un problème linéaire est identique au primal. L’inégalité (1.97) appliquée au problème primal et au problème dual montre que leurs coûts sont égaux. Le saut de dualité est nul, ce qui garantit l’existence d’un point-selle réalisant l’optimum global. Il est donc équivalent de résoudre le problème primal (1.100) ou le problème dual (1.106). On peut choisir le plus simple des deux, en fonction du nombre de variables et de contraintes. Les calculs précédents s’appliquent à un problème linéaire sous forme standard (à laquelle on peut toujours se ramener). Dans le cas d’un problème linéaire général comportant des contraintes égalité, inégalité  ou  et des variables positives, négatives ou libres, la transformation primal-dual s’effectue comme suit.

Optimisation continue

47

Problème primal

minn1 c1T x1 + cT2 x2 + c3T x3

x1 x2  x3

n2 n3

A1x1 + B1x2 + C1x3 = b1 , b1  A x + B x + C x  b , b  2 2 2 3 2 2  2 1 A3 x1 + B3 x2 + C3 x3  b3 , b3  sous   x1  0  x2  0  x  n3  3

m1 m2 m3

(1.110)

Problème dual A1T y1 + AT2 y2 + A3T y3  c1 , c1  BT y + BT y + BT y  c , c  2 2 3 3 2 2  1T 1 C1 y1 + CT2 y2 + C3T y3 = c3 , c3  T T T max b1 y1 + b2 y2 + b3 y3 sous  m1 y1 m1  y1  y2  m2  y2  0 y3  m3 y  0  3

n1 n2 n3

(1.111)

Démonstration Le lagrangien du problème primal (1.110) a pour expression : L(x1 , x2 , x3 , 1 , 2 , 3 , 1 , 2 ) = c1T x1 + cT2 x2 + c3T x3 + 1T (b1 − A1x1 − B1x2 − C1x3 ) T 2 2 1 2 2 T 3 3 3 1 T T 1 1 2 2

+  (A x + B x + C2 x3 − b2 )

+  (b − A x − B3 x2 − C3 x3 ) − x +  x

→ m1 multiplicateurs 1 → m2 multiplicateurs 2  0 → m3 multiplicateurs 3  0 → n1 multiplicateurs 1  0 → n2 multiplicateurs 2  0

Regroupons les termes en x1, x2 et x3. L(x1 , x2 , x3 , 1 , 2 , 3 , 1 , 2 ) = b1T 1 − bT2 2 + b3T 3 + (c1 − A1T 1 + AT2 2 − A3T 3 − 1 )T x1 + (c2 − B1T 1 + BT2 2 − B3T 3 + 2 )T x2 + (c3 − C1T 1 + CT2 2 − C3T 3 )T x3

Le lagrangien est linéaire en x1, x2, x3. Il n’est borné que si les coefficients de x 1, x2, x3 sont nuls. Ces conditions donnent les contraintes du problème dual.

48

Techniques d’optimisation

y = 

1 1 En posant :  y2 = −2  0 , la fonction duale est  ( y1 , y2 , y3 , ) = b1T y1 + bT2 y2 + b3T y3

  y3 = 3  0

et l’on retrouve la formulation du problème dual (1.111).

Les règles de transformations sont résumées dans le tableau suivant. Nombre

Primal

Dual

m1

Contraintes égalité = seuil b1

Variables libres y1 de coût b1

m2

Contraintes inégalité  seuil b2

Variables négatives y2 de coût b2

m3

Contraintes inégalité  seuil b3

Variables positives y3 de coût b3

n1

Variables positives x1 de coût c1

Contraintes inégalité  seuil c1

n2

Variables négatives x2 de coût c2 Contraintes inégalité  seuil c2

n3

Variables libres x3 de coût c3

Contraintes égalité = seuil c3

Tableau 1-4 : Passage du primal au dual pour un problème linéaire

Exemple 1-11 : Passage au problème dual Considérons le problème linéaire suivant (problème primal) : min x1 + 2x2 + 3x3

x1 ,x2 ,x3

=5 − x1 + 3x2  2x x 3x − +  2 3 6 sous  1 x3  4  x  0, x  0, x3   2  1

Son dual a pour formulation :  −1  y1 − 2y2   −2 −3y1 + y2 min − 5y1 − 6y2 − 4y3 sous  y1 ,y2 ,y3 − 3y2 − y3 = −3    y1  , y2  0, y3  0

Optimisation continue

49

1.5 Optimum local Dans la plupart des cas, l’optimalité globale d’une solution ne peut être démontrée. Il faut se contenter de vérifier des conditions d’optimalité locale. Cette section présente les conditions de Karush, Kuhn et Tucker et leur interprétation.

1.5.1 Directions admissibles Un point x* est un optimum local s’il n’existe aucun point admissible meilleur dans le voisinage. Pour établir l’optimalité locale, il faut examiner l’ensemble des déplacements admissibles « petits » à partir du point x*. Considérons une suite quelconque de points admissibles (xk) ayant pour limite x*. Ces points satisfont les contraintes égalité et inégalité du problème d’optimisation. c E (x k ) = 0 c (x )  0  I k

(1.112)

Formons à partir de ces points la suite des directions (d k) définies par : dk =

xk − x* xk − x*

(1.113)

Si une sous-suite des directions (dk) admet une limite d comme illustré sur la Figure 1-17, alors cette direction d est appelée une direction admissible à la limite. Un déplacement infinitésimal suivant une telle direction reste admissible.

Figure 1-17 : Direction admissible à la limite

50

Techniques d’optimisation

L’ensemble des directions admissibles à la limite au point x* est noté D(x*). Pour établir l’optimalité locale de x*, il faut examiner toutes les directions de D(x*). Considérons une direction d  D(x*) ainsi que la suite des points admissibles (xk) permettant de l’obtenir. À partir de (1.113) ces points sont donnés par :

x k = x * + sk d k

avec s k = x k − x* et lim s k = 0 k →

(1.114)

Exprimons les contraintes en xk par un développement d’ordre 1 pour sk petit. cE (x k ) = c E (x * +s k d k ) = c E (x*) + s k c E (x*) T d k + o(s k )  T cI (x k ) = c I (x * +s k d k ) = c I (x*) + s k c I (x*) d k + o(s k )

(1.115)

Si une contrainte inégalité est inactive en x*, elle n’interdit aucun déplacement au voisinage de x* (section 1.1.6) et ne réduit pas l’ensemble D(x*). On ne considère donc dans cette analyse que les contraintes actives en x* : cE (x*) = 0 , cI (x*) = 0 . Les points xk étant admissibles : cE (x k ) = 0 , cI (x k )  0 , on déduit de (1.115) : c (x ) − c E (x*) + o(s k ) o(s k )  c E (x*)T d k = E k =  sk sk  (1.116)  c (x ) − c (x*) + o(s ) c (x ) + o(s k ) I k c I (x*)T d k = I k = I k 0 sk sk  

Puis en passant à la limite avec limdk = d et limsk = 0 , on obtient des conditions k →

k →

vérifiées par toute direction d appartenant à D(x*). c E (x*) T d = 0  T c I (x*) d  0

si c I (x*) = 0

(1.117)

L’ensemble des directions vérifiant les conditions (1.117) forme le cône tangent au point x*. Cet ensemble noté T(x*) est bien un cône, car si d  T(x*) , alors d  T(x*) pour tout réel   0 . Les conditions (1.117) indiquent que la direction d est tangente aux contraintes égalité (normale au gradient), tangente ou intérieure aux contraintes inégalité actives en x* (formant un angle obtus avec le gradient). Toute direction admissible d  D(x*) appartient au cône tangent T(x*) , mais la réciproque est fausse. C’est le cas en particulier si le gradient d’une contrainte est nul en x*, comme le montre l’exemple suivant.

Optimisation continue

51

Exemple 1-12 : Direction non admissible appartenant au cône tangent 2 2 2 Considérons la contrainte égalité : c(x1 , x2 ) = (x1 + x2 −1) = 0 .

Les points admissibles forment le cercle de centre O et de rayon 1. Plaçons-nous au point A (1 ; 0). Les directions admissibles à la limite sont obtenues en considérant une suite de points du cercle convergeant vers A. On obtient la tangente au cercle en A.



Déterminons maintenant le cône tangent en A : T(A) = d 

2



/ c(A)T d = 0 .

x Le gradient de c : c(x1 , x2 ) = 2(x12 + x22 − 1)  1  est nul au point A (1 ; 0).  x2 

Par conséquent, toute direction d appartient au cône T(A). Le cône tangent n’est donc pas équivalent à l’ensemble des directions admissibles à la limite.

Le cône tangent T(x*) est défini par des conditions simples (1.117), mais il ne caractérise pas l’ensemble des directions admissibles D(x*) . Pour établir les conditions d’optimalité locale (section 1.5.2), on fait l’hypothèse suivante. Qualification des contraintes Les contraintes vérifient la condition de qualification au point admissible x* si toute direction du cône tangent est une direction admissible à la limite. D(x*) = T(x*)

(1.118)

La condition de qualification peut être démontrée si l’on fait l’hypothèse que la matrice jacobienne des contraintes actives est de rang plein au point x*. On dit alors que les contraintes sont linéairement indépendantes au point x*, ce qui signifie que leurs gradients sont linéairement indépendants en ce point.

52

Techniques d’optimisation

Démonstration (voir [R3]) Montrons que si les contraintes sont linéairement indépendantes en x*, alors toute direction d du cône tangent T(x*) est une direction admissible à la limite. Notons A la matrice jacobienne des contraintes actives en x*.  A   c (x*)T  A = c(x*)T   E  =  E T   AI   cI (x*)  La matrice A  mn étant de rang plein, on peut former une base de n de la forme (AT Z) , où Z  n(n −m) est une base du noyau de A (Théorème 1-5). A d=0 Soit d  T(x*) une direction tangente quelconque. d vérifie (1.117) :  E .  AI d  0 Considérons un réel s  0 et le système (S) de n équations et d’inconnue x  n . c(x) = sAd (S)  T  Z (x − x* − sd) = 0 La solution x(s) de ce système paramétré par s possède les propriétés suivantes.



• •

La matrice jacobienne en s = 0 de ce système est (AT Z) . Cette matrice étant de rang plein (base de n ), la solution est unique en s = 0 et également au voisinage de s = 0 (théorème des fonctions implicites). c  x(s)  = sAE d = 0 La solution x(s) est admissible :  E , car d  T(x*) et s  0 cI  x(s)  = sAI d  0 La solution en s = 0 est x(0) = x * .

Soit une suite sk  0 de limite 0. La suite xk = x(sk ) est admissible de limite x*. x −x* Montrons alors que la suite des directions dk = k a pour limite d. sk Développons pour cela les contraintes à l’ordre 1 en xk = x * + sk dk : c(xk ) = c(x*) + sk Adk + o(sk ) = sk Adk + o(sk ) car c(x*) = 0 (contraintes actives) et reportons les dans le système (S) : sk A (dk − d) = o(sk ) A   o(s ) / sk    T  (dk − d) =  k  T  s Z (d − d) = 0 Z  0    k k La matrice (AT Z) étant de rang plein, ce système linéaire a une solution unique. Lorsque sk → 0 , le 2nd membre tend vers 0 et la direction limite vérifie dk − d → 0. On a une suite de directions du type (1.113) ayant pour limite d, donc d  D(x*) .

Optimisation continue

53

La condition d’indépendance linéaire est très utilisée, car elle est simple à vérifier. Il s’agit cependant d’une condition suffisante, et non nécessaire. On peut avoir la qualification des contraintes sans cette condition comme dans l’exemple suivant.

Exemple 1-13 : Indépendance linéaire des contraintes Considérons les deux contraintes : 2  c1 (x) = x2 − x1 = 0 2  2  c2 (x) = x1 + ( x2 − 1) − 1  0

Leurs lignes de niveau 0 sont tracées cicontre. •

Plaçons-nous au point x(1 ; 1) .

Les gradients des contraintes sont linéairement indépendants :  −2   2 c1 =   , c2 =   1  0

La condition de qualification est donc vérifiée en ce point : D(x) = T(x) .  −1  −2d + d = 0 Le cône tangent défini par  1 2 se réduit aux directions    ,   0 . 0  2d1  −2 



Plaçons-nous au point x(0 ; 0) .

Les gradients des contraintes ne sont pas linéairement indépendants : 0 0 c1 =   , c2 =   1  −2 

On ne peut rien affirmer sur la qualification des contraintes en ce point. 1 Dans ce cas précis, les directions admissibles sont de la forme    et 0 correspondent au cône tangent de la contrainte c1.

54

Techniques d’optimisation

1.5.2 Conditions de Karush, Kuhn et Tucker Reprenons le problème d’optimisation sous forme standard avec n variables réelles, p contraintes égalité cE et q contraintes inégalité cI. c (x) = 0 minn f (x) sous  E x cI (x)  0

(1.119)

Comme à la section 1.4.1, le lagrangien (ou fonction de Lagrange) est défini par : L(x,λ,μ) = f(x) + λT cE (x) + μT cI (x) p

q

j=1

j=1

= f(x) +  λ jcEj (x) +  μ jcIj (x)

(1.120)

Le vecteur  

p

représente les multiplicateurs des p contraintes égalité cE.

Le vecteur  

q

représente les multiplicateurs des q contraintes inégalité cI.

Les deux théorèmes suivants dus à Karush (1939), Kuhn et Tucker (1951) donnent respectivement des conditions nécessaires et des conditions suffisantes d’optimalité locale.

Théorème 1-8 : Conditions nécessaires de minimum local sous contrainte Supposons que x* est un minimum local du problème (1.119) et que les contraintes actives en x* sont linéairement indépendantes en ce point. Notons ca (x) les contraintes actives et Ta (x*) leur cône tangent en x*.



Ta (x*) = d 

n



/ ca (x*)T d = 0 avec ca (x*) = 0

Alors il existe un unique vecteur *  p et un unique vecteur *  vérifiant les conditions d’ordre 1 et d’ordre 2 suivantes.



Conditions d’ordre 1 :

 x L(x*,λ*,μ*) = 0   λ L(x*,λ*,μ*) = 0   μ L(x*,λ*,μ*)  0  μ*  0 μ k *c Ik (x*) = 0 , k=1 à q



Conditions d’ordre 2 :

d T 2xx L(x*,λ*,μ*)d  0 , d  Ta (x*)

q

Optimisation continue

55

La condition k *cIk (x*) = 0 est appelée condition de complémentarité. Elle impose que, soit la contrainte inégalité est active, soit son multiplicateur est nul. La condition d’ordre 2 indique que le hessien 2xx L réduit aux directions tangentes est semi-défini positif. Les conditions KKT sont interprétées géométriquement à la section 1.5.3.

Éléments de la démonstration Différentes démonstrations sont proposées dans les références [R3, R10, R11]. Nous reprenons ici les idées directrices de la référence [R10]. Supposons que x* est un minimum local du problème (1.119) et définissons la 2 1 1 2 suite de problèmes : min fk (x) = f (x) + k cE (x) + k cI+ (x) + x − x * , k  . xV 2 2 La fonction : c+I (x) = max ( 0,cI (x) ) mesure la violation des contraintes inégalité. Le domaine de minimisation noté V est un voisinage fermé de x*. Minimum de fk La fonction fk est bornée sur V (car elle est continue et V est compact). Elle admet donc un minimum xk  V (théorème de Weierstrass). Ce minimum vérifie : fk (xk )  fk (x*) = f (x*) d’où l’on déduit l’inégalité notée I1 : 2

2

cE (xk ) + cI+ (xk ) 

2 2 f (x*) − f (xk ) − xk − x *    k

(inégalité I1)

Limite de (xk) Le domaine V étant compact, on peut extraire de la suite (x k) une sous-suite de limite notée x . Cette limite vérifie l’inégalité I1. Lorsque k →  , le second membre a pour limite 0 (car la fonction f continue sur V compact est bornée). L’inégalité I1 conduit à : cE (x) = cI+ (x) = 0 . Le point x  V est admissible pour le problème (1.119). Il vérifie donc l’inégalité I2 : f (x*)  f (x) (inégalité I2)

56

Techniques d’optimisation 2

Par ailleurs, l’inégalité I1 donne : f (x*) − f (xk ) − xk − x *  0 soit en passant à la 2

limite : f (x) + x − x *  f (x*) . Avec l’inégalité I2, on en déduit : x = x* . Ce résultat étant valable pour toute sous-suite de (xk), on a : lim xk = x* . k →

Condition d’ordre 1 À partir de k assez grand, le minimum xk est à l’intérieur de V et vérifie la condition d’ordre 1 : fk (xk ) = 0 , soit en dérivant la fonction fk : (égalité E1)

f (xk ) + kcE (xk )cE (xk ) + kcI+ (xk )cI+ (xk ) + 2(xk − x*) = 0 2

2

En divisant par : Ck = 1 + k2 cE (xk ) + k2 cI+ (xk ) , et en posant : k =

kcE (xk )  Ck

p

, k =

kcI+ (xk )  Ck

q

, k =

l’égalité E1 devient : k f (xk ) + cE (xk )k + c+I (xk )k +

1  Ck

,

2 (xk − x*) = 0 Ck

Le vecteur (k , k , k ) est de norme 1. Les suites (k ) , (k ) , (k ) étant bornées, on peut en extraire des sous-suites de limites respectives , ,  . Le passage à la limite dans l’équation ci-dessus donne alors (les gradients étant continus) : f (x*) + cE (x*) + cI+ (x*) = 0 (égalité E2)

Existence et unicité des multiplicateurs Supposons par l’absurde  = 0 . Alors  =  = 0 , car les contraintes sont par hypothèse linéairement indépendantes en x*. Ceci est en contradiction avec la norme de (, , ) égale à 1. Le multiplicateur  n’est donc pas nul. On peut poser   pour obtenir la condition KKT d’ordre 1 : x L(x*, *, *) = 0 . * = , * =   On a ainsi montré l’existence des multiplicateurs *,  * . Le gradient de f est combinaison linéaire (égalité E2) des gradients des contraintes qui sont supposés indépendants en x*. Ceci démontre l’unicité de *,  * .

Optimisation continue

57

Condition de complémentarité Les réels k sont positifs, car c+I (xk ) = max ( 0,cI (xk ) )  0 . Si une inégalité cIj est inactive en x*, on a à partir d’un certain rang (k  k0 ) : k → cIj (xk )  0  c+Ij (xk ) = 0  (k )j = 0 ⎯⎯⎯ → j* = 0

Ceci démontre la condition de complémentarité. Condition d’ordre 2 Toute direction d du cône tangent est limite d’une suite de directions de la forme : x −x* , où la suite admissible (xk) converge vers x*, et limsk = 0 , sk  0 . dk = k k→ sk Développons le lagrangien à l’ordre 2. L(xk , *, *) = L(x* + sk dk , *, *)

1 = L(x*, *, *) + sk x L(x*, *, *)T dk + sk2 dTk 2xx L(x*, *, *)dk + o(sk2 ) 2

Dans cette expression : L(xk , *, *) = f (xk ) +  *T cI (xk )

(car xk est admissible : cE (xk ) = 0 )

L(x*, *, *) = f (x*) +  *T cI (x*) = f (x*)

(condition complémentaire)

x L(x*, *, *) = 0

(condition d’ordre 1)

1 Il reste : f(xk ) +  *T cI (xk ) = f (x*) + sk2 dTk 2xx L(x*, *, *)dk + o(s2k ) 2

 dTk 2xx L(x*, *, *)dk = 2

f(xk ) − f (x*) +  *T cI (xk ) o(s2k ) + 2 s2k s2k

(égalité E3)

Si une contrainte cIj est inactive en x*, son multiplicateur *j est nul. Si une contrainte cIj est active en x*, la direction tangente d k est définie à partir de points xk tels que cIj (xk ) = 0 . Dans les deux cas : j *cIj (xk ) = 0 . Par ailleurs, xk étant admissible et x* étant le minimum : f (xk )  f(x*) . En reportant dans l’égalité E3 et en passant à la limite, on obtient la condition d’ordre 2 : dT 2xx L(x*, *, *)d  0 .

58

Techniques d’optimisation

L’exemple suivant montre l’importance de l’hypothèse d’indépendance linéaire.

Exemple 1-14 : Importance de l’hypothèse d’indépendance linéaire Soit le problème d’optimisation à une contrainte : minn f (x) sous c(x) = 0 . x

Une formulation équivalente de ce problème est : minn f (x) sous C(x) = 0 x

où la contrainte C est définie par : C(x) = c(x) . 2

Il est évident que ces deux problèmes ont les mêmes solutions. Essayons d’appliquer les conditions KKT à la seconde formulation. Le lagrangien a pour expression : L ( x,  ) = f (x) + C(x) . Les conditions KKT d’ordre 1 sont : x L = f (x) + C(x) = f (x) + 2c(x)c(x) = 0 2   L = C(x) =  c(x)  = 0

On aboutit au système :



f (x) = 0 qui ne dépend plus de . c(x) = 0

Ce système de n + 1 équations à n inconnues n’a pas de solution dans le cas général. Le problème vient de la matrice jacobienne des contraintes : C(x) = 2c(x)c(x) qui s’annule en tout point admissible c(x) = 0 . L’hypothèse d’indépendance linéaire (utilisée pour démontrer les conditions KKT) n’est pas vérifiée et il n’y a donc pas de garantie que les conditions KKT s’appliquent. Il faut donc éviter des reformulations des contraintes du type : C(x) = c(x) . 2

L’exemple suivant illustre l’application des conditions nécessaires à un problème d’optique.

Optimisation continue

59

Exemple 1-15 : Loi de la réfraction de Descartes Le principe de Fermat énonce que le trajet d’un rayon lumineux minimise le temps de parcours. Considérons un rayon lumineux allant d’un point A situé dans le milieu homogène 1 à un point B situé dans le milieu homogène 2. La vitesse de propagation dans un milieu homogène est constante et le principe de Fermat conduit à une propagation rectiligne. Le trajet de A à B se compose donc de deux segments se raccordant à un point d’interface I entre les deux milieux. Notons v1 et v2 les vitesses respectives dans chaque milieu, d 1 et d2 les distances parcourues, t1 et t2 les temps de parcours, 1 et 2 les angles d’incidence à l’interface et l0 la distance AB parallèlement à l’interface (Figure 1-18). l l d d On a les relations : d1 = 1 , d2 = 2 , t1 = 1 , t2 = 2 . cos 1 cos 2 v1 v2 En choisissant comme inconnues 1 et 2, le principe de Fermat conduit à formuler le problème d’optimisation suivant où T est le temps total de parcours et L la distance parcourue parallèlement à l’interface. l1 l2 min T = + sous L = l1 tan 1 + l2 tan 2 = l0  , v1 cos 1 v2 cos 2 1

2

Figure 1-18 : Loi de la réfraction

60

Techniques d’optimisation

Le lagrangien a pour expression : l1 l2 L ( 1 , 2 ,  ) = + +  ( l1 tan 1 + l2 tan 2 − l0 ) v1 cos 1 v2 cos 2 Les conditions KKT d’ordre 1 sont : l1 sin 1 1   L = v cos2  + l1 cos2  = 0 1 1 1  sin 1 + v1 = 0 l2 sin 2 1   L l 0  = +  =    sin 2 + v2 = 0 2 2 2 v cos cos   2 2 2  l1 tan 1 + l2 tan 2 = l0    L = l1 tan 1 + l2 tan 2 − l0 = 0 Les angles d’incidence à l’interface vérifient la loi de la réfraction de Descartes : sin 1 v1 = sin 2 v2 1

2

Les conditions suffisantes d’optimalité locales sont très similaires.

Théorème 1-9 : Conditions suffisantes de minimum local sous contrainte Supposons qu’il existe x* n , *  d’ordre 1 et d’ordre 2 suivantes.

p

et * 

q

vérifiant les conditions



Conditions d’ordre 1 :

 x L(x*,λ*,μ*) = 0   λ L(x*,λ*,μ*) = 0  μ L(x*,λ*,μ*)  0  μ k *  0 si c Ik (x*) = 0 , k=1 à q μ k * = 0 si c Ik (x*)  0 , k=1 à q



Conditions d’ordre 2 :

dT 2xx L(x*,λ*,μ*)d  0 , d  Ta (x*) , d  0

Alors x* est un minimum local strict du problème (1.119).

Remarque Les conditions suffisantes ne font pas d’hypothèse de qualification des contraintes.

Optimisation continue

61

Les différences avec les conditions nécessaires portent sur : - la condition de complémentarité stricte : * = 0 ou c(x*) = 0 ; - la condition sur le hessien réduit strictement positif.

Éléments de la démonstration (voir [R3], [R10], [R11]) Soit (x*, λ*, *) vérifiant les conditions suffisantes ci-dessus. Supposons par l’absurde que x* n’est pas un minimum local strict du problème (1.119). On peut alors construire une suite de points admissibles (x k) de limite x* et meilleurs que x* : f (xk )  f(x*) . Ces points définissent une suite de directions (xk) : dk = réels positifs (sk) a pour limite 0 : limsk = 0 , sk  0 .

xk − x * , où la suite de sk

k →

Directions du cône tangent Montrons que les directions (dk) appartiennent au cône tangent aux contraintes actives. Les contraintes inégalité actives sont notées cIa. On développe à l’ordre 1. f (xk ) = f (x * +sk dk ) = f (x*) + sk f (x*)T dk + o(sk )  T cE (xk ) = cE (x * +sk dk ) = cE (x*) + sk  cE (x*) dk + o(sk ) cIa (xk ) = cIa (x * +sk dk ) = cIa (x*) + sk  cIa (x*)T dk + o(sk ) 

En utilisant les hypothèses sur xk (point admissible, meilleur que x*), on a :

f (xk )  f(x*)

 f (x*)T dk  0

cE (xk ) = 0 et cE (x*) = 0

 cE (x*)T dk = 0

cIa (xk )  0 et cIa (x*) = 0

 cIa (x*)T dk  0

(inégalités I1)

Utilisons ces inégalités dans la condition d’ordre 1 par un produit scalaire avec d k. f (x*) + cE (x*) * +cI (x*)* = 0  f (x*)T dk +  * cE (x*)T dk +  * cI (x*)T dk = 0

Le premier membre de l’équation ne comporte que des termes négatifs ou nuls. Chaque terme doit donc être nul. Par l’hypothèse de complémentarité stricte faite dans les conditions suffisantes, les multiplicateurs des inégalités inactives sont

62

Techniques d’optimisation

nuls et ceux des inégalités actives sont strictement positifs. Pour que le terme correspondant soit nul, on doit avoir : cIa (x*)T dk = 0 . c (x*)T dk = 0 Les directions dk vérifient  E et appartiennent donc bien à Ta (x*) . T cIa (x*) dk = 0

Développement d’ordre 2 Utilisons maintenant l’hypothèse d’ordre 2 en développant le lagrangien. L(xk , *, *) = L(x* + sk dk , *, *)

1 = L(x*, *, *) + sk x L(x*, *, *)T dk + sk2 dTk 2xx L(x*, *, *)dk + o(sk2 ) 2

Dans cette expression : L(xk , *, *) = f (xk ) +  *T cI (xk )

(car xk est admissible : cE (xk ) = 0 ))

L(x*, *, *) = f (x*) +  *T cI (x*) = f (x*)

(condition complémentaire)

x L(x*, *) = 0

(condition d’ordre 1)

On en déduit : 1 f(xk ) = f (x*) + sk2 dTk 2xx L(x*, *, *)dk −  *T cI (xk ) pour sk petit 2 1  f(xk )  f (x*) + sk2 dTk 2xx L(x*, *, *)dk 2

(car xk admissible → cI (xk )  0 )

 f(xk )  f (x*) en utilisant l’hypothèse d’ordre 2 : dTk 2xx L(x*, *, *)dk  0 car on a montré précédemment que dk  Ta (x*) Cette inégalité contredit l’hypothèse initiale sur la suite x k : f (xk )  f(x*) .

L’exemple suivant illustre l’application des conditions suffisantes et montre par ailleurs l’importance de la condition de complémentarité stricte.

Optimisation continue

63

Exemple 1-16 : Application des conditions suffisantes Considérons le problème : 1 min (x22 − x12 ) sous x1  1 x1 ,x2 2

Les lignes de niveau sont des hyperboles représentées ci-contre. La fonction est minimisée pour x2 = 0 et décroît lorsque x1 →  . 1 Le lagrangien a pour expression : L(x1 , x2 , ) = (x22 − x12 ) + (x1 − 1) . 2 x1 L = − x1 + μ = 0  L = x = 0 2 Les conditions KKT nécessaires d’ordre 1 :  x2  L = x 1 −1  0   μ(x1 − 1) = 0 , μ  0

 x1 * = 1  sont vérifiées en  x2 * = 0 μ* = 1

 x1 * = 0  et en  x2 * = 0 . μ* = 0

 x1 * = 1  Examen du premier point :  x2 * = 0 μ* = 1

Ce point vérifie les conditions suffisantes d’ordre 1 (complémentarité stricte) : c(x*) = 0 μ*= 1  0 La contrainte est active en x*. La condition KKT d’ordre 2 porte sur les directions T 1   d  tangentes définies qui vérifient : c(x*)T d = 0     1  = d1 = 0 .  0   d2  Pour toute direction tangente non nulle, on a : T  d1   −1 0   d1  2 T 2 d xx L(x*, *)d =       = d2  0  d2   0 1   d2  Le point x *(1 ; 0) vérifie les conditions suffisantes d’ordre 1 et d’ordre 2.



Ce point est donc un minimum local.

64

Techniques d’optimisation

 x1 * = 0  Examen du deuxième point :  x2 * = 0 μ* = 0

Ce point vérifie les conditions suffisantes d’ordre 1 (complémentarité stricte) : c(x*) = −1  0 μ* = 0 Aucune contrainte n’est active en x*. Toutes les directions sont admissibles.



T

 d1   −1 0   d1  2 2 Pour une direction quelconque : d  L(x*, *)d =       = −d1 + d2 . d d 0 1  2   2  La condition d’ordre 2 n’est pas respectée si d1  0 . En effet, un déplacement suivant x1 à partir du point (0 ; 0) fait décroître la fonction. Ce point correspond en fait à un maximum suivant x1. T

2 xx

Déplacement de la contrainte inégalité Supposons que l’on change la contrainte inégalité en x1  0 . 1 Le problème d’optimisation devient : min (x22 − x12 ) sous x1  0 . x1 ,x2 2

x1 L = − x1 + μ = 0  L = x = 0 2  x2 Les conditions KKT d’ordre 1 :  L = x1  0 sont vérifiées en μ  0 μx = 0  1

 x1 * = 0   x2 * = 0 . μ* = 0

Ce point vérifie les conditions suffisantes d’ordre 1 et d’ordre 2, sauf la complémentarité stricte. En effet, la contrainte inégalité x1  0 étant active, le multiplicateur  ne doit pas être nul. Ce point n’est pas un minimum local, car la fonction décroît suivant la direction x1 → − . Cet exemple illustre l’importance de la condition de complémentarité stricte

Les contraintes inégalité peuvent être actives ou inactives. Pour chaque inégalité, la condition de complémentarité  cI (x) = 0 conduit à deux possibilités à examiner séparément. La résolution des conditions KKT comporte ainsi un aspect combinatoire dû aux contraintes inégalité comme illustré par l’exemple suivant.

Optimisation continue

65

Exemple 1-17 : Aspect combinatoire dû aux contraintes inégalité 2 2  Considérons le problème : min f ( x) = x1 + x2 sous c1 (x) = x1 + ( x2 − 1) − 1  0 . x1 ,x2 c2 (x) = 1 − x2  0

Les lignes de niveau des contraintes sont représentées ci-contre (un cercle et une droite).  x → − La fonction décroît lorsque  1 .  x2 → −

Résolution des conditions KKT Le lagrangien a pour expression : L( x, ) = x1 + x2 + 1 x12 + (x2 − 1)2 − 1 + 2 (1 − x2 )

(

)

1 + 21x1 = 0 1 + 2 (x − 1) − 2 = 0  2 1 2 2  Les conditions KKT d’ordre 1 :  x1 + (x2 − 1) − 1  0 1 − x2  0 1 c1 (x) = 0 , 1  0 2c2 (x) = 0 , 2  0 1 = 0 ou c1 (x) = 0 donnent 4 possibilités :  = 0 ou c (x) = 0 2  2

• Première contrainte Si 1 = 0 → incompatible de la première équation : 1 + 21x1 = 0 On en déduit que la contrainte c1 est active : x12 + (x2 − 1)2 − 1 = 0 . •

Deuxième contrainte

1 − x2  0 Si 2 = 0  1 + 21 ( x2 − 1) = 0 → incompatible des inégalités :  . 1  0 On en déduit que la contrainte c2 est active : 1 − x2 = 0 .

66

Techniques d’optimisation

• Combinaison retenue c1 (x) = 0  x1 = 1 1 = 0.5 et 1  0 → x1 = −1 c (x) = 0   x = 1   = 1  2  2  2  x = −1 , 1 = 0.5 La solution des conditions d’ordre 1 est :  1 .  x2 = 1 , 2 = 1 Les deux contraintes étant actives et linéairement indépendantes, le cône tangent est vide. La condition d’ordre 2 est alors satisfaite. Ce point est un minimum local. Changement de sens de la contrainte 2 Modifions le problème en changeant le sens de la deuxième inégalité. c (x) = x12 + ( x2 − 1)2 − 1  0 min f ( x) = x1 + x2 sous  1 x1 ,x2 c2 (x) = 1 − x2  0 1 + 21x1 = 0 1 + 21 (x2 − 1) − 2 = 0  2 2  Les conditions KKT d’ordre 1 deviennent :  x1 + (x2 − 1) − 1  0 1 − x2  0 1 c1 (x) = 0 , 1  0 2c2 (x) = 0 , 2  0 • Première contrainte Si 1 = 0 → incompatible de la première équation : 1 + 21x1 = 0 On en déduit que la contrainte c1 est active : x12 + (x2 − 1)2 − 1 = 0 . Deuxième contrainte  x = 1  = 0.5 Si c2 (x) = 0   1 → incompatible de : 2  0 .   1 x = 1  2 2 = −1 On en déduit que la contrainte c2 est inactive : 2 = 0 . •

• Combinaison retenue 1 + 2 x = 0  x1 = −1 / 2  x1 = −1 / (21 ) 1 1    1 + 21 ( x2 − 1) = 0   x2 = 1 − 1 / (21 )  x2 = 1 − 1 / 2  x2 + x − 1 2 − 1 = 0  = 1 / 2  0  = 1 / 2  1  1  1 ( 2 )  x = −1/ 2 , 1 = 0,5 La solution des conditions d’ordre 1 est :  1 .  x2 = 1 − 1/ 2 , 2 = 0 0   2 Le hessien du lagrangien : 2xx L( x, ) =  1  est défini positif.  0 21 

Optimisation continue

67

La condition d’ordre 2 sur les directions tangentes est satisfaite. Ce point est un minimum local. Changement de la contrainte inégalité 1 en égalité Modifions le problème en transformant la contrainte 1 en égalité. c (x) = x12 + ( x2 − 1)2 − 1 = 0 min f ( x) = x1 + x2 sous  1 x1 ,x2 c2 (x) = 1 − x2  0 1 + 21x1 = 0 1 + 2 ( x − 1) −  = 0 2  2 1 2 2 Les conditions KKT d’ordre 1 deviennent :  x1 + ( x2 − 1) − 1 = 0 1 − x2  0  c (x) = 0 ,   0 2  2 2 •

Première possibilité : 2 = 0

1 + 2 x = 0  x1 = 1 / 2  x1 = −1 / (21 ) 1 1     1 + 21 ( x2 − 1) = 0   x2 = 1 − 1 / (21 )  x2 = 1 + 1 / 2 car 1 − x2  0  x2 + x − 1 2 − 1 = 0  = 1 / 2  = −1 / 2  1  1  1 ( 2 )

0   2 Le hessien du lagrangien : 2xx L( x, , ) =  1  est défini négatif.  0 21  La condition d’ordre 2 sur les directions tangentes n’est pas satisfaite. Ce point est en fait un maximum local (hessien négatif).  x = 1  = 0.5   1   1 x = 1 2  2 = 1 0   2 Le hessien du lagrangien est : 2xx L( x, , ) =  1 .  0 21  Les deux contraintes étant actives et linéairement indépendantes, le cône tangent est vide. La condition d’ordre 2 est alors satisfaite. Ce point est un minimum local.  x = −1 , 1 = 0.5 → f (x) = 0 On obtient deux minima locaux en :  1  x2 = 1 , 2 = 1  x = 1 , 1 = −0.5 → f (x) = 2 et en :  1  x2 = 1 , 2 = 1



Deuxième possibilité : c2 (x) = 0

Ces deux minima sont diamétralement opposés sur le cercle. Le meilleur est celui situé en (−1 ; 1) .

68

Techniques d’optimisation

Après ces exemples illustrant les conditions suffisantes du Théorème 1-9, intéressons-nous à des conditions basées sur une approche de réduction. Conditions d’optimalité réduites Les conditions KKT sur le gradient et le hessien du lagrangien sont : x L(x*,λ*,μ*) = 0  T 2 d xx L(x*,λ*,μ*)d  0 , d  Ta (x*)

(1.121)

où le cône tangent aux contraintes actives Ta (x*) est défini par :



Ta (x*) = d 

n



/ ca (x*)T d = 0

avec ca (x*) = 0

(1.122)

Considérons la matrice jacobienne des contraintes actives en x* : A = ca (x*)T , et une base Z de son espace nul (section 1.3.1) : AZ = 0 . Les directions du cône tangent sont alors de la forme : d = ZdZ , où le vecteur dZ  n − m peut être choisi librement. Regroupons dans a * les multiplicateurs des contraintes actives en x*. x L(x*,a *) = f (x*) + ca (x*)λa = f (x*) + AT λa

(1.123)

Puis effectuons le produit scalaire avec une direction d = ZdZ de Ta (x*) . x L(x*,a *)T d = f (x*)T ZdZ

car AZ = 0

(1.124)

D’après la première condition KKT (1.121), ce produit scalaire est nul quel que soit le vecteur dZ  n − m . On en déduit que le gradient réduit de f est nul. (1.125)

gZ (x*) = ZT f (x*) = 0

Reportons ensuite la direction d = ZdZ dans la seconde condition KKT (1.121). dTZ ZT 2xx L(x*,λa *)ZdZ  0 , dZ 

n −m

(1.126)

On en déduit que le hessien réduit du lagrangien est semi-défini positif. HZ = ZT 2xx L(x*,λa *)Z  0

(1.127)

La condition d’ordre 2 est plus simple à vérifier sous cette forme.Il est à noter que les conditions réduites portent sur le gradient réduit gZ de la fonction coût (1.125) et sur le hessien réduit HZ du lagrangien (1.127).

Optimisation continue

69

Exemple 1-18 : Problème de la boîte (conditions réduites) Reprenons le problème de la boîte (Exemple 1-7) formulé comme : min f (h, r) = r2 + rh sous c(h, r) = r 2 h − 2v0 = 0 h,r

Le lagrangien est : L(h,r, ) = r2 + rh + ( r2 h − 2v0 ) . Les conditions KKT sont :  r +  r2 = 0 r = −1 1 1 1 −   2r + h + 2rh = 0  h = 2r  r = v03 , h = 2v03 ,  = − v0 3 r2 h = 2v0 r3 = v0

Vérifions les conditions réduites. Les matrices utiles sont :  r  - le gradient de la fonction coût :  f(h, r) =    2r + h  1 + 2r   0 2xx L(h, r) =   1 + 2r 2 + 2h  - la jacobienne de la contrainte : A = cT = r2 2rh

- le hessien du lagrangien :

(

)

Choisissons comme base (1.67) la première colonne de la jacobienne. B = ( r2 ) h r  A =  B N  avec     N = ( 2rh )  −B−1 N   −2h / r  Une base Z de l’espace nul est donnée par (1.69) : Z =  = .  I   1  On peut alors calculer sur cette base Z : - le gradient réduit de la fonction coût : T  −2h / r   r  gZ (h, r) = ZT f(h, r) =     = 2r − h  1   2r + h  - le hessien réduit du lagrangien : T 1 + 2r  −2h / r   −2h / r   0 HZ (h, r) = ZT H(h, r)Z =      = −2 − 2h  1  1 + 2r 2 + 2h  1  Au point solution



h = 2r g (h, r) = 2r − h = 0 , on obtient :  Z . r = −1 HZ (h, r) = −2 − 2h = 2  0

Les conditions d’optimalité réduites sont bien vérifiées.

70

Techniques d’optimisation

Les conditions KKT peuvent être étendues en introduisant un multiplicateur   0 associé au critère (multiplicateur anormal). Le lagrangien (1.120) devient : L(x,λ,μ) = f(x) + λT cE (x) + μT cI (x)

(1.128)

Les conditions KKT sont inchangées, avec l’inconnue supplémentaire  . Le problème est dit normal s’il existe une solution (x*, *, *) pour toute valeur strictement positive de  . On choisit alors arbitrairement  = 1 , ce qui redonne les conditions KKT usuelles. Le problème est dit anormal si la solution KKT impose  = 0 . Cette situation correspond à un domaine admissible réduit à des points isolés. La solution satisfait les contraintes, mais il n’est pas possible de minimiser le coût. Dans ce cas, l’hypothèse de qualification des contraintes n’est pas satisfaite.

Exemple 1-19 : Problème anormal Considérons le problème :

min x1 sous x12 + x22 = 0 .

Le lagrangien a pour expression :

L(x1 , x2 , , ) = x1 + (x12 + x22 )

x1 ,x2

où l’on a introduit le multiplicateur  pour le critère. Les conditions KKT :

x L =  + 2x1 = 0  1 x2 L = 2x2 = 0 n’ont pas de solution si   0 .  L = x2 + x2 = 0 1 2  

La solution est x1 = x2 = 0 pour  = 0 qui correspond au seul point admissible. On remarque que ce point ne vérifie pas l’hypothèse de qualification ( c = 0 ).

1.5.3 Interprétation géométrique Les conditions KKT d’ordre 1 indiquent que le gradient de la fonction coût s’exprime comme une combinaison linéaire des gradients des contraintes. Cette section présente des illustrations géométriques en dimension 2.

Optimisation continue

71

Problème avec une contrainte égalité min f (x1 , x 2 ) sous c E (x1 , x 2 ) = 0 x1 ,x 2

(1.129)

La Figure 1-19 montre la ligne de niveau cE = 0 en trait plein, le gradient cE dirigé vers l’intérieur de la courbe, les lignes de niveau de la fonction coût en trait pointillés et l’opposé du gradient −f dirigé vers la gauche (direction de plus forte descente). La fonction coût tracée ici est f(x1 , x 2 ) = x1 . Examinons les directions de descente et les directions admissibles. •

Les directions de descente (vérifiant f T d  0 ) sont orientées vers la gauche.



T Sur la courbe cE = 0 , les directions admissibles sont tangentes : cE d = 0 .

Au point x* vérifiant la condition KKT : f (x*) + cE (x*) = 0 , aucune direction de descente non nulle n’est admissible.

Figure 1-19 : Coût linéaire - Une contrainte égalité

72

Techniques d’optimisation

Problème avec une contrainte inégalité min f (x1 , x 2 ) sous c I (x1 , x 2 )  0 x1 ,x 2

(1.130)

La Figure 1-20 montre la région admissible cI  0 limitée par la ligne de niveau cI = 0 et le gradient cI dirigé vers l’extérieur de la courbe (sens c I croissant). La fonction coût est la même que précédemment : f(x1 , x 2 ) = x1 . Examinons les directions de descente et les directions admissibles. •

Les directions de descente (vérifiant f T d  0 ) sont orientées vers la gauche.



À l’intérieur de la région admissible cI  0 , toutes les directions sont admissibles.



À la frontière de la région admissible cI = 0 , les directions admissibles sont T tangentes ou intérieures : cI d  0 .

Au point x* vérifiant la condition KKT : f (x*) + cI (x*) = 0 , avec   0 , aucune direction de descente non nulle n’est admissible.

Figure 1-20 : Coût linéaire - Une contrainte inégalité

Optimisation continue

73

Problème avec deux contraintes inégalité c (x , x )  0 min f (x1 , x 2 ) sous  I1 1 2 x1 ,x 2 c I2 (x1 , x 2 )  0

(1.131)

La région admissible est l’intersection des régions cI1  0 et cI2  0 (Figure 1-21). Elle est limitée par les courbes cI1 = 0 et cI2 = 0 . La fonction coût est la même que précédemment : f(x1 , x 2 ) = x1 . Examinons les directions de descente et les directions admissibles. •

Les directions de descente (vérifiant f T d  0 ) sont orientées vers la gauche.



À l’intérieur de la région admissible, toutes les directions sont admissibles.



T À la frontière cI1 = 0 , les directions admissibles vérifient : cI1d  0 .



T À la frontière cI2 = 0 , les directions admissibles vérifient : cI2 d  0 .

Au point x* vérifiant la condition KKT : f (x*) + 1cI1 (x*) + 2cI2 (x*) = 0 avec 1  0 , 2  0 , aucune direction de descente non nulle n’est admissible.

Figure 1-21 : Coût linéaire - Deux contraintes inégalité

74

Techniques d’optimisation

Les illustrations précédentes supposent une fonction coût linéaire dont les lignes de niveau sont des droites parallèles. Dans le cas plus général, la fonction coût a un minimum en x0 entouré par des lignes de niveau concentriques. Celles-ci peuvent être approchées par un modèle quadratique formé à partir du développement de Taylor à l’ordre 2 au voisinage de x 0. La Figure 1-22 illustre le cas d’une contrainte inégalité cI  0 . Au point x* vérifiant les conditions KKT, le gradient f est colinéaire et opposé à cI . En ce point, la frontière de la région admissible cI = 0 est tangente à une ligne de niveau de la fonction coût. Cette ligne a le niveau le plus bas tout en ayant au moins un point dans la région admissible. Toutes les directions de descente (vérifiant f T d  0 ) conduisent à sortir de la région admissible.

Figure 1-22 : Coût quadratique - Une contrainte inégalité

Optimisation continue

75

La Figure 1-23 illustre le cas d’une contrainte égalité cE = 0 et d’une contrainte inégalité cI  0 . La région admissible est la portion de la courbe cE = 0 incluse dans la région cI  0 . Au point x* vérifiant les conditions KKT, la direction −f est combinaison linéaire de cE et cI avec un coefficient  positif sur cI . Le point x* est sur la ligne de niveau le plus bas ayant au moins un point sur la portion de courbe admissible.

Figure 1-23 : Coût quadratique - contrainte égalité et contrainte inégalité

76

Techniques d’optimisation

1.5.4 Problème linéaire-quadratique Un problème linéaire-quadratique standard est de la forme : minn x

avec A 

1 T x Qx + cT x 2 mn

, b

m

(1.132)

sous Ax = b

, c

n

, Q

n n

et Q supposée symétrique inversible.

Le lagrangien s’exprime avec le multiplicateur  

m

des contraintes égalité.

1 T x Qx + cT x + T (b − Ax) 2 Les conditions KKT d’ordre 1 donnent : L(x, ) =

(1.133)

Qx − AT  = −c  x = Q−1 (AT  − c)    Ax = b Ax = b

(1.134)

On résout en prémultipliant la première équation par A, puis en éliminant Ax.  = (AQ−1AT )−1 (AQ−1c + b)  −1 T −1 T −1 −1 −1  x = Q A (AQ A ) (AQ c + b) − Q c

(1.135)

Les conditions KKT d’ordre 2 s’expriment avec une base Z du noyau de A.

(d , Ad = 0

 dT Qd  0

)



ZT QZ  0

(1.136)

Ce résultat s’applique pour trouver la projection d’un point sur un hyperplan. Exemple 1-20 : Projection sur un hyperplan La projection de x0  n sur l’hyperplan d’équation Ax = b est le point xP de l’hyperplan le plus proche de x0 . Ce point est solution du problème : 1 2 minn x − x0 sous Ax = b x 2 Il s’agit d’un problème quadratique de la forme (1.132) avec Q = I , c = −x0 .

(

)

La solution est : xP = I − AT (AAT )−1 A x0 + AT (AAT )−1 b . On retrouve la formule (1.64) avec Y = AT . La matrice P = I − AT (AAT )−1 A est appelée matrice de projection sur l’hyperplan d’équation Ax = b .

Optimisation continue

77

1.5.5 Analyse de sensibilité Les multiplicateurs de Lagrange donnent des informations sur la sensibilité du coût lorsque le niveau de contrainte ou des paramètres de modèle changent. Sensibilité au niveau de contrainte Considérons un problème de minimisation sous contraintes d’égalité.

minn f (x) sous c(x) = 0

(1.137)

x

Supposons que (x*, *) vérifie les conditions KKT d’ordre 1 et donne un coût f*.

x L(x*, *) = 0 , c(x*) = 0 , f (x*) = f*

(1.138)

On considère le problème perturbé où le niveau de contrainte est c au lieu de 0.

minn f (x) sous c(x) = c

(1.139)

x

La solution de ce problème est notée x* +x et son coût optimal f * +f . On cherche à exprimer la variation du coût f en fonction de la variation de contrainte c . En développant le coût et les contraintes à l’ordre 1 : f (x * +x) = f (x*) + f (x*)T x = f (x*) + f f = f (x*)T x (1.140)    T T c(x * +x) = c(x*) + c(x*) x = c(x*) + c c = c(x*) x

puis en combinant les deux relations avec le multiplicateur  * , on obtient :

(

)

f +  *T c = f (x*)T +  *T c(x*)T x = x L(x*, *)T x = 0 (1.141) car le gradient du lagrangien est nul en (x*, *) . On exprime ainsi f en fonction de c . m

f = − *T c = −  j * cj j=1

(1.142)

Si le problème est soumis à m contraintes égalité, le multiplicateur j * représente la sensibilité du coût optimal à une variation de la contrainte numéro j.

78

Techniques d’optimisation

Remarque 1 Le multiplicateur donne l’opposé de la sensibilité. Ceci explique que l’on adopte parfois la convention de signe opposé pour le lagrangien : L(x,λ) = f(x) − λT c(x). Remarque 2 Les contraintes inégalité inactives ont un multiplicateur nul. Le coût optimal est en effet indifférent à une variation du niveau de la contrainte, dès lors que cette variation c est faible et vérifie : c(x*) + c  0 ( la contrainte reste inactive). Les multiplicateurs de Lagrange donnent ainsi la sensibilité de l’optimum par rapport au niveau des contraintes. Si la variation est faible, il n’est pas nécessaire de résoudre à nouveau le problème d’optimisation pour connaître le coût. La Figure 1-24 illustre l’effet sur la solution d’une variation de niveau de contrainte.

Figure 1-24 : Sensibilité au niveau de contrainte

Optimisation continue

79

Exemple 1-21 : Problème de la boîte (sensibilité) Appliquons le calcul de sensibilité (1.142) au problème de la boîte (Exemple 1-18) formulé comme : min f (h, r) = r2 + rh sous c(h, r) = r 2 h − 2v0 = 0 h,r

1

1



La solution pour un volume v0 : r = v03 , h = 2v03 ,  = −v0 donne le coût minimal :

1 3

2

f = 3v03 .

Supposons que le volume demandé varie de v0 et calculons la variation de coût, d’une part directement, d’autre part en utilisant le multiplicateur de la contrainte. Calcul direct 2

On dérive directement la formule : f = 3v03 , ce qui donne :

f =

1 − df v0 = 2v0 3 v0 . dv0

Calcul avec le multiplicateur Ce calcul se base sur la formule (1.142) rappelée ici : f = −c . La variation de volume v0 produit une variation c du niveau de la contrainte. La nouvelle contrainte est formulée comme : r2 h − 2(v0 + v0 ) = 0  r2 h − 2v0 = 2v0  c(r,h) = c = 2v0 −

1

La formule (1.142) donne alors la variation de coût : f = −c = v0 3 (2v0 ) . On retrouve bien la variation obtenue par calcul direct.

80

Techniques d’optimisation

Sensibilité à un paramètre de modèle Considérons maintenant un problème avec des paramètres de modèle .

minn f (x, ) sous c(x, ) = 0

(1.143)

x

Supposons que (x*, *) vérifie les conditions KKT d’ordre 1 et donne un coût f*.

x L(x*, *, ) = 0 , c(x*, ) = 0 , f (x*, ) = f*

(1.144)

On considère le problème perturbé où le paramètre de modèle devient  +  .

minn f (x,  + ) sous c(x,  + ) = 0

(1.145)

x

La solution de ce problème est notée x* +x et son coût optimal f * +f . On cherche à exprimer la variation du coût f en fonction de la variation de paramètre  . En développant le coût et les contraintes à l’ordre 1 en x et en  : f (x * +x,  + ) = f (x*, ) + x f (x*, )T x + f (x*, )T   = f (x*, ) + f   T T c(x * +x,  + ) = c(x*, ) + x c(x*, ) x + c(x*, )  =0  

(1.146)

et en utilisant c(x*, ) = 0 dans la deuxième équation, on obtient : x f (x*, )T x +  f (x*, )T  = f  T T x c(x*, ) x +  c(x*, )  = 0

(1.147)

Ces deux relations sont combinées avec le multiplicateur  * pour faire apparaître le lagrangien.

(  f (x*, ) + (  f (x*, ) x



T T

) )  = f

+  *T x c(x*, )T x T

T

+  *  c(x*, ) T

(1.148)

T

 x L(x*, *, ) x +  L(x*, *, )  = f

Le gradient du lagrangien par rapport à x étant nul en (x*, *) , il reste : f =  L(x*, *, )T 

(1.149)

On obtient ainsi la variation f en fonction de la variation du paramètre  .

Optimisation continue

81

Exemple 1-22 : Tir balistique (sensibilité) La portée balistique en terre plate et gravité constante est donnée par :

v2 sin 2 g où g est la gravité, v la vitesse initiale et  la pente initiale. R=

Cherchons la vitesse minimale permettant d’atteindre une portée donnée R c. v2 sin 2 − Rc = 0 min f (v,  ) = v sous c(v,  ) = v,  g

 v2 sin 2  Le lagrangien est : L(v, , ) = v +   − Rc  . g   g + 2vsin 2  = 0  Les conditions KKT : 2v2 cos 2  = 0 2   v sin 2  − gRc = 0  = 45 deg 1 g donnent la solution :  . et  = − 2 Rc v = gRc On retrouve le résultat d’un tir à 45 deg qui maximise la portée à vitesse donnée. Calculons la sensibilité par rapport à la portée en utilisant la formule (1.142). f v 1 g = −  = c Rc 2 Rc Calculons la sensibilité par rapport à la gravité en utilisant la formule (1.149).  v2 sin 2  f v   v2 sin 2 1 Rc =  L  = − Rc   = − = v +    g g  g g2 2 g  

On retrouve dans les deux cas les sensibilités que l’on obtiendrait en dérivant directement la solution : v = gRc .

82

Techniques d’optimisation

1.6 Conclusion 1.6.1 Les points essentiels •

On peut rarement garantir que l’on a trouvé l’optimum global d’un problème d’optimisation non linéaire.



Les conditions KKT (Karush, Kuhn et Tucker) permettent de déterminer un optimum local en résolvant un système d’équations et d’inéquations.



La résolution est simplifiée si l’on connaît les contraintes actives (qui peuvent être transformées en égalités) et inactives (qui peuvent être ignorées).



La mise à l’échelle des variables et des fonctions (en les multipliant par un facteur pour les ramener vers l’unité) réduit les erreurs numériques.



Un incrément relatif égal à la racine de la précision machine (10 −8 en double précision) est conseillé pour calculer des dérivées par différences finies.

1.6.2 Pour aller plus loin •

Programmation mathématique (M. Minoux, Lavoisier 2008, 2 e édition) Les sections 4.1, 4.2 et 6.2 présentent les conditions KKT et la théorie de la dualité (point-selle) avec les démonstrations de la plupart des résultats.



Introduction à l’optimisation différentiable (M. polytechniques et universitaires normandes 2006)

Bierlaire,

Presses

Le chapitre 3 présente les notions liées aux contraintes. Le chapitre 6 présente les conditions KKT avec leur démonstration. De nombreux exemples sont traités en détail au fur et à mesure du texte. •

Les mathématiques du mieux-faire (J.B. Hiriart-Urruty, Ellipses 2008) Le premier tome explique pas à pas l’établissement des conditions KKT avec toutes les démonstrations.



Optimisation continue (F.J. Bonnans, Dunod 2006) Le livre est consacré à la théorie de l’optimisation continue. Le chapitre 3 présente les conditions d’optimalité avec toutes les démonstrations.

Optimisation continue



83

Numerical optimization (J. Nocedal, S.J. Wright, Springer 2006) Le chapitre 8 présente les méthodes de dérivation numérique et les principes de la dérivation automatique. Le chapitre 12 présente les conditions KKT avec les démonstrations détaillées.



Practical optimization (P.E. Gill, W. Murray, M.H. Wright, Elsevier 2004) La section 2.1 et les chapitres 7 et 8 analysent en détail les difficultés liées aux erreurs numériques. De nombreux conseils pratiques sont donnés à ce sujet pour l’implémentation des algorithmes.



Practical methods of optimization (R. Fletcher, Wiley 1987, 2nd edition) Le chapitre 9 présente les conditions KKT avec leur démonstration.

Optimisation sans gradient

85

2. Optimisation sans gradient Ce chapitre est consacré aux méthodes d’optimisation sans gradient. Ces méthodes s’appliquent en particulier aux problèmes difficiles comportant des variables discrètes ou présentant de nombreux minima locaux. La section 1 présente quelques techniques de reformulation et introduit les méthodes pour l’optimisation difficile. Ces méthodes peuvent être locales ou globales, déterministes ou aléatoires. La section 2 concerne l’optimisation unidimensionnelle basée sur des méthodes de dichotomie. La stratégie optimale est la méthode du nombre d’or qui minimise le nombre d’évaluations de la fonction. La section 3 présente l’algorithme DIRECT qui est une méthode d’optimisation multidimensionnelle déterministe basée sur des divisions d’intervalles. Cette méthode permet de localiser le minimum global d’une fonction continue. La section 4 présente l’algorithme de Nelder-Mead qui est une méthode déterministe d’exploration locale. Cette méthode consiste à déplacer un ensemble de points suivant les valeurs décroissantes de la fonction. Bien que n’ayant pas de justification théorique, elle s’avère très performante pour de nombreuses applications. Les sections 5 à 11 sont consacrées aux méthodes comportant un aspect aléatoire. Ces méthodes sont généralement appelées métaheuristiques, car elles reposent sur des principes de recherche empirique (« heuristique ») applicables à une grande variété de problèmes (« méta »). Ces métaheuristiques peuvent être de nature locale ou globale, et s’appliquer préférentiellement à des problèmes discrets ou continus. Parmi les principales métaheuristiques, on trouve le recuit simulé, les essaims de particules, les colonies de fourmis et les algorithmes évolutionnaires. La présentation de ces méthodes dans les sections 5 à 11 se limite à l’essentiel et s’inspire de Métaheuristiques pour l’optimisation difficile (J. Dréo, A. Pétrowski, P. Siarry, E. Taillard, Eyrolles 2003). Le lecteur désireux d’approfondir le sujet des métaheuristiques trouvera dans ce livre de référence une présentation très claire des principes et possibilités d’application.

86

Techniques d’optimisation

2.1 Optimisation difficile Un problème d’optimisation est considéré comme difficile s’il comporte des variables discrètes et/ou s’il présente un nombre inconnu de minima locaux. Cette section présente quelques techniques de reformulation et introduit les méthodes sans gradient adaptées à l’optimisation difficile.

2.1.1 Variables discrètes Considérons la minimisation d’une fonction d’une seule variable ne prenant qu’un nombre fini de valeurs appartenant à l’ensemble D = d1 ; d 2 ; ;d p  . min f (x)

(2.1)

xD

Ce problème peut être abordé par pénalisation en minimisant la fonction f . min f (x) = f(x) +  C(x)

(2.2)

x

La fonction de pénalisation C s’annule lorsque x  D et prend une valeur positive lorsque x  D . Pour que cette fonction soit dérivable, on peut prendre une pénalisation polynomiale de la forme :

C(x) = −(x − dj )(x − dj+1 ) si dj  x  dj+1

(2.3)

ou une pénalisation trigonométrique de la forme :  x − dj C(x) = sin    d j+1 − d j 

  

si d j  x  d j+1

(2.4)

Le coefficient de pénalisation   0 pondère la fonction coût f et l’appartenance de x à l’ensemble fini D. La fonction f présente des minima locaux autour de chaque valeur d j . Ces minima sont d’autant plus prononcés que la pénalisation  est grande. Exemple 2-1 : Pénalisation d’une variable discrète

8 3 4 2 On cherche le minimum de la fonction : f(x) = x − x − 2x + 8x . 3

Optimisation sans gradient

87

L’ensemble de définition est l’ensemble discret : D = −2; −1;0;1;2;3 . La Figure 2-1 montre en trait plein la fonction f à minimiser et en trait pointillé la fonction f avec pénalisation polynomiale ( = 30) . La Figure 2-2 montre la fonction f avec pénalisation trigonométrique ( = 10) . On vérifie que les fonctions pénalisées coïncident avec la vraie fonction aux valeurs admissibles de x. La pénalisation crée des lobes entre ces valeurs. Les lobes sont d’autant plus prononcés que la pénalisation est forte.

Figure 2-1 : Pénalisation polynomiale avec  = 30

Figure 2-2 : Pénalisation trigonométrique avec  = 10

88

Techniques d’optimisation

Cette technique peut être appliquée à un problème mêlant des variables discrètes et des variables réelles. La fonction de pénalisation globale est alors la somme de fonctions du type (2.3) ou (2.4) associées à chaque variable discrète. La fonction pénalisée f présentant un grand nombre de minima locaux, il faudra utiliser de préférence une méthode globale pour la minimiser.

2.1.2 Minima locaux Considérons la minimisation d’une fonction de n variables réelles.

minn f (x)

(2.5)

x

Lorsque la fonction à minimiser présente un nombre inconnu de minima locaux, il est possible d’éliminer progressivement ces minima par un processus de dilatation. Supposons qu’un minimum local a déjà été localisé en x m donnant la valeur fm = f (x m ) pour la fonction coût. On définit alors la fonction dilatée F suivante. c2  f(x) + c1 x − x m + f(x) − f F(x) =  m f(x) 

si f(x) > f m

(2.6)

si f(x)  f m

La fonction dilatée F conserve tous les minima locaux de f inférieurs à f m . •

Le terme en c1 a pour objectif de pénaliser les minima locaux éloignés de x m et supérieurs à f m . Le voisinage de x m est peu modifié.



Le terme en c 2 a pour objectif de pénaliser la fonction en x m (valeur infinie) et au voisinage de x m afin d’explorer des régions plus éloignées.

En réglant c1 et c 2 , on favorise l’exploration des régions où f (x)  fm . La minimisation de la fonction dilatée permet de trouver un nouveau minimum local de f, de niveau inférieur à f m . En répétant la procédure, on peut localiser un ensemble de minima locaux décroissants et finalement isoler le minimum global.

Optimisation sans gradient

89

Exemple 2-2 : Élimination des minima locaux par dilatation On cherche le minimum de la fonction de Griewank à une variable :

f(x) =

x2 − cos x + 1 4000

Cette fonction est tracée sur la Figure 2-3. Elle admet des minima locaux aux points x tels que : sin x +

x =0. 2000

Pour x 2000 , les minima locaux sont proches de k.2 . Le minimum global est en x = 0 . Les valeurs des minima locaux sont données dans le Tableau 2-1.

Figure 2-3 : Fonction de Griewank

xm

−25,12 −18,84 −12,56 −6,28

fm

1,578

0,887

0,394

0,098

0,00

6,28

12,56

18,84

25,12

0,0000 0,0986 0,3946 0,8878

1,578

Tableau 2-1 : Valeurs des minima locaux

Supposons que l’on ait trouvé le minimum local situé en xm = 6,28 et de valeur fm = 0,0986 . On cherche un minimum local meilleur (s’il existe).

90

Techniques d’optimisation

En appliquant le premier terme de dilatation avec un coefficient c1 = 2 , on pénalise tous les minima locaux supérieurs à fm = 0,0986 . Le minimum local connu en xm = 6,28 et le minimum global (inconnu) en xm = 0 sont inchangés par cette première dilatation. La fonction dilatée prend l’allure présentée sur la Figure 2-4.

Figure 2-4 : Effet de la première dilatation

En appliquant le deuxième terme de dilatation avec un coefficient c2 = 5 , on pénalise fortement le minimum local connu en xm = 6,28 . Le minimum global (inconnu) en xm = 0 est inchangé. La fonction dilatée prend l’allure présentée sur la Figure 2-5. La Figure 2-6 montre un zoom de la fonction dilatée sur l’intervalle  −5 ; 10 . On observe que les deux dilatations ont créé un minimum prononcé en xm = 0 . Une minimisation de cette fonction dilatée en partant du point connu en xm = 6,28 permet de trouver le minimum global.

Optimisation sans gradient

Figure 2-5 : Effet de la deuxième dilatation

Figure 2-6 : Fonction dilatée et minimum global

91

92

Techniques d’optimisation

La fonction dilatée (2.6) s’écrit sous la forme : F(x) = f(x) +

 c2 1 1 + sgn f(x) − f m )  c1 x − x m + (  2 f(x) − f m 

où la fonction signe est définie par : sgn(y) =



  

(2.7)

+1 si y  0 . −1 si y  0

La fonction F est discontinue aux points où f (x) = fm . Pour certains algorithmes, il est préférable que la fonction soit continue. Ceci est réalisable en approximant la fonction signe par une fonction sigmoïde de la forme :

sgn(y) 

2 −1 1 + e− αy

ou

sgn(y)  tanh(βy) =

eβy − e−βy eβy + e−βy

(2.8)

La fonction sigmoïde est représentée sur la Figure 2-7. Elle est d’autant plus raide (et proche de la fonction signe) que le coefficient  ou  est grand.

Figure 2-7 : Fonction sigmoïde Les minima locaux peuvent provenir de la fonction coût elle-même, mais aussi des contraintes qui découpent l’espace en régions admissibles présentant des minima distincts. L’emploi d’une méthode de pénalisation (section 4.2) est également susceptible de créer des minima locaux au voisinage des points admissibles.

Optimisation sans gradient

93

2.1.3 Méthodes locales et globales Les méthodes avec gradient (présentées aux chapitres 3 et 4) permettent de déterminer un minimum précis au voisinage d’un point initial, à condition que la fonction coût soit différentiable. Il est fréquent qu’un problème différentiable théoriquement ne le soit pas numériquement. Lorsqu’un logiciel de simulation comporte des branchements conditionnels avec des seuils, des interpolations ou du bruit numérique (dû à un grand nombre d’opérations), les sorties calculées sont non dérivables, voire non continues. Les méthodes avec gradient sont réservées à des problèmes maîtrisés, en termes de processus de calcul (continuité, dérivabilité) et d’existence de minima locaux. Les méthodes sans gradient ont pour objectif de minimiser des fonctions non dérivables ou non continues, de traiter des variables continues ou discrètes et d’explorer largement le domaine de recherche pour localiser le minimum global. Ces méthodes sont locales ou globales, déterministes ou aléatoires, et s’appliquent à des problèmes continus ou non. Un problème d’optimisation est dit continu si la fonction coût et les variables sont continues. Méthodes locales Les méthodes locales font évoluer un point central en explorant son voisinage. Leur résultat est une solution unique qui dépend du point initial et de la zone de recherche. Ces méthodes sont dites « locales », car l’exploration est réalisée autour du point central. Elles incluent cependant des mécanismes leur permettant d’échapper à des minima locaux et éventuellement de trouver un minimum global. Les principales méthodes locales sont les suivantes. •

La méthode de Nelder-Mead est déterministe et s’applique à des problèmes continus.



La méthode Affine Shaker ressemble à la méthode de Nelder-Mead avec une composante aléatoire.



La méthode CMAES (Covariance Matrix Adaptation Evolution Strategy) basée sur une exploration statistique du voisinage s’applique à des problèmes continus.



La méthode du recuit simulé (Simulated Annealing) basée sur une exploration aléatoire du voisinage s’applique à des problèmes continus et discrets.



La méthode de recherche avec tabou (Tabu Search) basée sur une exploration aléatoire du voisinage s’applique à des problèmes discrets.

94

Techniques d’optimisation

Méthodes globales Les méthodes globales font évoluer un ensemble de points dans une zone de recherche étendue. Leur résultat est un ensemble de solutions correspondant à des minima locaux. Ces méthodes sont dites « globales », car elles explorent simultanément différentes zones du domaine de recherche. La plupart de ces méthodes sont des métaheuristiques. Une heuristique est une technique de recherche empirique spécifique à un problème d’optimisation donné. Une « méta » heuristique est une technique de recherche empirique générale pouvant s’appliquer indifféremment à tout problème d’optimisation. Les métaheuristiques font évoluer un ensemble de points appelés individus formant une population. L’évolution des individus suit des règles inspirées d’un phénomène naturel. Les interactions entre individus comportent des perturbations aléatoires favorisant d’une part la diversification (pour répartir les individus sur tout le domaine de recherche), d’autre part l’intensification (pour concentrer des individus dans les zones intéressantes). Les principales méthodes globales sont les suivantes. •

La méthode DIRECT (Dividing Rectangles) est déterministe et s’applique à problèmes continus.



La méthode des essaims de particules (Particle Swarm) est une métaheuristique inspirée des mouvements de groupes (abeilles, poissons, oiseaux).



La méthode des colonies de fourmis (Ant Colony) est une métaheuristique inspirée du comportement d’exploration des fourmis.



La méthode des algorithmes génétiques ou évolutionnaires (Genetic Algorithm) est une métaheuristique inspirée de la loi de l’évolution naturelle de Darwin.

La Figure 2-8 ci-après schématise le principe général des métaheuristiques.

Optimisation sans gradient

95

Population de p individus

(Xi )i =1 à p p = 10 à 100 (selon algorithme) Exploration du voisinage par q (q  p) individus

(Yj ) j=1 à q Sélection de la nouvelle population parmi les individus

(Xi )i =1 à p et (Yj ) j=1 à q Arrêt sur nombre d’itérations N

Figure 2-8 : Principe des métaheuristiques

Les sections suivantes présentent les différentes méthodes d’optimisation sans gradient, en commençant par les problèmes continus à une seule variable.

96

Techniques d’optimisation

2.2 Optimisation unidimensionnelle Une optimisation unidimensionnelle (une seule variable) peut s’effectuer par dichotomie en partageant l’intervalle à chaque itération. L’objectif est de réaliser le découpage pour minimiser le nombre d’évaluations de la fonction.

2.2.1 Partage d’intervalles Considérons la minimisation d’une fonction d’une seule variable sur un intervalle.

min f (x)

x[a ,d]

(2.9)

La fonction f est supposée continue sur l’intervalle a;d  . Elle admet donc un minimum sur l’intervalle (théorème de Weierstrass). Il peut éventuellement exister plusieurs minima locaux comme illustré sur la Figure 2-9.

Figure 2-9 : Minimisation d’une fonction d’une variable La recherche du minimum s’effectue par dichotomie. L’intervalle a;d  est divisé en trois sous-intervalles en choisissant deux points intermédiaires b et c comme sur la Figure 2-10 ci-après. La fonction est évaluée aux points a, b, c et d. •

Si f (b)  f (c) , on peut supposer que le minimum se situe vers b. On réduit alors l’intervalle de recherche à a;c .



Si f (b)  f (c) , on peut supposer que le minimum se situe vers c. On réduit alors l’intervalle de recherche à  b;d  .

Optimisation sans gradient

97

Figure 2-10 : Réduction de l’intervalle de recherche

2.2.2 Positionnement des points L’efficacité de la dichotomie dépend du choix des points b et c. Leur placement a pour objectif, d’une part de réduire l’intervalle au maximum à chaque itération, d’autre part de calculer la fonction f le moins souvent possible. L’intervalle initial a;d  a pour longueur : 1 = d − a .

L’intervalle sélectionné est soit a;c , soit  b;d  . Pour maîtriser la réduction de l’intervalle, on impose que ces deux intervalles aient la même longueur 2 .

2 = c − a = d − b

(2.10)

Les points b et c sont placés symétriquement par rapport au milieu de a;d  , comme sur la Figure 2-11 page suivante. On souhaite par ailleurs n’évaluer qu’un seul nouveau point e à l’itération suivante. Supposons que l’intervalle retenu soit a;c . Ce point e devra alors vérifier, comme montré sur la Figure 2-11 :

3 = b − a = c − e

(2.11)

Les intervalles successifs 1 = d − a , 2 = d − b et 3 = b − a sont liés par :

1 = 2 + 3

(2.12)

On construit ainsi une suite d’intervalles décroissants dont les longueurs vérifient :

k = k +1 + k +2

(2.13)

98

Techniques d’optimisation

Figure 2-11 : Intervalles successifs Supposons que l’on effectue N itérations en partant d’un intervalle de longueur  0 pour arriver à un intervalle de longueur  N . Définissons la suite réelle (Fk )k =0 à N à partir des rapports de longueur : FN − k =

k , k=0à N N

(2.14)

En divisant la relation (2.13) par  N , puis en posant n = N − k , on obtient :

FN−k = FN−k −1 + FN−k −2

 Fn = Fn −1 + Fn −2 , n = 2 à N

(2.15)

La suite (Fn ) est complètement définie par ses deux premiers termes. •

Le premier terme vaut d’après (2.14) : F0 = 1 .



Le deuxième terme F1 peut être choisi librement et détermine les suivants.

L’objectif est de minimiser le nombre d’itérations N pour atteindre une précision donnée  en partant d’un intervalle de longueur  0 . Le nombre N d’itérations à réaliser est déterminé par : N =

0  FN

 FN 

0 

(2.16)

Il faut donc choisir F1 pour que la suite (Fn ) croisse le plus rapidement possible.

Optimisation sans gradient

99

La valeur maximale de F1 =

 N −1 est 2 (en prenant b = c au milieu de l’intervalle). N

Les nombres (Fn ) forment alors la suite de Fibonacci (1, 2, 3, 5, 8, 13, 21, …) et la méthode de Fibonacci consiste à placer les points selon le rapport : F k = N−k  k +1 FN − k −1

(2.17)

Les positions des points et le rapport de réduction de l’intervalle dépendent du nombre total d’itérations à réaliser et du numéro de l’itération. On observe que le rapport (2.17) tend vers une limite  lorsque k →  . En effet, en divisant (2.13) par k +1 , on a :  k =  k +1 +  k + 2



k  = 1 + k+2  k +1  k +1

⎯⎯⎯ →  = 1+ k →

1 

(2.18)

Le rapport de réduction limite  est égal au nombre d’or (ainsi appelé, car il donne une proportion géométrique proche de 16/9 agréable à l’œil humain). =

1+ 5  1,618034 2

(2.19)

2.2.3 Méthode du nombre d’or La méthode du nombre d’or consiste à simplifier le placement des points en imposant à chaque itération le même rapport de réduction. k = k +1

(2.20)

Cette méthode n’est pas optimale en nombre d’itérations, mais elle est plus simple à mettre en œuvre que la méthode de Fibonacci tout en restant très performante. Le rapport de réduction de l’intervalle après N itérations vaut : •

0 = FN N



0 = N pour la méthode du nombre d’or. N

pour la méthode de Fibonacci ;

Le Tableau 2-2 page suivante compare le nombre d’évaluations nécessaires pour atteindre différents rapports de réduction de l’intervalle.

100

Techniques d’optimisation Rapport de réduction de l’intervalle 10−2 10−3 10−4 10−5 10−6

Nombre d’itérations par Fibonacci 11 15 20 25 30

Nombre d’itérations par nombre d’or 13 18 22 27 31

Tableau 2-2 : Nombre d’itérations par Fibonacci et nombre d’or L’algorithme de la méthode du nombre d’or est le suivant. Algorithme du nombre d’or •

Initialisation

Choisir l’intervalle de recherche a;d  de longueur : 1 = d − a b = a + r2Δ1 Placer les points b et c :  c = a + rΔ1

avec r =

1 5 −1 =  0,618034  2

Évaluer f (a),f (b),f (c),f (d) . •

Itérations

d  c  c  b Si f(b) < f(c), remplacer d, c, 1 et b par :  et calculer f(b). Δ  Δ2 = rΔ1  1 2  b = a + r Δ1 a  b  b  c Si f(c) < f(b), remplacer a, b, 1 et c par :  et calculer f(c). Δ  Δ2 = rΔ1  1  c = a + rΔ1 •

Arrêt

Sur une précision x sur la variable : 1 = d − a  x Sur une précision  f sur la fonction : f (c) − f (b)  f

Optimisation sans gradient

101

Exemple 2-3 : Méthode du nombre d’or

  On cherche le minimum de la fonction f(x) = − x cos x dans l’intervalle 0 ;  .  2 Les cinq premières itérations de la méthode du nombre d’or sont présentées cidessous. Les valeurs de a, b, c, d sont indiquées au-dessous de la ligne, les valeurs de f(a), f(b), f(c), f(d) au-dessus. Le point sélectionné (b ou c) est encadré et une flèche indique sa position à l’itération suivante. Itération 1

Itération 2

Itération 3

Itération 4

Itération 5

Le minimum approché après 5 itérations est : x  0,8832 → f (x)  −0,5606 à comparer à la solution exacte : x  0,8603 → f (x)  −0,5611

La méthode du nombre d’or progresse d’un chiffre significatif sur la solution 5 toutes les cinq itérations (  10) . Il est possible d’accélérer la convergence par interpolation quadratique.

102

Techniques d’optimisation

2.2.4 Interpolation quadratique Supposons que la fonction est connue en trois points x1, x2, x3 et prend pour valeurs respectives y1, y2, y3. Ces points sont représentés sur la Figure 2-12.

Notations y = f (x  1 1) sij = x i − x j    y 2 = f (x 2 ) et  2 2   y = f (x ) rij = x i − x j 3  3

Figure 2-12 : Interpolation quadratique Le polynôme q(x) de degré 2 passant par les trois points (x1; y1 ) , (x2 ; y2 ) , (x3 ; y3 ) a pour expression : q(x) = y1

(x − x2 )(x − x3 ) (x − x3 )(x − x1 ) (x − x1 )(x − x2 ) + y2 + y3 (2.21) (x1 − x2 )(x1 − x3 ) (x2 − x3 )(x2 − x1 ) (x3 − x1 )(x3 − x2 )

Sa dérivée donnée par : q '(x) = y1

(2x − x2 − x3 ) (2x − x3 − x1 ) (2x − x1 − x2 ) + y2 + y3 (2.22) (x1 − x2 )(x1 − x3 ) (x2 − x3 )(x2 − x1 ) (x3 − x1 )(x3 − x2 )

s’annule en : xm =

1 y1r23 + y2 r31 + y3 r12 2 y1s23 + y2s31 + y3s12

sij = xi − x j avec  2 2 rij = xi − x j

(2.23)

En calculant la valeur de la fonction f en ce point : ym = f (xm ) et en la comparant aux valeurs y1, y2, y3, on détermine le nouvel intervalle de recherche. Le Tableau 2-3 ci-après montre l’ensemble des situations pouvant être rencontrée, avec en première ligne les quatre possibilités de localisation de x m calculé par (2.23) et en première colonne les quatre possibilités de localisation du minimum parmi les valeurs y1, y2, y3, ym.

Optimisation sans gradient

103

Les cas de divergence correspondent à un extremum x m situé hors de l’intervalle [x1; x3 ] et une courbure négative de la fonction q(x). L’annulation de la dérivée (2.22) peut en effet correspondre à un maximum. Cette méthode d’interpolation n’est donc pas aussi robuste que le nombre d’or, en particulier si l’allure de la fonction est mal connue et l’intervalle de recherche est grand. Elle est à utiliser de préférence en fin de convergence pour améliorer la précision de la solution. Minimum observé

xm < x1

x1 < xm < x2

x2 < xm < x3

x3 < xm

en ym

(xm ; x1 ; x2)

(x1 ; xm ; x2)

(x2 ; xm ; x3)

(x2 ; x3 ; xm)

en y1

(xm ; x1 ; x2)

(x1 ; xm ; x2)

(x1 ; x2 ; xm)

divergence

en y2

divergence

(xm ; x2 ; x3)

(x1 ; x2 ; xm)

divergence

en y3

divergence

(xm ; x2 ; x3)

(x2 ; xm ; x3)

(x2 ; x3 ; xm)

Tableau 2-3 : Réduction d’intervalle par interpolation quadratique

104

Techniques d’optimisation

Exemple 2-4 : Méthode d’interpolation quadratique On cherche le minimum de la fonction f (x) = (x − 1)(x + 1)2 dans l’intervalle [0 ; 2] . Les trois points initiaux sont en x1 = 0 , x2 = 1 , x3 = 2 . Les cinq premières itérations de la méthode d’interpolation quadratique sont présentées ci-dessous. Les valeurs de x sont indiquées au-dessous de la ligne, les valeurs de f(x) au-dessus. Le point xm interpolé (2.23) est en gras, le minimum est encadré et une flèche indique sa position à l’itération suivante.

Itération 1

Itération 2

Itération 3

Itération 4

Itération 5

Le minimum approché après 5 itérations est : x  0,3333 → f (x)  −1,1852 Il est très proche de la solution exacte :

x=

1 3

→ f (x) = −

32 27

Optimisation sans gradient

105

2.3 Méthode DIRECT La méthode DIRECT (DIviding RECTangles, 1993) réalise une optimisation multidimensionnelle par partage d’intervalles. Cette méthode déterministe identifie plusieurs minima locaux et permet éventuellement de trouver le minimum global.

2.3.1 Fonction lipschitzienne On considère la minimisation d’une fonction sur un domaine borné D  min f (x)

n

.

(2.24)

xD

La fonction f est supposée lipschitzienne sur cet intervalle. Elle vérifie :

K  0 , x, y  D , f (y) − f (x)  K y − x

(2.25)

La constante de Lipschitz (inconnue) de f sur le domaine D est le plus petit réel K vérifiant (2.25). Cette hypothèse plus forte que la continuité est vérifiée par la plupart des fonctions rencontrées dans les applications. La Figure 2-13 montre les deux demi-droites de pente K minorant la fonction à partir du point c.

Figure 2-13 : Fonction lipschitzienne Le domaine D est un pavé ou hyperrectangle de est notée d. À partir d’un point quelconque c 

n n

dont la plus grande dimension où la fonction vaut f(c), la

106

Techniques d’optimisation

propriété (2.25) permet d’encadrer f(x) sur tout le domaine D. x  D , f (x) − f (c)  K x − c  Kd  f (c) − Kd  f (x)  f (c) + Kd

(2.26)

En particulier f (c) − Kd est un minorant de la fonction sur D.

Exemple 2-5 : Minorant d’une fonction lipschitzienne   1  Soit la fonction f(x) = sin  4  x −   + 6x2 + 2 dans l’intervalle D = [0 ; 1] . 2      1  Sa dérivée f '(x) = 4 cos  4  x −   + 12x est bornée par f '(x)  4 + 12 sur 2    l’intervalle D = [0 ; 1] . Cette fonction est donc lipschitzienne et admet par exemple K = 25 comme constante de Lipschitz sur D = [0 ; 1] . En se plaçant au point c = 0,5 → f (c) = 3,5 , avec la demi-longueur d’intervalle d = 0,5 comme représenté ci-dessous, on a comme minorant de f :

f (x)  f (c) − Kd = 3,5 − 25  0,5 = − 9

La méthode DIRECT utilise la propriété (2.26) pour partager le domaine en détectant les zones plus intéressantes. L’objectif est de trouver le minimum global de la fonction sur un pavé de n . L’algorithme est présenté en dimension 1, puis généralisé en dimension n.

Optimisation sans gradient

107

2.3.2 Algorithme en dimension 1 Considérons une fonction f d’une variable x définie sur un intervalle D. La fonction est supposée lipschitzienne de constante K (inconnue) sur D. L’intervalle D est divisé en trois intervalles égaux D1, D2, D3 comme sur la Figure 2-14. On associe à chaque intervalle Dj de centre cj et de demi-longueur dj : - la valeur de f au centre : fj = f (cj ) ; - un minorant de f sur Dj : fbj = fj − Kdj . La valeur de K sera déterminée plus bas à partir des points connus. Le « meilleur » sous-intervalle est celui ayant le minorant le plus faible. On peut en effet supposer que cet intervalle est celui qui a le plus de chance de contenir le minimum de f. Sur la Figure 2-14, il s’agirait de l’intervalle D1.

Figure 2-14 : Estimation du minorant par intervalle Le meilleur intervalle D1 est sélectionné pour être divisé à son tour en trois intervalles égaux. À l’issue de ce découpage, on dispose de cinq intervalles dont on peut estimer les minorants avec la constante K. Le meilleur sera sélectionné pour l’itération suivante. La Figure 2-15 montre les trois premières itérations de ce processus de division d’intervalles.

108

Techniques d’optimisation

Itération 1 : 3 intervalles Meilleur intervalle : numéro 1

Itération 2 : 5 intervalles Meilleur intervalle : numéro 4

Itération 3 : 7 intervalles Meilleur intervalle : numéro 4

Figure 2-15 : Divisions successives des intervalles Pour faciliter la détermination du meilleur intervalle, on trace pour chacun d’eux la droite d’équation : y = K(x − dj ) + fj = Kx + fbj comme sur la Figure 2-16 ciaprès. Cette droite de pente K passe par le point de coordonnées (dj ;f j ) , fj étant la valeur de f au centre de l’intervalle Dj. L’ordonnée à l’origine permet de comparer les intervalles et d’identifier celui ayant le minorant le plus bas.

Optimisation sans gradient

109

Figure 2-16 : Comparaison des minorants L’intervalle sélectionné dépend de la valeur de K qui est pour l’instant arbitraire. Considérons par exemple les six intervalles représentés sur la Figure 2-17 pour deux valeurs différentes de K (K1 à gauche, K2 à droite).

Figure 2-17 : Meilleur intervalle en fonction de la constante K Un intervalle est dit « potentiellement optimal » s’il existe une valeur K positive telle que cet intervalle donne le minorant le plus bas.

110

Techniques d’optimisation

Formellement l’intervalle Dj associé à (dj ;f j ) est potentiellement optimal si :  

K  0 , i , fb, j  fb,i K  0 , i , f j − Kd j  fi − Kdi K  0 , i , f j − fi  K(d j − di )

(2.27)

Cette inégalité s’explicite différemment selon le signe de dj − di . •

Pour tous les intervalles i tels que di = dj , la condition à vérifier est :

fj  fi •

(2.28)

Pour tous les intervalles i tels que di  dj , K doit vérifier la condition : K  K1 = max

i / di  d j



f j − fi d j − di

(2.29)

Pour tous les intervalles i tels que di  dj , K doit vérifier la condition : K  K2 = min

i / di  d j

f j − fi d j − di

(2.30)

Ces conditions expriment que le point (dj ;f j ) appartient à l’enveloppe convexe inférieure de l’ensemble des points (di ;fi ) comme illustré sur la Figure 2-18.

Figure 2-18 : Intervalle potentiellement optimal

Optimisation sans gradient

111

Les conditions pour que l’intervalle D j associé aux valeurs (dj ;f j ) soit potentiellement optimal sont ainsi : f j  fi , i / di = d j   max K = K  K = min K avec K = f j − fi 1 2 i i i / di  d j i i / di  d j d j − di 

(2.31)

La deuxième condition assure l’existence d’une valeur de K satisfaisant (2.27). Le nombre d’intervalles potentiellement optimaux augmente au fur et à mesure des divisions. Pour en limiter le nombre, on élimine les intervalles de petite taille, soit directement (dj  dmin ) , soit par la condition de décroissance suffisante :

f j − K2 d j  fmin −  fmin

avec fmin = min fi ,  = 10−3 i

(2.32)

Cette condition évite que la recherche ne devienne trop locale. La taille minimale d’un intervalle potentiellement optimal est alors donnée par : dj 

f j − fmin +  fmin K2

L’algorithme DIRECT en dimension 1 est schématisé sur la Figure 2-19.

Figure 2-19 : Algorithme DIRECT en dimension 1 Chaque itération consiste à : - sélectionner p intervalles parmi ceux potentiellement optimaux ; - les diviser en 3 intervalles égaux.

(2.33)

112

Techniques d’optimisation

Le nombre p d’intervalles sélectionnés est libre. On choisit en général les p plus grands afin que la recherche soit la plus globale possible. Le nombre d’intervalles augmente de 2p à chaque itération. L’intervalle initial est de demi-longueur d0. À l’itération k, la partition se compose d’intervalles de demi-longueurs d j = d0 / 3j avec 1  j  k . Il existe au plus k intervalles potentiellement optimaux (un par dimension dj) parmi lesquels p seront divisés à l’itération suivante. Exemple 2-6 : Minimisation par l’algorithme DIRECT en dimension 1   1  Cherchons à minimiser la fonction f (x) = sin  4  x −   + 6x2 + 2 en nous 2    plaçant dans l’intervalle D = [−1 ; 1]. Cette fonction tracée sur la Figure 2-20 présente 4 minima locaux donnés dans le Tableau 2-4.

Figure 2-20 : Fonction d’une variable à plusieurs minima locaux Minimum x f(x)

local

global

local

local

−0,57843 −0,11615

0,34804

0,80520

3,17389

1,78363

5,25072

1,08712

Tableau 2-4 : Coordonnées des minima locaux

Optimisation sans gradient

113

Les tableaux et graphes suivants détaillent les 7 premières itérations de l’algorithme. Les tableaux présentent à chaque itération l’ensemble des intervalles déjà évalués avec leurs bornes (xinf ; xsup), leur centre (xmid ; fmid), leur longueur d, l’évaluation du minorant fb et la valeur de K associée (cette valeur est indiquée à droite du tableau pour chaque intervalle potentiellement optimal). Les intervalles sont rangés par longueur décroissante, avec une ligne de séparation à chaque changement de longueur. Le meilleur point pour chaque longueur (colonne fmid) est surligné. Les meilleurs minorants (colonne fb) sont également surlignés. Parmi les intervalles potentiellement optimaux, on sélectionne les 2 plus grands qui sont divisés à l’itération suivante. Ils donnent chacun 3 nouveaux intervalles surlignés (colonnes xinf ; xsup). Les graphes à droite montrent les points (dj ; fj) déjà évalués.

x inf x sup x mid Longueur -1,000 -0,333 -0,667 0,667 -0,333 0,333 0,000 0,667 0,333 1,000 0,667 0,667

fmid fb 3,801 3,801 2,000 2,000 5,533 5,533

K 0

Itération 1 : 3 intervalles L’intervalle D = [−1 ; 1] est divisé en 3. La fonction est évaluée au centre xmid. Le minimum à cette itération est fmid = 2,000. Le meilleur intervalle est le deuxième (fb = 2,000). Cet intervalle est sélectionné pour être divisé à l’itération suivante.

114

Techniques d’optimisation

x inf x sup x mid Longueur -1,000 -0,333 -0,667 0,667 0,333 1,000 0,667 0,667 -0,333 -0,111 -0,222 0,222 -0,111 0,111 0,000 0,222 0,111 0,333 0,222 0,222

fmid 3,801 5,533 1,954 2,000 2,638

fb K 1,031 4,155 2,763 1,031 1,077 1,715

Itération 2 : 5 intervalles

Les 3 intervalles résultant de la division sont surlignés dans les colonnes donnant xinf et xsup. Le minimum à cette itération est fmid = 1,954. Deux intervalles sont potentiellement optimaux (le 1er et le 3e) avec un minorant fb = 1,0311. Ils sont tous deux sélectionnés pour être divisés à l’itération suivante.

x inf x sup x mid Longueur 0,333 1,000 0,667 0,667 -0,111 0,111 0,000 0,222 0,111 0,333 0,222 0,222 -1,000 -0,778 -0,889 0,222 -0,778 -0,556 -0,667 0,222 -0,556 -0,333 -0,444 0,222 -0,333 -0,259 -0,296 0,074 -0,259 -0,185 -0,222 0,074 -0,185 -0,111 -0,148 0,074

fmid 5,533 2,000 2,638 7,726 3,801 3,828 3,076 1,954 1,174

fb K 0,234 7,949 0,234 5,578 1,399 6,486 2,561 2,589 2,663 1,541 0,761

Itération 3 : 9 intervalles Le minimum à cette itération est f mid = 1,174.

Optimisation sans gradient

x inf x sup x mid Longueur 0,111 0,333 0,222 0,222 -1,000 -0,778 -0,889 0,222 -0,778 -0,556 -0,667 0,222 -0,556 -0,333 -0,444 0,222 0,333 0,556 0,444 0,222 0,556 0,778 0,667 0,222 0,778 1,000 0,889 0,222 -0,333 -0,259 -0,296 0,074 -0,259 -0,185 -0,222 0,074 -0,185 -0,111 -0,148 0,074 -0,111 -0,037 -0,074 0,074 -0,037 0,037 0,000 0,074 0,037 0,111 0,074 0,074

115

fmid 2,638 7,726 3,801 3,828 2,542 5,533 5,756 3,076 1,954 1,174 1,231 2,000 2,835

fb K 0,585 5,672 1,748 1,775 0,489 9,239 3,480 3,703 2,392 1,270 0,489 0,546 1,316 2,151

Itération 4 : 13 intervalles Minimum à cette itération : fmid = 1,174

x inf x sup x mid Longueur 0,111 0,333 0,222 0,222 -1,000 -0,778 -0,889 0,222 -0,778 -0,556 -0,667 0,222 -0,556 -0,333 -0,444 0,222 0,556 0,778 0,667 0,222 0,778 1,000 0,889 0,222 -0,333 -0,259 -0,296 0,074 -0,259 -0,185 -0,222 0,074 -0,111 -0,037 -0,074 0,074 -0,037 0,037 0,000 0,074 0,037 0,111 0,074 0,074 0,333 0,407 0,370 0,074 0,407 0,481 0,444 0,074 0,481 0,556 0,519 0,074 -0,185 -0,160 -0,173 0,025 -0,160 -0,136 -0,148 0,025 -0,136 -0,111 -0,123 0,025

fmid 2,638 7,726 3,801 3,828 5,533 5,756 3,076 1,954 1,231 2,000 2,835 1,825 2,542 3,844 1,355 1,174 1,092

fb K 0,527 9,501 5,614 1,689 1,717 3,421 3,645 2,372 1,251 0,527 2,818 1,791 2,626 1,616 2,334 3,635 1,285 1,104 1,022

Itération 5 : 17 intervalles Minimum à cette itération : fmid = 1,092

116

x inf x sup x mid Longueur -1,000 -0,778 -0,889 0,222 -0,778 -0,556 -0,667 0,222 -0,556 -0,333 -0,444 0,222 0,556 0,778 0,667 0,222 0,778 1,000 0,889 0,222 -0,333 -0,259 -0,296 0,074 -0,259 -0,185 -0,222 0,074 -0,037 0,037 0,000 0,074 0,037 0,111 0,074 0,074 0,333 0,407 0,370 0,074 0,407 0,481 0,444 0,074 0,481 0,556 0,519 0,074 0,111 0,185 0,148 0,074 0,185 0,259 0,222 0,074 0,259 0,333 0,296 0,074 -0,185 -0,160 -0,173 0,025 -0,160 -0,136 -0,148 0,025 -0,136 -0,111 -0,123 0,025 -0,111 -0,086 -0,099 0,025 -0,086 -0,062 -0,074 0,025 -0,062 -0,037 -0,049 0,025

Techniques d’optimisation

fmid 7,726 3,801 3,828 5,533 5,756 3,076 1,954 2,000 2,835 1,825 2,542 3,844 3,090 2,638 1,977 1,355 1,174 1,092 1,112 1,231 1,433

fb K 4,762 0,837 13,338 0,864 2,569 2,792 2,088 0,966 1,012 1,847 0,725 14,846 1,443 2,744 1,990 1,539 0,878 0,988 0,807 0,725 0,746 0,864 1,067

Itération 6 : 21 intervalles Minimum à cette itération : fmid = 1,092

Optimisation sans gradient

x inf x sup x mid Longueur -1,000 -0,778 -0,889 0,222 -0,778 -0,556 -0,667 0,222 -0,556 -0,333 -0,444 0,222 0,556 0,778 0,667 0,222 0,778 1,000 0,889 0,222 -0,333 -0,259 -0,296 0,074 -0,259 -0,185 -0,222 0,074 -0,037 0,037 0,000 0,074 0,037 0,111 0,074 0,074 0,407 0,481 0,444 0,074 0,481 0,556 0,519 0,074 0,111 0,185 0,148 0,074 0,185 0,259 0,222 0,074 0,259 0,333 0,296 0,074 -0,185 -0,160 -0,173 0,025 -0,160 -0,136 -0,148 0,025 -0,111 -0,086 -0,099 0,025 -0,086 -0,062 -0,074 0,025 -0,062 -0,037 -0,049 0,025 0,333 0,358 0,346 0,025 0,358 0,383 0,370 0,025 0,383 0,407 0,395 0,025 -0,136 -0,128 -0,132 0,008 -0,128 -0,119 -0,123 0,008 -0,119 -0,111 -0,115 0,008

117

fmid 7,726 3,801 3,828 5,533 5,756 3,076 1,954 2,000 2,835 2,542 3,844 3,090 2,638 1,977 1,355 1,174 1,112 1,231 1,433 1,784 1,825 1,968 1,108 1,092 1,087

fb K 4,956 1,031 12,463 1,058 2,763 2,986 2,153 0,691 17,049 0,737 1,572 1,280 2,581 1,827 1,375 0,714 0,934 0,753 0,691 1,530 1,193 1,395 1,746 1,787 1,930 1,095 1,079 1,075

Itération 7 : 25 intervalles Minimum à cette itération : fmid = 1,087

À l’issue de 7 itérations, le meilleur point est : x mid = −0,115 → f mid = 1,087 . Cette solution approchée obtenue avec 25 évaluations de la fonction est très proche du minimum global x* = −0,116 donné dans le Tableau 2-4. La Figure 2-21 page suivante montre la progression du meilleur point au cours des 7 itérations.

118

Techniques d’optimisation

itération 2

itération 1

itération 3

Figure 2-21 : Progression vers le minimum global

2.3.3 Algorithme en dimension n L’algorithme précédent se généralise à la minimisation d’une fonction de n variables. Les intervalles sont remplacés par des hyperrectangles dans n . On commence par présenter la méthode de division d’un hyperrectangle, puis on définit le critère de sélection d’un hyperrectangle potentiellement optimal. Méthode de division La Figure 2-22 montre un hypercube de centre c0 et de côté . La représentation est dans 3 , mais se généralise sans difficulté à n . Les vecteurs unitaires suivant chaque coordonnée (xi )i =1 à n sont notés (ei )i =1 à n . On positionne deux points sur chaque axe ei . Ces points notés ci et ci sont placés de part et d’autre du centre c0 à une distance /3. La fonction est évaluée en ces 2n points. +



Optimisation sans gradient

119

Figure 2-22 : Points d’évaluation suivant chaque axe de l’hypercube Les valeurs de la fonction aux 2n points (ci )i =1 à n sont notées (i )i =1 à n . 1  − − − ci = c0 − 3 ei → i = f (ci )  1 ci+ = c0 + ei → i+ = f (ci+ ) 3 

(2.34)

On retient sur chaque axe la meilleure évaluation notée i . i = min(i− , i+ ) , i = 1 à n

(2.35)

Les n valeurs (i )i =1 à n sont rangées dans l’ordre croissant.

i1  i2 

 in

(2.36)

120

Techniques d’optimisation

Cet ordre détermine la meilleure direction ei1 et la moins bonne direction ein . L’hypercube est ensuite divisé direction par direction selon cet ordre. •

On divise d’abord l’hypercube en 3 suivant la meilleure direction ei1 . Il en résulte 3 hyperrectangles de centres respectifs ci1 , c0 , ci1 ayant un côté de longueur /3 et n − 1 côtés de longueur  (Figure 2-23 à gauche). −



+

On sélectionne l’hyperrectangle central (de centre c0 ) et on le divise en 3 suivant la 2e meilleure direction ei2 . Il en résulte 3 hyperrectangles de centres respectifs ci2 , c0 , ci2 ayant 2 côtés de longueur /3 et n − 2 côtés de longueur  (Figure 2-23 au milieu). −



+

On poursuit de la même manière en divisant l’hyperrectangle central suivant les directions successives : ei3 , ,ein . La dernière division donne un hypercube de centre c0 et de côté  /3 (Figure 2-23 à droite).

Figure 2-23 : Division de l’hypercube suivant chaque direction Chaque division génère 2 hyperrectangles supplémentaires dont les côtés ont pour longueur /3 ou . On obtient à l’issue des divisions suivant les n directions : •

2n hyperrectangles de centres (ci )i =1 à n ;



1 hypercube central de centre c0 et de côté /3.

Le meilleur point ci1 ou ci1 est au centre de l’un des 2 hyperrectangles les plus grands issus de la première division. +



Optimisation sans gradient

121

La subdivision d’un hyperrectangle suit exactement la même procédure que pour un hypercube, mais en se restreignant aux plus grands côtés. Si l’hyperrectangle a p côtés de longueur  et n − p côtés de longueur /3, il en résultera 2p hyperrectangles supplémentaires ayant des côtés de longueur /3 ou . L’exemple suivant illustre ce processus de division dans

Exemple 2-7 : Processus de division dans

2

.

2

Les figures suivantes montrent les positions des points et la valeur de la fonction en ces points. La valeur de la fonction au centre de l’hypercube initial est 9. Le meilleur point − est sur l’axe e2, et la valeur de la fonction en ce point c2 est 2. La division est faite d’abord suivant e2, ce qui donne 3 hyperrectangles horizontaux, puis suivant e 1 pour le rectangle central, ce qui donne 3 hypercubes. La Figure 2-24 à droite montre les 5 hyperrectangles obtenus à l’issue de la première itération.

Figure 2-24 : Divisions à la première itération La méthode de sélection d’un hyperrectangle potentiellement optimal est détaillée plus bas, après cet exemple. On n’explicite pas cette méthode pour l’instant. Sur la Figure 2-25 page suivante, supposons que l’hyperrectangle sélectionné est celui du bas (en grisé sur le schéma de gauche). Cet hyperrectangle est divisé uniquement suivant ses plus grands côtés en commençant par la meilleure direction. Dans cet exemple en dimension 2, une

122

Techniques d’optimisation

seule division est effectuée suivant e1, ce qui conduit au schéma du centre avec les nouvelles valeurs 3 et 6. Le schéma de droite montre les 7 hyperrectangles obtenus à l’issue de la deuxième itération, les 3 nouveaux hyperrectangles étant ceux colorés en bas.

Figure 2-25 : Divisions à la deuxième itération Supposons maintenant que deux hyperrectangles soient sélectionnés (en grisé sur la Figure 2-26 à gauche : un hyperrectangle en haut (valeur f = 6) et un hypercube en bas (valeur f = 2). L’hyperrectangle est divisé uniquement suivant e1 et donne 3 hypercubes (avec les nouvelles valeurs 7 et 9). L’hypercube est divisé suivant e1 et e2. La meilleure valeur étant suivant e1 (valeur f = 1), la division s’effectue d’abord suivant e1, puis suivant e2. Il en résulte 5 hyperrectangles. Le schéma du centre montre les valeurs résultant de ces divisions. Le schéma de droite montre les 13 hyperrectangles obtenus à l’issue de la troisième itération.

Figure 2-26 : Divisions à la troisième itération

Optimisation sans gradient

123

Méthode de sélection Le choix d’un hyperrectangle potentiellement optimal repose sur l’estimation d’un minorant de la fonction sur l’hyperrectangle. Cette estimation est très similaire à celle développée en dimension 1. La différence réside dans la façon de définir la taille d’un hyperrectangle. On suppose que l’hypercube initial a pour côté 0. Il est toujours possible de se ramener à cette situation par des changements de variable affines de la forme : ai  xi  bi



0  xi '  0

avec xi ' = 0

xi − ai bi − ai

(2.37)

La méthode de division exposée précédemment conduit à des hyperrectangles dont les petits côtés sont de longueur 0/3k+1 et les grands côtés de longueur 0/3k. La dimension d’un hyperrectangle est mesurée par sa norme 2 ou sa norme . Si l’hyperrectangle Dj a p petits côtés et n−p grands côtés, sa norme 2 vaut : Dj = 2

n

 (i )2 = i =1

p

 (0 / 3k +1 )2 + i =1

n

 (

i = p +1

0

8 / 3k )2 = 0 / 3k n − p 9

(2.38)

et sa norme  est la longueur du plus grand côté :

Dj



= max i = 0 / 3k

(2.39)

i =1à n

Le minorant de la fonction f sur l’hyperrectangle D j est estimé par : fb, j = f j − Kd j

f j = f (cj )  avec  1 d j = Dj  2 

2

ou d j =

1 Dj 2

(2.40) 

où fj est la valeur de f au centre de l’hyperrectangle, d j est la demi-dimension de l’hyperrectangle et K est la constante de Lipschitz (inconnue) de la fonction f. On définit alors un hyperrectangle potentiellement optimal comme en dimension 1. L’hyperrectangle Dj associé à (dj ;f j ) est potentiellement optimal si :

K  0 , i , fb, j  fb,i

(2.41)

Par le même développement (2.27 - 2.33) qu’en dimension 1, les conditions pour que l’hyperrectangle Dj (dj ;fj ) soit potentiellement optimal sont : f j  fi , i / di = d j   max K = K  K = min K avec K = f j − fi 1 2 i i i / di  d j i i / di  d j d j − di 

(2.42)

124

Techniques d’optimisation

auxquelles on adjoint la condition de décroissance suffisante : f j − K2 d j  fmin −  fmin  dj 

f j − fmin +  fmin

avec fmin = min fi ,  = 10−3 i

(2.43)

K2

L’algorithme DIRECT en dimension n est schématisé sur la Figure 2-27.

Figure 2-27 : Algorithme DIRECT en dimension n L’exemple suivant en dimension 2 illustre le déroulement de l’algorithme.

Exemple 2-8 : Minimisation par l’algorithme DIRECT en dimension 2 Soit la fonction suivante à minimiser dans le domaine −1  x  1 ; −1  y  1 :

f (x, y) = (x − 0,2)2 + 2(y − 0,1)2 − 0,3cos 3(x − 0,2) − 0,4cos 4(y − 0,1) + 0,7 Les lignes de niveau de cette fonction sont tracées sur la Figure 2-28 ci-après. On observe 9 minima locaux, 4 maxima locaux et 12 points-selle dont les coordonnées et les valeurs sont donnés dans le tableau de gauche. Le minimum global est en : x = 0,2 , y = 0,1 → f = 0 .

Optimisation sans gradient

0,570 0,883 1,190 0,367 1,346 1,654 0,100 0,413 0,720 -0,167 1,346 1,654 -0,370 0,883 1,190 y / x -0,419 -0,161

0,470 0,933 0,000 0,933 0,470 0,200

125

1,190 1,654 0,720 1,654 1,190 0,561

0,883 1,346 0,413 1,346 0,883 0,819

minimum global Figure 2-28 : Fonction de 2 variables à plusieurs minima locaux

Les tableaux et graphes aux pages suivantes détaillent les 6 premières itérations de l’algorithme. Les tableaux présentent à chaque itération l’ensemble des hyperrectangles déjà évalués. Pour chaque hyperrectangle, on indique les coordonnées du centre (xmid ; ymid), son évaluation (fmid), ses dimensions (dx ; dy ; dmax), l’évaluation du minorant fb et la valeur de K associée. Les graphes à droite montrent les hyperrectangles déjà évalués. Les hyperrectangles sont rangés par dimension décroissante, avec une ligne de séparation à chaque changement de dimension. Pour chaque dimension le meilleur point (colonne fmid) et le meilleur minorant (colonne fb) sont surlignés. Les hyperrectangles potentiellement optimaux sont divisés à l’itération suivante. Ils donnent de nouveaux hyperrectangles surlignés (colonnes xmid et ymid).

126

Techniques d’optimisation

x -0,667 0,667 0,000 0,000 0,000

y 0,000 0,000 -0,667 0,667 0,000

f 1,440 0,907 2,400 1,207 0,729

Hypercube initial Le centre est en x = 0 , y = 0 .

2  2   La fonction est évaluée en   ; 0  et  0 ;   . 3  3   La meilleure valeur (fmin = 0,907) est sur l’axe x. L’hypercube est divisé d’abord suivant x, puis suivant y

x mid y mid dx dy -0,667 0,000 0,333 1,000 0,667 0,000 0,333 1,000 0,000 -0,667 0,333 0,333 0,000 0,667 0,333 0,333 0,000 0,000 0,333 0,333

d max 1,000 1,000 0,333 0,333 0,333

→ 5 hyperrectangles

fmid fb K 1,440 1,174 0,907 0,640 0,267 2,400 2,311 1,207 1,118 0,729 0,640

Itération 1 : 5 hyperrectangles Deux hyperrectangles sont sélectionnés (fb = 0,640). Le premier est divisé suivant sa plus grande dimension (y) : → +2 hyperrectangles suivant y Le second est un hypercube divisé suivant ses 2 dimensions : → +2 hyperrectangles suivant x et +2 hyperrectangles suivant y Cette itération génère au total 6 hyperrectangles supplémentaires à évaluer.

Optimisation sans gradient

x mid y mid dx dy -0,667 0,000 0,333 1,000 0,000 -0,667 0,333 0,333 0,000 0,667 0,333 0,333

d max 1,000 0,333 0,333

127

fmid fb K 1,440 -0,265 1,705 2,400 1,831 1,207 0,639

0,667 -0,667 0,333 0,333 0,333 2,577 2,009 0,667 0,667 0,333 0,333 0,333 1,385 0,817 0,667 0,000 0,333 0,333 0,333 0,907 0,338 -0,222 0,000 0,111 0,333 0,222 0,000 0,111 0,333 0,000 -0,222 0,111 0,111 0,000 0,222 0,111 0,111 0,000 0,000 0,111 0,111

0,333 0,333 0,111 0,111 0,111

0,975 0,303 1,287 0,849 0,729

0,407 -0,265 -1,915 1,499 1,061 0,942

x mid y mid dx dy 0,000 -0,667 0,333 0,333 0,000 0,667 0,333 0,333 0,667 -0,667 0,333 0,333 0,667 0,667 0,333 0,333 0,667 0,000 0,333 0,333 -0,222 0,000 0,111 0,333

d max 0,333 0,333 0,333 0,333 0,333 0,333

fmid 2,400 1,207 2,577 1,385 0,907 0,975

fb K 1,494 0,302 1,672 0,480 0,002 2,715 0,070

-0,667 -0,667 0,333 0,333 -0,667 0,667 0,333 0,333 -0,667 0,000 0,333 0,333 0,000 -0,222 0,111 0,111 0,000 0,222 0,111 0,111

0,333 0,333 0,333 0,111 0,111

3,111 1,918 1,440 1,287 0,849

2,205 1,013 0,535 0,985 0,547

0,222 -0,222 0,111 0,111 0,111 0,861 0,559 0,222 0,222 0,111 0,111 0,111 0,423 0,121 0,222 0,000 0,111 0,111 0,111 0,303 0,002 0,000 0,000 0,111 0,111 0,111 0,729 0,942

Itération 2 : 11 hyperrectangles Minimum : fmid = 0,303

Itération 3 : 15 hyperrectangles Minimum : fmid = 0,303

128

Techniques d’optimisation

x mid 0,000 0,000 0,667 0,667 -0,222 -0,667 -0,667 -0,667

y mid -0,667 0,667 -0,667 0,667 0,000 -0,667 0,667 0,000

dx 0,333 0,333 0,333 0,333 0,111 0,333 0,333 0,333

dy 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333

d max 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333

fmid 2,400 1,207 2,577 1,385 0,975 3,111 1,918 1,440

fb 1,277 0,085 1,455 0,263 -0,147 1,989 0,796 0,318

K

0,444 0,889 0,667 0,667 0,667

0,000 0,000 -0,222 0,222 0,000

0,111 0,111 0,111 0,111 0,111

0,333 0,333 0,111 0,111 0,111

0,333 0,333 0,111 0,111 0,111

0,857 0,778 1,464 1,026 0,907

-0,265 -0,345 3,366 1,090 0,652 0,533

0,000 0,000 0,222 0,222 0,000

-0,222 0,222 -0,222 0,222 0,000

0,111 0,111 0,111 0,111 0,111

0,111 0,111 0,111 0,111 0,111

0,111 0,111 0,111 0,111 0,111

1,287 0,849 0,861 0,423 0,729

0,913 0,475 0,487 0,049 0,355

0,222 0,222 0,148 0,296 0,222

-0,074 0,074 0,000 0,000 0,000

0,111 0,111 0,037 0,037 0,037

0,037 0,037 0,037 0,037 0,037

0,111 0,111 0,037 0,037 0,037

0,699 0,029 0,334 0,421 0,303

0,325 -0,345 -3,699 0,471 0,558 0,440

Itération 4 : 23 hyperrectangles Minimum : fmid = 0,029

Optimisation sans gradient

129

x mid 0,000 0,000 0,667 0,667 -0,222 -0,667 -0,667 -0,667 0,444 0,667 0,667 0,667 0,000 0,000 0,222 0,222 0,000 0,222

y mid -0,667 0,667 -0,667 0,667 0,000 -0,667 0,667 0,000 0,000 -0,222 0,222 0,000 -0,222 0,222 -0,222 0,222 0,000 -0,074

dx 0,333 0,333 0,333 0,333 0,111 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111

dy 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,037

d max 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111

fmid 2,400 1,207 2,577 1,385 0,975 3,111 1,918 1,440 0,857 1,464 1,026 0,907 1,287 0,849 0,861 0,423 0,729 0,699

fb K 1,749 0,556 1,926 0,734 0,325 2,460 1,268 0,789 0,206 1,953 1,247 0,809 0,690 1,070 0,632 0,644 -0,167 5,313 0,512 0,109

0,889 0,889 0,889 0,148 0,296

-0,222 0,222 0,000 0,000 0,000

0,111 0,111 0,111 0,037 0,037

0,111 0,111 0,111 0,037 0,037

0,111 0,111 0,111 0,037 0,037

1,335 0,897 0,778 0,334 0,421

0,745 0,307 0,187 0,471 0,558

0,148 0,074 0,037 0,037 0,296 0,074 0,037 0,037 0,222 0,074 0,037 0,037

0,037 0,037 0,037

0,060 -0,137 0,147 -0,050 0,029 -0,167

0,222 0,000 0,037 0,037

0,037

0,303 0,107

Itération 5 : 27 hyperrectangles Minimum : fmid = 0,029

130

Techniques d’optimisation

x mid 0,000 0,000 0,667 0,667 -0,222 -0,667 -0,667 -0,667 0,444 0,667 0,667 0,667 0,000 0,000 0,222 0,000 0,222 0,889 0,889 0,889

y mid -0,667 0,667 -0,667 0,667 0,000 -0,667 0,667 0,000 0,000 -0,222 0,222 0,000 -0,222 0,222 -0,222 0,000 -0,074 -0,222 0,222 0,000

dx 0,333 0,333 0,333 0,333 0,111 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111

dy 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,037 0,111 0,111 0,111

d max 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,333 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111 0,111

fmid 2,400 1,207 2,577 1,385 0,975 3,111 1,918 1,440 0,857 1,464 1,026 0,907 1,287 0,849 0,861 0,729 0,699 1,335 0,897 0,778

fb 1,238 0,046 1,416 0,224 -0,186 1,949 0,757 0,279 -0,304 3,484 1,077 0,639 0,520 0,900 0,462 0,474 0,342 0,312 0,948 0,510 0,390

0,222 0,222 0,148 0,296 0,222

0,148 0,296 0,222 0,222 0,222

0,111 0,111 0,037 0,037 0,037

0,037 0,037 0,037 0,037 0,037

0,111 0,111 0,037 0,037 0,037

0,083 0,796 0,454 0,540 0,423

-0,304 1,021 0,409 0,416 0,503 0,385

0,148 0,296 0,148 0,296 0,222

0,000 0,000 0,074 0,074 0,000

0,037 0,037 0,037 0,037 0,037

0,037 0,037 0,037 0,037 0,037

0,037 0,037 0,037 0,037 0,037

0,334 0,421 0,060 0,147 0,303

0,137 0,224 0,197 0,284 0,107

0,222 0,222 0,198 0,247 0,222

0,049 0,099 0,074 0,074 0,074

0,037 0,037 0,012 0,012 0,012

0,012 0,012 0,012 0,012 0,012

0,037 0,037 0,012 0,012 0,012

0,090 0,007 0,022 0,053 0,029

0,053 -0,031 -0,623 0,030 0,061 0,037

Itération 6 : 35 hyperrectangles Minimum : fmid = 0,007

Optimisation sans gradient

131

Le Tableau 2-5 montre la progression du meilleur point au cours des itérations. Itération 1 2 3 4 5 6

x 0,000 0,222 0,222 0,222 0,222 0,222

y 0,000 0,000 0,000 0,074 0,074 0,099

f 0,729 0,303 0,303 0,029 0,029 0,007

Tableau 2-5 : Progression du meilleur point

 x = 0, 222 La solution  min est obtenue avec 35 évaluations de la fonction.  y min = 0,099 Elle est très proche du minimum global :



x* = 0, 2 . y* = 0,1

L’algorithme DIRECT est efficace pour localiser le minimum global d’une fonction de n variables. Sa principale limitation vient de la place mémoire nécessaire pour stocker les hyperrectangles évalués. Lorsque le nombre de variables dépasse 10, il est nécessaire de « sacrifier » des hyperrectangles, par exemple sur un critère de dimension. L’algorithme peut être utilisé pour localiser les zones intéressantes et initialiser un algorithme de descente locale comme celui de Nelder-Mead.

2.4 Méthode de Nelder-Mead La méthode de Nelder-Mead (publiée en 1965) cherche le minimum d’une fonction de n variables réelles en faisant évoluer un ensemble de n + 1 points.

2.4.1 Polytope Considérons un problème de minimisation sans contraintes.

minn f (x) x

(2.44)

132

Techniques d’optimisation

La méthode de Nelder-Mead utilise un ensemble P de n + 1 points (ou sommets) appelé polytope (ou simplexe) de n .

P = x0 , x1 ,

, xn −1 , xn  , xk 

n

(2.45)

Ces points sont classés du meilleur au pire.

f (x0 )  f (x1 ) 

(2.46)

 f (xn −1 )  f (xn )

La Figure 2-29 montre un polytope dans 2 avec ses 3 points x0 , x1 , x2  classés du meilleur au pire (d’après leur position sur les lignes de niveau de la fonction).

Figure 2-29 : Polytope en dimension 2 À chaque itération, on cherche à remplacer le point pire xn par un point meilleur xnew. Le nouveau polytope P’ est ensuite reclassé du meilleur au pire point. P = x0 , x1 ,



, xn −1 , xn  → P ' = x0 , x1 ,

→ P ' = x '0 , x '1 ,

, xn −1 , xnew , x 'n −1 , x 'n





(2.47)

Le déplacement du point pire x n s’effectue dans la direction du barycentre x c des n meilleurs points x0 ,x1 , ,xn −1 . xc =

1 n −1  xi n i =0

(2.48)

Optimisation sans gradient

133

La direction de xn vers xc est supposée être une direction de descente, car partant du pire point connu. Quatre points candidats sont testés sur cette demi-droite D. Ils correspondent à une réflexion (xr), une expansion (xe), une contraction externe (xce) et une contraction interne (xci). Ils s’expriment en fonction de xn et xc.  xr   xe x  ce   xci

= xc + (xc − xn ) = xc + 2(xc − xn ) = xc + 0,5(xc − xn ) = xc − 0,5(xc − xn )

(2.49)

Ces points sont représentés sur la Figure 2-30 dans 2 . Les deux meilleurs points x0 ,x1 ont pour barycentre leur milieu xc. La demi-droite D va de x2 vers xc.

Figure 2-30 : Points candidats Le premier point évalué est le point réfléchi x r, symétrique de xn par rapport au barycentre. Selon la valeur de f(x r), quatre situations peuvent se produire. •

Très bonne amélioration : f (xr )  f (x0 ) Le point xr est meilleur que tous les points du polytope. La direction D étant favorable, on essaie le point x e situé plus loin sur D. Le point xn est remplacé par le meilleur des 2 points xr ou xe.



Bonne amélioration : f (x0 )  f (xr )  f (xn−1) Le point xr est meilleur que l’avant-dernier point xn-1. Le point xn est remplacé par xr.

134

Techniques d’optimisation



Faible amélioration : f (xn−1 )  f (xr )  f (xn ) Le point xr est meilleur que le point xn, mais moins bon que tous les autres. On essaie le point xce situé moins loin sur la demi-droite D. Le point xn est remplacé par le meilleur des 2 points xr ou xce.



Aucune amélioration : f (xn )  f (xr ) On essaie le point xci situé au milieu du segment [xn ;xc ] . Si le point xci est meilleur que xn, il remplace xn. Sinon on effectue une réduction de tous les points du polytope vers x0. Cette réduction est une homothétie de centre x 0 et de rapport 1/2.

Pour favoriser la progression au cours des premières itérations, il est préférable que le polytope initial soit assez grand et que ses sommets soient suivant des directions différentes. Un bon choix est de positionner les points x1, , xn  autour de x0 suivant les directions canoniques de

n

.

Lorsqu’un minimum local x* est localisé, le polytope se centre autour de x* et sa taille diminue. Les critères d’arrêt portent sur une taille suffisante du polytope max xi − x j (distance entre les sommets), un écart suffisant f (x0 ) − f (xn ) entre i, j

le meilleur et le pire point (cas d’une fonction « plate ») et un nombre maximal d’itérations ou d’évaluations de la fonction. Il peut arriver que le polytope dégénère, ce qui signifie que ses sommets ne forment plus une base de n . Dans 2 cela se traduit par 3 points alignés. Les déplacements se restreignent au sous-espace engendré par les sommets du polytope et les autres directions ne peuvent plus être explorées. Dans ce cas, le polytope peut être réinitialisé autour du meilleur point x0 en replaçant les points

x1,

, xn  suivant les axes de

n

.

2.4.2 Nouveau point Les étapes de calcul à l’itération k sont les suivantes. Polytope à l’itération k :



Pk = x0k , x1k , , xkn −1 , xkn



avec f (x0k )  f (x1k ) 

 f (xkn −1 )  f (xkn )

Optimisation sans gradient

135

1. Barycentre : 1 n −1 xc =  xik → d = xc − xkn n i =0 2. Réflexion : xr = xc + d

→ f(xr)

3. Si f(xr) < f(x0)

Expansion : xe = xc + 2d

→ f(xe)

Si f(xe) < f(xr)

→ x’ = xe

Sinon

→ x’ = xr

4. Si f(x0) < f(xr) < f(xn-1)

→ x’ = xr

5. Si f(xn-1) < f(xr) < f(xn) Contraction externe : xce = xc + d/2

→ f(xce)

Si f(xce) < f(xr)

→ x’ = xce

Sinon

→ x’ = xr

6. Si f(xn) < f(xr) Contraction interne : xci = xc − d/2

→ f(xci)

Si f(xci) < f(xn) → x’ = xci Sinon réduction de P vers x0 : 1 → xik +1 = x0 + xik 2

(

)

Reclassement du polytope avec le nouveau point x’ :





Pk +1 = x0k +1 , x1k +1 , , xkn −+11 , xkn +1

avec f (x0k +1 )  f (x1k +1 ) 

 f (xkn +−11 )  f (xkn +1 )

136

Techniques d’optimisation

2.4.3 Améliorations Plusieurs améliorations ont été proposées par rapport à la méthode originale de Nelder-Mead. Les plus efficaces concernent le réglage adaptatif des coefficients et l’estimation d’un pseudo-gradient. Réglage adaptatif Les formules (2.49) définissant les points à tester sont de la forme :  xr   xe x  ce   xci

= xc + (xc − xn ) = xc +(xc − xn ) = xc +  (xc − xn ) = xc −  (xc − xn )

(2.50)

On note par ailleurs  le coefficient de réduction du polytope en cas d’échec. La méthode de Nelder-Mead standard utilise les coefficients : 1 1 (2.51) , = 2 2 Lorsque la dimension n du problème est grande, on observe que les points testés (réflexion, expansion, contraction) avec les réglages standards (2.51) s’écartent fortement du polytope. Ceci a pour effet de le déformer rapidement et conduit souvent à une dégénérescence.  =1 ,  = 2 ,  =

Les coefficients adaptatifs sont fonction de la dimension n du problème. 2 3 1 1 (2.52) , = − ,  = 1− n 4 2n n En dimension 2, on retrouve les coefficients de la méthode de Nelder-Mead standard. En dimension supérieure à 2, les coefficients adaptatifs sont plus petits que les coefficients standards et atténuent les déplacements des points testés. Le polytope se déplace ainsi de manière progressive en conservant une forme « bien conditionnée ».  = 1 ,  = 1+

Pseudo-gradient Le pseudo-gradient est évalué à partir des n + 1 valeurs de la fonction aux sommets du polytope.

P = x0 ,x1, ,xn−1,xn  avec f (x0 )  f (x1 ) 

 f (xn−1)  f (xn )

(2.53)

Optimisation sans gradient

137

En développant la fonction f à l’ordre 1 au voisinage de x 0, on définit un système de n équations linéaires reliant les variations de x aux variations de f. f (xi )  f (x0 ) + f (x0 )T (xi − x0 ) pour i = 1 à n fi = f (xi ) − f (x0 ) T   fi  ( xi ) g avec xi = xi − x0  g = f (x0 )

(2.54)

Ce système se met sous forme matricielle : F  ( X ) g  f1       avec F =       f   n T

,



La matrice X 

nn



Le vecteur F 

n



Le vecteur g 

n

 (x1 )1   X =     (x ) 1 n 

(xi )1

(xi )n

(xn )1       (xn )n 

donne les composantes des vecteurs x 

n

(2.55)

.

donne les variations de f entre les sommets.

représente une approximation du gradient de f.

Si le polytope P n’est pas dégénéré, les n vecteurs (xi )i=1à n issus de x0 forment une base de

n

. La matrice X est alors inversible, ce qui permet de déterminer

une approximation du gradient g de f en x 0 : g  ( X ) F . La fonction n’étant pas forcément dérivable, le vecteur g est appelé « pseudo-gradient ». −T

La direction de recherche ensuite est corrigée par une pondération  entre la direction standard d (de xn vers xc) et le pseudo-gradient g. dg = (1 − )d − g

d = xc − xn avec  0    1

(2.56)

Le coefficient de pondération  peut être fixé à 0,5. La direction corrigée (2.56) est généralement meilleure que la direction standard. Les points testés (2.50) suivant cette direction corrigée permettent une progression plus rapide vers le minimum.

138

Techniques d’optimisation

Les directions d, g et dg sont illustrées en dimension 2 sur la Figure 2-31.

Directions d et g

Direction dg

Figure 2-31 : Direction corrigée par le pseudo-gradient Lorsque la méthode de Nelder-Mead fonctionne, le polytope se resserre sur un minimum local de f. L’exemple suivant illustre le déplacement du polytope sur deux problèmes dans 2 . Bien que la méthode de Nelder-Mead se limite à la recherche d’un minimum local, et n’ait pas de réel fondement théorique, elle se comporte remarquablement bien en pratique sur tout type de fonction et ne souffre pas du problème de limitation mémoire inhérent à la méthode DIRECT.

Optimisation sans gradient

139

Exemple 2-9 : Méthode de Nelder-Mead Appliquons la méthode de Nelder-Mead, d’une part à une fonction quadratique, d’autre part à la fonction de Rosenbrock.

Fonction quadratique : f (x1 , x2 ) =

1 2 9 2 x1 + x2 2 2

Les lignes de niveau sont des ellipses centrées sur le minimum en (0 ; 0). La Figure 2-32 montre le déplacement du polytope au cours des 9 premières itérations avec la position du meilleur sommet.

Figure 2-32 : Minimisation d’une fonction quadratique par Nelder-Mead

(

Fonction de Rosenbrock : f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) 2

2

1

La Figure 2-33 montre le déplacement du meilleur sommet au cours des itérations. On observe une convergence vers le centre de la vallée, puis un suivi de la vallée jusqu’au minimum en (1 ; 1).

140

Techniques d’optimisation

Figure 2-33 : Minimisation de la fonction de Rosenbrock par Nelder-Mead

2.5 Affine shaker L’algorithme « affine shaker » (Battiti et Tecchiolli, 1994) ressemble dans son principe à l’algorithme de Nelder-Mead, mais en introduisant une composante de déplacement aléatoire.

2.5.1 Principe On cherche à minimiser une fonction de n variables réelles. minn f (x) x

(2.57)

La région de recherche B est centrée sur le point courant x 0 de valeur f (x 0 ) . Un déplacement aléatoire d  n est généré dans la région de recherche et un nouveau point est sélectionné comme suit.

Optimisation sans gradient



141

On évalue d’abord le point x d+ = x 0 + d .

Si ce point est meilleur que le point x 0 : f (x d+ )  f (x 0 ) , la direction + d est favorable. Le point x d+ est accepté et devient le nouveau point courant : x1 = x d+ . La région de recherche B est dilatée suivant la direction + d . •

Sinon on évalue le point x d− = x 0 − d .

Si ce point est meilleur que le point x 0 : f (x d− )  f (x 0 ) , la direction − d est − − favorable. Le point x d est accepté et devient le nouveau point courant : x1 = x d .

La région de recherche B est dilatée suivant la direction − d . •

Sinon on conserve le point initial : x1 = x 0 .

Les directions  d étant défavorables, la région de recherche B est contractée suivant la direction d . La dénomination « affine shaker » exprime que le déplacement est aléatoire (shaker) et que la région est modifiée par une transformation affine détaillée dans la section suivante. La Figure 2-34 illustre l’évolution de la région de recherche à partir d’un point initial A ou d’un point initial A’. Les lignes de niveaux de la fonction coût montrent l’existence de trois minima locaux. Les itérations (B , C) ou (B’ , C’) progressent vers des minima locaux différents selon le point de départ.

Figure 2-34 : Évolution de la région de recherche

142

Techniques d’optimisation

2.5.2 Transformation affine La région de recherche B centrée sur le point courant x0 est définie par n vecteurs n

indépendants de

Le déplacement d  n

d =  i bi

notés (b1, n

,bn ) .

est une combinaison linéaire des vecteurs b i de la forme :

avec − 1  i  1

i =1

Les coefficients (1,

(2.58)

, n ) sont tirés uniformément dans l’intervalle  −1 ; 1 .

Selon les valeurs de f (x0 + d) et f (x0 − d) , la région B est soit dilatée soit contractée avec un coefficient  suivant la direction d . La transformation consiste à ajouter à chaque vecteur de base b une composante proportionnelle au produit scalaire dT b . Cette transformation est représentée sur la Figure 2-35.

Figure 2-35 : Transformation affine des vecteurs de base Le vecteur b donne le vecteur b’ défini par : b' = b + 

dT b d

2

d = b + (T b)

avec  =

d d

(2.59)

Cette transformation est appliquée à chacun des vecteurs de base (b1,

,bn ) .

En notant B la matrice des vecteurs de base et  le vecteur unitaire suivant d :

B = ( b1 b2

b1  b11   b12 bn ) =    b  1n

b2 b21 b22

b2n

bn bn1   bn 2     bnn 

 1     2  (2.60) et  =          n

Optimisation sans gradient

143

la transformation (2.59) s’exprime sous forme matricielle :  b '1 = b1 + (T b1 )  b ' = b2 + (T b2 )   2  B' = B + (T B) = (I + T )B    b ' = b + (T b ) n n   n que l’on peut écrire avec la matrice de transformation notée P : B' = PB

avec

P = I + T = I + 

ddT d

2

(2.61)

(2.62)

Illustrons cette transformation en dimension 2 pour une région carrée. La région B centrée sur le point x est définie par les vecteurs orthogonaux (b1 ,b2 ) . Le déplacement aléatoire d = 1b1 +2b2 donne le nouveau point x’. Les vecteurs (b1,b2 ) deviennent les vecteurs (b'1,b'2 ) définis par : b '1 = b1 + (T b1 )  T b '2 = b2 + ( b2 )

(2.63)

Ces nouveaux vecteurs ne sont plus orthogonaux. La nouvelle région B’ représentée sur la Figure 2-36 est un parallélogramme centré sur x’ et dilaté dans la direction d .

Figure 2-36 : Dilatation de la région de recherche

144

Techniques d’optimisation

2.5.3 Algorithme La Figure 2-37 montre le déroulement de l’algorithme affine shaker.

Figure 2-37 : Algorithme affine shaker La région initiale B0 peut être définie par la base canonique de

n

.

Le coefficient de dilatation ou contraction peut être fixé par exemple à 0,5 : -  = +0,5 pour une dilatation ; -  = −0,5 pour une contraction. Il est possible d’augmenter  lors des premières itérations pour accélérer les déplacements, puis de le réduire pour converger plus finement sur un minimum. La méthode étant locale (recherche au voisinage du point courant), la solution obtenue dépend du point initial x0 et de la taille de la région initiale B0 . L’exemple suivant illustre la progression de l’algorithme sur la fonction de Rosenbrock.

Optimisation sans gradient

145

Exemple 2-10 : Minimisation de la fonction de Rosenbrock par affine shaker Appliquons l’algorithme affine shaker à la fonction de Rosenbrock :

(

)

2

f ( x1 , x2 ) = 100 x2 − x12 + (1 − x1 )

2

Le point initial est en (−5 ; 5), la région initiale est un carré défini par la base canonique de 2 . Le Tableau 2-6 montre l’évolution de la solution et le nombre d’évaluations de la fonction. La progression est assez rapide au début : le point (0,99 ; 0,98) très proche de la solution (1 ; 1) est atteint après 1 200 évaluations de la fonction. Il est en revanche difficile d’obtenir une solution plus précise en un nombre raisonnable d’évaluations La Figure 2-38 montre la progression de l’algorithme. Le fond de la vallée est rejoint en 24 évaluations, puis l’algorithme oscille dans une zone proche du minimum.

Nf 1 3 6 9 15 24 39 48 402 1206 28944 95676

f 40036,0 4842,0 1517,8 971,7 932,0 51,5 1,2779 1,0386 0,1641 0,000097 0,000023 0,000021

x1 -5,0000 -2,5123 -1,0533 2,5591 1,6944 1,4993 1,3401 0,6511 0,5952 0,9903 1,0040 0,9978

x2 5,0000 -0,6379 5,0000 3,4356 -0,1809 1,5322 1,9036 0,3282 0,3527 0,9806 1,0082 0,9960

Figure 2-38 : Progression affine shaker Tableau 2-6 : Itérations affine shaker

146

Techniques d’optimisation

2.6 CMAES L’algorithme CMAES (Covariance Matrix Adaptation Evolution Strategy, Hansen et Ostermeyer, 2001) est une méthode de descente incluant un aspect évolutionnaire basée sur une population d’individus.

2.6.1 Principe On cherche à minimiser une fonction de n variables réelles. minn f (x)

(2.64)

x

Les informations utilisées à chaque itération sont la position du point courant et une matrice de covariance. Une itération comporte trois étapes illustrées sur la Figure 2-39 : - tirage d’un échantillon de p candidats selon la loi normale ; - sélection des q meilleurs candidats vis-à-vis de la minimisation de f ; - adaptation de la loi normale en fonction de la sélection.

Tirage

Sélection

Adaptation

Figure 2-39 : Étapes d’une itération CMAES La génération aléatoire des candidats favorise l’exploration (diversification). La sélection des meilleurs tirages dirige la descente vers un minimum (intensification).

Optimisation sans gradient

147

2.6.2 Adaptation de la covariance Les paramètres de la distribution au début de l’itération sont la position moyenne notée m, la matrice de covariance notée C et un pas de déplacement noté  . L’échantillon des p candidats (x1,x 2 ,

,x p ) est de la forme : (2.65)

xi = m + yi où les déplacements (y1, y2 ,

, yp ) suivent la loi normale centrée  (0 ; C) .

Les p candidats sont numérotés par valeurs croissantes de f.

f (x1 )  f (x 2 ) 

 f (x q ) 

Les q meilleurs candidats (x1,x 2 ,

 f (x p )

(2.66)

,xq ) sont sélectionnés pour mettre à jour la

position moyenne m, la matrice de covariance C et un pas de déplacement  . Mise à jour de la moyenne On définit une direction de descente d à partir des déplacements (y1, y2 ,

, yq )

associés aux q meilleurs candidats. q

d =  w j yj

(2.67)

j=1

Les poids (w1, w 2 ,

, w q ) sont soit égaux, soit décroissants pour privilégier les

meilleurs candidats. La position moyenne m est mise à jour par :

m' = m + d

(2.68)

Cette mise à jour est schématisée sur la Figure 2-40 page suivante (gauche). Mise à jour du pas de déplacement Le pas de déplacement  est mis à jour par : ' = e

1 −s . 3 1−s

(2.69)

148

Techniques d’optimisation

Le réel  représente le taux de réussite de l’échantillon, défini comme la part des 1 candidats tels que f(xi )  f(m) . Ce taux est comparé au seuil : s = . 5 •

Si   s , le taux de réussite dans la direction d est bon et le pas  augmente.



Si   s , le taux de réussite dans la direction d est faible et le pas  diminue.

Mise à jour de la covariance La mise à jour de la covariance utilise deux matrices notées Cq et Cd . La matrice Cq est la covariance pondérée des q meilleurs déplacements. q

(

Cq =  w j yj yTj j=1

)

(2.70)

La matrice Cd est une matrice de rang 1 définie à partir de la direction d. Cd = d dT

(2.71)

La matrice de covariance C est mise à jour en combinant les matrices Cq et Cd avec des pondérations q et d comprises entre 0 et 1.

C' = (1 − q − d )C + qCq + dCd Cette mise à jour est schématisée sur la Figure 2-40 (droite).

Figure 2-40 : Mise à jour de la moyenne et de la covariance

(2.72)

Optimisation sans gradient

149

La Figure 2-41 montre la moyenne et la covariance actualisée.

Figure 2-41 : Moyenne et covariance actualisées

La mise à jour basée sur un tirage aléatoire de l’échantillon peut conduire à des déplacements oscillatoires lors des itérations successives. Pour stabiliser l’algorithme, on peut pondérer la direction de descente courante d avec la direction dp obtenue à l’itération précédente : d' = (1 − p )d + p dp . Ceci permet de moyenner la direction de déplacement sur plusieurs itérations.

150

Techniques d’optimisation

2.6.3 Algorithme La Figure 2-42 montre le déroulement de l’algorithme CMAES.

Figure 2-42 : Algorithme CMAES Les paramètres de réglages sont la taille de l’échantillon p, le nombre de candidats sélectionnés q, les poids (w1 , , w q ) définissant la direction de descente, les pondérations q et d des matrices de covariance, le seuil de réussite s et le nombre maximal d’itérations ou d’évaluations de la fonction. Ces réglages sont à adapter en fonction du problème et du nombre de variables. La matrice de covariance initiale peut être l’identité. La méthode étant locale (recherche au voisinage du point courant), la solution dépend du point initial x 0 .

Optimisation sans gradient

151

La matrice de covariance au point final est liée au hessien de la fonction. En effet, si la position moyenne finale m est un minimum : f (m) = 0 , la fonction f a pour développement à l’ordre 2 au voisinage de m : 1 (x − m)T H(x − m) 2 et ses lignes de niveau ont pour équation : f (x)  f (m) +

avec H = 2f (m)

(x − m)T H(x − m) = Cte

(2.73)

(2.74)

Par ailleurs, la densité de la loi normale  (0 ; C) est : p(x) =

1 − (x −m)T C−1 (x −m) 2

1 n

e

(2) 2 det C

(2.75)

et ses lignes d’iso-densité ont pour équation : (x − m)T C−1 (x − m) = Cte

(2.76)

Si la covariance C est proche de H−1 (à une constante multiplicative près), l’échantillon autour de la position m (coïncidant avec le minimum) est distribué sur les lignes de niveau de f et ne présente pas de direction de descente privilégiée. Le déplacement est alors nul (d  0) et la moyenne et la covariance se stabilisent. On constate en pratique cette convergence vers une matrice de la forme : C  H −1 , comme illustré sur la Figure 2-43.

Figure 2-43 : Covariance et hessien

152

Techniques d’optimisation

L’exemple suivant illustre la progression de l’algorithme sur la fonction de Rosenbrock.

Exemple 2-11 : Minimisation de la fonction de Rosenbrock par CMAES Appliquons l’algorithme CMAES à la fonction de Rosenbrock :

(

f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) 2

2

1

L’échantillon est de taille p = 5, le nombre de candidats sélectionnés est q = 2. Le point initial est placé en (12 ; −10). La Figure 2-44 montre la progression de l’algorithme. Les premières itérations (figure de gauche) réalisent de grands déplacements et rejoignent rapidement le fond de la vallée, puis l’algorithme progresse en suivant la vallée jusqu’au minimum (figure de droite). La solution en (1 ; 1) est atteinte de manière très précise (à 10−7 près) en 140 itérations et 800 évaluations de la fonction.

Figure 2-44 : Progression CMAES

 240,5 −119, 4  9 −1 L’inverse de la covariance finale est : C =   10 59,5   −119, 4  802 −400  à comparer au hessien au minimum : H =   200   −400 −1 8 Ces deux matrices sont quasiment proportionnelles : C  3 10 H .

Optimisation sans gradient

153

2.7 Recuit simulé La méthode du recuit simulé (Simulated Annealing, Kirkpatrick et co, 1983) s’inspire de la thermodynamique d’un système de particules.

2.7.1 Principe Le recuit est un processus utilisé en métallurgie pour obtenir un alliage sans défaut. À très haute température, le métal est à l’état liquide et les atomes se déplacent librement. On procède à un refroidissement pour revenir à l’état solide. •

Si le refroidissement est rapide (trempe), les atomes se figent dans un état désordonné. L’alliage obtenu a une énergie élevée. Sa structure est irrégulière et présente des défauts (Figure 2-45 gauche).



Si le refroidissement est lent (recuit), les atomes s’organisent de façon régulière. L’alliage obtenu a une énergie faible. Sa structure est cristalline sans défaut (Figure 2-45 droite).

Figure 2-45 : Trempe et recuit métallurgique Le niveau d’énergie E du système dépend de la disposition des atomes. Ce niveau d’énergie est une variable continue comprise entre 0 et +. La probabilité que l’énergie du système soit égale à E à la température T est donnée la loi de Gibbs. La densité de probabilité de cette loi est : −

PT (E) = ce

E kT

(2.77) −

k est la constante de Boltzmann et c =  e E

E kT

dE est le coefficient de normalisation.

154

Techniques d’optimisation

La Figure 2-46 montre les états d’énergie accessibles selon la température. À température élevée, tous les états d’énergie ont quasiment la même probabilité. À température basse, les états d’énergie élevée ont une probabilité très faible.

Figure 2-46 : États accessibles en fonction de la température

2.7.2 Probabilité de transition Le recuit simulé transpose le principe du recuit métallurgique à la minimisation d’une fonction f de n variables réelles (ou discrètes). minn f (x)

(2.78)

x

Les variables x correspondent à la disposition des atomes, la fonction f représente l’énergie du système : E(x) = f (x) . On part d’un état initial du système noté x 0 d’énergie E0 = f (x0 ) . L’état du système est perturbé de manière aléatoire : x0 → x = x0 + x , ce qui conduit à une variation d’énergie : E0 → E = E0 + E . •

Si l’énergie diminue, le nouvel état x est accepté.



Si l’énergie augmente, le nouvel état x est accepté avec la probabilité : −

P(x) = e

E T



=e

f ( x ) −f ( x0 ) T

(2.79)

Optimisation sans gradient

155

Le paramètre de température T règle l’acceptation des remontées d’énergie. • •

À température élevée, un état d’énergie supérieure peut être accepté avec une probabilité forte. Le système peut ainsi explorer l’ensemble des états possibles. À température basse, un état d’énergie supérieure est rejeté de façon quasisystématique. Le système se stabilise dans un état de basse énergie correspondant à l’équilibre thermodynamique.

L’acceptation de solutions moins bonnes à haute température permet d’explorer largement l’espace des solutions. Le système peut s’extraire d’un minimum local à condition d’autoriser un nombre suffisant d’essais (Figure 2-47).

Figure 2-47 : Échappement d’un minimum local

2.7.3 Algorithme La Figure 2-48 montre le déroulement de l’algorithme du recuit simulé (appelé aussi algorithme de Metropolis). L’algorithme s’applique à des problèmes discrets ou continus. Les perturbations aléatoires sont à définir selon le problème traité (nature des variables x et de la fonction f). Ces perturbations doivent générer une solution « localement proche » de la solution courante de manière à explorer son voisinage immédiat. La convergence vers un minimum global nécessite une température initiale élevée pour permettre l’accès à tous les états et une décroissance de température lente pour échapper aux minima locaux. On peut par exemple fixer la température initiale T0 de manière à accepter 90% des mouvements aléatoires générés à partir

156

Techniques d’optimisation

de x 0 . Cette méthode de réglage automatique s’implémente facilement et permet de débuter avec une température ni trop haute (qui ferait perdre du temps de calcul), ni trop basse (qui amènerait une convergence prématurée). La décroissance de température est de la forme Tk+1 = Tk , avec un coefficient très proche de 1 (par exemple  = 0,999 ). La décroissance est réalisée par paliers après un nombre M d’essais infructueux à chaque palier. L’algorithme s’arrête sur le nombre d’essais N ou sur un nombre de paliers sans amélioration. La qualité de la solution et le temps de calcul dépendent des valeurs de T0, , M, N. Ces réglages sont à ajuster expérimentalement au cas par cas.

Figure 2-48 : Algorithme du recuit simulé La convergence de l’algorithme s’observe en mesurant à chaque palier de température le taux d’acceptation, l’espérance et la variance de la fonction. Montrons ci-dessous comment utiliser ces informations. À température T fixée, l’espérance de la fonction f avec la probabilité d’acceptation définie par (2.79) est donnée par : E[f ] =

 f (x)P(x)dx x

 P(x)dx x

avec P(x) = e



f ( x ) −f ( x 0 ) T

(2.80)

Optimisation sans gradient

157

Calculons la dérivée de cette espérance par rapport à la température. La variable x est omise pour alléger l’écriture. dP   f dx    d dT  E[f ] =  dT

dP  dx  (  Pdx ) − (  fPdx )   dT  (  Pdx ) 2

(2.81)

En exprimant la dérivée de la probabilité (2.79) : d f (x) − f (x 0 ) P(x) = P(x) dT T2

(2.82)

et en remplaçant dans (2.81), on obtient après élimination des termes en f (x 0 ) : 2  2  d 1   f Pdx   fPdx   E[f 2 ] − E[f ]2  = E[f ] = 2 −   Pdx   dT T   Pdx T2    

(2.83)

Cette formule montre que la dérivée par rapport à la température de l’espérance de f est égale à sa variance divisée par le carré de la température. d V[f ] E[f ] = 2 dT T

(2.84)

À chaque palier de température, un certain nombre d’essais est réalisé produisant des solutions qui sont acceptées avec la probabilité (2.79). En mesurant 2 l’espérance et la variance de f et en traçant les évolutions de E[f ] et V[f ] / T en fonction de la température, on peut juger du bon comportement de l’algorithme. L’espérance E[f ] suit généralement une décroissance de forme sigmoïde (forme en « S »), avec une décroissance s’accélérant, puis ralentissant pour se stabiliser. 2

La variance V[f ] / T est maximale pour une température dite de stabilisation, qui est la température à laquelle la progression est la plus rapide (dérivée de E[f ] ). L’allure de ces courbes indique si les réglages (T0, , M, N) sont corrects ou peuvent être améliorés en changeant la température initiale (plus basse ou plus haute), la vitesse de refroidissement (plus rapide ou plus lente) et le nombre d’essais par palier. L’exemple page suivante illustre le comportement de l’algorithme du recuit simulé sur le problème du voyageur de commerce (PVC).

158

Techniques d’optimisation

Exemple 2-12 : Problème du voyageur de commerce par recuit simulé Le problème du voyageur de commerce (PVC) consiste à trouver le chemin de longueur minimale passant une fois et une seule par n villes données. Les distances des villes deux à deux sont fixées. La solution courante est la liste ordonnée des n villes à visiter. L’objectif est de trouver la permutation optimale parmi les n! solutions possibles. On définit pour ce problèmes trois types de perturbations élémentaires illustrées sur la Figure 2-49. L’insertion consiste à tirer aléatoirement un élément de la liste et à venir l’insérer aléatoirement à une nouvelle position. L’échange consiste à tirer aléatoirement deux éléments de la liste et à échanger leurs positions. L’inversion consiste à tirer aléatoirement deux éléments de la liste et à inverser l’ordre de la chaîne entre ces deux éléments

Insertion 2 est inséré après 4.

Échange 2 et 3 sont échangés.

Inversion Le chemin de 2 à 5 est inversé. Figure 2-49 : Perturbations élémentaires d’une liste

Optimisation sans gradient

159

On présente ci-dessous trois instances différentes du PVC : - le problème Défi250 est un problème fictif à 250 villes ; - le problème Pcb442 est un circuit imprimé à 442 composants ; - le problème Att532 est le problème des 532 plus grandes villes des États-Unis.

Figure 2-50 : Exemples de problème du voyageur de commerce La Figure 2-50 montre les positions des villes (ligne du haut avant résolution), puis le chemin optimal trouvé (ligne du bas après résolution). Le coût est la longueur totale du chemin. Le nombre d’essais est de l’ordre du milliard, avec environ 10 000 essais acceptés, ce qui représente un taux d’acceptation de l’ordre de 0,001%. L’évolution du taux d’acceptation en fonction de la température est tracée sur la Figure 2-51 page suivante pour le problème Defi250. La température est en échelle logarithmique. Le diagramme se lit de droite à gauche (température décroissante). Le taux d’acceptation est quasiment de 100% à température élevée, puis décroît et s’annule à basse température.

160

Techniques d’optimisation

Figure 2-51 : Taux d’acceptation en fonction de la température La Figure 2-52 montre les évolutions de l’espérance et du rapport variance/T² des solutions tirées en fonction de la température. L’espérance décroît suivant une courbe sigmoïde et se stabilise pour une −4 température Ts  10 . Le rapport variance/T² est maximal à cette température pour laquelle s’effectue la plupart des mouvements conduisant à la solution optimale.

Figure 2-52 : Moyenne et variance des solutions acceptées en fonction de la température

Optimisation sans gradient

161

2.8 Recherche avec tabou La méthode de recherche avec tabou (Tabu Search, Glover, 1986) est une méthode locale gardant en mémoire une liste des solutions essayées pour éviter d’y revenir. Cette méthode s’applique principalement à des problèmes discrets.

2.8.1 Principe L’algorithme de recherche avec tabou explore aléatoirement des solutions au voisinage du point courant xk. La liste des p dernières itérations est stockée en mémoire et constitue la liste « taboue » : L = xk −p , xk −p+1 , , xk −1 .





Toute solution du voisinage de xk peut être acceptée si elle ne fait pas partie de la liste taboue. L’objectif est d’interdire à court terme un retour vers ces solutions, afin d’échapper à un minimum local. La Figure 2-53 illustre ce mécanisme. Les premières itérations (figure de gauche) descendent librement vers un minimum local. Après le passage du minimum, la liste taboue interdit un retour vers le minimum et oblige à remonter (figure du milieu). Si la liste taboue est suffisamment grande, l’algorithme s’éloigne et bascule vers le minimum global (figure de droite).

Figure 2-53 : Échappement d’un minimum local par liste taboue

2.8.2 Liste taboue et voisinage L’objectif de la liste taboue est d’interdire temporairement un retour vers les solutions déjà visitées. La taille de la liste doit être adaptée au problème. - Une liste trop courte ne permet pas d’échapper à un minimum local. - Une liste trop longue peut bloquer l’accès à certaines solutions. La Figure 2-54 montre des situations de blocage dues à une liste trop longue. Chaque point représente une solution. On suppose que l’on ne peut explorer que

162

Techniques d’optimisation

les solutions adjacentes. Les flèches matérialisent les listes taboues associées à quatre chemins différents. On observe que le dernier point de chaque chemin se retrouve déconnecté du minimum, car la liste taboue « enferme » ce point et empêche un retour vers la zone intéressante.

Figure 2-54 : Blocages dus à une liste taboue trop longue L’efficacité de la méthode dépend aussi de la méthode d’exploration du voisinage. Le voisinage est défini comme l’ensemble des solutions accessibles par des mouvements élémentaires. De nombreux problèmes discrets consistent à chercher la permutation optimale d’un ensemble fini, comme le problème du voyageur de commerce (Exemple 2-12). Pour ce type de problème, on considère généralement deux mouvements élémentaires. L’échange consiste à tirer aléatoirement deux éléments de la liste et à échanger leurs positions. Pour une liste ordonnée de n éléments, ce mouvement définit un voisinage contenant n(n − 1) / 2 possibilités. La Figure 2-55 montre une liste ordonnée de 4 éléments et les 6 possibilités différentes après échange (les solutions grisées sont redondantes).

Figure 2-55 : Mouvement d’échange

Optimisation sans gradient

163

L’insertion consiste à tirer aléatoirement un élément de la liste et à venir l’insérer aléatoirement à une autre place. Pour une liste ordonnée de n éléments, ce mouvement définit un voisinage contenant n(n − 2) + 1 possibilités. La Figure 2-56 montre une liste ordonnée de 4 éléments et les 9 possibilités différentes après insertion (les solutions grisées sont redondantes).

Figure 2-56 : Mouvement d’insertion Le critère d’arrêt peut être un nombre maximal de mouvement, un nombre de mouvement sans amélioration ou une valeur seuil du coût.

2.8.3 Affectation quadratique La recherche avec tabou permet de résoudre des problèmes discrets comme le problème d’affectation quadratique noté QAP (Quadratic Assignment Problem). Ce problème 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 . Les objets et les sites sont numérotés de 1 à n. On note p(i) le numéro du site auquel est affecté l’objet numéro i. Lorsque l’objet i est affecté au site u = p(i) et l’objet j est affecté au site v = p(j) , le coût résultant est : fijdp(i)p(j) .

Figure 2-57 : Problème d’affectation quadratique

164

Techniques d’optimisation

L’affectation des n objets aux n sites représente une permutation P de (1,2,

P = ( p(1) , p(2) ,

, p(n) )

,n ). (2.85)

Le coût de cette permutation P est : C(P) =  fijdp(i)p( j)

(2.86)

i j

La solution du problème est la permutation P de coût minimal. Le problème d’affectation quadratique a de nombreuses applications pratiques. • • • • • •

Répartition de bâtiments ou de services. Le flot est le nombre de personnes circulant entre les bâtiments ou services. Implantation d’usines de production, de centres de livraison. Le flot est la quantité de produit échangée entre les usines. Affectation de portes d’embarquement dans un aéroport. Le flot est le nombre de personnes allant d’une porte à une autre. Placement de composants électroniques. Le flot est le nombre de connexions entre modules. Stockage de fichiers dans une base de données. Le flot est la probabilité d’accès consécutif entre 2 fichiers. Clavier d’ordinateur ou de machine à écrire. Le flot est la fréquence entre 2 lettres successives dans une langue donnée.

L’examen systématique des n! permutations possibles n’est pas réalisable lorsque n est grand. Pour appliquer l’algorithme de recherche avec tabou, on définit le voisinage d’une solution comme l’échange des positions de 2 objets. Les deux solutions P et Q ci-dessous sont voisines. P = ( p(1), Q = ( p(1),

, p(u) , p(v)

, p(v), , p(u),

, p(n) ) , p(n) )

(2.87)

La taille de ce voisinage est de l’ordre de n2 . La liste taboue contient les solutions précédentes Pk et leur durée d’interdiction tk. La durée tk est le nombre d’itérations pendant lesquelles la solution P k est taboue. Cette durée peut être fixée ou tirée aléatoirement pour chaque solution. L’évaluation d’une solution est la partie la plus pénalisante en temps de calcul. Pour éviter de recalculer complètement le coût d’une solution, on évalue seulement la variation de coût entre 2 solutions voisines.

Optimisation sans gradient

165

Notons F la matrice fixée des flots entre les n objets et D(P) la matrice des distances entre objets lorsque ceux-ci subissent la permutation P. Le coût (2.86) est noté de manière compacte : C(P) = F  D(P) . Considérons la solution P voisine de P’ obtenue en échangeant les objets u et v. Cette solution a pour coût : C(P') = F  D(P') . Les matrices D(P) et D(P ') ne différent que par les lignes et les colonnes des objets u et v, comme représenté sur la Figure 2-58 (matrices du bas).

Figure 2-58 : Variation de coût entre solutions voisines

La variation de coût entre P et P’ ne concerne que les lignes et colonnes des objets u et v et se calcule par : C =

 (f d

− fujdp(u)p( j) )

→ arcs partant de p(v) au lieu de p(u)

 (f d

− fvjdp(v)p( j) )

→ arcs partant de p(u) au lieu de p(v)

 (f d

− fiu dp(i)p(u) )

→ arcs arrivant en p(v) au lieu de p(u)

 (f d

− fivdp(i)p(v) )

→ arcs arrivant en p(v) au lieu de p(u)

j=1 à n, j u

+

j=1 à n, j v

+

i =1 à n,i  u

+

i =1 à n,i  v

uj p(v)p( j)

vj p(u)p( j)

iu p(i)p(v)

iv p(i)p(u)

(2.88)

166

Techniques d’optimisation

Supposons que l’on ait déjà évalué le coût de la solution Q obtenue à partir de P en échangeant les objets r et s (matrice du haut sur la Figure 2-58) et le coût de la solution P’ obtenue à partir de P en échangeant les objets u et v (matrice du bas sur la Figure 2-58). L’évaluation de la nouvelle solution Q’ obtenue à partir de P en échangeant les objets r et s puis les objets u et v ne nécessite de recalculer que 8 éléments de la matrice D (matrice du milieu sur la Figure 2-58). En stockant les solutions déjà examinées avec leurs coûts, on peut ainsi réaliser une économie de calculs très importante et permettre à l’algorithme d’explorer davantage de solutions dans un temps de calcul imparti. L’exemple suivant illustre la résolution d’un problème d’affectation quadratique par recherche avec tabou. Cet exemple est présenté dans la référence [R7].

Exemple 2-13 : Affectation quadratique par recherche avec tabou (d’après [R7]) Considérons le problème d’affectation quadratique appelé NUG5 dans les bases de problèmes tests. Ce problème de dimension 5 est défini par sa matrice des flots F et sa matrice des distances D. 1

2

3

4

5

0  2 5  F = 3 2  4 4  51

5 0 3 0 2

2 3 0 0 0

4 0 0 0 5

1  2 0  5 0 

1

1

2

3

4

5

0  2 1  D = 31  4 2  5 3

1 0 2 1 2

1 2 0 1 2

2 1 1 0 1

3  2 2  1 0 

1

On cherche la permutation p des objets (1,2,3,4,5) minimisant le coût total C(p) = F  D(p) . Le nombre total de permutations est : 5! = 120 . En examinant toutes les permutations possibles, on trouve 2 solutions optimales. - La permutation P = (2,4,5,1,3) est de coût C = 50. - La permutation Q = (3,4,5,1,2) est de coût C = 50 également. Le voisinage d’une solution est l’ensemble des solutions accessibles en échangeant les positions de 2 éléments. Ce voisinage de taille 10 est complètement exploré à chaque itération et la meilleure solution est retenue, si elle n’est pas dans la liste taboue.

Optimisation sans gradient

167

La liste taboue contient les dernières solutions acceptées. Ces solutions sont mémorisées pendant 3 itérations, puis sont effacées. La liste reste donc de longueur 3 à partir de l’itération 3. Initialisation La recherche avec tabou est initialisée avec la solution p0 = (5,4,3,2,1) de coût C0 = 64. La liste taboue est initialement vide. L’exploration du voisinage de p0 donne les résultats suivants.

La meilleure solution dans le voisinage est : p1 = (4,5,3,2,1) de coût C1 = 60. La solution p1 meilleure que p0 est acceptée. La solution p0 entre dans la liste taboue pour les 3 prochaines itérations.

Itération 1 La liste taboue contient une solution.

L’exploration du voisinage de p1 donne les résultats suivants.

L’échange (1-2) n’est pas autorisé, car il redonnerait p0 qui est dans la liste taboue. La meilleure solution dans le voisinage est : p2 = (4,3,5,2,1) de coût C2 = 52. La solution p2 meilleure que p0 est acceptée. La solution p1 entre dans la liste taboue pour les 3 prochaines itérations.

168

Techniques d’optimisation

Itération 2 La liste taboue contient deux solutions.

L’exploration du voisinage de p2 donne les résultats suivants.

L’échange (2-3) n’est pas autorisé, car il redonnerait p1 qui est dans la liste taboue. La meilleure solution dans le voisinage est : p3 = (4,2,5,3,1) de coût C3 = 52. La solution p3 de même coût que p2 est acceptée. La solution p2 entre dans la liste taboue pour les 3 prochaines itérations.

Itération 3 La liste taboue contient trois solutions.

L’exploration du voisinage de p3 donne les résultats suivants.

L’échange (2-4) n’est pas autorisé, car il redonnerait p2 qui est dans la liste taboue. La meilleure solution dans le voisinage est : p4 = (2,4,5,3,1) de coût C4 = 60. La solution p4, bien que moins bonne que p3, est acceptée. La solution p3 entre dans la liste taboue pour les 3 prochaines itérations. La solution p0 sort de la liste taboue, car sa durée d’interdiction est terminée.

Optimisation sans gradient

169

Itération 4 La liste taboue contient trois solutions.

L’exploration du voisinage de p4 donne les résultats suivants.

L’échange (1-2) n’est pas autorisé, car il redonnerait p3 qui est dans la liste taboue. La meilleure solution dans le voisinage est : p5 = (2,4,5,1,3) de coût C5 = 50. La solution p5 meilleure que p4 est acceptée. La solution p4 entre dans la liste taboue pour les 3 prochaines itérations. La solution p1 sort de la liste taboue, car sa durée d’interdiction est terminée.

Itération 5 La liste taboue contient trois solutions.

L’exploration du voisinage de p5 donne les résultats suivants.

L’échange (4-5) n’est pas autorisé, car il redonnerait p4 qui est dans la liste taboue. La meilleure solution dans le voisinage est : p6 = (3,4,5,1,2) de coût C5 = 50. La solution p6 de même coût que p5 est acceptée. La solution p5 entre dans la liste taboue pour les 3 prochaines itérations. La solution p2 sort de la liste taboue, car sa durée d’interdiction est terminée.

170

Techniques d’optimisation

Solution Les itérations suivantes ne produisent pas de meilleures solutions. Les 2 permutations optimales ont été trouvée en 5 itérations (parmi les 120 possibilités de permutations).

p5 = P = (2, 4,5,1,3) p = Q = (3, 4,5,1, 2)  6

→ C = 50

La liste taboue a forcé une dégradation à l’itération 3 (C = +8). Ceci a permis de sortir d’un minimum local p3 = (4,2,5,3,1) de coût C3 = 52, puis d’obtenir à l’itération suivante la solution optimale de coût C = 50. Le Tableau 2-7 récapitule les itérations de la recherche avec tabou sur ce problème NUG5.

Tableau 2-7 : Itérations de la recherche avec tabou

Optimisation sans gradient

171

2.9 Essaims de particules La méthode des essaims de particules (Particle Swarm Optimization, Eberhart et Kennedy, 1995) s’inspire du comportement social des animaux (nuée d’oiseaux, banc de poissons, essaim d’abeilles).

2.9.1 Principe Un essaim est un groupe d’individus (ou particules) en mouvement, comme illustré sur la Figure 2-59. Le mouvement de chaque particule est influencé par : - sa vitesse actuelle qui l’incite à explorer le voisinage (tendance « aventureuse ») ; - son expérience personnelle qui l’incite à revenir à sa meilleure position passée (tendance « conservatrice ») ; - son expérience sociale qui l’incite à suivre un groupe de voisins (tendance « panurgienne »). La notion de voisin n’est pas nécessairement géographique.

Figure 2-59 : Mouvement d’un essaim de particules

2.9.2 Déplacement des particules Les principes de déplacement d’un essaim sont transposés à la minimisation d’une fonction f de n variables réelles (ou discrètes). minn f (x) x

(2.89)

Les variables x sont interprétées comme les coordonnées de position d’une particule. La valeur f (x) mesure la qualité de la position x.

172

Techniques d’optimisation

L’essaim est constitué de N particules en mouvement. Chaque particule a sa propre position x et se déplace avec sa propre vitesse v. Considérons à l’itération k une particule située à la position xk avec la vitesse vk. La vitesse de la particule à l’itération suivante est influencée par 4 facteurs. •

Composante d’inertie La composante d’inertie traduit la tendance à conserver la vitesse actuelle v k.



Composante personnelle La meilleure position rencontrée par la particule jusqu’à l’itération k est gardée en mémoire. Cette meilleure position « personnelle » est notée pk. La particule est attirée vers sa meilleure position et sa vitesse va être déviée par une composante vp orientée vers pk : vp = pk − x k .



Composante de groupe La particule est en communication avec un groupe de voisins V. La meilleure position rencontrée par les particules de ce groupe est notée g k. La particule est attirée vers la meilleure position de son groupe et sa vitesse va être déviée par une composante vg orientée vers gk : vg = g k − x k .



Composante aléatoire La composante aléatoire va vient s’ajouter aux trois composantes précédentes.

La vitesse de la particule à l’itération k+1 est la somme des 4 composantes. v k +1 = v k + c1rp v p + c 2 rg v g + c3 v a

v = pk − x k avec  p  vg = g k − x k

(2.90)

Les coefficients ,c1 ,c2 ,c3 sont des pondérations fixées comprises entre 0 et 1. Le coefficient  sur la vitesse précédente vk est appelé coefficient d’inertie. Les coefficients rp ,rg sont des pondérations aléatoires tirées entre 0 et 1. La position de la particule à l’itération k + 1 est la somme de sa position précédente et de sa vitesse actualisée.

x k+1 = x k + vk+1

(2.91)

La Figure 2-60 ci-après montre le déplacement d’une particule sur 7 itérations. La meilleure position rencontrée jusqu’à l’itération k est x 3 : pk = x 3 . La Figure 2-61 montre les composantes de la vitesse et la mise à jour de la vitesse et de la position.

Optimisation sans gradient

173

Figure 2-60 : Meilleure position personnelle

Figure 2-61 : Composante personnelle et de groupe de la vitesse

2.9.3 Voisinage Le voisinage d’une particule peut être défini de différentes manières illustrées sur la Figure 2-62.

Figure 2-62 : Topologies de voisinages

174

Techniques d’optimisation

Le voisinage en anneau consiste à ordonner les particules au sein d’une liste : chaque particule communique avec un nombre fixé de particules précédentes et suivantes. Le voisinage en étoile consiste à faire communiquer toutes les particules entre elles. Le voisinage en rayon consiste à faire communiquer chaque particule avec une seule particule centrale. Ces différentes topologies de voisinage ont chacune leur intérêt et sont à envisager en fonction du problème d’optimisation à traiter.

2.9.4 Algorithme L’algorithme consiste à simuler le mouvement de plusieurs particules suivant les règles (2.90) et (2.91). Les réglages de l’algorithme sont le nombre de particules, le nombre total d’itérations (ou le nombre maximal d’itérations sans amélioration) et la topologie du voisinage. On peut de manière standard utiliser quelques dizaines de particules (N = 10 à 100) et considérer un voisinage en anneau (m = 2 à 10) . Ces réglages sont à tester expérimentalement. Pour favoriser une exploration locale, on peut borner la vitesse des particules et effectuer pour chaque particule une recherche linéaire suivant sa vitesse. Cette recherche locale accélère notablement la détection de bonnes solutions. L’algorithme s’applique à des problèmes continus et discrets et offre l’intérêt d’être parallélisable, car les mouvements des N particules se calculent de manière indépendante à chaque itération par les formules (2.90) et (2.91). Le résultat est un ensemble de N minima locaux qui correspondent aux meilleures positions personnelles des N particules. Ces minima locaux seront distincts ou non en fonction de la topologie de voisinage utilisée. Si le nombre de particules et le nombre d’itérations sont suffisants, il est possible de localiser le minimum global, même pour des problèmes difficiles. L’exemple suivant illustre le comportement de l’algorithme d’essaim particulaire sur la fonction de Griewank et sur la fonction de Rosenbrock.

Optimisation sans gradient

175

Exemple 2-14 : Minimisation par essaim particulaire

x2 − cos x + 1 . 4000 Cette fonction est tracée sur la Figure 2-3. Le minimum global est en x = 0 . L’algorithme est exécuté avec 100 particules, 1 000 itérations et 30 essais de recherche linéaire par particule. La Figure 2-63 montre la progression de l’algorithme avec un zoom sur les dernières itérations. La solution x*  2 10−7 est obtenue après environ 650 itérations. Reprenons la fonction de Griewank de l’Exemple 2-2 : f(x) =

Figure 2-63 : Progression de l’algorithme sur la fonction de Griewank L’algorithme est appliqué avec les mêmes réglages sur la fonction de

(

Rosenbrock : f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) 2

2

1

dont le minimum est en (1 ; 1).

La Figure 2-64 montre la progression de l’algorithme.  x  1,0000025 La solution  1 est obtenue après environ 50 itérations.  x2  1,0000048

Figure 2-64 : Progression de l’algorithme sur la fonction de Rosenbrock

176

Techniques d’optimisation

2.10 Colonies de fourmis La méthode des colonies de fourmis (Ant Colony Optimization, Dorigo et co, 1990) s’inspire du comportement collectif des fourmis à la recherche de nourriture.

2.10.1 Principe Les fourmis déposent sur leur passage des substances volatiles appelées phéromones. Plus un chemin est concentré en phéromones, plus il est attractif. Ce mode de communication indirecte par modification de l’environnement est la stigmergie. Le chemin le plus court entre la fourmilière et la nourriture étant parcouru plus rapidement, il reçoit davantage de phéromones au cours du temps et devient le chemin le plus emprunté comme illustré sur la Figure 2-65.

Figure 2-65 : Concentration des phéromones sur le chemin le plus court

Optimisation sans gradient

177

2.10.2 Mouvement des fourmis Chaque fourmi se déplace de manière aléatoire indépendamment des autres fourmis. Le trajet d’une fourmi est décomposé en une succession de segments. À chaque embranchement, la fourmi a le choix entre plusieurs segments. Le choix de la direction dépend de la concentration locale en phéromones. L’intensité i du segment numéro i représente sa concentration en phéromones. La probabilité pi de choisir le segment i est fonction croissante de son intensité.

pi = p(i ) 1  2  3  p1  p2  p3

Si un seul chemin est marqué, toutes les fourmis le suivent et les autres solutions ne seront pas explorées. L’évaporation des phéromones au cours du temps vient contrebalancer le dépôt par les fourmis. Ce mécanisme permet d’affaiblir le chemin initial et augmente la probabilité d’explorer d’autres solutions.

2.10.3 Problème du voyageur de commerce La méthode des colonies de fourmis s’applique de manière naturelle au problème du voyageur de commerce (Travelling Salesman Problem). Ce problème consiste à trouver le chemin de longueur minimale passant une fois et une seule par n villes. L’ensemble des villes à visiter forme un graphe, dont les arêtes sont les chemins entre les villes. La distance entre les villes i et j est notée d ij. Si deux villes ne sont pas reliées, on attribue une valeur arbitrairement grande à leur distance. Trajet individuel d’une fourmi Chaque fourmi effectue le parcours du graphe en passant par les n villes à visiter. Lorsqu’une fourmi se trouve à la ville i, il lui reste un ensemble J de villes non visitées. La probabilité pij de choisir la ville jJ dépend des distances dij et des concentrations ij. pij = (ij ) (ij )

(2.92)

178

Techniques d’optimisation

La visibilité ij entre les villes i et j est une fonction décroissante de la distance (par exemple ij = 1/ dij ) de façon à privilégier les villes proches. L’intensité ij de l’arête i-j représente la concentration en phéromones à l’instant auquel la fourmi doit choisir l’arête suivante. Les paramètres  et  modulent l’influence de la visibilité et de l’intensité. La probabilité (2.92) est normalisée à 1 sur l’ensemble J des villes restantes. À la fin de son tour des n villes, la fourmi a parcouru une distance totale D. Elle dépose sur les arêtes i-j sélectionnées la quantité de phéromones ij définie par : D0 (2.93) D où D0 est une distance de référence fixée. La quantité de phéromones déposée est d’autant plus grande que le chemin est court. ij =

Itération de l’algorithme À chaque itération, l’ensemble des m fourmis parcourt les n villes. La fourmi numéro k augmente l’intensité ij de chaque segment i-j sur son trajet.

ij → ij + ij (k)

(2.94)

Lorsque les m fourmis sont passées, on réduit les intensités de tous les segments par évaporation de façon à affaiblir l’attractivité des « mauvaises » solutions. Le paramètre d’évaporation  est compris entre 0 et 1.

ij → (1 − )ij La Figure 2-66 montre le déroulement d’une itération de l’algorithme.

Figure 2-66 : Itération de l’algorithme de colonies de fourmis

(2.95)

Optimisation sans gradient

179

La progression vers la solution comporte 4 phases schématisée sur la Figure 2-67. Une fourmi « éclaireuse » crée un chemin initial peu marqué en phéromones. Les fourmis suivantes explorent aléatoirement les chemins voisins. Le chemin le plus court se renforce progressivement en phéromones et devient plus attractif, pendant que l’évaporation fait oublier les autres chemins. Si les nombres d’itérations et de fourmis sont suffisants, l’exploration permet de faire apparaître le chemin optimal.

Figure 2-67 : Phases de l’algorithme de colonies de fourmis L’algorithme de colonies de fourmis s’applique à des problèmes discrets ou continus. Il offre des possibilités de parallélisation selon la stratégie choisie pour l’exploration individuelle des fourmis. En choisissant des réglages (nombre de fourmis, paramètres d’intensification et d’évaporation) adaptés au problème à résoudre, on peut obtenir de très bons résultats sur des problèmes difficiles.

2.11 Algorithmes évolutionnaires Les algorithmes évolutionnaires sont inspirés des principes de l’évolution et de la loi de sélection naturelle de Darwin (1859). Les algorithmes génétiques (Holland, 1975) sont une forme particulière d’algorithmes évolutionnaires.

2.11.1 Principe Une population d’individus évolue de génération en génération. Chaque individu est plus ou moins « performant » selon ses caractéristiques. L’évolution naturelle favorise les caractéristiques qui rendent un individu performant.

180

Techniques d’optimisation

Le renouvellement d’une génération (parents) se déroule en 4 étapes : - sélection d’une partie des parents pour la reproduction ; - croisement des parents sélectionnés pour engendrer des enfants ; - mutation (variation) éventuelle d’une partie des enfants ; - sélection entre parents et enfants pour constituer la génération suivante. L’évolution fait apparaître des individus de plus en plus performants. La rapidité et l’efficacité du processus dépend de la taille de la population, de la représentation des individus (codage en variables binaires, entières ou réelles) et des opérateurs de sélection et de variation appliqués à la population.

2.11.2 Mécanismes d’évolution Considérons un problème de minimisation à n variables continues ou discrètes. min f (x) x

(2.96)

Les variables x représentent le phénotype d’un individu, la valeur f (x) représente sa performance appelée aussi « fitness ». La population est constituée de p individus, de l’ordre de 100 à 1000 selon la nature du problème. Les mécanismes d’évolution comportent un processus de sélection ou intensification et un processus de variation ou diversification. Les opérateurs de sélection ont pour but de conserver les meilleures solutions. Ils se basent sur la performance des individus. La sélection peut être déterministe, proportionnelle, par tournois, etc. Elle peut concerner les parents (sélection pour la reproduction) et les enfants (sélection pour le remplacement). Les opérateurs de variation ont pour but d’explorer de nouvelles solutions. Ils incluent une composante aléatoire pour modifier une partie des variables. La variation peut s’effectuer par croisement, par mutation,… La méthode de variation dépend du codage de l’individu. Dans le cas des algorithmes génétiques, les variables x (phénotype) sont représentées en binaire (génotype) et la variation est réalisée sur le génotype.

Optimisation sans gradient

181

2.11.3 Algorithme Les éléments d’un algorithme évolutionnaire sont le choix des processus de sélection et de variation, la forme de codage des individus, la taille p de la population, le nombre q d’enfants générés et le nombre N de générations. Il existe de nombreuses variantes, selon les processus de sélection et de variation choisis. L’application à un problème particulier nécessite généralement un travail expérimental pour trouver des réglages satisfaisants. La Figure 2-68 illustre le déroulement d’un algorithme évolutionnaire.

Figure 2-68 : Itérations d’un algorithme évolutionnaire La mise en oeuvre d’un algorithme évolutionnaire est illustrée page suivante sur un exemple très simple (fonction d’une seule variable). Cet exemple est présenté dans la référence [R7].

182

Techniques d’optimisation

Exemple 2-15 : Minimisation par algorithme évolutionnaire (d’après [R7]) Cherchons à minimiser la fonction : f (x) = x 2 où la variable x est entière, comprise entre −16 et +16. On considère une population de 10 individus, représentés par leur valeur xi et leur évaluation f(xi). L’étape de reproduction comprend 4 étapes : - sélection des 8 meilleurs parents parmi les 10 - appariement des parents sélectionnés par paires - croisement des paires de parents pour engendrer 2 enfants - mutation de 2 enfants parmi les 8

→ → → →

8 parents 4 paires 8 enfants 8 enfants

L’étape de remplacement consiste à : - évaluer les 8 enfants obtenus (yj)j=1 à 8 → f(yj) - les regrouper avec les 10 parents (xi)i=1 à 10 → f(xi) - garder les 10 meilleurs de ces 18 candidats pour former la génération suivante. Ces étapes de reproduction et de remplacement sont illustrées ci-dessous. Population initiale : génération aléatoire de 10 individus

Optimisation sans gradient

Sélection des parents : choix des 8 meilleurs parents et appariement aléatoire

Croisement des parents : génération aléatoire de 8 enfants

183

184

Techniques d’optimisation

Mutation des enfants : mutations aléatoires

Candidats pour la génération suivante : 10 parents + 8 enfants

Optimisation sans gradient

185

Sélection des 10 meilleurs candidats

Récapitulatif de l’itération

La première itération réduit significativement la moyenne des individus qui passe de 91,4 à 31,4, mais n’améliore pas le meilleur individu qui reste à la valeur 1. Il faut généralement un grand nombre d’itérations et des réglages appropriés pour obtenir une solution précise.

186

Techniques d’optimisation

2.12 Conclusion 2.12.1 Les points essentiels •

Un problème d’optimisation est difficile lorsqu’il comporte des variables entières ou lorsqu’il présente plusieurs minima locaux.



Les méthodes d’optimisation sans gradient sont de nature locale ou globale, déterministe ou aléatoire.



La méthode de Nelder-Mead s’avère très performante sur une grande variété de problèmes à variables réelles.



Les métaheuristiques sont capables de trouver de bonnes solutions à des problèmes difficiles, mais sans garantie de convergence ou d’optimalité globale.



La qualité de la solution dépend de la méthode choisie, de ses réglages et du temps de calcul alloué.

2.12.2 Pour aller plus loin •

Métaheuristiques pour l’optimisation difficile (J. Dréo, A. Pétrowski, P. Siarry, E. Taillard, Eyrolles 2003) Ce livre de référence présente en détail le recuit simulé, la recherche avec tabou, les algorithmes évolutionnaires et les colonies de fourmis. Chaque métaheuristique est exposée avec ses réglages, les différentes variantes possibles et de nombreux exemples illustratifs. La dernière partie propose l’analyse de trois études de cas industriels.



Stochastic optimization (J.J. Schneider, S. Kirkpatrick, Springer 2006) Ce livre présente de nombreuses heuristiques (terme que l’auteur emploie de préférence à « métaheuristique ») et analyse plus particulièrement la méthode du recuit simulé dont les auteurs sont des spécialistes. Les différentes méthodes sont appliquées et comparées de manière détaillée sur le problème du voyageur de commerce.



Ant colony optimization (M. Rodrigo, T. Stützle, MIT Press 2004) Ce livre est consacré aux algorithmes de colonies de fourmis dont les auteurs sont des spécialistes. Il présente les principes généraux, l’application au problème du voyageur de commerce et à d’autres problèmes combinatoires.

Optimisation sans gradient



187

Global Optimization by Particle Swarm Method: a Fortran Program (S.K. Mishra, MPRA Paper n° 874, 2006) Un article décrivant la méthode des essaims et ses réglages. Un programme Fortran très performant est donné en annexe avec de nombreux cas tests difficiles.



A Simplex Method for Function Minimization (J. Nelder, R. Mead, Computer journal vol. 7 n° 4, 1965) L’article fondateur sur la méthode de Nelder-Mead.



Lipschitzian optimization without the Lipschitz constant (D.R. Jones, C.D. Perttunen, B.E. Stuckman, Journal of Optimization Theory and applications 79, 1993) L’article fondateur sur la méthode d’optimisation globale DIRECT.

Optimisation sans contraintes

189

3. Optimisation sans contraintes Ce chapitre est consacré aux méthodes d’optimisation continue sans contraintes. La fonction de plusieurs variables réelles est supposée différentiable, ce qui permet l’utilisation du gradient et éventuellement du hessien. Les algorithmes présentés ici sont déterministes, ce qui signifie que leur comportement est strictement identique lorsqu’on les applique deux fois de suite au même problème (par opposition aux métaheuristiques à composantes aléatoires présentées au chapitre 2). La section 1 introduit la méthode de Newton pour la résolution d’équations et pour la minimisation. Cette méthode très performante est à la base de la plupart des algorithmes d’optimisation. Elle présente cependant deux inconvénients majeurs (calcul du hessien et robustesse incertaine) qui limitent son application directe. La section 2 présente les méthodes de quasi-Newton dont l’idée est d’appliquer la méthode de Newton sans calculer le hessien. Leur principe est d’utiliser la suite des points calculés au cours des itérations pour construire progressivement une approximation du hessien. La section 3 présente les algorithmes de descente par recherche linéaire. Leur principe est de chercher un nouveau point réduisant la fonction dans une direction donnée. La direction de descente peut être construite de différentes manières, en utilisant le gradient et l’approximation du hessien par quasi-Newton. La section 4 présente les algorithmes de descente par région de confiance. Leur principe est de minimiser un modèle quadratique de la fonction à l’intérieur d’une région de rayon donné. Le modèle quadratique est construit en utilisant le gradient et l’approximation du hessien par quasi-Newton et le rayon de la région est adapté pour obtenir un nouveau point réduisant la fonction. La section 5 établit quelques propriétés de convergence des méthodes de descente. Ces propriétés concernent en particulier la vitesse de convergence et la précision atteignable sur la solution.

190

Techniques d’optimisation

3.1 Méthode de Newton La méthode de Newton sert à résoudre numériquement un système d’équations non linéaires. Elle est à la base de la majorité des algorithmes d’optimisation. Cette section présente la méthode de Newton pour la résolution d’équations, les méthodes d’homotopie permettant de contourner les difficultés d’initialisation et l’application à des problèmes de minimisation.

3.1.1 Système d’équations Considérons un système de n équations non linéaires à n inconnues. g(x) = 0

avec g : x 

n

g(x) 

(3.1)

n

La fonction g est supposée différentiable. Écrivons son développement de Taylor à l’ordre 1 en un point x0. g(x) = g(x0 ) + g(x0 )T (x − x0 ) + o ( x − x0

)

(3.2)

En approximant au voisinage de x0 la fonction g par la fonction linéaire gˆ 0 :

gˆ 0 (x) = g(x0 ) + G0 (x − x0 ) def

avec G0 = g(x0 )T

(3.3)

et en résolvant le système linéaire :

gˆ 0 (x) = 0

(3.4)

on obtient le point x1 : (3.5)

x1 = x0 − G0−1g(x0 )

Si la fonction linéaire gˆ 0 est proche de g , on peut espérer que le point x1 est proche de la solution du système (3.1), ce qui se vérifie en calculant g(x1 ) . La méthode de Newton consiste à itérer le processus (3.3–3.5) jusqu’à obtenir une solution satisfaisante. Les itérations de Newton sont définies par : xk +1 = xk − Gk−1g(xk )

avec Gk = g(xk )T

(3.6)

La Figure 3-1 ci-après montre le principe général de la méthode de Newton.

Optimisation sans contraintes

191

Figure 3-1 : Principe de la méthode de Newton En dimension 1, la matrice G est la dérivée de g et l’équation (3.3) est l’équation de la tangente en x0 à la courbe y = g(x) . La méthode de Newton est aussi appelée méthode de la tangente et l’itération de Newton en dimension 1 est donnée par : xk +1 = xk −

g(xk ) g'(xk )

(3.7)

La Figure 3-2 montre les itérations associées aux tangentes successives.

Figure 3-2 : Méthode de la tangente Les exemples 3.1 et 3.2, pages suivantes, sont des résolutions d’équations à une inconnue montrant les comportements possibles de la méthode de Newton.

192

Techniques d’optimisation

Exemple 3-1 : Résolution d’équation par la méthode de Newton Appliquons la méthode de Newton à trois équations différentes. Équation 1 : Résoudre g(x) = x2 − 1 = 0 . Le Tableau 3-1 montre les itérations de Newton à partir de x0 = 4 .

La méthode converge vers la solution x* = 1 et l’erreur décroît quadratiquement. Itération 0 1 2 3 4 5 6

xk 4,00000000 2,12500000 1,29779412 1,03416618 1,00056438 1,00000016 1,00000000

g(xk) 1,5E+01 3,5E+00 6,8E-01 6,9E-02 1,1E-03 3,2E-07 2,5E-14

g’(xk) 8,0000 4,2500 2,5956 2,0683 2,0011 2,0000 2,0000

Erreur 3,0E+00 1,1E+00 3,0E-01 3,4E-02 5,6E-04 1,6E-07 1,3E-14

Tableau 3-1 : Convergence quadratique de la méthode de Newton 2 Équation 2 : Résoudre g(x) = (x − 1) = 0 .

Le Tableau 3-2 montre les itérations de Newton à partir de x0 = 4 .

La méthode converge vers la solution x* = 1 et l’erreur décroît linéairement. Itération 0 1 2 3 4 5 6 7 8 9 10 15 20

xk 4,00000000 2,50000000 1,75000000 1,37500000 1,18750000 1,09375000 1,04687500 1,02343750 1,01171875 1,00585938 1,00292969 1,00009155 1,00000286

g(xk) 9,0E+00 2,3E+00 5,6E-01 1,4E-01 3,5E-02 8,8E-03 2,2E-03 5,5E-04 1,4E-04 3,4E-05 8,6E-06 8,4E-09 8,2E-12

g’(xk) Erreur 6,0000 3,0E+00 3,0000 1,5E+00 1,5000 7,5E-01 0,7500 3,8E-01 0,3750 1,9E-01 0,1875 9,4E-02 0,0938 4,7E-02 0,0469 2,3E-02 0,0234 1,2E-02 0,0117 5,9E-03 0,0059 2,9E-03 0,0002 9,2E-05 0,0000 2,9E-06

Tableau 3-2 : Convergence linéaire de la méthode de Newton

Optimisation sans contraintes

193

Équation 3 : Résoudre g(x) = Arc tan x = 0 . Le Tableau 3-3 montre les itérations de Newton à partir de x0 = 1,3 ou x0 = 1,5 . La méthode converge quadratiquement pour x0 = 1,3 et diverge pour x0 = 1,5 . Itération 0 1 2 3 4 5 6

xk 1,300 -1,162 0,859 -0,374 0,034 0,000 0,000

g(xk) 0,915 -0,860 0,710 -0,358 0,034 0,000 0,000

g’(xk) 0,372 0,426 0,575 0,877 0,999 1,000 1,000

Erreur 1,3E+00 -1,2E+00 8,6E-01 -3,7E-01 3,4E-02 -2,6E-05 1,2E-14

Itération xk g(xk) 0 1,500 0,983 1 -1,694 -1,038 2 2,321 1,164 3 -5,114 -1,378 4 32,296 1,540 5 -1575,317 -1,570 6 3894976,008 1,571

g’(xk) 0,308 0,258 0,157 0,037 0,001 0,000 0,000

Erreur 1,5E+00 -1,7E+00 2,3E+00 -5,1E+00 3,2E+01 -1,6E+03 3,9E+06

Tableau 3-3 : Divergence de la méthode de Newton selon le point initial

Ces exemples en dimension 1 montrent que la convergence de la méthode de Newton n’est pas garantie, et que la vitesse de convergence est variable. Pour expliquer ce comportement, écrivons l’itération de Newton en termes d’écart à la solution en posant xk = x * +k . La formule (3.7) devient : k +1 = k −

g(x * +k ) g'(x * +k )

(3.8)

Développons la fonction à l’ordre 3 et sa dérivée à l’ordre 1 au voisinage de x*. k +1 = k −

1 1 g''(x*)k2 + g'''(x*)3k 2 6 g'(x*) + g''(x*)k

g(x*) + g'(x*)k +

(3.9)

194

Techniques d’optimisation

Après réduction et en utilisant g(x*) = 0 (car x* est la solution), on obtient : 1 1 g''(x*)2k − g'''(x*)3k 6 k +1 = 2 g'(x*) + g''(x*)k

(3.10)

Au voisinage de la solution x*, les écarts k sont petits. Le comportement de la méthode de Newton dépend des valeurs de g '(x*) et g ''(x*) . •

Si g '(x*)  0 et g ''(x*)  0 , et pour k petit, la formule (3.10) se réduit à : k +1 

1 g''(x*) 2 k 2 g'(x*)

(3.11)

L’écart est mis au carré à chaque itération et la convergence est quadratique. Ce comportement s’observe dans le Tableau 3-1. •

Si g '(x*) = 0 et g ''(x*)  0 , et pour k petit, la formule (3.10) se réduit à : 1 (3.12) k 2 L’écart est divisé par 2 à chaque itération et la convergence est linéaire. k +1 

Ce comportement s’observe dans le Tableau 3-2. •

Si g '(x*)  0 et g ''(x*) = 0 , et pour k petit, la formule (3.10) se réduit à : k +1 = −

1 g'''(x*) 3 k 6 g'(x*)

(3.13)

L’écart est mis au cube à chaque itération et la convergence est d’ordre 3. Ce comportement s’observe sur les dernières itérations du Tableau 3-3 initialisé avec x0 = 1,3 . Ces analyses sont valables au voisinage proche de la solution pour k 1 . Lorsque le point initial est éloigné de la solution, il n’existe aucune garantie de convergence (sauf propriétés particulières de la fonction) comme le montre le Tableau 3-3 initialisé avec x0 = 1,5. Dans certains cas, le rayon de convergence de la méthode de Newton est très petit et rend l’initialisation problématique. Les méthodes d’homotopies présentées en section 3.1.2 peuvent résoudre cette difficulté. La solution obtenue dépend de l’initialisation et peut parfois être très éloignée de celle-ci. L’exemple suivant montre un comportement chaotique de la méthode de Newton en fonction de l’initialisation.

Optimisation sans contraintes

195

Exemple 3-2 : Bassins d’attraction de la méthode de Newton Considérons l’équation en nombres complexes : z3 = 1 . Les solutions sont les 3 racines de l’unité :

u1 = 1 , u2 =

−1 + i 3 −1 − i 3 , u3 = 2 2

L’itération de Newton est : zk +1 = zk −

z3k − 1 2z3k + 1 = . 3z2k 3z2k

Selon le point initial z0 , la méthode de Newton converge vers l’une des 3 racines u1, u2 ou u3. Différentes initialisations sont choisies dans le disque unité : z0  1 . La Figure 3-3 est tracée dans le plan complexe. En chaque point z0 , le code couleur indique vers laquelle des 3 racines la méthode de Newton a convergé. On observe des bassins d’attraction associés aux 3 racines et des frontières « fractales » où la distinction n’est pas nette et peut aboutir à l’une des 3 racines. Une infime variation de l’initialisation dans ces zones modifie la solution.

Figure 3-3 : Bassins d’attraction de la méthode de Newton

196

Techniques d’optimisation

3.1.2 Méthode d’homotopie Considérons un système de n équations non linéaires à n inconnues. (3.14)

g1 (x) = 0

Supposons qu’il s’avère très difficile de trouver une initialisation permettant à la méthode de Newton de converger. Le principe d’une méthode d’homotopie (ou de continuation) est de générer une bonne initialisation en résolvant une suite de problèmes paramétrés. On part pour cela d’un autre système de n équations non linéaires appelé P 0. (3.15)

g0 (x) = 0

La fonction g0 est choisie arbitrairement et n’a pas forcément de « ressemblance » avec la fonction g1 de (3.14). Cette fonction doit être choisie pour que le système (3.15) soit facile à résoudre et fournisse une solution notée x0. On définit alors la suite de problèmes paramétrés P avec 0    1 .

(P ) : g (x) = 0 avec g (x) = g1(x) + (1 − )g0 (x) •

Lorsque  = 0 , on a le problème « facile » P0 (3.15).



Lorsque  = 1 , on a le problème « difficile » P1 (3.14).

(3.16)

La méthode d’homotopie schématisée sur la Figure 3-4 consiste à faire varier  de 0 à 1 en résolvant à chaque fois le problème P et en utilisant sa solution x pour initialiser le problème suivant. Si la variation  est faible, la solution x+ du problème P+ est proche de la solution x du problème P et l’initialisation

x permet la convergence de la méthode de Newton sur le problème P+ .

Figure 3-4 : Méthode d’homotopie

Optimisation sans contraintes

197

Exemple 3-3 : Résolution d’équation par méthode d’homotopie Cherchons à résoudre l’équation : g1 (x) = Arctan x = 0 . L’Exemple 3-1 a montré que la méthode de Newton converge à partir de x0 = 1,3 et diverge à partir de x0 = 1,5 . Appliquons une méthode d’homotopie pour surmonter le problème d’initialisation. Définissons arbitrairement comme problème « facile » P0 : g0 (x) = x −10 = 0 . La famille de problèmes paramétrés P  est définie par :

g (x) = (1 − )(x −10) + Arctan (x) = 0 On résout la suite des problèmes P de  = 0 jusqu’à  = 1 . Le pas d’homotopie est fixé à  = 0,1 de  = 0 à  = 0,8 , puis  = 0,05 de  = 0,8 à  = 1 . Il y a au total 13 problèmes successifs à résoudre. Le problème P 0 est initialisé avec x0 = 100 . Chaque problème est ensuite initialisé avec la solution précédente. Le Tableau 3-4 montre les itérations de la méthode de Newton pour les 13 problèmes successifs. Chaque colonne correspond à un problème associé à une valeur particulière de  indiquée sur la première ligne. La solution d’un problème sert à initialiser le problème suivant. La suite des solutions x est tracée sur la Figure 3-5 page suivante. Ce processus permet d’obtenir la solution correcte (x = 0) de l’équation : g1 (x) = Arctan x = 0 sans avoir à chercher une initialisation adaptée. 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,85 0,9 0,95 1  x0 100,0 10,0000 9,8367 9,6332 9,3724 9,0264 8,5457 7,8342 6,6815 4,5772 2,9505 1,4112 0,5433 x1 10,0 9,8367 9,6331 9,3723 9,0263 8,5454 7,8330 6,6744 4,5021 2,7813 0,7989 0,1131 -0,1013 x2 x3 x4 x5

10,0 9,8367 9,6332 9,3724 9,0264 8,5457 7,8342 6,6815 4,5770 2,9471 1,2816 0,5052 0,0007 10,0 9,8367 9,6332 9,3724 9,0264 8,5457 7,8342 6,6815 4,5772 2,9505 1,4052 0,5428 0,0000 10,0 9,8367 9,6332 9,3724 9,0264 8,5457 7,8342 6,6815 4,5772 2,9505 1,4112 0,5433 0,0000 10,0 9,8367 9,6332 9,3724 9,0264 8,5457 7,8342 6,6815 4,5772 2,9505 1,4112 0,5433 0,0000

Tableau 3-4 : Itérations de Newton à chaque pas d’homotopie

198

Techniques d’optimisation

Figure 3-5 : Suite des solutions d’homotopie

L’ensemble des solutions x , 0    1 définit une courbe C dans

n

appelée

chemin de zéros de la famille de problèmes (P )0 1 . La méthode d’homotopie cherche à suivre ce chemin de zéros pour arriver à la solution du problème P 1. Le succès de la méthode repose sur l’existence d’un chemin continu de zéros allant du problème P0 au problème P1. L’existence ou non de ce chemin dépend du choix du problème P0 et il n’est pas possible de s’en assurer à l’avance. Même lorsque le problème P0 « ressemble » au problème P1, il n’existe aucune garantie de continuité. La Figure 3-6 montre diverses situations pouvant être rencontrées en pratique.

Figure 3-6 : Formes possibles du chemin de zéros

Optimisation sans contraintes

199

L’exemple suivant montre que ces difficultés peuvent survenir même dans des cas très simples.

Exemple 3-4 : Chemin de zéros à branches disjointes Cherchons à résoudre l’équation : g1 (x) = x2 − 1 = 0 . Ce problème noté P1 a deux solutions : x1 = 1 . Partons du problème P0 : g0 (x) = x + 2 = 0 dont la solution est x0 = −2 . Les problèmes P sont définis par :

g (x) = (1 − )(x + 2) + (x2 − 1) = x2 + (1 − )x + (2 − 3) = 0 La solution du problème P se calcule analytiquement.

x =

−(1 − )  (1 − )2 − 4(2 − 3) 2

Cette solution n’existe que si :

(1 − )2 − 4(2 − 3)  0   

5−2 3 5+2 3 ou  13 13

Le chemin de zéros représenté sur la Figure 3-7 page suivante n’est par conséquent pas continu. Il se compose de 2 branches disjointes. •

La branche 1 couvre les valeurs 0    0,11814 et présente un retournement en  = 0,11814 . Elle part de la solution x0 = −2 et diverge vers − lorsque  décroît vers 0.



La branche 2 couvre les valeurs 0,65109    1 et présente un retournement en  = 0,65109 . Ses extrémités vont de la solution x1 = −1 à la solution x1 = 1 .

Il n’y a donc aucun chemin possible passant continument de la solution de P 0 à celle de P1, bien que ces deux problèmes soient très simples et leurs solutions respectives très proches.

200

Techniques d’optimisation

Figure 3-7 : Chemin de zéros à deux branches disjointes

Même si un chemin de zéros continu existe, il n’est pas forcément monotone (comme sur la gauche de la Figure 3-6). Dans ce cas, une homotopie discrète basée sur une variation monotone de  se bloquera au niveau du retournement. Ce problème peut être contourné en utilisant le vecteur tangent au chemin de zéros. Le chemin de zéros est l’ensemble des points x 

n

solutions : g (x) = 0 .

n +1

Plaçons-nous dans en considérant  comme variable. Le chemin de zéros est la courbe Cg de n+1 d’équation : g(, x) = 0 , où la fonction g :

n +1



n

est définie par : g(, x) = g (x) . def

Le vecteur tangent à la courbe Cg a pour composantes : u  → u =   ux  → 

n

(3.17)

Ce vecteur est normal au gradient de la fonction g. gT u = 0

où G 

n(n +1)

 Gu = 0

est la matrice jacobienne de g.

(3.18)

Optimisation sans contraintes

201

Le vecteur tangent u appartient donc à l’espace nul de G, qui est de dimension 1. Si Z est une base de l’espace nul de G (GZ = 0) , le vecteur tangent s’exprime sous la forme u = Zuz , avec uz  , et ne dépend que du réel uz (section 1.3.1). La Figure 3-8 montre la courbe Cg et les composantes du vecteur tangent u.

Figure 3-8 : Vecteur tangent au chemin de zéros La progression le long de la courbe Cg est réalisée par prédiction-correction. Étape de prédiction On effectue un déplacement p suivant le vecteur tangent à partir du point (0 ;x0 ). Le sens est choisi par rapport au déplacement de l’itération précédente : uTk+1uk  0 . Le nouveau point n’est plus sur la courbe Cg .  p = 0 + pu   0    →  x = x + pu  0 x   x0   p

→ g(p ,xp )  0

(3.19)

Étape de correction On cherche un déplacement v 

n +1

pour revenir sur la courbe Cg et restaurer la

relation : g(, x) = 0 .  p   c = p + v   →   xp   xc = xp + vx 

→ g(c ,xc ) = 0

(3.20)

202

Techniques d’optimisation

Le vecteur v  n +1 doit vérifier n équations (3.20). Ce système non linéaire est sous-déterminé. On peut fixer l’une des composantes de v et résoudre le système par une méthode de Newton, ou chercher la restauration de norme minimale (section 1.3.2). La Figure 3-9 illustre la méthode de prédiction-correction.

Figure 3-9 : Méthode de prédiction-correction

Exemple 3-5 : Suivi de chemin de zéros par prédiction-correction

1 = 0 de solution x1 = +0,7461 . 2 1 Partons du problème P0 : g0 (x) = 3x3 − x + = 0 de solution x0 = −0,7461 . 2 1 Les problèmes P sont définis par : g(,x) = 3x3 − x + −  = 0 . 2 1 Le chemin de zéros a pour équation :  = 3x3 − x + . Il n’est pas monotone. 2 d 5 13 = 9x2 − 1 = 0   = ou . Le sens de variation de  change lorsque : dx 18 18 Appliquons une méthode de prédiction-correction. Considérons l’équation : g1 (x) = 3x3 − x −

Prédiction Le vecteur tangent u est normal à g(,x) .

 9x2 − 1  −1  1 g(,x) =  2   u =   (9x2 − 1)2 + 1  1   9x − 1

Optimisation sans contraintes

203

Le vecteur u est orienté par le sens du pas précédent (suivant x > 0). Le pas p est fixé : p = 0,1 .

 k   p = k + pu  Le point prédit est donné par :   →  .  xk   xp = xk + pux  Ce point n’est pas sur le chemin de zéros. Correction On fixe xk+1 = xp et on résout par une méthode de Newton l’équation à une inconnue g(,xk+1 ) = 0 . La solution donne la valeur de k+1 .

 p   k +1 = c = p + v  Le point corrigé est donné par :   →   .  xp   xk +1 = xc = xp  Ce point est sur le chemin de zéros. La Figure 3-10 montre la progression de la méthode de prédiction-correction avec un pas fixé : p = 0,1 .

Figure 3-10 : Suivi d’un chemin de zéros non monotone

204

Techniques d’optimisation

L’efficacité de la méthode d’homotopie dépend du pas p utilisé à l’étape de prédiction. Un pas grand accélère la progression le long du chemin de zéros, mais avec le risque d’un échec de la méthode de Newton lors de l’étape de correction. Une pas petit augmente les chances d’une correction rapide, mais nécessite de résoudre un plus grand nombre de problèmes successifs. Une stratégie à pas adaptatif (augmentation du pas en cas de succès, réduction du pas en cas d’échec) permet d’obtenir le meilleur compromis rapidité/robustesse.

3.1.3 Minimisation Considérons à présent un problème de minimisation sans contraintes. minn f (x)

(3.21)

x

Une condition nécessaire pour que x* soit un minimum est : (3.22)

f (x*) = 0

Il s’agit d’un système de n équations à n inconnues auquel on peut appliquer la méthode de Newton. La fonction g est dans ce cas le gradient de f : g(x) =  f(x). L’itération de Newton (3.6) prend la forme : xk +1 = xk − g(xk )− T g(xk ) avec g =f  xk +1 = xk − 2 f(xk )−1 f (xk )

(3.23)

Cette formule peut aussi s’obtenir à partir du développement de Taylor d’ordre 2 de la fonction f au point xk.

(

1 f(x) = f (xk ) + f (xk )T (x − xk ) + (x − xk )T2f (xk )(x − xk )+o x − x0 2 Si l’on approxime la fonction f par la fonction quadratique fˆk :

1 fˆk (x) = f (xk ) + f (xk )T (x − xk ) + (x − xk )T2f (xk )(x − xk ) 2 et que l’on minimise cette fonction quadratique : fˆk (x) = 0  f (xk ) + 2f (xk )(x − xk ) = 0

2

)

(3.24)

(3.25)

(3.26)

on retrouve le point xk+1 donné par l’itération de Newton (3.23). La méthode de Newton appliquée à la minimisation d’une fonction équivaut ainsi à approximer la fonction par un modèle quadratique (3.25) et à résoudre la condition d’optimalité d’ordre 1 (3.26).

Optimisation sans contraintes

205

Les exemples suivants de minimisation d’une fonction d’une variable montrent les comportements possibles de la méthode de Newton.

Exemple 3-6 : Minimisation par la méthode de Newton Considérons le problème de minimisation à une variable :

min f ( x) = −x4 + 12x3 − 47x2 + 60x x

Ce polynôme de degré 4 est tracé sur la Figure 3-11. Il présente un minimum dans l’intervalle [3 ; 4] et un maximum dans l’intervalle [4 ; 5].

Figure 3-11 : Fonction polynomiale de degré 4

Appliquons une itération de Newton en partant des trois points suivants :

x0 = 3 , x0 = 4 ou x0 = 5 L’itération de Newton revient à minimiser un modèle quadratique de f au point x 0.

206

Techniques d’optimisation

Point initial : x0 = 3

Le modèle quadratique en ce point est : fˆ0 ( x) = 7x2 − 48x + 81 . Il est tracé en pointillé ci-contre.

24 La dérivée de fˆ0 s’annule en x1 = . 7 ˆ Ce point minimise f et se rapproche 0

du vrai minimum de f (x*  3,5) Figure 3-12 : Itération de Newton à partir de x 0 = 3 Point initial : x0 = 4

Le modèle quadratique en ce point est : fˆ0 ( x) = x2 − 4x . Il est tracé en pointillé ci-contre. La dérivée de fˆ0 s’annule en x1 = 2 . Ce point minimise fˆ , mais s’éloigne 0

du vrai minimum de f (x*  3,5) .

Figure 3-13 : Itération de Newton à partir de x 0 = 4 Point initial : x0 = 5

Le modèle quadratique en ce point est : fˆ0 ( x) = −17x2 + 160x − 375 . Il est tracé en pointillé ci-contre.

80 La dérivée de fˆ0 s’annule en x1 = . 17 ˆ Ce point maximise f , et diverge 0

du vrai minimum de f (x*  3,5) . Figure 3-14 : Itération de Newton à partir de x 0 = 5

Optimisation sans contraintes

207

Ces exemples montrent que la méthode de Newton ne peut être appliquée sans précaution. En effet, la formule (3.23) revient à résoudre l’équation  f(x) = 0 qui correspond à un point stationnaire de la fonction f. L’autre condition nécessaire pour un minimum est 2 f(x)  0 . Il faut donc s’assurer que le hessien de f au point xk est positif avant d’appliquer l’itération de Newton (3.23). Les caractéristiques de la méthode de Newton observées pour la résolution d’équations se retrouvent pour la minimisation d’une fonction : - la vitesse de convergence est quadratique près de la solution ; - la convergence n’est pas garantie et l’initialisation peut être problématique. Il s’y ajoute deux difficultés supplémentaires : - le hessien de la fonction doit être calculé à chaque itération ; - la formule de Newton n’est pas applicable si le hessien n’est pas positif. Les sections 3.2 à 3.4 montrent comment ces difficultés peuvent être contournées par des méthodes de quasi-Newton (pour le calcul du hessien) et des techniques de globalisation (pour contrôler la progression vers un minimum).

3.1.4 Moindres carrés Une catégorie particulière de problèmes d’optimisation concerne l’identification des paramètres d’un modèle. Supposons que l’on dispose de m valeurs mesurées s1,s2 , ,sm sur un système physique ou un processus. On dispose par ailleurs d’un modèle permettant de simuler le comportement du système. Ce modèle dépend de n paramètres x1, x2 , , xn dont les valeurs ne sont pas connues. Pour un jeu de paramètres donné x  n , la simulation donne les valeurs de sorties 1 (x), 2 (x), , m (x) . Ces sorties simulées sont appelées « pseudo-mesures ». En les comparant aux mesures réelles s1,s2 , ,sm , on peut quantifier l’écart entre le modèle et le système réel. L’objectif est alors de trouver les valeurs des paramètres x1, x2 , , xn pour que les mesures simulées coïncident au mieux avec les mesures réelles. On aura ainsi une modélisation fiable du système. L’écart entre la mesure simulée i et la mesure réelle si est le résidu noté ri . Cet écart peut éventuellement être affecté d’un poids wi selon la précision ou la fiabilité de la mesure si .

208

Techniques d’optimisation

Le vecteur des résidus est défini par :  r1 (x)    r (x)  r(x) =  2      rm (x) 

(3.27)

avec ri (x) = (i (x) − s i )w i

La méthode des moindres carrés consiste à chercher les valeurs des paramètres minimisant la norme du vecteur résidu. minn f (x) = x

1 1 m 2 r(x) =  ri (x) 2 2 2 i=1

(3.28)

Appliquons la méthode de Newton à ce problème de minimisation. Les itérations de Newton (3.23) sont définies par : xk +1 = xk − 2 f(xk )−1 f (xk ) m   f (x) = ri (x)ri (x)    i =1 avec  m 2f (x) =  ri (x)ri (x)T + 2ri (x)ri (x)  i =1 

(

(3.29)

)

Lorsque le nombre m de mesures est grand, le calcul des dérivées secondes 2 ri (x) de chaque résidu est coûteux. La méthode de Gauss-Newton consiste à omettre ces dérivées secondes dans le calcul du hessien, ce qui revient à linéariser les résidus ri (x) au voisinage de xk . Le gradient et le hessien approché s’écrivent sous forme matricielle :

f (x) = r(x)r(x)  2 T  f (x)  r(x)r(x)

(3.30)

L’itération de Gauss-Newton se réduit à : −1

xk +1 = xk − r(xk )r(xk )T  r(xk )r(xk )

(3.31) 2

Le hessien approché (3.30) est semi-défini positif : uT2f (x)u = r(x)T u  0 . Ceci garantit la convergence des itérations (3.31). La méthode de Gauss-Newton spécifique au problème de moindres carrés (3.28) est ainsi plus robuste et plus économique que la méthode générale de Newton.

Optimisation sans contraintes

209

Cas linéaire Lorsque les sorties i (x) sont des fonctions linéaires des paramètres de modèle, le vecteur résidu est de la forme : r(x) = Ax − b

avec A 

mn

, b

m

(3.32)

La solution du problème quadratique (3.28) s’obtient en annulant le gradient : f (x) = r(x)r(x) = AT (Ax − b) = 0 , ce qui donne les équations normales. AT Ax = AT b

(3.33)

La résolution de ce système linéaire donne directement la solution x.

Exemple 3-7 : Estimation de la gravité par moindres carrés On cherche à estimer la gravité (supposée constante) à partir de 21 mesures de hauteur d’un objet lâché en chute libre. Les mesures données dans le Tableau 3-5 sont tracées en fonction du temps sur la figure à droite. Temps (s) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Hauteur (m) 0,90 5,40 20,81 45,73 78,56 124,10 175,75 241,41 315,08 397,36 488,25 595,35 707,26 829,98 961,20 1103,14 1252,89 1415,55 1586,62 1770,20 1964,29

Tableau 3-5 : Mesures de hauteur de chute en fonction du temps

210

Techniques d’optimisation

Le paramètre de modèle est la gravité g. La sortie observée est la hauteur. 1 La mesure h est modélisée par l’équation : hmod èle = gt2 . Ce modèle de mesure 2 est linéaire en g. Les résidus sont les écarts modèle-mesure : r = hmodèle − hmesur e . La matrice A est une colonne dont les 21 composantes sont (ti2 / 2)i=0 à 20 . Le vecteur b a pour composantes les valeurs mesurées (hi mesure )i=0 à 20 . La solution des équations normales (3.33) donne : g = 9,8070 m  s−2 avec un résidu f (g) = 21,668 . L’écart moyen sur les 21 mesures est d’environ 1 m, pour des valeurs mesurées de l’ordre de quelques centaines de mètres. Les résidus sont donnés dans le Tableau 3-6. La figure à droite compare le modèle linéaire aux mesures représentées par les croix. Temps (s) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

h mesure (m) 0,90 5,40 20,81 45,73 78,56 124,10 175,75 241,41 315,08 397,36 488,25 595,35 707,26 829,98 961,20 1103,14 1252,89 1415,55 1586,62 1770,20 1964,29

h modèle (m) 0,00 4,90 19,61 44,13 78,46 122,59 176,53 240,27 313,82 397,18 490,35 593,32 706,10 828,69 961,09 1103,29 1255,30 1417,11 1588,73 1770,16 1961,40

Résidu (m) 0,90 0,49 1,19 1,60 0,10 1,51 -0,78 1,13 1,25 0,17 -2,10 2,02 1,15 1,28 0,12 -0,14 -2,40 -1,56 -2,11 0,04 2,89

Tableau 3-6 : Résidus du problème de moindres carrés

Optimisation sans contraintes

211

Solution séquentielle (ou récursive) Supposons que l’on partitionne les mesures en deux séries comportant m 1 et m2 mesures respectivement. Le vecteur résidu (3.32) se met sous la forme : A  b  r(x) = Ax − b =  1  x −  1   A2   b2 

Les matrices A1 

m1n

m1

, b1 

m2 n

(3.34)

sont associées à la première série de mesures.

m2

, b2  Les matrices A2  sont associées à la deuxième série de mesures. Le problème de moindres carrés associé à la première série de mesures est appelé problème initial. Sa solution x1 vérifie les équations normales : (3.35)

A1T A1x1 = A1T b1

Le problème de moindres carrés associé à l’ensemble des mesures est appelé problème complet. Sa solution x2 vérifie les équations normales : AT Ax2 = AT b

 (A1T A1 + AT2 A2 )x2 = A1T b1 + AT2 b2

(3.36)

En utilisant l’égalité (3.35), on peut réécrire (3.36) sous la forme : (A1T A1 + AT2 A2 )x2 = A1T b1 + AT2 b2 = A1T A1x1 + AT2 b2 = (A1T A1 + AT2 A2 )x1 + AT2 (b2 − A2 x1 )

(3.37)

ce qui donne l’expression de x2 en fonction de x1 : x2 = x1 + (A1T A1 + AT2 A2 )−1 AT2 (b2 − A2 x1 )

(3.38)

On remarque que cette formule est celle de Gauss-Newton (3.31) avec xk = x1 et

xk+1 = x2 . Pour un problème quadratique, l’itération de Gauss-Newton donne en effet la solution (ici x2) en une seule itération à partir de tout point initial (ici x 1). Supposons que le problème initial ait été résolu. Sa solution x1 est connue, ainsi T

que la matrice A1 A1 calculée pour résoudre les équations normales (3.35). La formule récursive (3.38) donne alors la solution x2 du problème complet en ne T

calculant « que » la matrice A2 A2 associée aux nouvelles mesures. L’économie de calculs matriciels est sensible lorsque m2  m1 , car la matrice A2 est beaucoup plus petite que la matrice A1 . Il est ainsi possible d’actualiser la solution en continu avec de nouvelles mesures sans résoudre le problème complet.

212

Techniques d’optimisation

En pratique, la solution est actualisée par les formules suivantes : Hk = Hk −1 + ATk Ak  −1 T  xk = xk −1 + Hk Ak (bk − Ak xk −1 )

(3.39)

où la matrice Hk  nn cumule les produits ATk Ak et le coefficient d’effacement (fading)   1 favorise les mesures récentes (  = 1 pour affecter le même poids à toutes les mesures). L’actualisation peut être systématique à l’arrivée de chaque nouvelle mesure, ou périodique en groupant les dernières mesures.

Exemple 3-8 : Estimation de la gravité par moindres carrés récursifs Reprenons l’Exemple 3-7 d’estimation de la gravité. La solution des moindres carrés est ici mise à jour à chaque nouvelle mesure en utilisant l’équation (3.38). Le Tableau 3-7 et la figure à droite montrent l’évolution de la solution au fur et à mesure de l’arrivée des mesures. La dernière solution est identique à celle trouvée dans l’Exemple 3-7 où les 21 mesures étaient traitées simultanément. Temps Matrice Estimation g (s) H (m/s2) 0 0,0 0,0000 1 0,3 10,7937 2 4,3 10,4263 3 24,5 10,2074 4 88,5 9,9269 5 244,8 9,9274 6 568,8 9,8341 7 1169,0 9,8440 8 2193,0 9,8450 9 3833,3 9,8305 10 6333,3 9,8046 11 9993,5 9,8177 12 15177,5 9,8195 13 22317,8 9,8204 14 31921,8 9,8167 15 44578,0 9,8136 16 60962,0 9,8068 17 81842,3 9,8041 18 108086,3 9,8016 19 140666,5 9,8029 20 180666,5 9,8070

Tableau 3-7 : Solution récursive de moindres carrés

Optimisation sans contraintes

213

3.2 Méthodes de quasi-Newton Le premier défaut de la méthode de Newton mentionné en section 3.1.3 est qu’elle nécessite le calcul du gradient (pour un système d’équations) ou du hessien (pour une minimisation). Ce calcul à réaliser à chaque itération est très coûteux. Les méthodes de quasi-Newton ont pour objectif d’éviter le calcul explicite du gradient ou du hessien en les remplaçant par des approximations construites au fur et à mesure des itérations. Cette section présente les méthodes de Broyden (pour la résolution d’un système d’équations) et les méthodes DFP, BFGS et SR1 (pour la minimisation d’une fonction).

3.2.1 Méthode de Broyden Reprenons la résolution d’un système de n équations non linéaires g(x) = 0 . Les itérations de Newton sont définies par (3.6) : xk +1 = xk − Gk−1g(xk )

avec Gk = g(xk )T

(3.40)

Le gradient de g au point xk peut être estimé par différences finies ou par une méthode spécifique au système à résoudre. Quelle que soit la méthode employée, le temps de calcul du gradient est du même ordre de grandeur que celui de g, voire plus grand. L’objectif de la méthode de Broyden est d’éviter le calcul de la matrice jacobienne  g(xk ) en la remplaçant par une matrice Gk « proche » de  g(xk ) . Écrivons comme en (3.3) un modèle linéaire de la fonction g au point xk .

gˆ k (x) = g(xk ) + Gk (x − xk )

(3.41)

Une première condition imposée à la matrice Gk est que le modèle linéaire doit passer par le point de l’itération précédente xk −1 .

gˆ k (xk−1 ) = g(xk-1 )

(3.42)

Cette condition appelée équation sécante s’écrit sous la forme : yk = Gk dk

d = xk − xk-1 avec  k  yk = g(xk ) − g(xk-1 )

(3.43)

Le vecteur dk 

n

représente le déplacement entre les points xk −1 et xk .

Le vecteur yk 

n

représente la variation de la fonction g entre xk −1 et xk .

214

Techniques d’optimisation

En dimension 1, l’équation (3.43) détermine complètement le réel Gk qui est la pente de la droite passant par les deux points. Gk =

g(xk ) − g(xk-1 ) xk − xk-1

(3.44)

En reportant dans (3.40), on obtient l’itération de quasi-Newton en dimension 1 : xk +1 = xk −

xk − xk-1 g(xk ) g(xk ) − g(xk-1 )

(3.45)

Par rapport à l’itération de Newton (3.7), cette formule n’utilise que des valeurs connues et économise le calcul de g'(xk ) . La méthode de quasi-Newton basée sur la formule (3.45) en dimension 1 est aussi appelée méthode de la sécante. La Figure 3-15 montre les itérations associées aux sécantes successives.

Figure 3-15 : Méthode de la sécante

L’exemple suivant compare la convergence de la méthode de quasi-Newton et celle de la méthode de Newton.

Optimisation sans contraintes

215

Exemple 3-9 : Résolution d’équation par méthode de quasi-Newton Reprenons l’équation de l’Exemple 3-1 : g(x) = x2 − 1 = 0 . La méthode de quasi-Newton nécessite deux points initiaux pour une première estimation de la pente. Ces points sont fixés ici en x0 = 5 et x0 = 4 . Le Tableau 3-8 compare les itérations de la méthode de la sécante (quasi-Newton) et de la méthode de la tangente (Newton) initialisée en x0 = 4 . La dérivée est correctement estimée par la méthode de quasi-Newton, ce qui permet une convergence quadratique vers la solution x* = 1 . Méthode de la sécante (quasi-Newton) Itération 0 1 2 3 4 5 6 7 8

xk 5,00000000 4,00000000 2,33333333 1,63157895 1,21238938 1,04716672 1,00443349 1,00010193 1,00000023 1,00000000

g(xk) 2,4E+01 1,5E+01 4,4E+00 1,7E+00 4,7E-01 9,7E-02 8,9E-03 2,0E-04 4,5E-07 2,3E-11

g’(xk) Erreur 4,0E+00 9,0000 3,0E+00 6,3333 1,3E+00 3,9649 6,3E-01 2,8440 2,1E-01 2,2596 4,7E-02 2,0516 4,4E-03 2,0045 1,0E-04 2,0001 2,3E-07 2,0000 1,1E-11

Méthode de la tangente (Newton) Itération xk g(xk) g’(xk) Erreur 0 4,00000000 1,5E+01 8,0000 3,0E+00 1 2,12500000 3,5E+00 4,2500 1,1E+00 2 1,29779412 6,8E-01 2,5956 3,0E-01 3 1,03416618 6,9E-02 2,0683 3,4E-02 4 1,00056438 1,1E-03 2,0011 5,6E-04 5 1,00000016 3,2E-07 2,0000 1,6E-07 6 1,00000000 2,5E-14 2,0000 1,3E-14

Tableau 3-8 : Résolution d’équation par méthode de quasi-Newton

En dimension n > 1, l’équation sécante (3.43) n’impose que n conditions sur la nn matrice Gk  et ne suffit donc pas à déterminer complètement celle-ci. L’approche proposée par Broyden en 1965 consiste à choisir la matrice Gk « la plus proche possible » de celle de l’itération précédente Gk −1 .

Les modèles linéaires de la fonction g aux points xk −1 et xk sont respectivement : gˆ k-1 (x) = g(xk-1 ) + Gk-1 (x − xk-1 ) gˆ (x) = g(x ) + G (x − x ) k k k  k

(3.46)

216

Techniques d’optimisation

La matrice Gk vérifie par hypothèse l’équation sécante (3.43). (3.47)

g(xk ) − g(xk-1 ) = Gk (xk − xk-1 )

En soustrayant membre à membre les relations (3.46) et en utilisant (3.47), l’écart entre les modèles linéaires gˆ k −1 et gˆ k est donné par :

gˆ k (x) − gˆ k-1 (x) = (Gk − Gk-1 )(x − xk-1 )

(3.48)

Exprimons le vecteur x − xk −1 comme combinaison linéaire du vecteur dk et d’un vecteur z orthogonal à dk . x − xk −1 = dk + z

avec dTk z = 0

(3.49)

En reportant dans (3.48) et en utilisant l’équation sécante (3.43), on obtient : gˆ k (x) − gˆ k-1 (x) = Gk dk − Gk-1dk + (Gk − Gk-1 ) z = yk − Gk-1dk + (Gk − Gk-1 ) z

(3.50)

La matrice Gk n’intervient que dans le dernier terme où le z est orthogonal à dk . Pour minimiser l’écart des modèles gˆ k −1 et gˆ k , on choisit Gk tel que : Gk − Gk-1 = udTk

avec u 

n

(3.51)

ce qui annule le dernier terme de (3.50). Le vecteur u se calcule en faisant le produit scalaire de (3.51) avec dk et en utilisant l’équation sécante Gk dk = yk . u=

(Gk − Gk-1 )dk yk − Gk-1dk = dTk dk dTk dk

(3.52)

En reportant dans (3.51), on obtient la formule de Broyden qui exprime Gk en fonction de Gk −1 et des variations dk = xk − xk−1 et yk = g(xk ) − g(xk−1 ) observées sur le dernier pas.

Gk = Gk-1 +

(yk − Gk-1dk )dTk dTk dk

(3.53)

Montrons maintenant une approche alternative pour définir la matrice Gk . On peut vérifier que la matrice Gk définie par (3.53) est solution du problème :

min G − Gk-1

GRnn

sous yk = G dk

(3.54)

Optimisation sans contraintes

217

où la norme matricielle est définie à partir de la norme vectorielle par : A = max x 0

Ax x

(3.55)

En effet, pour toute matrice G vérifiant l’équation sécante yk = Gdk , on a en utilisant les inégalités sur les normes : Gk − Gk-1 =

(yk − Gk-1dk )dTk (Gdk − Gk-1dk )dTk (G − Gk-1 )dk dTk = = dTk dk dTk dk dTk dk

 G − Gk-1

dk dTk  G − Gk-1 dTk dk

(3.56)

La formule de Broyden (3.53) permet de résoudre le système d’équations g(x) = 0 par les itérations de Newton (3.40) en évitant le calcul du gradient g(xk ) à chaque itération. Pour un problème de minimisation, le système à résoudre est : f (x) = 0 et la 2

matrice Gk remplace le hessien  f (xk ) qui est censé être une matrice symétrique définie positive. La formule de Broyden ne convient pas, car elle ne présente pas ces propriétés. Les principales méthodes de quasi-Newton pour une minimisation sont présentées dans la section suivante.

3.2.2 Méthodes DFP, BFGS et SR1 Les itérations de Newton pour une minimisation sont définies par (3.23). (3.57)

xk +1 = xk − 2 f(xk )−1 f (xk ) 2

L’objectif est ici d’éviter le calcul du hessien  f (xk ) à chaque itération en le remplaçant par une matrice Hk . En notant gk = f (xk ) le gradient de f en xk , l’itération de quasi-Newton pour une minimisation prend la forme : xk +1 = xk − Hk−1gk

(3.58)

Il existe de nombreuses méthodes pour définir la matrice Hk , en particulier DFP, BFGS et SR1. Ces méthodes imposent à la matrice symétrique Hk de satisfaire l’équation sécante. yk = Hk dk

d = xk − xk-1 avec  k  yk = gk − gk-1

(3.59)

218

Techniques d’optimisation

Méthode DFP La méthode DFP (proposée par Davidon, Fletcher et Powell dans les années 1950) est historiquement la première méthode de type quasi-Newton. La matrice utile pour l’itération de quasi-Newton (3.57) est l’inverse de Hk noté : Bk = Hk−1 . Cette matrice inverse doit vérifier l’équation sécante (3.59) mise sous la forme : Bk yk = dk

d = xk − xk-1 avec  k  yk = gk − gk-1

(3.60)

La formule DFP actualise Bk en fonction de Bk−1 et des variations de x et g = f .

Bk = Bk-1 +

dk dTk Bk-1yk yTk Bk-1 − yTk dk yTk Bk-1yk

d = xk − xk-1 avec  k  yk = gk − gk-1

(3.61)

T Cette formule ne s’applique que si la condition : yk dk  0 est satisfaite.

Construction de la formule DFP T

La formule DFP s’établit en cherchant Bk sous la forme symétrique : Bk = AA . La matrice Bk−1 est supposée symétrique définie positive. Elle admet donc une T factorisation de Cholesky avec une matrice L triangulaire inférieure : Bk-1 = LL .

d = xk − xk-1 La matrice Bk doit vérifier l’équation sécante : Bk yk = dk avec  k  yk = gk − gk-1 Cette équation est décomposée en un système : z = AT yk Bk yk = dk  AAT yk = dk   Az = dk Pour z  n donné, la deuxième équation impose n conditions sur la matrice A. On cherche la matrice A vérifiant l’équation Az = dk et la « plus proche possible » de la matrice L associée à la factorisation de Cholesky de Bk−1 . Ce problème est strictement similaire à celui traité en section 3.2.1 où la contrainte était l’équation sécante (3.43). La solution est donnée par la formule de Broyden (3.53) : (d − Lz) zT A =L+ k T zz La matrice A est reportée dans la première équation : (d − Lz)T yk z = AT yk = LT yk + k T z zz

Optimisation sans contraintes

219

Cette égalité impose que LT yk et z soient colinéaires :

z = LT yk .

En remplaçant z dans l’équation précédente, on trouve : 2 =

yTk dk . yTk Bk −1yk

T

Pour qu’une solution  existe, on doit avoir : yk dk  0 . Ceci est cohérent des hypothèses sur Bk qui est définie positive et vérifie dk = Bk yk , d’où l’on déduit :

yTk dk = yTk Bk yk  0 pour yk  0 . On obtient l’expression de A : A = L +

 1  dTk yk T  d y L − Bk −1yk yTk L  ,  k k T T dk yk  yk Bk −1yk 

T puis celle de Bk = AA donnant la formule DFP (3.61).

T La condition yk dk  0 est apparue dans la construction de la matrice Bk .

Montrons que cette condition de courbure est vérifiée si le point xk est défini à partir de xk −1 par minimisation suivant la direction de quasi-Newton −Bk−1gk−1 . L’itération (3.58) est de la forme :

xk = xk-1 − sBk−1gk−1 = xk-1 + suk−1

(3.62)

où le pas s  0 suivant la direction uk−1 = −Bk−1gk−1 est obtenu par : min (s) = f (xk−1 + suk−1 ) s0

(3.63)

La minimisation de la fonction directionnelle  donne :  '(s) = 0

 f (xk −1 + suk −1 )T uk −1 = f (xk )T uk −1 = gTk uk −1 = 0

(3.64)

T Cette relation est utilisée pour simplifier le produit scalaire yk dk .

yTk dk = (gk − gk −1 )T (xk − xk −1 ) = (gk − gk −1 )T (suk −1 ) = −sgTk −1uk −1 = sgTk −1Bk −1gk −1

(3.65)

T La matrice Bk−1 étant définie positive et s  0 , on obtient alors yk dk  0 qui est la condition requise pour appliquer la formule DFP.

La méthode DFP est généralement initialisée avec la matrice identité : B0 = I . L’Exemple 3-10 à la page suivante montre l’évolution de la matrice Bk au cours des itérations.

220

Techniques d’optimisation

Exemple 3-10 : Minimisation par méthode DFP Considérons le problème de minimisation à deux variables notées 1 et 2 :

min f ( 1 , 2 ) = 1 − 2 + 212 + 212 + 22 1 ,2

 1 + 41 + 22   4 2 Le gradient et le hessien sont donnés par : g =   , H=  .  2 2  −1 + 21 + 22  0 1 0 Réalisons deux itérations de la méthode DFP à partir de x0 =   , B0 =  . 0 0 1 À chaque itération, le point xk +1 est défini comme le minimum suivant la direction

uk = −Bk gk .

Itération 1 Déplacement : 0 1 0  1  −1 x0 =   , B0 =   , g0 =   → u0 = −B0g0 =   → 0 0 1  −1  1 Minimisation :  −1  −1 min (s) = s2 − 2s → s = 1 → x1 =   , g1 =   s  1  −1 Formule DFP :  −1  −2   1 0  1  1 −1 1  4 d1 =   , y1 =   → B1 =  +  −   1  0  0 1  2  −1 1  4  0

 −s  x1 = x0 + su0 =    s

0  1  1 −1 =   0  2  −1 3 

Itération 2 Déplacement :  −1  −1  0 1  1 −1 x1 =   , B1 =   , g1 =   → u1 = −B1g1 =   2  −1 3   1  −1 1 Minimisation :  −1  1 min (s) = 1 − 3(1 + s) + (1 + s)2 → s = → x2 =   → s 2 1,5  Formule DFP :  0   1 1  1 −1 1  0 0   0 d2 =   , y2 =   → B2 =  +  − 2  −1 3  2  0 1   0  0,5   1

 −1  → x2 = x1 + su1 =   1 + s   0 g2 =    0 0  1  1 −1 =   1  2  −1 2 

Optimisation sans contraintes

221

Solution

 −1  On obtient en 2 itérations le minimum : x* =   avec un gradient nul. 1,5   4 2 1  1 −1 La matrice B2 =  .  est égale à l’inverse du hessien : H =  2  −1 2   2 2

Sur cet exemple en dimension 2, la méthode DFP aboutit au minimum exact en 2 itérations et reconstitue parfaitement le hessien de la fonction. Ce comportement est vrai de façon générale pour toute fonction quadratique convexe. Ceci résulte de la Propriété 3-1 ci-dessous et de la Propriété 3-2 énoncée à la page 241.

Propriété 3-1 : Convergence de DFP pour une fonction quadratique convexe Soit la fonction quadratique convexe sur

1 f (x) = x TQx + cT x avec c  2

n

, Q

n

:

nn

, Q  0 avec Q symétrique

Le gradient est : g(x) = Qx + c et les déplacements (3.43) vérifient : yk = Qdk . Appliquons la méthode DFP à cette fonction quadratique avec une minimisation unidimensionnelle exacte à chaque itération. Alors les déplacements successifs (di )i=1 à k réalisés sur k itérations vérifient : d iT Qd j = 0 , 1  i  j  k   Bk Qd i = d i , 1  i  k

(3.66)

Démonstration (voir [R11]) La démonstration des deux relations (3.66) s’effectue par récurrence sur k. Pour la valeur k = 1, la seule direction est d 1. La première relation ne s’applique pas et la deuxième relation se vérifie directement en utilisant : y1 = Qd1 , puis l’équation sécante (3.60) : B1Qd1 = B1y1 = d1 .

Supposons les deux relations (3.66) vraies pour k et montrons-les pour k + 1.

222

Techniques d’optimisation

Pour la première relation, il faut montrer que diT Qd k +1 = 0 , 1  i  k .

diT Qd k +1 = diT Q(x k +1 − x k ) = diT Q(− sBk g k ) = −sdiT QBk g k = −sdiTg k = − sdiT (gi + yi+1 + + yk ) = − sdiTgi − sdiT (Qdi+1 + + Qd k )

car car car car

x k +1 = x k − sBk g k Bk Qd i = d i (hypothèse de récurrence) yi = gi − gi−1 g = Qx + c  y = Qd

Le premier terme diT gi est nul, car on réalise une minimisation unidimensionnelle exacte à chaque itération. En effet : min (s) = f (x i−1 − su i−1 ) → f (x i−1 − su i−1 ) T u i −1 = 0 s

 x i = x i−1 − s u i−1  → g d = 0 car d i = x i − x i−1 = − s u i−1 g i = f (x i ) Les termes suivants sont nuls (hypothèse de récurrence) : diT Qd j = 0 , 1  i  j  k T i i

On a ainsi démontré la première relation pour k + 1. Pour la deuxième relation, on calcule Bk+1Qdi , 1  i  k + 1 en utilisant la formule DFP (3.61). d dT Qd B y yT B Bk+1Qdi = Bk Qdi + k+1T k+1 i − k T k+1 k+1 k Qdi yk+1dk+1 yk+1Bk yk+1

Bk Qd i = d i (hypothèse de récurrence)  T Si 1  i  k , on a : d k+1Qd i = 0 (démontré juste avant)  yTk+1Bk Qd i = yTk+1d i = d Tk+1Qd i car y k +1 = Qd k +1  et il reste : Bk+1Qdi = di Si i = k + 1 , on a directement : Bk+1Qdk+1 = Bk+1yk+1 = dk+1 en utilisant : yk+1 = Qdk+1 et l’équation sécante (3.60). La deuxième relation est ainsi vérifiée pour toutes les valeurs de i de 1 à k + 1.

Donnons l’interprétation des deux relations (3.66). La première relation (3.66) indique que les directions sont conjuguées par rapport à la matrice Q. Le minimum est alors atteint en n minimisations unidimensionnelles. Ceci sera démontré par la Propriété 3-2 énoncée en page 241. La deuxième relation (3.66) appliquée en k = n donne : Bn Qdi = di , 1  i  n .

Optimisation sans contraintes

223

Les n vecteurs (di )i=1 à n indépendants (car conjugués par rapport à Q) forment une base de n . La matrice Bn Q est donc l’identité et la matrice Bn obtenue à la dernière itération DFP est l’inverse du hessien Q de la fonction quadratique. Revenons maintenant à la mise en œuvre de la méthode DFP. La formule DFP (3.61) met à jour l’approximation de l’inverse Bk du hessien. Cette matrice est ensuite utilisée pour réaliser l’itération : xk+1 = xk − sBk gk . Une approche alternative consiste à inverser la formule (3.61) pour mettre à jour −1 l’approximation du hessien Hk , puis à utiliser l’inverse Hk pour réaliser −1

l’itération : xk +1 = xk − sHk gk . Cette approche semble artificielle au premier abord, car elle oblige à inverser la matrice Hk une fois celle-ci actualisée. Mais elle n’est pas équivalente et peut donner de meilleurs résultats comme le montre la méthode BFGS développée plus bas. L’inversion de (3.61) est réalisée par la formule de Sherman-Morrison-Woodbury.

Formule de Sherman-Morrison-Woodbury (ou lemme d’inversion matricielle) Soient les matrices A,B 

nn

, U,V 

nm

(m  n) . On a la relation :

(

B = A+UVT  B−1 = A−1 − A−1U I + VT A−1U

)

−1

VT A−1

Cette formule se démontre en calculant BB−1 pour vérifiant que :

BB−1 = (A + UVT )(A−1 − A−1U(I + VT A−1U)−1VT A−1 ) = I + UVT A−1 − U(I + VT A−1U)−1VT A−1 − UVT A−1U(I + VT A−1U)−1VT A−1 = I + UVT A−1 − U(I + VT A−1U) (I + VT A−1U)−1VT A−1 = I + UVT A−1 − UVT A−1 = I

Après calculs (longs), on obtient la formule DFP inverse qui donne la mise à jour du hessien Hk à partir de Hk −1 et des déplacements dk et yk .   y dT  d yT  y yT Hk =  I − Tk k  Hk −1  I − kT k  + kT k yk dk  yk dk  yk dk  

(3.67)

224

Techniques d’optimisation

Méthode BFGS La méthode BFGS (élaborée par Broyden, Fletcher, Goldfarb et Shanno en 1970) est construite de la même manière que DFP, mais en considérant la matrice Hk

au lieu de la matrice inverse Bk . L’équation sécante est utilisée sous la forme (3.59) au lieu de (3.60). Le processus de construction est alors strictement identique à celui présenté pour DFP avec les permutations dk  yk et Bk  Hk . La formule BFGS « directe » est ainsi déduite de (3.61) :

Hk = Hk-1 +

yk yTk Hk-1dk dTk Hk-1 − dTk yk dTk Hk-1dk

d = xk − xk-1 avec  k  yk = gk − gk-1

(3.68)

et la formule BFGS « inverse » est déduite de (3.67) :   d yT  y dT  d dT Bk =  I − Tk k  Bk −1  I − Tk k  + Tk k dk yk  dk yk  dk yk  

(3.69)

T Comme pour DFP, cette formule requiert la condition de courbure yk dk  0 .

La méthode BFGS possède les mêmes propriétés que DFP pour la minimisation d’une fonction quadratique convexe (Propriété 3-1). Ces propriétés supposent une minimisation unidimensionnelle exacte à chaque itération. Dans les applications pratiques, la fonction à minimiser est quelconque et souvent coûteuse à calculer. Il faut se contenter d’une minimisation unidimensionnelle approchée donnant un pas satisfaisant (section 3.3.2), puis vérifier la condition de T courbure yk dk  0 avant la mise à jour de la matrice Hk . Si cette condition n’est pas satisfaite, on peut au choix conserver la matrice précédente (Hk = Hk−1 ) ou réinitialiser à l’identité (Hk = I) ou appliquer une mise à jour pondérée (section 3.2.3). Les méthodes DFP et BFGS supposent les matrices Hk (ou Bk ) définies positives, ce qui n’est pas forcément représentatif du hessien de la fonction. En effet, si le point xk est loin de l’optimum ou si des contraintes sont actives, le hessien de la

fonction n’est pas nécessairement positif. Les matrices Hk pouvant devenir assez différentes du vrai hessien, il est conseillé de les réinitialiser périodiquement à l’identité, par exemple toutes les n itérations pour un problème dans n . On évite ainsi de générer des matrices n’ayant que peu de parenté avec le vrai hessien de la fonction. La méthode BFGS s’est avérée à l’usage plus efficace que DFP et son usage s’est généralisé dans les algorithmes d’optimisation continue. Son défaut est de supposer les matrices Hk définies positives, ce qui peut parfois diminuer son efficacité. La méthode SR1 peut alors constituer une alternative intéressante.

Optimisation sans contraintes

225

Méthode SR1 Les méthodes DFP et BFGS sont des méthodes de rang 2, car la formule de mise à jour dépend des deux vecteurs dk et yk . La méthode SR1 (System Rank One) se base sur une mise à jour symétrique fonction d’un seul vecteur u 

n

. (3.70)

Hk = Hk-1 + uuT

La matrice Hk doit vérifier l’équation sécante (3.59). La formule SR1 est alors :

Hk = Hk-1 +

(yk − Hk-1dk )(yk − Hk-1dk )T dTk (yk − Hk-1dk )

d = xk − xk-1 avec  k  yk = gk − gk-1

(3.71)

Construction de la formule SR1

H = Hk-1 + uuT  yk − Hk-1dk = uT dk u tel que :  k H d = y k  k k 1 1 En posant : = uT dk , on a : yk − Hk-1dk = u  u = (yk − Hk-1dk )   1 1 Reportons cette expression de u dans : = uT dk  2 = dTk (yk − Hk-1dk )   On cherche le vecteur u 

n

Puis reportons cette expression de  dans : u = (yk − Hk-1dk ) pour calculer uuT

(yk − Hk-1dk )(yk − Hk-1dk )T dTk (yk − Hk-1dk ) On obtient ainsi la formule de mise à jour SR1 (3.71). uuT = 2 (yk − Hk-1dk )(yk − Hk-1dk )T =

Contrairement aux formules DFP et BFGS, la formule SR1 ne suppose pas la matrice Hk définie positive. Elle est donc davantage susceptible d’approcher le vrai hessien de la fonction, qui peut être quelconque loin du minimum. Il faudra −1 cependant vérifier que la direction −Hk gk est une direction de descente, et si besoin modifier la matrice Hk pour la rendre définie positive. T

La mise à jour SR1 n’est pas soumise à la condition de courbure yk dk  0 , mais il faut vérifier que le dénominateur dans la formule (3.71) n’est pas trop petit. Sinon on peut soit conserver la matrice précédente (Hk = Hk−1 ) , soit réinitialiser à l’identité (Hk = I) .

226

Techniques d’optimisation

Appliquée à une fonction quadratique, la méthode SR1 converge en n itérations et donne le hessien exact. Le Tableau 3-9 récapitule les propriétés des méthodes DFP, BFGS et SR1.

Tableau 3-9 : Comparaison des méthodes DFP, BFGS et SR1 Pour la minimisation d’une fonction d’une seule variable, dk , yk ,Hk sont des réels. Les formules DFP, BFGS ou SR1 se simplifient pour donner : Hk =

yk g(xk ) − g(xk-1 ) = dk xk − xk-1

(3.72)

qui est l’équivalent de la méthode de la sécante (3.44). L’exemple suivant compare la convergence des méthodes de quasi-Newton et de Newton pour la minimisation d’une fonction d’une variable.

Exemple 3-11 : Minimisation par méthode de quasi-Newton 4 3 2 Reprenons le problème de l’Exemple 3-6 : min f ( x) = −x + 12x − 47x + 60x . x

On cherche le minimum local situé dans l’intervalle [3 ; 4] en partant de x0 = 3 . Le Tableau 3-10 ci-après compare les itérations de quasi-Newton et de Newton. La méthode de quasi-Newton nécessite 2 itérations supplémentaires pour atteindre le minimum, mais ne demande aucun calcul de la dérivée seconde.

Optimisation sans contraintes

227

Méthode de quasi-Newton Iter 0 1 2 3 4 5 6 7

x(k) 3,00000000 2,99900000 3,42857155 3,45230465 3,45554876 3,45558934 3,45558940 3,45558940

f(x) 0,00000000 0,00600700 -1,31945027 -1,32362420 -1,32368634 -1,32368635 -1,32368635 -1,32368635

f'(x) h(k) -6,00E+00 1,000 -6,01E+00 14,000 -3,15E-01 13,267 -3,79E-02 11,672 -4,68E-04 11,527 -7,27E-07 11,509 -1,40E-11 11,509 -5,68E-14 11,462

Méthode de Newton x 3,00000000 3,42857143 3,45526446 3,45558935 3,45558940

f(x) 0,00000000 -1,31945023 -1,32368574 -1,32368635 -1,32368635

f'(x) -6,00E+00 -3,15E-01 -3,74E-03 -5,77E-07 -5,68E-14

f''(x) 14,000 11,796 11,513 11,509 11,509

Tableau 3-10 : Minimisation par méthode de quasi-Newton

3.2.3 Améliorations BFGS La méthode BFGS s’étant imposée comme la plus efficace, plusieurs améliorations ont été proposées concernant l’initialisation, la mise à jour pondérée et la réduction du stockage mémoire. Initialisation La méthode BFGS est initialisée avec une matrice définie positive quelconque H0 Les différents choix envisageables sont, par ordre de temps de calcul croissant : - la matrice identité : H0 = I ;

 2f  - le calcul des termes diagonaux par différences finies : H0 = diag  2  ;  xi   2f  - le calcul complet du hessien par différences finies : H0 =  .  xi x j    La dernière solution est généralement prohibitive en temps de calcul. Au cours des itérations, des réinitialisations périodiques sont nécessaires pour que les matrices Hk ne « diffèrent pas trop » du vrai hessien. Une alternative aux options précédentes consiste à utiliser les variations de x et g sur la dernière itération et à choisir une réinitialisation de la forme : H0 = I avec  =

yT y d = xk − xk −1 ,  T y d  y = gk − gk −1

(3.73)

228

Techniques d’optimisation

Justification de la formule (3.73) L’idée est d’approximer le hessien par une matrice diagonale avec sa plus grande valeur propre. Le hessien H au point xk est défini positif. Il admet donc une base orthonormée de vecteurs propres (ui )i=1,

(i )i=1,

,n

,n

associés aux valeurs propres

.

Le vecteur d = xk − xk−1 s’exprime sur cette base par d =  i ui . L’équation tangente que doit satisfaire la matrice H donne : y = Hd = H i ui =  i i ui .

En ne gardant que la plus grande valeur propre notée m et en négligeant les autres

yT y d  m um  m  T . termes, il reste :  yd  y  m m um Cette valeur correspond au terme diagonal  choisi dans la formule (3.73).

Mise à jour pondérée T

La formule BFGS (3.68) ne s’applique que si la condition de courbure yk dk  0 est satisfaite. Cette condition n’est pas forcément vérifiée en cas de minimisation unidimensionnelle approchée. La mise à jour pondérée consiste à remplacer dans la formule BFGS le vecteur yk par le vecteur zk avec une pondération  .

zk = yk + (1 − )Hk-1dk

avec 0    1

(3.74)

La formule BFGS pondérée ou amortie (damped BFGS) est alors :

Hk = Hk-1 +

zk zTk Hk-1dk dTk Hk-1 d = xk − xk-1 − T avec  k (3.75) T dk zk dk Hk-1dk zk = (gk − gk-1 ) + (1 − )Hk-1dk

Le vecteur zk est un compromis entre la variation réelle du gradient yk = gk − gk−1 et la variation attendue Hk−1dk (d’après la matrice précédente Hk −1 ). •

Pour  = 0 , la formule (3.75) conserve la matrice précédente (Hk = Hk−1 ) .



Pour  = 1 , la formule (3.75) redonne la mise à jour BFGS usuelle.

La valeur de  est réglée en imposant à zk la condition de courbure « renforcée » : dTk zk  dTk Hk −1dk

avec   0

(3.76)

Optimisation sans contraintes

229

Cette condition est plus forte que la condition usuelle yTk dk  0 . En pratique, le réel  peut être fixé à 0,2. Si yk satisfait la condition (3.76), on fixe  = 1 qui donne la formule BFGS usuelle. Sinon, on calcule la valeur de  pour avoir l’égalité des deux membres dans (3.76). =

(1 − )dTk Hk −1dk dTk Hk −1dk − dTk yk

(3.77)

La formule BFGS pondérée permet de poursuivre la mise à jour lorsque la condition de courbure n’est pas respectée. Elle est à combiner avec une réinitialisation périodique de la matrice Hk , par exemple par la formule (3.73). Limitation du stockage mémoire Pour des problèmes de grande dimension, le stockage de la matrice Hk peut devenir prohibitif en place mémoire. Cette matrice sert à calculer le déplacement : (3.78)

xk+1 = xk − sk Bk gk

−1 où Bk = Hk , gk = f (xk ) est le gradient de f et sk est le pas de déplacement.

La méthode L-BFGS (Limited Memory) a pour objectif de construire la direction de déplacement Bk gk sans utiliser explicitement la matrice Bk . Cette méthode se base sur la formule BFGS inverse (3.69) réécrite sous forme compacte : (3.79)

Bk = VkT Bk −1Vk + k dk dTk

en posant :

k =

1 y dT et Vk = I − Tk k = I − k yk dTk d yk dk yk

(3.80)

T k

Considérons m itérations successives de la forme (3.79) à partir de la matrice B0 . B1 = V1T B0 V1 + 1d1d1T B2 = V2T B1V2 + 2d2dT2 = V2T V1T B0 ( V1V2 ) + 1V2T d1d1T V2 + 2d2dT2

(

Bm = VmT Bm−1Vm + m dm dTm = VmT V2T V1T B0 ( V1V2

(

)

)

( (V

Vm ) + 1 VmT + 2 +

) )d d (V

V2T d1d1T ( V2

T m

T 3

V T m

+ m dm d

2

T 2

3

Vm )

Vm )

(3.81)

230

Techniques d’optimisation

On suppose que seuls les vecteurs (dj )j=1 à m et (yj )j=1 à m ont été stockés lors des m itérations précédentes. Aucune matrice (Vj ou Bj ) n’a été stockée. La direction Bmgm que l’on cherche à calculer s’exprime en utilisant (3.81). Bm gm =

(V + (V + (V

T m

T m

V )g ) )d  d (V V )g )d  d (V V )g

V1T B0 ( V1 T 2

V

T 1 1 1

m

2

T T T m 3 2 2 2 T T m m −1 m −1 m −1 m T m m m m

V

+V d  d +d  d g

m

m

3

m

m

m

(3.82)

+

V gm

Définissons les suites de réels (qj )j=m+1 à 1 et (j )j=m à 1 de la façon suivante : qm+1 = gm T q = (V V )g et j = jd j q j+1 j j m m 

(3.83)

On peut alors écrire Bmgm (3.82) sous la forme : Bm gm =

(V + (V

T m

T m

+ dm m

) )d  + (V

V1T B0qm T 2

V

1

1

T m

)

V3T d2 2 +

+ VmT dm −1m −1

(3.84)

qui se factorise en : Bm gm = m dm + VmT ( m−1dm-1 T + Vm-1 ( m−2dm-2 T + Vm-2 ( + V2T (1d1 + V1T (B0 q1 ))

(3.85) )))

Cette expression se prête à un calcul récursif en deux boucles. •

La première boucle de j = m à 1 calcule les réels (qj , j )j=m à 1 . En utilisant l’expression de Vj (3.80), on observe que : q j−1 = Vj−1q j = q j − j−1yj−1dTj−1q j = q j −  j−1yj−1

(3.86)

On peut donc calculer les réels (qj , j )j=m à 1 en partant de qm+1 = gm .  j = jdTj q j+1  q j−1 = q j −  j y j

pour j = m à 1

(3.87)

Optimisation sans contraintes



231

La deuxième boucle de j = 1 à m calcule Bmgm sous la forme factorisée (3.85).

En utilisant l’expression de Vj (3.80) et en notant rj le contenu des parenthèses emboîtées dans (3.85), on observe que : rj+1 = jd j + VjT rj = jd j + rj − jd j yTj rj

(3.88)

En partant de la parenthèse interne de (3.85) : r1 = B0q1 , où q1 est donné par (3.87), on calcule la suite (rj )j=1 à m+1 dont le dernier terme donne rm+1 = Bmgm . Les formules (3.87) et (3.88) utilisent des vecteurs, des réels et la matrice B0 . Cette matrice est choisie diagonale comme en (3.73) : B0 = I avec  =

yT d d = xk − xk −1 ,  T y y  y = gk − gk −1

(3.89)

La méthode L-BFGS nécessite de choisir le nombre m de déplacements à stocker. À chaque itération, la matrice initiale B0 est calculée par (3.89) en se basant sur

le premier déplacement stocké (le plus ancien). Puis la direction Bmgm est calculée par (3.86 - 3.88) et la recherche unidimensionnelle dans cette direction donne un nouveau point. La liste des déplacements stockés (dj , yj )j=1 à m est mise à jour en supprimant le déplacement le plus ancien et en ajoutant le nouveau déplacement en fin de liste. La méthode L-BFGS est identique à la méthode BFGS classique pendant les m premières itérations (car la matrice B0 ne change pas). À partir de l’itération m+1, les directions générées Bmgm deviennent différentes du fait de l’actualisation de la matrice B0 . Cette méthode n’utilisant que des vecteurs permet d’appliquer l’idée de quasi-Newton avec une économie importante de mémoire, indispensable pour les problèmes de grande dimension (large-scale programming).

3.3 Recherche linéaire Le deuxième défaut de la méthode de Newton mentionné en section 3.1.3 est son manque de robustesse. La globalisation consiste à vérifier si l’itération est satisfaisante et à la corriger si nécessaire. Les deux stratégies principales de globalisation sont la recherche linéaire (line search) présentée dans cette section et la région de confiance (trust region) présentée dans la section suivante. Ces stratégies utilisent généralement la solution de Newton comme point de départ.

232

Techniques d’optimisation

Une méthode de descente par recherche linéaire consiste à chaque itération : - à choisir une direction de descente uk ; - à trouver un pas de déplacement sk dans cette direction.

Figure 3-16 : Descente par recherche linéaire Les choix possibles de la direction uk et du pas de déplacement sk sont détaillés respectivement dans les sections 3.3.1 et 3.3.2.

3.3.1 Direction de descente La direction uk est une direction de descente au point xk si : gTk uk  0 avec gk = f (xk )

(3.90)

Parmi les stratégies possibles, examinons la plus forte pente, le gradient accéléré, la méthode de Nesterov, le gradient conjugué et le gradient préconditionné. Plus forte pente La méthode de plus forte pente consiste à choisir la direction : uk = −gk . L’opposé du gradient étant la direction de plus forte descente au point xk , il est naturel de chercher le nouveau point xk +1 dans cette direction. Le point minimisant la fonction f suivant uk est obtenu en résolvant le problème unidimensionnel : min (s) = f (xk + suk ) s0

où l’inconnue est le pas de déplacement s  0 suivant la direction uk .

(3.91)

Optimisation sans contraintes

233

La minimisation de la fonction directionnelle  donne :  '(s) = 0

 f (xk + suk )T uk = f (xk +1 )T uk = gTk +1uk = 0

(3.92)

Le gradient au nouveau point xk +1 est orthogonal à la direction de déplacement uk . Ce résultat est vrai pour toute direction uk . Dans le cas de la méthode de plus

forte pente : uk = −gk , les directions de déplacement successives sont alors orthogonales comme illustré sur la Figure 3-17.

Figure 3-17 : Directions successives de plus forte pente La méthode de plus forte pente (steepest descent), appelée aussi méthode de gradient simple, conduit ainsi à une progression en zig-zag. La convergence vers le minimum peut être très lente comme le montre l’exemple suivant. Exemple 3-12 : Méthode de plus forte pente Considérons le problème à 2 variables : min f(x1 ,x2 ) = x1 ,x2

1 2 9 2 x1 + x2 . 2 2

Le minimum est en (0 ; 0). Appliquons la méthode de plus forte pente à partir du point (9 ; 1). La direction de descente à partir du point (x1;x2 ) est donnée par :

 u   −x  u = −f (x1 , x2 )   1  =  1   u2   −9x2  Le pas de déplacement optimal dans cette direction se calcule analytiquement. 1 9 x2 + 81x22 min (s) = f (x1 + su1, x2 + su2 ) = (x1 + su1 )2 + (x2 + su2 )2 → s = 21 s 2 2 x1 + 729x22

234

Techniques d’optimisation

Le Tableau 3-11 montre les composantes du point, de la direction et la valeur du pas optimal au cours des 5 premières itérations, puis toutes les 10 itérations. Les itérations sont représentées dans le plan (x1, x2 ) sur la Figure 3-18. On observe la progression en zig-zag caractéristique de la méthode de plus forte pente. 50 itérations sont nécessaires pour obtenir la solution à 10-4 près. Itération x1 x2 f u1 u2 0 9,000 1,000 45,000 -9,000 -9,000 1 7,200 -0,800 28,800 -7,200 7,200 2 5,760 0,640 18,432 -5,760 -5,760 3 4,608 -0,512 11,796 -4,608 4,608 4 3,686 0,410 7,550 -3,686 -3,686 5 2,949 -0,328 4,832 -2,949 2,949 10 0,966 0,107 0,519 -0,966 -0,966 20 0,104 0,012 0,006 -0,104 -0,104 30 1,11E-02 1,24E-03 6,90E-05 -1,11E-02 -1,11E-02 40 1,20E-03 1,33E-04 7,95E-07 -1,20E-03 -1,20E-03 50 1,28E-04 1,43E-05 9,17E-09 -1,28E-04 -1,28E-04

s 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2

Tableau 3-11 : Itérations de la méthode de plus forte pente

Figure 3-18 : Itérations de la méthode de plus forte pente

Erreur 9,055 7,244 5,795 4,636 3,709 2,967 0,972 0,104 1,12E-02 1,20E-03 1,29E-04

Optimisation sans contraintes

235

Gradient accéléré La méthode de plus forte pente génère des directions orthogonales, ce qui conduit à une progression lente en zig-zag. Supposons que l’on ait réalisé p itérations consécutives de plus forte pente, partant du point x0 pour arriver au point xp . u0 u1 u2 x0 ⎯⎯ → x1 ⎯⎯ → x2 ⎯⎯ →

u

p−1 ⎯⎯→ xp

Les directions consécutives étant orthogonales, on peut espérer que la direction « moyenne » allant de x0 à xp est une bonne direction de descente. Une recherche linéaire dans cette direction : up = xp − x0 va donner un nouveau point xp+1 . u

p xp ⎯⎯ → xp+1

À partir de xp+1 , on effectue à nouveau p itérations de plus forte pente, puis une recherche linéaire suivant la direction : u2p+1 = x2p+1 − xp+1 et ainsi de suite. La méthode de gradient accéléré consiste ainsi à compléter la méthode de plus forte pente en insérant périodiquement une recherche suivant la direction moyenne des p dernières itérations. La périodicité peut être fixée à p = n, où n est la dimension du problème. Ce processus est illustré sur la Figure 3-19 .

Figure 3-19 : Méthode de gradient accéléré

236

Techniques d’optimisation

Examinons le comportement de cette méthode dans le cas particulier d’une fonction quadratique convexe en dimension 2. 1 T x Qx + cT x x 2 Le gradient de la fonction est donné par : g(x) = f (x) = Qx + c . min2 f (x) =

(3.93)

−1 La matrice Q étant définie positive, le minimum est en : x* = −Q c .

Considérons deux itérations de plus forte pente à partir du point x0 et les directions du gradient g0 et g2 aux points respectifs x0 et x2 (Figure 3-20). g0 = Qx0 + c  x2 − x0 = uA = Q−1 (g2 − g0 )   noté g2 = Qx2 + c   x * − x u * = −Q−1g2 2 =   noté  0 = Qx * +c

(3.94)

Les directions successives étant orthogonales : g0 ⊥ g1 , g1 ⊥ g2 , la direction g2 est parallèle à la direction g0 (ceci n’est vrai qu’en dimension n = 2).

On en déduit d’après (3.94) que la direction moyenne uA (de x0 vers x2 ) est parallèle à la direction u * (de x2 vers le minimum x * ). La recherche linéaire

dans cette direction uA va donc permettre d’atteindre le minimum x * dès la troisième itération.

Figure 3-20 : Gradient accéléré sur une fonction quadratique en dimension 2

Optimisation sans contraintes

237

Exemple 3-13 : Méthode de gradient accéléré Reprenons le problème de l’Exemple 3-12 : min f(x1 ,x2 ) = x1 ,x2

1 2 9 2 x1 + x2 . 2 2

Le point initial est en (9 ; 1), le minimum est en (0 ; 0). La méthode du gradient accéléré consiste à réaliser deux itérations de plus forte pente, puis une itération suivant la direction moyenne. Le pas optimal dans la direction de composantes (u1,u2 ) est donné par :

1 9 min (s) = f (x1 + su1 , x2 + su2 ) = (x1 + su1 )2 + (x2 + su2 )2 s 2 2

→ s=−

u1x1 + 9u2 x2 u12 + 9u22

Le Tableau 3-12 montre les composantes du point, de la direction et le pas optimal. Le minimum est atteint exactement dès la troisième itération. Pour comparaison, la méthode de gradient simple (plus forte pente) atteint une précision de 10 -4 après 50 itérations (Tableau 3-11). Itération 0 1 2 3

x1 9,0000 7,2000 5,7600 0,0000

x2 1,0000 -0,8000 0,6400 0,0000

f 45,0000 28,8000 18,4320 0,0000

u1 -9,0000 -7,2000 -3,2400

u2 -9,0000 7,2000 -0,3600

s 0,2 0,2 1,8

Erreur 9,0554 7,2443 5,7954 0,0000

Tableau 3-12 : Itérations de la méthode de gradient accéléré

Dans le cas général (fonction f quelconque, dimension n>2), la direction moyenne ne pointe pas forcément vers le minimum x*. Cette direction moyenne permet néanmoins une progression significative qui compense le défaut de la méthode plus forte pente. Le principe d’insérer périodiquement une recherche linéaire suivant une direction moyenne s’applique à toute méthode de descente et permet souvent d’accélérer la convergence.

238

Techniques d’optimisation

Méthode de Nesterov Comme le gradient accéléré, la méthode de Nesterov est une amélioration de la méthode de plus forte pente par des déplacements supplémentaires. Le principe est d’augmenter systématiquement le déplacement de plus forte pente afin d’éviter de générer des directions orthogonales. Les deux premières itérations sont identiques à la méthode de plus forte pente. À partir de la troisième itération (k > 2), le déplacement est réalisé en deux étapes. •

La première étape consiste en un « prolongement » du déplacement précédent de xk −1 à xk . On obtient un point intermédiaire yk défini par : yk = xk + k (xk − xk −1 )

avec k =

k −1 k+2

(3.95)

Le coefficient k augmente au cours des itérations en restant inférieur à 1. •

La deuxième étape est une itération classique de plus forte pente à partir du point intermédiaire yk . Le nouveau point xk +1 est défini par :

uk = −f (yk ) avec s → min f (x + s u ) (3.96) k k k s k Ces deux étapes sont illustrées sur la Figure 3-21. L’idée de la méthode de Nesterov est que la direction de plus forte pente −g(yk ) à partir du point décalé xk +1 = xk + sk uk

yk sera plus favorable qu’à partir du point xk .

Figure 3-21 : Méthode de Nesterov

Optimisation sans contraintes

239

Exemple 3-14 : Méthode de Nesterov Reprenons le problème de l’Exemple 3-12 : min f(x1 ,x2 ) = x1 ,x2

1 2 9 2 x1 + x2 . 2 2

Le point initial est en (9 ; 1), le minimum est en (0 ; 0). Les deux premières itérations suivent la méthode de plus forte pente. Les itérations suivantes sont réalisées par :

k −1   yk = xk + k (xk − xk −1 ) avec k = k + 2   −y   xk +1 = yk + sk uk avec uk = −f (yk ) =  1    −9y2  où le pas optimal sk est donné par :

min (s) = f (xk + suk ) → sk = − s

uk,1xk,1 + 9uk,2 xk,2 u2k,1 + 9u2k,2

Le Tableau 3-13 compare la méthode de Nesterov à la méthode de plus forte pente. Après deux itérations identiques, on observe une décroissance plus rapide de la fonction. La Figure 3-22 page suivante permet de visualiser la progression des deux méthodes vers le minimum situé en (0 ; 0). Plus forte pente Itération 0 1 2 3 4 5 6 7 8 9 10

x1 9,000 7,200 5,760 4,608 3,686 2,949 2,359 1,887 1,510 1,208 0,966

x2 1,000 -0,800 0,640 -0,512 0,410 -0,328 0,262 -0,210 0,168 -0,134 0,107

f 45,0000 28,8000 18,4320 11,7965 7,5497 4,8318 3,0924 1,9791 1,2666 0,8106 0,5188

Nesterov x1 9,0000 7,2000 5,7600 4,6154 3,5187 2,5381 1,7054 1,0259 0,5004 0,1173 -0,1320

x2 1,0000 -0,8000 0,6400 -0,3077 0,2630 -0,1697 0,0999 -0,0559 0,0221 -0,0025 0,0129

Tableau 3-13 : Itérations de la méthode de Nesterov

f 45,0000 28,8000 18,4320 11,0769 6,5018 3,3507 1,4991 0,5403 0,1274 0,0069 0,0095

240

Techniques d’optimisation

Figure 3-22 : Itérations de la méthode de Nesterov L’allongement des déplacements de plus forte pente, avec le coefficient k , produit des directions de plus en plus favorables, permettant de viser le minimum.

Gradient conjugué Considérons la minimisation d’une fonction quadratique convexe. minn f (x) = x

1 T x Qx + cT x , c  2

n

, Q

nn

, Q0

(3.97)

Deux directions ui et u j sont dites conjuguées par rapport à la matrice Q si : u iT Qu j = 0

L’intérêt de ces directions conjuguées vient de la Propriété 3-2 ci-après.

(3.98)

Optimisation sans contraintes

241

Propriété 3-2 : Minimisation par directions conjuguées Définissons à partir d’un point x0 quelconque la suite de points (xk )k =1 à n : (3.99)

x k+1 = x k + sk u k

où les directions (uk )k=0 à n−1 sont mutuellement conjuguées et le pas sk est choisi pour minimiser f dans la direction uk :  u Tk f (x k + s k u k ) = u Tk Q(x k + s k u k ) + c  = 0

min f (x k + su k ) s

 sk = −

u Tk (Qx k + c) u Tk Q u k

(3.100)

Alors le point xk est le minimum de la fonction quadratique f sur le sous-espace (ou variété) engendré par les directions (u0 , ,uk−1 ) et passant par x0 . En particulier, le point xn est la solution du problème quadratique (3.97).

Démonstration de la Propriété 3-2 (voir [R11]) Les directions conjuguées (ui )i=0 à n−1 sont indépendantes. En effet, si une combinaison linéaire des (ui ) est nulle, on a : n −1

n −1

i =0

i =0

 i ui = 0  uTj Q i ui = 0  juTj Qu j = 0 , j car uTj Qui = 0 pour i  j La matrice Q étant définie positive, le coefficient j est nul. Considérons le sous-espace Uk de (u0 , ,uk−1 ) . Le gradient de f au point xk = x0 +

n

engendré par les k premières directions

k −1

s u i =0

i i

est donné par : gk =f (xk ) = Qxk + c.

Calculons le produit scalaire du gradient gk avec les directions (uj )j=0 à k−1 . k −1

uTj gk = uTj (Qxk + c) = uTj Qx0 +  si uTj Qui + uTj c = uTj Qx0 + sjuTj Qu j + uTj c i =0

car u Qui = 0 pour i  j . T j

242

Techniques d’optimisation j− 2

En utilisant l’expression (3.100) du pas s j et avec x j−1 = x0 +  si ui , on obtient : i =0

j−1

uTj gk = uTj Qx0 − uTj (Qx j + c) + uTj c = uTj Q(x0 − x j ) = −uTj  siQui  uTj gk = 0 , j  k i =0

Le gradient de f en xk est orthogonal à la base (uj )j=0 à k−1 , et par conséquent au sous-espace Uk . Le point xk est donc le minimum de f sur Uk et le point xn est le minimum de f sur Un =

n

.

La Propriété 3-2 montre que le minimum d’une fonction quadratique convexe est atteint en n minimisations unidimensionnelles suivant des directions conjuguées. Pour exploiter cette propriété, il faut savoir construire ces directions conjuguées. La méthode du gradient conjugué définit la nouvelle direction uk comme combinaison linéaire de la direction précédente uk −1 et du gradient gk en xk . u 0 = −g 0 u k = −g k + k u k −1

g k = f (x k ) = Qx k + c  g T Qu k −1 avec  k = Tk  u k −1Qu k −1 

(3.101)

Justification On vérifie par récurrence que les directions définies par (3.101) sont conjuguées. Supposons que les directions (ui )i=0 à k −1 sont conjuguées et montrons que la nouvelle direction uk est conjuguée aux directions précédentes (ui )i=0 à k −1 . T T T Calculons pour cela : uk Qui = −gk Qui + k uk −1Qui

(égalité E)

T T T Pour i = k −1 : uk Quk −1 = −gk Quk −1 + k uk −1Quk −1 = 0 par définition de k (3.101) T T Pour i  k −1 : uk Qui = −gk Qui

car les directions (ui )i=0 à k −1 sont conjuguées par hypothèse.

Optimisation sans contraintes

243

 xi+1 = xi + si ui  En utilisant les relations ui+1 = −gi+1 + i+1ui , on met le terme Qui sous la forme : ui = −gi + i ui−1  x −x 1 1 1 Qui = Q i+1 i = (Qxi+1 − Qxi ) = (gi+1 − gi ) = (−ui+1 + i+1ui + ui − i ui−1 ) si si si si Ce terme est combinaison linéaire des directions ui−1 ,ui ,ui+1 qui appartiennent au sous-espace Uk . Le gradient de f en xk étant orthogonal à Uk (démontré pour la T Propriété 3-2), on a : gk Qui = 0 . T On en déduit d’après l’égalité (E) que : uk Qui = 0 , i  k .

Les formules (3.101) permettent de construire à chaque itération une nouvelle direction conjuguée uk à partir de la direction précédente uk −1 et en calculant uniquement le gradient au nouveau point xk , d’où le nom de la méthode du

gradient conjugué. Le pas optimal sk suivant cette direction est donné par (3.100).

Exemple 3-15 : Minimisation d’une fonction quadratique par gradient conjugué

1 2 1 + 12 + 22 . 2 1 1    +  Le gradient et le hessien sont : g(1 , 2 ) = f (1 , 2 ) =  1 2  , Q =  . 1 2   1 + 22  Appliquons la méthode du gradient conjugué à : min f (1 , 2 ) = 1 ,2

Le point initial est en (10 ; −5), le minimum est en (0 ; 0). Itération 1 La 1re direction est : Le nouveau point est :

 −5  u0 = −g0 → u0 =   . 0 10 − 5s   2 −s x1 = x0 + su0 =   = 5 .  −5   −1 

25 2 2 − s ) − 25 ( 2 − s ) + 25 → s0 = 1 ( s 2 5 0 → x1 =   , g1 =    −5   −5 

Calcul du pas : min f (x0 + su0 ) =

244

Techniques d’optimisation

Itération 2 La 2e direction est : u1 = −g1 + 1u0 avec 1 =

 −5  g1T Qu0 25 = = 1 → u1 =   . T u0 Qu0 25 5

 5 − 5s  1 Le nouveau point est : x2 = x1 + su1 =   = 5(1 − s)   .  −5 + 5s   −1 25 2 2 2 Calcul du pas : min f (x1 + su1 ) = (1 − s ) − 25 (1 − s ) + 25 (1 − s ) → s1 = 1 s 2 0  0 → x2 =   , g2 =   0  0 Le minimum est obtenu en 2 itérations avec les directions conjuguées u0 et u1 .

La méthode du gradient conjugué atteint le minimum d’une fonction quadratique en n itérations. On peut appliquer cette méthode à la minimisation d’une fonction quelconque. Pour cela, il faut exprimer le coefficient k sans utiliser la matrice Q (associée à une fonction quadratique). Les formules les plus utilisées sont : - la formule de Fletcher-Reeves (1964) : k =

gk ) g k −1

2

(3.102)

2

- la formule de Polak-Ribière (1971) :

k =

g Tk (g k − g k −1 ) g k −1

(3.103)

2

Ces formules sont équivalentes à (3.101) dans le cas d’une fonction quadratique.

Vérification des formules (3.102) et (3.103) pour une fonction quadratique Le coefficient k est donné par (3.101) : k =

gTk Qu k −1 . u Tk−1Qu k −1

 xk = xk −1 + sk −1uk −1  Avec les relations : gk = Qxk + c , on a : gk −1 = Qxk −1 + c

Optimisation sans contraintes

Quk −1 = Q

245

xk − xk −1 Qxk − Qxk −1 gk − gk −1 = = sk −1 sk −1 sk −1

que l’on remplace dans l’expression de k : k =

g Tk (g k − g k −1 ) . u Tk−1 (g k − g k −1 )

T Le gradient gk est orthogonal au sous-espace des (ui )i=0 à k −1 → uk −1gk = 0

En utilisant la relation : uk−1 = −gk−1 + k−1uk−2 , on a : T T - par produit scalaire avec g k −1 : uk −1gk −1 = −gk −1gk −1 car gk−1 ⊥ uk−2

→ k =

g Tk (g k − g k −1 ) g Tk−1g k −1

T - par produit scalaire avec g k : 0 = −gk −1gk , car gk ⊥ uk−1 et gk ⊥ uk−2

→ k =

g Tk g k g Tk−1g k −1

On obtient les formules de Fletcher-Reeves (3.102) et Polak-Ribière (3.103) qui sont équivalentes à (3.101) dans le cas d’une fonction quadratique.

La méthode du gradient conjugué avec les directions de Fletcher-Reeves ou PolakRibière est une méthode dite d’ordre 1 : elle n’utilise que le calcul du gradient à chaque itération, suivi d’une minimisation unidimensionnelle dans la nouvelle direction. Elle n’est donc pas plus coûteuse que les méthodes précédentes (gradient accéléré, Nesterov) et converge généralement plus rapidement. Gradient préconditionné Les méthodes de préconditionnement ont pour objectif d’accélérer la convergence en se rapprochant de la méthode de Newton. Ces méthodes dites d’ordre 2 nécessitent en contrepartie plus de calculs et de stockages à chaque itération. Leur principe est de multiplier le gradient par une matrice Bk apportant une information de courbure. Toute direction de la forme uk = −Bk gk est une direction T de descente si la matrice Bk est définie positive (car gk uk = −gk Bk gk  0 ).

On dit alors que le gradient gk est préconditionné par la matrice Bk . Le préconditionnement équivaut à appliquer la méthode de plus forte pente après un changement de variable linéaire.

246

Techniques d’optimisation

Interprétation du préconditionnement Considérons le changement de variable x = LT x , où la matrice triangulaire −1 T inférieure L vient de la factorisation de Cholesky : Bk = Hk = LL . Cette factorisation existe car Bk est définie positive. Notons f (x) = f (x) la fonction en variable x : f (x) = f (L−T x) = L−1 f (x) . def

L’itération de plus forte pente en variable x est : xk+1 = xk − skf (xk ) . En repassant en variable x, l’itération devient :

LT xk +1 = LT xk − sk L−1f (xk ) .

En prémultipliant par L−T , on obtient :

xk +1 = xk − sk L−T L−1f (xk ) = xk − sk (LLT )−1 gk = xk − sk Bk gk

L’itération en variable x avec la direction préconditionnée Bk gk est donc identique à l’itération de plus forte pente en variable x = LT x .

Le préconditionnement « optimal » est associé au hessien de la fonction à 2 −1 minimiser Bk = Hk avec Hk =  f (xk ) , ce qui revient à une itération de Newton (3.23). En pratique, la matrice de préconditionnement est obtenue par une méthode de quasi-Newton comme DFP, BFGS ou SR1 (section 3.3). Dans le cas de la méthode SR1, la matrice Hk doit éventuellement être rendue définie positive. Ceci est réalisable en ajoutant une matrice diagonale : H'k = Hk +  I avec un réel positif  suffisamment grand, comme indiqué ci-dessous. Ajout d’une matrice diagonale La matrice H est symétrique et admet donc une base orthonormée de vecteurs propres. En notant P la matrice orthogonale de passage dans cette base et D la matrice diagonale formée des valeurs propres de H, on peut exprimer H sous la forme H = P−1DP . −1 −1 −1 On a alors : H' = H+  I = P DP + P P = P (D +  I) P . La matrice H’ symétrique de la forme H' = P−1D'P admet donc la même base de vecteurs propres que H (même matrice P). Ses valeurs propres sont celles de H augmentées de  . En notant m la valeur propre la plus négative de H, il suffit de prendre  = m +  (avec   0 ) pour obtenir une matrice H’ définie positive.

Optimisation sans contraintes

247

Une méthode alternative pour obtenir une matrice définie positive à partir de Hk est la factorisation de Cholesky modifiée. Cette méthode a l’intérêt de modifier « le moins possible » la matrice initiale.

Factorisation de Cholesky modifiée La factorisation de Cholesky met une matrice A symétrique définie positive sous la forme A = LDLT , avec une matrice triangulaire inférieure L et une matrice diagonale D formée des valeurs propres de A. L’algorithme de Cholesky peut être adapté à une matrice A non définie positive. La modification consiste, lorsqu’une valeur négative est rencontrée sur la diagonale, à la remplacer par une valeur positive petite. On obtient ainsi la factorisation d’une matrice définie positive A’ « proche » de A. La Figure 3-23 montre l’algorithme de factorisation avec modification (lorsque nécessaire) des termes diagonaux. Les matrices sont notées : A = (aij ) , L = (lij ) , D = diag(dj ) .

Figure 3-23 : Factorisation de Cholesky modifiée

248

Techniques d’optimisation

3.3.2 Pas de déplacement Pour une direction de descente uk donnée, on cherche un pas de déplacement sk  0 suivant uk pour trouver un point xk+1 meilleur que le point initial xk . Il s’agit d’un problème de minimisation à une variable qui se formule comme : min (s) = f (xk + suk ) s0

(3.104)

où la fonction directionnelle  donne la variation de f dans la direction uk . Dans un algorithme de recherche linéaire, le problème (3.104) doit être résolu à chaque itération à partir d’un nouveau point xk et suivant une nouvelle direction uk (Figure 3-16). L’obtention d’une solution précise par une méthode classique de minimisation unidimensionnelle comme le nombre d’or (section 2.2.3) serait coûteuse en appels fonction. On peut se contenter d’une solution approchée respectant les deux conditions suivantes. Condition de décroissance suffisante Cette condition porte sur la diminution de la fonction entre le point initial xk et le nouveau point xk +1 . La dérivée directionnelle de f dans la direction uk est donnée T

par :  '(0) = f (xk ) uk  0 . En se déplaçant dans cette direction, on peut espérer une décroissance de f proportionnelle à  '(0) . La condition d’Armijo ou première condition de Goldstein ou première condition de Wolfe impose que le pas s vérifie :

(s)  (0) + c1 s '(0)

(3.105)

où de manière équivalente : f (xk + suk )  f (xk ) + c1sf (xk )T uk

(3.106)

Le coefficient c1 sur la dérivée directionnelle est généralement fixé à c1 = 0,1 . La droite de pente c1 '(0)  0 issue de l’origine (s = 0) est appelée droite d’Armijo ou première droite de Goldstein.

Optimisation sans contraintes

249

La Figure 3-24 montre en trait plein la courbe représentative de la fonction f dans la direction uk et en trait pointillé la droite d’Armijo. L’origine est au point xk . La condition (3.106) impose un pas s tel que le point sur la courbe de f soit audessous de la droite d’Armijo.

Figure 3-24 : Condition de décroissance suffisante (condition d’Armijo)

Condition de déplacement suffisant La condition de décroissance (3.106) est vérifiée pour des pas s très petits. Pour éviter une stagnation au voisinage du point initial xk , on impose un écart entre le point initial xk et le nouveau point xk +1 . Cette condition s’exprime à partir de la dérivée directionnelle  '(0) sous l’une des deux formes suivantes. •

La deuxième condition de Goldstein porte sur la valeur de la fonction  . Elle impose que le pas s vérifie :

(s)  (0) + c2 s '(0)

(3.107)

où de manière équivalente : f (xk + suk )  f (xk ) + c2sf (xk )T uk



(3.108)

La deuxième condition de Wolfe porte sur la dérivée de la fonction  . Elle impose que le pas s vérifie :

 '(s)  c2  '(0)

(3.109)

250

Techniques d’optimisation

où de manière équivalente : (3.110)

f (xk + suk )T uk  c2f (xk )T uk

Pour ces deux conditions, le coefficient c2 sur la dérivée directionnelle est généralement fixé à c2 = 0,9 . La droite de pente c2 '(0)  0 issue de l’origine (s = 0) est appelée deuxième droite de Goldstein. La Figure 3-25 montre en trait plein la courbe représentative de la fonction f dans la direction uk . La condition de Goldstein (3.108) est illustrée sur la figure de gauche. La condition de Wolfe (3.110) est illustrée sur la figure de droite.

Figure 3-25 : Condition de déplacement suffisant La condition de Wolfe a l’intérêt de garantir que la condition de courbure requise par les méthodes DFP et BFGS est satisfaite au point xk+1 = xk + suk . En effet, le produit : yTk+1dk+1 = ( f (xk+1 ) − f (xk ) ) (xk+1 − xk ) est positif si le T

point xk +1 vérifie la condition (3.110). La condition de Wolfe est cependant coûteuse à vérifier, car elle nécessite pour chaque valeur de s le calcul du gradient de f au point xk + suk . Elle est donc peu utilisée en pratique. La condition de Goldstein (3.106) ne nécessite aucun calcul supplémentaire, car elle utilise la valeur de la fonction déjà calculée pour la condition d’Armijo (3.106). En pratique, les conditions d’acceptation du pas s sont donc : (s)  (0) + c1 s '(0)  (s)  (0) + c2 s '(0)

f (x + suk )  f (xk ) + c1sf (xk )T uk   k T f (xk + suk )  f (xk ) + c2sf (xk ) uk

(3.111)

Optimisation sans contraintes

251

Les valeurs usuelles c1 = 0,1 et c2 = 0,9 peuvent être changées, mais n’ont pas d’influence notable sur le comportement d’un algorithme de recherche linéaire. La recherche d’un pas vérifiant (3.111) est réalisable par une dichotomie dans l’intervalle 0  s  smax , la borne supérieure étant par exemple smax = 1 (qui donne le minimum si la fonction est quadratique de hessien Hk ). La Figure 3-26 illustre la recherche d’un pas acceptable.

Figure 3-26 : Réglage du pas par dichotomie

3.3.3 Algorithme La Figure 3-27 montre la structure d’un algorithme de minimisation par recherche linéaire utilisant une méthode de quasi-Newton. On donne ensuite quelques indications sur l’initialisation, les itérations et les conditions d’arrêt.

252

Techniques d’optimisation

Figure 3-27 : Minimisation par recherche linéaire avec quasi-Newton

Initialisation Le choix du point initial x0 est important si la fonction présente plusieurs minima locaux (ce qu’on ne sait généralement pas). La méthode de recherche linéaire étant locale, l’algorithme va converger vers un minimum local « proche » du point initial. En cas de doute, il est nécessaire de relancer l’optimisation à partir des différents points initiaux pour s’assurer que le minimum obtenu est le meilleur. Dans le cas général, on ne peut pas garantir que le minimum global a été trouvé. Le choix le plus simple pour la matrice H0 est l’identité. D’autres choix sont possibles (section 3.2.3) au prix d’évaluations supplémentaires de la fonction. Itérations Chaque itération comporte le calcul du gradient de la fonction f (n évaluations par différences finies), puis une recherche linéaire dans la direction préconditionnée uk = −Hk−1gk . Pour limiter le nombre d’évaluations de la fonction, on peut fixer le pas maximal smax = 1 qui correspond à l’itération de Newton.

Optimisation sans contraintes

253

Pour être accepté, le pas doit vérifier au moins la condition de décroissance suffisante (condition d’Armijo ou première condition de Goldstein) et si possible la condition de déplacement suffisant (deuxième condition de Goldstein). En cas d’échec, on peut réinitialiser la matrice Hk à l’identité, ce qui revient à réaliser une itération de plus forte pente. La direction de plus forte pente garantit en effet de trouver un pas vérifiant au moins la condition d’Armijo. Conditions d’arrêt L’algorithme s’arrête dès que l’une au moins des conditions suivantes est vérifiée. •

Décroissance insuffisante : f (xk ) − f (xk−1 )  f Le seuil f dépend de la précision estimée sur le calcul numérique de la fonction et de la précision souhaitée sur la valeur minimale de f.



Déplacement insuffisant : xk − xk−1  x Le seuil x dépend de la précision souhaitée sur les variables. Ce seuil peut éventuellement être différent pour chaque composante de x.



Gradient suffisamment petit : f (xk )  g Cette condition signifie qu’un minimum local a été atteint. Dans les applications pratiques, il n’est généralement pas possible d’annuler rigoureusement le gradient en raison des imprécisions numériques sur la fonction et/ou sur les dérivées par différences finies. Pour un problème mis à l’échelle, on peut prendre g  f .



Nombre d’évaluations de la fonction : Nfonc  Nfonc max Cette condition est nécessaire pour maîtriser le temps de calcul. Dans les applications pratiques, la fonction est généralement coûteuse à évaluer et le temps de calcul est proportionnel au nombre d’évaluations de la fonction.



Nombre d’itérations : Niter  Niter max Cette condition est généralement prévue en complément du nombre d’évaluations de la fonction. Il est en effet plus facile de raisonner en termes d’itérations vis-à-vis de la convergence.

254

Techniques d’optimisation

Exemple 3-16 : Minimisation par recherche linéaire avec BFGS ou SR1

(

La fonction de Rosenbrock est définie par : f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) . 2

2

1

La Figure 3-28 illustre l’application d’un algorithme de recherche linéaire avec BFGS ou SR1 en partant du point initial (−1,2 ; 1). On observe la progression le long de la vallée jusqu’au minimum en (1 ; 1).

Figure 3-28 : Minimisation de la fonction de Rosenbrock avec BFGS ou SR1 La Figure 3-29 montre la diminution de la fonction au cours des itérations. Sur cet exemple, la méthode BFGS progresse plus rapidement vers le minimum, car elle bénéficie du fait que le « vrai » hessien est naturellement défini positif.

Figure 3-29 : Comparaison BFGS/SR1 sur la fonction de Rosenbrock

Optimisation sans contraintes

255

Descente non monotone La condition d’Armijo (3.106) impose une diminution stricte de la fonction à chaque itération. Cette exigence de décroissance monotone peut ralentir la progression lorsque la fonction est mal conditionnée. Une stratégie alternative consiste à accepter des dégradations temporaires sur un nombre m d’itérations. La condition de décroissance (3.106) est modifiée en prenant comme valeur de référence f (xk−m ) au lieu de f (xk ) . (3.112)

f (xk + suk )  f (xk −m ) + c1sf (xk )T uk

La fonction peut ainsi croître pendant les m premières itérations, mais les soussuites de période m doivent ensuite être décroissantes. f (x0 )  f (x0+ m+1 )  f (x0+2(m+1) )   f (x0+k (m+1) )  f (x1 )  f (x1+m+1 )  f (x1+2(m+1) )   f (x1+k (m +1) ) (3.113)    f (xm )  f (xm+m+1 )  f (xm+2(m+1) )   f (xm+k (m+1) ) Cette stratégie de descente non monotone (appelée « watchdog ») permet une progression plus rapide lorsque la fonction est raide. La période m de vérification de la décroissance peut être prise égale à la dimension du problème (m = n) .

Exemple 3-17 : Stratégie de descente non monotone

(

Reprenons la fonction de Rosenbrock : f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) . 2

2

1

La Figure 3-30 compare la progression entre une descente monotone et une descente non monotone de période m = 2.

Figure 3-30 : Descente non monotone sur la fonction de Rosenbrock

256

Techniques d’optimisation

La stratégie non monotone s’échappe de la « vallée » à l’itération 1, puis à l’itération 3. La fonction est fortement dégradée lors de ces itérations, mais la convergence est globalement beaucoup plus rapide. Le minimum est atteint en 6 itérations contre 21 itérations pour la descente monotone.

3.4 Région de confiance La méthode de recherche linéaire n’évalue des points que dans une direction donnée. Cette stratégie peut rencontrer des difficultés lorsque la fonction varie fortement dans la direction de recherche. L’idée de la région de confiance est d’élargir la recherche en se basant sur un modèle quadratique local de la fonction. Ce processus est illustré sur la Figure 3-31. Pour chaque modèle quadratique, la ligne de niveau passant par xk est en pointillés.

Figure 3-31 : Modèles quadratiques successifs

Optimisation sans contraintes

257

Le modèle quadratique ne représente correctement la fonction qu’au voisinage du point courant. On définit une région de confiance centrée sur le point courant xk et bornée par un rayon rk . Une méthode de descente par région de confiance consiste à chaque itération : - à minimiser le modèle quadratique dans la région de rayon rk ; - à adapter le rayon rk pour obtenir un nouveau point satisfaisant xk+1 = xk + dk .

Figure 3-32 : Descente par région de confiance La formulation du problème quadratique est présentée en section 3.4.1, puis les méthodes de résolution sont examinées en sections 3.4.2 et 3.4.3.

3.4.1 Modèle quadratique Le modèle quadratique de la fonction f en xk dépend de la valeur fk de la fonction, du gradient gk et de l’approximation du hessien Hk (obtenue généralement par quasi-Newton). Cette fonction notée fˆ a pour expression : k

1 fˆk (xk + d) = fk + gTk d + dT Hk d 2

où d 

n

(3.114)

représente un déplacement à partir de xk .

On suppose que le modèle quadratique est une approximation correcte de la fonction à l’intérieur d’une région de centre xk et de rayon rk .

258

Techniques d’optimisation

Cette région de confiance peut être définie indifféremment :

d2=

- avec la norme 2 (région circulaire) :

n

d i =1

2 i

 rk ;

- avec la norme  (région rectangulaire) : d  = max(di )i=1 à n  rk . Le problème de région de confiance consiste à minimiser le modèle quadratique fˆ en restant à l’intérieur de la région de confiance. k

minn fˆk (xk + d) sous d  rk

(3.115)

d

La solution dk de ce problème définit un nouveau point xk+1 = xk + dk . Lorsque le rayon r varie, la solution xk+1 = xk + d(r) suit une courbe (Figure 3-33) partant du point xk (pour r = 0 ) avec la tangente −gk et allant : - jusqu'au minimum x de la fonction fˆ (si H est définie positive) ; N

k

k

- à l’infini si la fonction fˆk n’est pas bornée (si Hk est indéfinie). La notation xN désigne le point de Newton (minimum sans contrainte).

Figure 3-33 : Solution en fonction du rayon de confiance Pour un rayon donné, le point xk+1 = xk + d(r) minimise le modèle quadratique fˆ , mais pas forcément la « vraie » fonction f. k

Optimisation sans contraintes

259

Le rapport de réduction  compare l’amélioration réelle et l’amélioration prévue.

=

f (xk ) − f (xk +1 ) fˆ (xk ) − fˆ (xk +1 )

(3.116)

Un rapport supérieur ou égal à 1 indique que le modèle quadratique représente bien la fonction dans la région de rayon r. Dans ce cas, on peut augmenter le rayon à l’itération suivante de façon à autoriser un déplacement plus important. Un rapport petit ou négatif indique inversement que l’approximation quadratique n’est pas bonne. Dans ce cas, il faut reprendre l’itération en réduisant le rayon de confiance pour obtenir un point xk +1 acceptable. La stratégie de réglage du rayon est la suivante. • • •

Si   max (avec max = 0,9 ), on accepte le point xk +1 et on multiplie le

rayon par 2 pour l’itération suivante : rk +1 = 2rk . Si   min (avec min = 0,01 ), on rejette le point xk +1 et on reprend l’itération en divisant le rayon par 2 : rk → rk / 2 . Si min    max , on accepte le point xk +1 et on garde le même rayon pour l’itération suivante : rk+1 = rk .

Les valeurs des seuils min et max sont indicatives et ne sont pas essentielles pour le fonctionnement de l’algorithme. Le problème de région de confiance (3.115) est à résoudre à chaque itération, éventuellement plusieurs fois si la solution est rejetée et le rayon est réduit. La résolution de ce problème quadratique doit être rapide et robuste. Les deux principales méthodes de résolution sont présentées aux sections 3.4.2 et 3.4.3.

3.4.2 Solution directe La solution directe consiste à résoudre le problème (3.115) avec la contrainte de région de confiance formulée en norme 2. 1 T 1 T (3.117) d Hk d sous (d d − r2 )  0 d 2 2 Le lagrangien s’exprime avec un multiplicateur   0 de la contrainte inégalité. minn gTk d +

L(d, ) = dT gk +

1 T 1 d Hk d + (dT d − r2 ) 2 2

(3.118)

260

Techniques d’optimisation

Les conditions KKT d’ordre 1 sont : (Hk + μI) d = −gk   d r , μ0 μ( d − r) = 0 

(3.119)

Si la contrainte est inactive :  = 0 , la solution est directement : dN = −Hk−1gk .

(Hk + μI) d = −gk Si la contrainte est active : d = r , le système devient :  .  d =r , 0 Une manière simple de résoudre les conditions KKT (3.119) consiste à considérer −1 la solution paramétrée par  : d(μ) = −(Hk + μI) gk . Lorsque  décroît, la solution xk+1 = xk + d() décrit une courbe semblable à celle de la Figure 3-33, partant pour  = + du point xk ( d = 0 ) et allant pour  = 0 jusqu'au minimum x = x + d de la fonction fˆ (si H est définie positive) ou jusqu'à l’infini si la N

k

N

k

k

fonction fˆk n’est pas bornée (si Hk est indéfinie). On peut ainsi chercher par dichotomie la valeur  vérifiant la condition d() = r si la contrainte est active. Cette méthode présente une difficulté lorsque la matrice Hk est indéfinie.

Si D = diag(1, , n ) est la matrice diagonale des valeurs propres de Hk et P est la matrice de passage dans une base orthogonale de vecteurs propres, on a : Hk = PDPT

 P(D+ μI) PT d = −gk

(3.120)

Lorsque  = −i , où i est une valeur propre négative, la matrice D + I n’est plus inversible et d() →  . La fonction d() n’étant pas continue, la solution de l’équation d() = r (si elle existe) doit être recherchée dans chaque intervalle entre deux valeurs propres négatives consécutives. La fonction d() n’est de plus pas monotone dans ces intervalles, ce qui complique fortement la résolution. Il n’est en fait pas utile de respecter précisément la contrainte d() = r qui ne sert qu’à borner la solution du problème quadratique. Il est plus direct de vérifier le rapport de réduction  (3.116) et d’ajuster  pour obtenir une solution satisfaisante. Ceci n’élimine cependant pas la difficulté mentionnée précédemment lorsque la matrice Hk est indéfinie (fonction d() non continue et non monotone). Par ailleurs, le multiplicateur est difficile à estimer a priori, ce qui peut rendre cette méthode coûteuse en évaluations. La section suivante présente une méthode plus simple et plus robuste.

Optimisation sans contraintes

261

3.4.3 Solution dogleg La méthode dogleg a pour objectif d’éviter un trop grand nombre d’évaluations, en particulier lorsque la matrice Hk n’est pas définie positive. Pour cela, le problème (3.115) est simplifié en utilisant les points de Newton et de Cauchy. Le point de Newton x = x + d est le minimum de la fonction quadratique fˆ N

k

k

N

si celle-ci est convexe (matrice Hk définie positive). (3.121)

dN = −Hk−1gk

Le point de Cauchy xC = xk + dC est le minimum de fˆk suivant la direction −gk . 1 2 T s gk Hk gk 2 gT g → dC = − T k k gk gk Hk gk

min fˆ ( −sgk ) = fk − sgTk gk + s 0

→ s=

gTk gk g Hk gk T k

(3.122)

Les points de Newton et de Cauchy forment un chemin en deux segments : - le premier segment va du point initial xk au point de Cauchy xC ;

- le deuxième segment va du point de Cauchy xC au point de Newton xN . Ce chemin représenté sur la Figure 3-34 est appelé chemin dogleg. Il est utilisé comme approximation de la solution exacte qui suit la courbe en pointillé.

Figure 3-34 : Points de Newton et de Cauchy Le chemin dogleg est paramétré par le pas s compris entre 0 et 2. si 0  s  1 d(s) = sdC d(s) = d + (s − 1)(d − d ) si 1  s  2 C N C 

(3.123)

262

Techniques d’optimisation

Le problème de région de confiance réduit au chemin dogleg se formule comme : min gTk d(s) +

0s  2

1 d(s)T Hk d(s) sous d(s)  r 2

(3.124)

Lorsque la matrice Hk est définie positive, la fonction quadratique (3.124) décroît avec s alors que la distance d(s) croît. Il suffit donc de parcourir le chemin dogleg à rebours en partant du point de Newton ( s = 2 ) jusqu’à rentrer dans la région de confiance d(s)  r . La solution se trouve : - au point de Newton s’il est à l’intérieur de la région de confiance ( dN  r) ; - sur le deuxième segment si le point de Cauchy est à l’intérieur de la région de confiance et le point de Newton à l’extérieur ( dC  r  dN ) . Le pas s vérifie : dC + (s − 1)(dN − dC ) = r , ce qui conduit à une équation du second degré ayant une seule racine positive (produit des racines négatif) : a = dN − dC 2  −b + b2 − 4ac (3.125) s = 1+ avec b = 2dTC ( dN − dC ) 2a c = d 2 − r2 C  - sur le premier segment si le point de Cauchy est à l’extérieur de la région de confiance (r  dC ) . Le pas s est alors directement donné par :

s=

r dC

 d=r

dC g = −r k dC gk

Ces trois situations sont illustrées sur la Figure 3-35.

Figure 3-35 : Solution dogleg en fonction du rayon de confiance

(3.126)

Optimisation sans contraintes

263

Exemple 3-18 : Itération de la méthode dogleg Reprenons la fonction de l’ Exemple 3-12 : min f(x1 ,x2 ) = x1 ,x2

1 2 9 2 x1 + x2 . 2 2

9  

Illustrons une itération de la méthode de dogleg à partir du point initial : x0 =   . 1 Le gradient et le hessien au point initial sont :

9 1 0 g0 = f (x0 ) =   , H0 = 2f (x0 ) =   9 0 9 Le point de Cauchy est obtenu par :

min fˆ (x0 − sg0 ) = 45 − 18(9s) + 5(9s)2 → s = s

 7, 2  1 → xC =   5  −0,8 

Le point de Newton est obtenu par :

0 → xN =   0

 9   1 0  9  xN = x0 − H0−1g0 =   −     1   0 1/ 9  9  Le premier segment dogleg a pour équation :

 9 − 1,8s  xd1 (s) = x0 + s(xC − x0 ) =    1 − 1,8s 

pour 0  s  1

Le deuxième segment dogleg a pour équation :

 7, 2 − 7, 2s  xd2 (s) = xC + s(xN − xC ) =   pour 0  s  1  −0,8 + 0,8s  (on a choisi ici de paramétrer chaque segment avec un pas s compris entre 0 et 1). La Figure 3-36 illustre deux régions de confiance de rayons r = 1 et r = 4 .

Pour r = 1 , la solution dogleg est sur le premier segment :

 8, 293  xd   .  0, 293   5,331 

Pour r = 4 , la solution dogleg est sur le deuxième segment : xd   .  −0,592 

264

Techniques d’optimisation

Figure 3-36 : Solution dogleg pour deux valeurs du rayon de confiance

Lorsque la matrice Hk n’est pas définie positive, la fonction quadratique n’est pas bornée inférieurement et il existe potentiellement les mêmes difficultés que celles mentionnées en section 3.4.2. L’évaluation des points de Newton et de Cauchy permet de détecter ces difficultés liées à des valeurs propres négatives. En effet, −1 si la direction Hk gk n’est pas une direction de descente, le pas de Cauchy (3.122) devient négatif. Il suffit dans ce cas de réduire le rayon jusqu’à obtenir un rapport de réduction  (3.116) acceptable. En restreignant l’espace de recherche à deux segments, la méthode dogleg évite la résolution du système (3.119), ce qui la rend plus robuste au cas de matrices indéfinies. La méthode dogleg restreint la solution aux deux segments définis par les vecteurs dC et dN − dC . Une amélioration simple consiste à étendre l’espace de recherche

au sous-espace engendré par les vecteurs dC et dN . Le déplacement à partir du point xk est alors de la forme d = CdC + NdN et dépend des deux coefficients réels C , N . Le problème « dogleg en dimension 2 » se formule comme : 1 min gTk d(C , N ) + d(C , N )T Hk d(C , N ) sous d(C , N )  r C ,N 2

(3.127)

Optimisation sans contraintes

265

Si le point de Newton n’est pas dans la région de confiance, il suffit de résoudre le problème (3.127) à deux inconnues en considérant la contrainte comme active. En élevant celle-ci au carré, et avec un multiplicateur  , le lagrangien s’écrit : 1 L(C , N , ) = gTk (CdC + N dN ) + (CdC + N dN )T Hk (CdC + N dN ) 2 (3.128) +  (CdC + N dN )2 − r2 

Les conditions KKT donnent en système linéaire en C , N , paramétré par  . En exprimant C , N en fonction de  , on se ramène à une équation de degré 4 en  qui se résout analytiquement. Cette solution dogleg en dimension 2 permet au prix de calculs supplémentaires d’améliorer la solution dogleg classique.

3.4.4 Algorithme La Figure 3-37 montre la structure d’un algorithme de minimisation par région de confiance utilisant une méthode de quasi-Newton.

Figure 3-37 : Minimisation par région de confiance avec quasi-Newton

266

Techniques d’optimisation

Les indications données en section 3.3.3 pour l’algorithme de recherche linéaire restent valables pour l’algorithme de région de confiance. La solution dogleg peut être considérée comme un compromis entre la méthode de plus forte pente (point de Cauchy) et la méthode de quasi-Newton (point de Newton). Elle est ainsi susceptible de mieux progresser que la recherche linéaire à chaque itération, mais au prix d’un nombre d’évaluations plus élevée. Les deux approches (recherche linéaire ou région de confiance) sont à envisager pour chaque problème, aucune n’étant de manière systématique supérieure à l’autre. L’exemple suivant (à comparer à l’Exemple 3-16) illustre le comportement de l’algorithme de région de confiance sur la fonction de Rosenbrock. L’algorithme est appliqué en considérant quatre options : - région de confiance circulaire ou rectangulaire ; - méthode de quasi-Newton BFGS ou SR1.

Exemple 3-19 : Minimisation par région de confiance avec BFGS ou SR1 La fonction de Rosenbrock à 2 variables est définie par :

(

f ( x1 , x2 ) = 100 x2 − x12

) + (1 − x ) 2

2

1

Son minimum est en (1 ; 1). La Figure 3-38 illustre l’application d’un algorithme de région de confiance avec BFGS en partant du point initial (−1,2 ; 1). La région de confiance est circulaire à gauche, rectangulaire à droite.

Figure 3-38 : BFGS avec région de confiance circulaire/rectangulaire

Optimisation sans contraintes

267

La Figure 3-39 illustre l’application d’un algorithme de région de confiance avec SR1 en partant du point initial (−1,2 ; 1). La région de confiance est circulaire à gauche, rectangulaire à droite.

Figure 3-39 : SR1 avec région de confiance circulaire/rectangulaire La Figure 3-40 montre la décroissance de la fonction coût selon l’option choisie. La région de confiance est circulaire à gauche, rectangulaire à droite. Sur cet exemple, la progression avec BFGS est plus rapide qu’avec SR1, et la région de confiance circulaire donne une progression plus rapide que la région de confiance rectangulaire.

Figure 3-40 : Décroissance de la fonction-coût

268

Techniques d’optimisation

3.5 Méthodes proximales Les méthodes proximales généralisent les méthodes de descente dans le cas de fonctions convexes non différentiables. Ces méthodes d’optimisation non lisse sont utilisées en traitement d’image, en optimisation robuste ou stochastique, ou encore dans les processus d’apprentissage (deep-learning, machine-learning).

3.5.1 Opérateur proximal On considère une fonction f convexe non nécessairement différentiable et pouvant prendre des valeurs infinies : f : n → + . Le domaine propre de f est l’ensemble des points pour lesquels f reste finie.



n

dom(f ) = x 



(3.129)

/ f (x)  +

Un sous-gradient de f au point x0 est un vecteur g 

n

tel que : (3.130)

x  dom(f ) , f (x)  f (x0 ) + gT (x − x0 )

Le sous-différentiel de f au point x0 est l’ensemble des sous-gradients en ce point. Ce sous-ensemble de n est noté f (x0 ) .



f (x0 ) = g 

n



/ x  dom(f ) , f (x)  f (x0 ) + gT (x − x0 )

Exemple 3-20 : Sous-différentiel La fonction valeur absolue :

f ( x) = x a pour sous-différentiel : −1 si x  0  f ( x) =  −1 ; + 1 si x = 0 +1 si x  0 

(3.131)

Optimisation sans contraintes

269

Le sous-différentiel possède les propriétés suivantes qui se démontrent facilement à partir de sa définition (3.131). •

Si f est différentiable en x0, elle n’admet qu’un seul sous-gradient qui est le gradient de f en x0. Le sous-différentiel se réduit à : f (x0 ) = f (x0 ) .



Le point x* est un minimum de f si et seulement si le vecteur nul appartient au sous-différentiel de f en x* : 0 f (x*) .

Passons maintenant à la définition de l’opérateur proximal. Considérons pour cela une fonction convexe f, un point v n et le problème d’optimisation : 1 2  min  f (x) + x − v 2  x 2  

(3.132)

Ce problème consiste à minimiser la fonction f tout en restant à proximité de v. Le point xp solution de ce problème est le point proximal de v par rapport à f. 1 2  xp = arg min  f (x) + x − v 2  x 2  

(3.133)

L’opérateur proximal de la fonction f associe au point v  Cet opérateur est une fonction de

n

dans

n

n

le point xp 

n

.

notée proxf .

1 2  proxf (v) = arg min  f (x) + x − v 2  x 2  

(3.134)

En utilisant la caractérisation du minimum par le sous-différentiel, on a : xp = proxf (v)  0 f (xp ) + xp − v

(3.135)

Appliquons la définition (3.134) à la fonction f où  est un réel strictement positif. En divisant la fonction à minimiser par   0 , on obtient :  1 2 proxf (v) = arg min  f (x) + x−v 2 x 2  

(3.136)

Le coefficient  introduit une pondération entre la minimisation de f et la distance au point v. L’opérateur proxf est l’opérateur proximal de f avec le paramètre . En utilisant le sous-différentiel de f, l’opérateur proxf s’exprime comme : proxf = ( I + f )

−1

(3.137)

Cette formule appelée résolvante de f est démontrée ci-dessous. Le sous-différentiel f représente ici l’opérateur associant au point x l’ensemble des sous-gradients de f en ce point.

270

Techniques d’optimisation

Démonstration 1 2 x−v 2. 2 D’après (3.135) le vecteur nul appartient donc au sous-différentiel de F en xp :

Le point proximal xp = proxf (v) minimise la fonction F(x) = f (x) +

0  F(xp ) =f (xp ) +

xp − v 

.

En multipliant par   0 et en passant v au 1er membre, on a : v  ( I + f ) (xp ).

 

En appliquant l’opérateur inverse, on obtient : ( I + f ) (v)  xp . −1

Le point proximal est unique, car la fonction F est convexe. Cette relation

d’appartenance est donc une égalité : ( I +f ) (v) = xp , d’où la formule (3.137). −1

L’opérateur proximal possède les propriétés suivantes qui se démontrent à partir de sa définition (3.134). •

Fonction séparable en somme f (x, y) = (x) + (y) → proxf (v, w) = ( prox (v) , prox (w) )

Cette propriété qui se généralise à un nombre quelconque de variables permet de paralléliser le calcul des opérateurs proximaux de chaque composante. •

Composition de fonctions f (x) = a(x) + b , a  0 → proxf (v) = proxa (v) 1 f (x) = (ax + b) , a  0 → proxf (v) = proxa2 (av + b) − b a → proxf (v) = prox (v − c) f (x) = (x) + cT x + b f (x) = (Qx) → proxf (v) = QT prox (Qv) avec Q orthogonale  '   2 f (x) = (x) + x − c 2 → proxf (v) = prox '   v +  'c  2    avec  ' = 1 + 

(

)

Pour des fonctions simples comme ci-dessous, l’opérateur proximal se calcule analytiquement. Des exemples plus complexes sont abordés en section 3.5.5.

Optimisation sans contraintes

271

Exemple 3-21 : Expressions analytiques de l’opérateur proximal •

Fonction indicatrice de l’ensemble convexe C 2 0 si x  C f (x) = IC (x) = → proxf (v) = PC (v) = arg min x − v 2 xC + si x  C



Cet opérateur proximal est la projection euclidienne PC sur l’ensemble C. •



Fonction quadratique avec une matrice Q semi-définie positive 1 f (x) = xT Qx + cT x + b → proxf (v) = (I + Q)−1 (v − c) 2 Dans le cas Q = I , c = 0 , b = 0 qui correspond à la norme L 2, l’opérateur proximal appelé opérateur de contraction est défini par : 1 1 2 1 f (x) = xT x = x 2 → proxf (v) = v 2 2 1+  Valeur absolue  v +  si v  −  f (x) = x → proxf (v) = 0 si −   v  +  −  v si +   v  Cet opérateur proximal est appelé opérateur de seuillage.

L’intérêt de l’opérateur proximal vient essentiellement de la propriété suivante. Propriété 3-3 : Point fixe Un point x* est un minimum de f si et seulement si x* est un point fixe de proxf . x* minimum de f



proxf (x*) = x*

(3.138)

Démonstration Supposons d’abord que x* est un minimum de f : x , f (x)  f (x*) .

1 1 2 2 x − x * 2  0 au 1er membre et x * −x * 2 = 0 au 2nd membre. 2 2 1 1 2 2 On obtient : x , f (x) + x − x * 2  f (x*) + x * −x * 2 . 2 2 Ajoutons

272

Techniques d’optimisation

1 2 x − x* 2 . 2 Par définition du point proximal (3.133), on a donc : x* = proxf (x*) et x* est un Cette inégalité montre que x* minimise la fonction : F(x) = f (x) + point fixe de l’opérateur proximal.

Supposons inversement que x* est un point fixe de l’opérateur proximal.

1 2 x − x * 2 . Son sous-différentiel au 2 n point x est le sous-ensemble de défini par f (x) + x − x * . Plaçons-nous au minimum de F correspondant au point : xp = proxf (x*) . Considérons la fonction : F(x) = f (x) +

Le sous-différentiel de F en xp contient 0 (caractérisation du minimum de F). Comme par hypothèse : proxf (x*) = x* , on en déduit :

0 F(xp ) = f (xp ) + xp − x* = f (x*) qui montre que x* est un minimum de f.

La Propriété 3-3 suggère que l’on peut trouver un minimum de f par un algorithme de point fixe. La convergence repose sur les propriétés suivantes. •

L’opérateur proxf est fortement non expansif, ce qui signifie que :

x1 , x2 , proxf (x1 ) − proxf (x2 ) 2  ( proxf (x1 ) − proxf (x2 ) ) (x1 − x2 ) 2



T

L’opérateur proxf est lipschitzien de constante 1, ce qui signifie que :

x1 , x2 , proxf (x1 ) − proxf (x2 ) 2  x1 − x2

2

3.5.2 Interprétations En itérant l’opérateur proximal jusqu’à convergence vers un point fixe, on obtient un minimum de f. L’itération proximale est définie par : xk+1 = proxf (xk )

(3.139)

Le paramètre   0 peut être constant ou variable. Le calcul de proxf (xk ) implique de minimiser la fonction : F(x) = f (x) +

1 x − xk 2

2 2

à chaque itération.

Le terme quadratique ajoutée à la fonction f est appelé régularisation de Tikhonov. Il convexifie la fonction au voisinage de l’itéré courant xk et force le nouvel itéré

Optimisation sans contraintes

273

xk+1 à rester au voisinage de xk. Ce procédé peut accélérer la convergence vers le minimum de f. On peut également interpréter la minimisation de la fonction F(x) comme une méthode de région de confiance (section 3.4) traitée par pénalisation. Le coefficient   0 représente alors le rayon de confiance. L’algorithme proximal n’offre pas d’intérêt particulier dans le cas d’une fonction f quelconque, car minimiser F n’est pas plus simple que minimiser f. Il s’avère en revanche intéressant pour les formes de fonctions présentées en section 3.5.3. Donnons quelques interprétations de cet algorithme en lien avec les méthodes de descente classiques et avec les méthodes de résolution d’équations différentielles. Lien avec les méthodes de descente Pour une fonction différentiable, la formule (3.137) donne : proxf = ( I + f )

−1

et l’itération proximale se met sous la forme : (3.140)

xk +1 = (I + f )−1 xk •

Lien avec une méthode de gradient

Pour  petit, le développement à l’ordre 1 de la formule (3.140) donne :

xk+1 = xk − f (xk ) + o()

(3.141)

L’itération proximale s’apparente à une méthode de gradient simple avec un pas . •

Lien avec une méthode de Newton

Approximons la fonction f par son développement d’ordre 2 au voisinage de xk 2 avec les notations : fk = f (xk ) , gk = f (xk ) , Hk =  f (xk ) . 1 (3.142) f (x)  fk + gTk (x − xk ) + (x − xk )T Hk (x − xk ) 2 En appliquant la formule d’une fonction quadratique (Exemple 3-21) avec ici : Q = Hk , c = gk − Qxk , l’itération proximale (3.140) se met sous la forme : −1

 1  xk +1 = xk −  Hk + I  gk   

(3.143)

On reconnaît une itération de Newton modifiée (avec régularisation de Tikhonov) appelée aussi méthode de Levenberg-Marquardt comme en (3.119). La matrice Hk peut être une approximation du hessien obtenue par quasi-Newton.

274

Techniques d’optimisation

Lien avec les équations différentielles Considérons l’équation différentielle suivante appelée flot du gradient de f. dx(t) (3.144) = −f ( x(t) ) , x(t)  n dt Cette équation admet comme points d’équilibres les points stationnaires de f. Examinons successivement les méthodes d’Euler vers l’avant et vers l’arrière.



Méthode d’Euler vers l’avant

La méthode d’Euler vers l’avant consiste à discrétiser l’équation sous la forme : x(tk +1 ) − x(tk ) = −f ( x(tk ) ) tk +1 − tk

(3.145)

En notant xk = x(tk ) , hk = tk+1 − tk , on obtient xk +1 sous la forme explicite : (3.146)

xk+1 = xk − hkf (xk )

On retrouve l’itération d’une méthode de gradient simple avec un pas hk . •

Méthode d’Euler vers l’arrière

La méthode d’Euler vers l’arrière consiste à discrétiser l’équation sous la forme : x(tk +1 ) − x(tk ) = −f ( x(tk +1 ) ) tk +1 − tk

(3.147)

On obtient xk +1 sous la forme implicite : xk+1 + hkf (xk+1 ) = xk



( I + hkf ) xk+1 = xk

(3.148)

On retrouve l’itération (3.140) d’une méthode proximale avec un coefficient hk . Les propriétés de convergence des méthodes de gradient et proximale sont ainsi étroitement liées aux propriétés des méthodes d’Euler avant et arrière. Ces interprétations se généralisent au cas non différentiable en considérant  1 2 l’enveloppe de Moreau définie comme : Mf (v) = inf  f (x) + x −v 2. x 2   Cette fonction est une régularisation différentiable de f ayant les mêmes minima

(

)

que f. Son gradient est donné par : Mf (v) = v − proxf (v) /  . Ces développements plus complexes sont détaillés dans la référence [R13].

Optimisation sans contraintes

275

3.5.3 Gradient proximal La méthode du gradient proximal s’applique aux problèmes de la forme :

minn f (x) + c(x)

(3.149)

x

La fonction f :

c:

n



n

+



est convexe et différentiable, alors que la fonction

est simplement convexe. Cette fonction c peut exprimer un ensemble de contraintes et prendre la valeur + pour des points non admissibles. La méthode du gradient proximal consiste à réaliser les itérations :

xk+1 = proxskc (xk − sk gk )

(3.150)

où gk = f (xk ) et sk  0 est le pas de déplacement. L’idée de cette méthode est la suivante. • •

Le point  = xk − sk gk réduit la fonction f par un pas de gradient simple. Le point xk+1 = proxskc () réduit la fonction c en restant à proximité de  .

Dans le cas où c(x) = IC (x) (fonction indicatrice de l’ensemble convexe C définie dans l’Exemple 3-21), on obtient la méthode du gradient projeté. La convergence de cette méthode est établie par la propriété suivante. Propriété 3-4 : Point fixe du gradient proximal x* est un minimum de (3.149) si et seulement si x* est un point fixe de (3.150).

Démonstration Supposons x* est un minimum de f + c. On a la suite d’équivalences suivantes.  0  f (x*) + c(x*) x* minimum de f + c  0  sf (x*) − x * + x * + sc(x*)



( I − sf ) (x*)  ( I + sc) (x*) −1 ( I + sc) ( I − sf ) (x*) = x *

 avec l’égalité car le membre de droite se réduit au seul élément x*.  proxsc ( I − sf ) (x*) = x * en utilisant l’expression de l’opérateur proximal (3.137). La dernière ligne signifie que x* est un point fixe des itérations (3.150).

276

Techniques d’optimisation

Réglage du pas Le pas de déplacement sk est réglé par recherche linéaire. Parmi les méthodes possibles, celle de Beck et Teboulle se base sur la fonction :

1 2 (3.151) fˆs (x, xk ) = f (xk ) + gTk (x − xk ) + x − xk 2 def 2s Cette fonction fˆs (x, xk ) est une borne supérieure de f (x) . Elle vérifie :  f (x)  fˆs (x, xk ) ,  ˆ  fs (x, x) = f (x) où L est la constante de Lipschitz de f. 1  s   0 ,  , x  L 

n

(3.152)

Démonstration L’égalité fˆs (x, x) = f (x) est évidente. Pour montrer l’inégalité f (x)  fˆs (x, xk ) , on calcule fˆs (x, xk ) − f (x) .

1 2 fˆs (x, xk ) − f (x) = f (xk ) − f (x) + gTk (x − xk ) + x − xk 2 (égalité E) 2s Si f est lipschitzienne de constante L, on a : 1 2 x , f (x)  f (xk ) + gTk (x − xk ) + L x − xk 2 que l’on reporte dans (E). 2 1 1 2 2 fˆs (x, xk ) − f (x)  − L x − xk 2 + x − xk 2 2 2s Pour tout pas s inférieur à 1/ L , on obtient l’inégalité (3.152).

La constante de Lipschitz n’est généralement pas connue. La méthode de Beck et Teboulle consiste à partir d’une valeur initiale (par exemple s = 1 ) que l’on divise par 2 jusqu’à satisfaire la condition : (3.153) f ()  fˆ (, x ) avec  = x − sg s

k

k

k

On démontre que ce réglage du pas assure la convergence du gradient proximal. La méthode du gradient proximal revient en fait à minimiser à chaque itération la fonction majorante fˆ (x, x ) qui représente un développement d’ordre 1 de f en s

k

xk avec un terme de pénalisation quadratique de type région de confiance.

Optimisation sans contraintes

277

Gradient proximal accéléré La méthode du gradient proximal accéléré reprend l’idée de Nesterov présentée en section 3.3.1 en insérant un déplacement avant l’itération (3.150). Ce déplacement est une extrapolation du pas précédent avec un coefficient k . Le gradient évalué au point extrapolé yk permet une progression plus rapide. L’itération du gradient proximal accéléré est définie par : k   yk = xk + k (xk − xk −1 ) avec k = k +3  x = prox (y − s g ) avec g =  f (yk )  sk c k k k k  k +1

(3.154)

Différents réglages du coefficient k  0 ; 1 sont possibles. Lien avec les équations différentielles Considérons l’équation différentielle : dx(t) = −f ( x(t) ) − c ( x(t) ) , x(t)  n dt En appliquant une méthode d’Euler sous la forme dite avant-arrière : xk +1 − xk = −f (xk ) − c(xk +1 ) hk

(3.155)

(3.156)

on obtient :

( I + hkc ) (xk+1) = ( I − hkf ) (xk )

(3.157)

Cette formule est l’itération du gradient proximal (3.150) écrite sous la forme : xk+1 = ( I + skc )

−1

( I − skf ) (xk )

(3.158)

avec un pas sk = hk . La méthode du gradient proximal revient donc à intégrer l’équation différentielle (3.155) par une méthode Euler avant pour la partie différentiable f et une méthode Euler arrière pour la partie non différentiable c. L’algorithme du gradient proximal est pour cette raison appelé aussi avant-arrière. Les versions particularisées au cas fréquent où c(x) = x 1 sont ISTA (Iterative

Shrinkage-Thresholding Algorithm) ou FISTA (Fast ISTA) qui applique des techniques d’accélération du type (3.154).

278

Techniques d’optimisation

3.5.4 Méthode primale-duale Reprenons le problème (3.149) avec des fonctions f ,c : n → + . Ces fonctions sont convexes et la fonction f peut maintenant être non différentiable.

minn f (x) + c(x) x

(3.159)

La méthode proximale primale-duale consiste à réaliser les itérations :  xk +1 = proxsf (yk − uk )   yk +1 = proxsc (xk +1 + uk )   uk +1 = uk + xk +1 − yk +1

(3.160)

Cette méthode appelée ADMM (Alternating Direction Method of Multipliers) ou séparation de Douglas-Rachford actualise 3 vecteurs xk , yk ,uk à chaque itération.

Elle sépare les opérateurs proximaux de f et c, ce qui est intéressant lorsque proxf et proxc sont simples à calculer alors que proxf +c ne l’est pas. Les vecteurs xk et yk sont associés respectivement aux fonctions f et c et le vecteur u k a pour objectif d’assurer leur convergence (ou consensus) vers la solution du problème (3.159). Cette convergence est établie par la propriété suivante. Propriété 3-5 : Point fixe de la méthode primale-duale Les itérations (3.160) convergent vers un minimum de (3.159).

Démonstration  x* = proxsf (y * −u*)  Notons x*, y*, u* un point fixe de (3.160). On a :  y* = proxsc (x * + u*) .  u* = u * + x * − y *  x* = proxsf (x * −u*) La 3e ligne donne y* = x * , que l’on reporte :  x* = prox (x * + u*) . sc 

En utilisant l’expression de l’opérateur proximal (3.137), ce système s’écrit : −1   x * −u*  ( I + sf ) (x*) = x * +sf (x*)  x*  ( I + sf ) (x * −u*)    −1  x * + u*  ( I + sc ) (x*) = x * +sc(x*)   x*  ( I + sc ) (x * + u*) En sommant membre à membre, on obtient : 0  ( f + c ) (x*) qui montre que x* est un minimum de f + c.

Optimisation sans contraintes

279

Lien avec les méthodes de lagrangien augmenté Réécrivons le problème (3.159) sous la forme dite de consensus :

minn f (x) + c(y) sous x − y = 0

x ,y

(3.161)

Cette formulation sépare les minimisations de f et c en imposant la contrainte de consensus à la solution. Le lagrangien augmenté (section 4.6) de ce problème est défini avec un multiplicateur   n associé à la contrainte égalité et un coefficient de pénalisation   0 .

1 2 (3.162) L (x, y, ) = f (x) + c(y) + T (x − y) +  x − y 2 2 L’algorithme du lagrangien augmenté (section 4.6.4) pour résoudre le problème (3.161) consiste à alterner la minimisation en (x, y) et l’actualisation des multiplicateurs  en fonction de la valeur des contraintes (ici x − y = 0 ). Les variables (x, y) étant séparables, on peut mettre les itérations sous la forme : min L (x, yk , k ) → xk +1  x L (xk +1 , y, k ) → yk +1 min y  k +1 = k +  (xk +1 − yk +1 )

(3.163)

Explicitons ces itérations pour le lagrangien augmenté (3.162) en rentrant les termes linéaires en T (x − y) dans la norme. 2  1 1  xk +1 = arg min f (x) +  x − yk + k 2  2 x  2   yk +1 = arg min c(y) + 1  xk +1 − y − 1 k  2  2 y   k +1 = k + (xk +1 − yk +1 )

(3.164)

1 1 En posant uk = k et s = , on retrouve les itérations ADMM (3.160).  

La méthode primale-duale (3.160) équivaut ainsi à un algorithme de lagrangien augmenté appliqué au problème (3.161). Elle forme la base de nombreuses variantes en la combinant au gradient proximal (3.150) et/ou en utilisant les spécificités des fonctions f et c pour accélérer la convergence. On peut citer en particulier les algorithmes de Chambolle-Pock ou de Tseng. Les applications portent sur des problèmes de traitement d’image, de point-selle (optimisation robuste de type min-max), d’optimisation stochastique ou multi-objectif.

280

Techniques d’optimisation

Version linéarisée La version linéarisée de la méthode primale-duale s’applique au problème :

minn f (x) + c(Ax)

(3.165)

x

avec des fonctions f :

n

+



et c :

m



+

convexes non

nécessairement différentiables et une matrice A  mn . La présence de la matrice A peut compliquer le calcul de l’opérateur proximal de c(Ax) . La version linéarisée évite ce calcul en modifiant les itérations (3.160) comme suit :

 t T    xk +1 = proxtf  xk − s A (Axk − yk + uk )      yk +1 = proxsc (Axk +1 + uk )  u = u + Ax − y k k +1 k +1  k +1

(3.166)

Cet algorithme utilise seulement les opérateurs proximaux de f et c, avec des coefficients respectifs t et s. Pour t = s et A = I , on retrouve les formules (3.160).

3.5.5 Calcul de l’opérateur proximal Cette section introduit les notions de convexe conjuguée et l’identité de Moreau qui facilitent le calcul d’opérateur proximaux d’usage courant. Considérons une fonction f : n → + quelconque non nécessairement convexe. La fonction convexe conjuguée de f (appelée également transformée de Legendre-Fenchel de f) est définie par :

(

f *(v) = sup vT x − f (x) x

n

)

(3.167)

Cette fonction f* convexe a pour objectif d’approcher f par l’enveloppe supérieure de toutes les fonctions affines minorantes. On cherche pour v  n donné le plus n , vT x +   f (x) , ce qui conduit à : grand   tel que : x 

(

)

− = sup vT x − f (x) = f *(v) x

n

En prenant la conjuguée de f*, on définit la fonction bi-conjuguée f**.

(

f **(x) = sup xT v − f *(v) v

n

)

(3.168)

Optimisation sans contraintes

281

La fonction bi-conjuguée f** vérifie les deux propriétés suivantes. - Elle est la plus grande fonction convexe fermée inférieure à f. - Elle est identique à f si et seulement si f est convexe fermée. Ces propriétés se démontrent en utilisant la caractérisation d’une fonction convexe comme l’enveloppe supérieure des fonctions affines minorantes. Les sous-différentiels de f et f* sont liés par la propriété suivante. Propriété 3-6 : Sous-différentiel de la fonction conjuguée n

Si f est convexe fermée, alors : (x, v) 



n

, v f (x)  x f *(v)

Démonstration Par définition du sous-différentiel :

vf (x)  y , f (y)  f (x) + vT (y − x)

que l’on réécrit sous la forme :

y , vT x − f (x)  vT y − f (y)

(

)

T T En prenant la borne supérieure, on a : v x − f (x)  sup v y − f (y) = f *(v) y

def

v x − f (x) = f *(v) avec égalité pour y = x , d’où : La fonction f convexe est identique à sa bi-conjuguée. vT x − f *(v) = f **(x) = sup xT y − f *(y) , On a donc : T

y

(

)

T T qui conduit à : y , v x − f *(v)  x y − f *(y)

 y , f *(y)  f *(v) + xT (y − v)  xf *(v)

L’intérêt principal de la fonction conjuguée vient de l’identité de Moreau. v 

n

, proxf (v) + proxf * (v) = v

(3.169)

Démonstration Notons xp = proxf (v) et yp = v − xp . Le point proximal xp vérifie :

0 f (xp ) + xp − v  yp f (xp ) .

282

Techniques d’optimisation

En utilisant la Propriété 3-6, on a : yp f (xp )  xp f *(yp )

v − yp f *(yp )  0 f *(yp ) + yp − v

Remplaçons xp = v − yp :

qui signifie que yp est le point proximal de v pour f* : yp = proxf* (v) . On a donc : proxf* (v) = yp = v − xp = v − proxf (v) .

L’identité de Moreau généralise le théorème de décomposition d’un vecteur sur un sous-espace et son complément orthogonal, comme démontré ci-dessous.

Exemple 3-22 : Décomposition orthogonale Considérons un sous-espace L de 0 si x  L IL (x) = + si x  L



n

et la fonction indicatrice de L définie par :

La fonction convexe conjuguée de IL est définie par :

(

)

IL *(v) = sup vT x − IL (x) = sup vT x (équation E) car IL (x) =+ si xL . x

n

xL

Notons L le complément orthogonal de L : L⊥ = y  ⊥

n



/ x  L , yT x = 0 .

- Si v  L , alors x L , v x = 0 et l’équation (E) donne : IL *(v) = 0 . ⊥

T

- Si v  L⊥ , il existe x L , vT x  0 et sup vT x n’est pas borné : IL *(v) =+ . xL

La fonction convexe conjuguée de IL est donc l’indicatrice de L⊥ : IL * = IL⊥ . Appliquons l’identité de Moreau à la fonction IL , en rappelant que son opérateur proximal est la projection euclidienne sur L : proxIL (v) = PL (v) (Exemple 3-21). proxIL (v) = PL (v) n , PL (v) + PL⊥ (v) = v prox (v) = P (v)  v  IL * L⊥  Le vecteur v s’exprime comme la somme de ses projections sur L et L⊥ .

L’identité de Moreau est utile lorsque l’opérateur proximal de f* est plus simple à calculer que celui de f. Dans de nombreuses applications (problèmes inverses, identification, apprentissage), la fonction f est une somme de normes. L’exemple suivant présente le calcul de l’opérateur proximal d’une norme.

Optimisation sans contraintes

283

Exemple 3-23 : Opérateur proximal associé à une norme Considérons la fonction : f (x) = x où

est une norme quelconque sur

n

.

Calculons d’abord la fonction convexe conjugué de f : f *(v) = sup ( v x − x ) . T

x

n

Tout vecteur x peut se mettre sous la forme x = u où : - le réel   0 est la norme de x ; - le vecteur unitaire u n , u =1 est la direction de x. n

La fonction f * s’exprime comme : f *(v) = sup (vT u − 1) (équation E) 0 , u =1

Notons B = v / v *  1 la boule unité associée à la norme duale de . . Cette norme duale notée

*

est définie par : v * = sup vT u . u 1

T

- Si vB , alors pour tout u de norme 1, on a : v u  1 . L’équation (E) donne dans ce cas : f *(v) = 0 (sup atteint pour  = 0 ). - Si vB , sup vT u est positif. L’équation (E) donne : f *(v) = +  pour  =  . u =1

La fonction convexe conjuguée de f (x) = x est donc l’indicatrice de la boule unité B de la norme duale : f *(v) = IB (v) . Appliquons l’identité de Moreau à la fonction f en rappelant que l’opérateur proximal de la fonction indicatrice de B est la projection euclidienne sur B. v  n , proxf (v) + proxf * (v) = v  proxf (v) = v − PB (v) En introduisant le coefficient   0 , on obtient la formule générale : f (x) = x

v → proxf (v) = v − PB   

La référence [R13] détaille le calcul de nombreux opérateurs proximaux usuels (normes, projections …). Une application importante concerne les problèmes de forme LASSO (Least Absolute Shrinkage and Selection Operator) : 1 2 (3.170) Ax − b 2 +  x 1 x 2 En utilisant l’expression explicite de l’opérateur proximal, ainsi que la propriété de décomposition lorsque les variables sont séparables, on peut résoudre très rapidement des problèmes de grande dimension du type (3.170). minn

284

Techniques d’optimisation

3.6 Convergence Cette section présente quelques éléments sur la convergence des méthodes de descente, en particulier sur la vitesse de convergence et la précision de la solution.

3.6.1 Convergence globale On dit qu’un algorithme de descente est globalement convergent si la limite lim xk = x * est un point stationnaire : f (x*) = 0 . Si l’on vérifie par ailleurs k →

que la fonction décroît à chaque itération, le point limite est un minimum local. La convergence globale ne signifie pas la convergence vers l’optimum global, mais simplement que l’algorithme converge vers un point stationnaire quel que soit le point initial. Elle se démontre sous des hypothèses peu restrictives. Propriété 3-7 : Convergence globale Considérons une méthode de descente par recherche linéaire avec des itérations de la forme : xk+1 = xk + sk uk , où uk est la direction et sk  0 est le pas.

Notons k l’angle entre uk et la direction de plus forte descente −f (xk ) . Supposons que les directions uk vérifient la condition : cos k    0 et que les pas de déplacement sk vérifient les conditions de Wolfe (3.110).

Alors la méthode de descente converge vers un point stationnaire : f (x*) = 0 .

Démonstration (voir [R11], [R12]) On suppose que le gradient de la fonction coût est lipschitzien (hypothèse peu restrictive souvent satisfaite en pratique). Il existe donc une constante L telle que : x, x ' , f (x ') − f (x)  L x '− x . Les itérations : xk+1 = xk + sk uk satisfont les conditions de Wolfe.

f (xk +1 )  f (xk ) + c1sk f (xk )T uk  T T f (xk +1 ) uk  c2f (xk ) uk

avec 0  c1  c2  1

La 2e condition de Wolfe donne : f (xk+1 ) −f (xk ) uk  (c2 −1)f (xk )T uk . T

Optimisation sans contraintes

285

En utilisant dans cette inégalité la condition de Lipschitz sur le gradient :

f (xk+1) −f (xk )

T

uk  f (xk+1) −f (xk ) uk  Lsk uk on déduit une inégalité sur le pas sk : (c − 1)f (xk )T uk 2 Lsk uk  (c2 − 1)f (xk )T uk  sk  2 2 L uk

2

que l’on reporte dans la 1re condition de Wolfe (avec f (xk )T uk  0 ) : T c1 (c2 − 1) f (xk ) uk T f (xk +1 )  f (xk ) + c1sk f (xk ) uk  f (xk ) + 2 L uk

En notant : cL =

2

c1 (1 − c2 )  0 et avec : f (xk )T uk = − f (xk ) uk cos k , L 2

on obtient l’inégalité : f (xk+1 )  f (xk ) − cL f (xk ) cos2 k . Sommons membre à membre ces inégalités de k = 0 à k = n −1 . n −1

f (xn )  f (x0 ) − cL  f (xk ) cos2 k 2

k =0

En supposant la fonction f minorée (sinon le problème d’optimisation n’a pas de solution), et en passant à la limite n →  , on obtient l’inégalité de Zoutendijk : 

 f (x ) k =0

k

2

2

cos2 k   qui implique : lim f (xk ) cos2 k = 0 . k →

Comme par hypothèse : cos k    0 , on obtient : lim f (xk ) = f (x*) = 0 . k →

Il suffit donc que les directions de descente ne deviennent pas « trop orthogonales » au gradient de f pour assurer la convergence globale. Les méthodes de plus forte pente, de Newton et quasi-Newton satisfont cette condition. La Propriété 3-7 se démontre également pour les conditions de Goldstein (3.108). La convergence globale est en fait assurée pour tout algorithme au sein duquel on insère périodiquement une itération de plus forte pente. Bien que cette propriété soit rassurante sur le comportement asymptotique, elle ne garantit rien sur la vitesse de convergence qui est un élément primordial pour les applications.

286

Techniques d’optimisation

3.6.2 Vitesse de convergence La vitesse de convergence se mesure sur l’écart à l’optimum. On peut considérer les écarts sur les variables xk − x * ou les écarts sur la fonction f (xk ) − f (x*) (qui sont positifs car x* est un minimum). La convergence est dite linéaire s’il existe un réel   1 tel que :

lim k →

xk +1 − x *   ou xk − x *

lim k →

f (xk +1 ) − f (x*)  f (xk ) − f (x*)

(3.171)

La convergence est dite superlinéaire d’ordre   1 si : lim k →

xk +1 − x * xk − x *





ou

lim k →

f (xk +1 ) − f (x*)

f (xk ) − f (x*)





(3.172)

La convergence quadratique correspond à  = 2 . La propriété suivante concerne la méthode de plus forte pente. Propriété 3-8 : Vitesse de convergence de la méthode de plus forte pente La méthode de plus forte pente appliquée à la minimisation d’une fonction quadratique convexe f présente une convergence linéaire avec : 2

f (xk +1 ) − f (x*)  n − 1    f (xk ) − f (x*)  n + 1 

(3.173)

où 1 et n sont la plus petite et la plus grande valeur propre du hessien de f.

Éléments de démonstration La démonstration comporte deux étapes : l’expression du rapport d’amélioration, puis par sa majoration. Expression du rapport d’amélioration La fonction quadratique à minimiser est de la forme : 1 f (x) = xTQx + cT x avec une matrice Q symétrique définie positive. 2

1 T On peut toujours se ramener à une matrice symétrique en posant Q' = (Q + Q ) . 2

Optimisation sans contraintes

287

1 Le minimum de la fonction quadratique est : x* = − Q−1c → f (x*) = − cTQ−1c . 2 La méthode de plus forte pente réalise à partir du point xk un déplacement dans la direction opposée au gradient : uk = −f (xk ) = −Qxk − c avec un pas s.

La valeur de la fonction au point xk+1 = xk + suk est (en utilisant Qxk = −uk − c ) :

1 1 f (xk + suk ) = (xk + suk )T Q(xk + suk ) + cT (xk + suk ) = f (xk ) + s2 uTk Quk − s uTk uk 2 2 Le pas optimal sk est donné par : uTk uk 1 (uTk uk )2 → f (x ) = f (x ) − k +1 k s uTk Quk 2 uTk Quk Le rapport d’amélioration de la fonction vaut : min f (xk + suk ) → sk =

f (xk +1 ) − f(x*) (uT u )2 1 = 1 − kT k f (xk ) − f(x*) 2uk Quk f (xk ) − f(x*) −1 En utilisant xk = −Q (uk + c) , on a : 1 1 f (xk ) − f(x*) = xTk Qxk + cT xk + cT Q−1c 2 2 1 1 1 T −1 = (uk + c) Q (uk + c)T − cT Q−1 (uk + c) + cTQ−1c = uTk Q−1uk 2 2 2 ce qui donne l’égalité E1 pour le rapport d’amélioration de la fonction :

f (xk +1 ) − f(x*) 1 = 1− f (xk ) − f(x*) q

avec q =

(uTk Quk )(uTk Q−1uk ) (uTk uk )2

(égalité E1)

La matrice Q symétrique définie positive admet une base orthonormée de vecteurs −1 T propres. Notons P la matrice de passage orthogonale dans cette base (P = P ) et D la matrice diagonale des valeurs propres de Q.

D = diag(i ) avec 0  1  2 

 n−1  n .

T En exprimant la matrice Q comme Q = PDP et en introduisant le vecteur unitaire u v = PT k , on obtient pour q : uk

(uT PDPT uk )(uTk PD−1PT uk ) q= k = (uTk uk )2 T

T

−1

= (v Dv)(v D v)

(

uk vT Dv uk

)(

uk

uk vT D−1v uk 4

)

288

Techniques d’optimisation

Le vecteur unitaire v a pour composantes (v1, v2 ,

, vn ) dans la base de vecteurs

2 i

propres de Q. En notant i = v , q s’exprime comme :

 n  n 1  + 2 + + n = 1 (égalité E2) q =   i i    i  avec  1 0  i  1  i=1   i=1 i  Nous allons maintenant majorer la valeur de q en fonction de (1, 2 , , n ) . Majoration du rapport d’amélioration Considérons la variable aléatoire S prenant les valeurs (1, probabilités respectives (1,

, n ) avec les

 +  + + n = 1 . , n ) qui vérifient :  1 2 0  i  1 n

L’espérance de S vaut : E S =  i i . i =1

1 La variable prend les valeurs S

1 1   , ,  avec les probabilités (1, n   1 1 1 n Son espérance vaut : E   =  i .  S  i=1 i

, n ) .

1 Avec cette variable aléatoire S, l’égalité E 2 s’exprime comme : q = E S E   . S La variable S prenant des valeurs entre 1 et n (qui sont positives), on a : 1  +  −S (S − 1 )(n − S)  0  S(1 + n − S)  1n   1 n S 1n  +  − E S   1    E   1 n 1n S Multiplions par E S  0 pour faire apparaître q :  1  ( + n )E S − E S q = E S E    1 1n S En écrivant le numérateur sous la forme : 2

 +  E S − (1 + n )E S =  E S − 1 n 2  on obtient l’inégalité : 2 (1 + n )2 1  1 + n  q − E S − 41n 1n  2  2

2

2

 (1 + n )  − 4  

(1 + n )2 41n

Optimisation sans contraintes

289

En reprenant l’expression de q en fonction de u, cette inégalité s’écrit : (uT Qu)(uT Q−1u) (1 + n )2 (inégalité I1) u , q =  (uT u)2 41n Ce résultat s’appelle l’inégalité de Kantorovich. En reportant l’inégalité de Kantorovich I1 dans l’égalité E1, on obtient la relation (3.173) bornant le rapport d’amélioration de la fonction.

La Propriété 3-8 est démontrée pour une fonction quadratique. Elle s’étend à une fonction f quelconque au voisinage de son minimum x*, en considérant les valeurs 2 propres du hessien  f (x*) . L’inégalité (3.173) peut être réécrite en introduisant  le conditionnement du hessien  = n  1 . 1 2

f (xk +1 ) − f (x*)   − 1    f (xk ) − f (x*)   +1 

(3.174)

Si  = 1 (conditionnement parfait), la solution est obtenue en une seule itération, car les lignes de niveau sont circulaires et le gradient pointe vers le centre. Si  est grand (mauvais conditionnement), le second membre est proche de 1, ce qui signifie que l’amélioration peut être faible à chaque itération. Bien que cette borne ne soit qu’un cas pire, on constate en pratique que la méthode de plus forte pente converge très lentement sur des problèmes mal conditionnés (Exemple 3-12). Les méthodes de gradient conjugué ont une convergence superlinéaire, mais elles nécessitent n minimisations unidimensionnelles par itération. Les méthodes de quasi-Newton ont une convergence superlinéaire (ou quadratique sous certaines hypothèses). La méthode de Newton présente une convergence quadratique. Ces méthodes ne sont en théorie pas sensibles au conditionnement du hessien, mais leur comportement peut être affecté par des erreurs de précision numérique.

290

Techniques d’optimisation

3.6.3 Précision numérique Les erreurs numériques dues au calcul en précision finie affectent d’une part la solution obtenue, d’autre part les directions d’une méthode de descente. Précision sur la solution Appliquons à partir du minimum x* un déplacement d’un pas s dans la direction unitaire u. La variation de f à l’ordre 2 est donnée par : 1 1 f (x * +su) − f(x*) = suT g * + s2uT H * u = s2uT H * u 2 2

(3.175)

2

avec g* = f (x*) = 0 et H* =  f (x*)  0 . Si l’évaluation de f est entachée d’une erreur numérique f , l’algorithme peut s’arrêter en tout point x = x * + su tel que : 1 2 T (3.176) s u H*u 2 Si la direction u est un vecteur propre de H* associé à la valeur propre  , alors uT H*u =  et l’erreur sur la solution vaut : f =

x = x − x * = s =

2f 

(3.177)

L’erreur est maximale suivant la direction de plus petite valeur propre de H*. Lorsque la matrice H est proche de singulière, ou si son conditionnement est  1) , il est difficile d’obtenir une solution x* précise. mauvais (  = n 1 Précision sur la direction Les directions d’une méthode de descente sont obtenues en résolvant à chaque itération un système linéaire de la forme :

Hd = −g

(3.178)

où g est le gradient de la fonction et H une approximation du hessien. La matrice H définie positive admet une base orthonormée de vecteurs propres. Dans cette base, le système (3.178) donne n équations linéaires indépendantes :

idi = −gi où di ,gi sont les composantes de d et g dans la base de vecteurs propres.

(3.179)

Optimisation sans contraintes

291

Examinons l’effet des erreurs numériques sur une simple équation linéaire : ax = b

 x* =

b a

(3.180)

Des erreurs a et b sur les réels a et b causent une erreur x sur la solution x*. En sommant les erreurs en valeur absolue, on obtient à l’ordre 1 : x   = a + b x* a b

(3.181)

Pour un calcul numérique avec une précision machine relative m (généralement égale à 10−16), les erreurs a et b sur les réels a et b valent : a = max(a m , m )  = max(b  ,  ) m m  b

(3.182)

Supposons que b n’est pas petit, et que l’erreur sur b vaut : b = bm . •

Si a est grand, a = am et l’erreur relative sur x* est de l’ordre de :



Si a est petit, a = m et l’erreur relative sur x* est de l’ordre de :

x x*

x x*

m . m . a

L’erreur relative peut dans ce cas être très supérieure à m . En revenant à (3.179), cela signifie que les composantes de direction selon des valeurs propres petites peuvent être imprécises, ce qui est préjudiciable à une recherche linéaire. C’est en particulier le cas pour une méthode de pénalisation. La fonction fp = f + c2 a un gradient fp = f + 2c.c de l’ordre de  et un hessien dont une partie des valeurs propres sont de l’ordre de  (section 4.2.4). En passant dans la base de vecteurs propres du hessien, le système (3.178) donnant la direction prend la forme :  D1  0

0  d1   g1    = −   D2  d2   g2 



1  D1d1 = −g1   D2d2 = −g2

(3.183)

Pour une pénalisation grande, l’erreur est plus importante sur les composantes d1. La direction de descente devient peu précise, ce qui peut bloquer l’algorithme.

292

Techniques d’optimisation

3.7 Conclusion 3.7.1 Les points essentiels •

La méthode de Newton est rapide et précise, mais elle nécessite le calcul du gradient (équations) ou du hessien (minimisation) et n’est pas robuste.



Les méthodes de quasi-Newton (Broyden, BFGS, SR1) évitent le calcul du gradient/hessien en ayant des performances proches de la méthode de Newton.



La globalisation vise à contrôler la progression par des méthodes d’homotopie (équations), de recherche linéaire ou région de confiance (minimisation).



Une méthode par recherche linéaire cherche le minimum suivant une direction de descente. La condition d’Armijo définit un déplacement acceptable.



Une méthode par région de confiance cherche le minimum d’un modèle quadratique dans une région de rayon donné. La méthode dogleg donne une solution approchée.

3.7.2 Pour aller plus loin •

Programmation mathématique (M. Minoux, Lavoisier 2008, 2ème édition) Le chapitre 4 présente les méthodes de quasi-Newton, de directions conjuguées et de descente par recherche linéaire. Des résultats théoriques sont donnés sur la convergence des algorithmes.



Introduction à l’optimisation différentiable (M. polytechniques et universitaires normandes 2006)

Bierlaire,

Presses

La méthode de Newton est présentée aux chapitres 7 et 10. Les méthodes de quasi-Newton sont présentées aux chapitres 8 (Broyden) et 13 (BFGS, SR1). Le chapitre 11 présente la descente par recherche linéaire. Le chapitre 12 présente la descente par région de confiance. Le chapitre 6 présente les problèmes de moindres carrés. De nombreux exemples détaillés illustrent le fonctionnement des algorithmes. •

Numerical optimization (J. Nocedal, S.J. Wright, Springer 2006) Les méthodes de quasi-Newton sont présentées aux chapitres 11 (Broyden), 6 (BFGS, SR1) et 7 (extensions BGFS). Le chapitre 3 présente la descente par recherche linéaire. Le chapitre 4 présente la descente par région de confiance. Le chapitre 5 présente les méthodes de directions conjuguées. Le chapitre 10

Optimisation sans contraintes

293

présente les problèmes de moindres carrés. Beaucoup de conseils pratiques sont donnés sur l’implémentation des algorithmes. •

Practical methods of optimization (R. Fletcher, Wiley 1987, 2nd edition) Le chapitre 3 présente les méthodes de Newton et quasi-Newton. Le chapitre 2 présente la descente par recherche linéaire. Le chapitre 5 présente la descente par région de confiance. Le chapitre 4 présente les méthodes de directions conjuguées. Le chapitre 6 présente les problèmes de moindres carrés. De nombreuses démonstrations de convergence sont données.



Numerical methods for unconstrained optimization and nonlinear equations (J.E. Dennis, R.B. Schnabel, Siam 1996) La méthode de Newton est présentée au chapitre 5. Les méthodes de quasiNewton sont présentées aux chapitres 8 (Broyden) et 9 (BFGS, SR1). Le chapitre 6 présente la descente par recherche linéaire et par région de confiance. Le chapitre 10 présente les problèmes de moindres carrés. Les algorithmes sont détaillés et illustrés par des exemples. De nombreuses démonstrations sont également données sur la convergence des algorithmes.



Numerical optimization (J.F. Bonnans, J.C. Gilbert, C. Lemaréchal, C.A. Sagastizabal, Springer 2003) Le chapitre 4 présente les méthodes de Newton et quasi-Newton. Le chapitre 3 présente la descente par recherche linéaire. Le chapitre 6 présente la descente par région de confiance. Le chapitre 5 présente les méthodes de directions conjuguées. De nombreuses démonstrations sont données sur la convergence des algorithmes.



Analyse numérique (Collectif direction J. Baranger, Hermann 1991) Les chapitres 1 et 6 présentent en détail les méthodes de quasi-Newton avec de nombreuses démonstrations.



Practical mathematical optimization (J.A. Snyman, Springer 2005) Le livre propose des variantes aux méthodes de descente classiques avec de nombreux exemples illustratifs.



Introduction to numerical continuation methods (E.L. Allgower, K. Georg, Siam 2003) Le livre est consacré aux méthodes d’homotopie (ou continuation) pour résoudre des systèmes d’équations.

Optimisation avec contraintes

295

4. Optimisation avec contraintes Ce chapitre est consacré aux méthodes d’optimisation continue avec contraintes, désignées sous le terme de programmation non linéaire. La programmation linéaire (fonction coût et contraintes linéaires) fait l’objet du chapitre 5. La section 1 présente les catégories de méthodes, de type primal, primal-dual ou dual selon la formulation choisie pour le problème d’optimisation. Ces méthodes mesurent l’amélioration d’une solution par une fonction mérite ou un filtre prenant en compte les réductions de la fonction coût et de la violation des contraintes La section 2 présente les méthodes de pénalisation. Leur principe est de se ramener à un problème sans contraintes en concaténant la fonction coût et la violation des contraintes en une fonction augmentée. Selon la forme de pénalisation, il est possible d’approcher ou d’obtenir la solution exacte du problème avec contraintes. La section 3 présente les méthodes de gradient réduit. Leur principe est de n’accepter que des solutions admissibles. La recherche d’un nouveau point se base sur une linéarisation des contraintes et la restauration d’un point admissible. Ces méthodes ont l’intérêt de fournir une solution admissible, même si l’optimum n’est pas atteint. La section 4 présente les méthodes de programmation quadratique séquentielle. Leur principe est de résoudre les conditions d’optimalité par une méthode de Newton, ce qui équivaut à résoudre une suite de problèmes quadratiques-linéaires. Ces méthodes convergent plus rapidement que le gradient réduit, mais les solutions intermédiaires ne sont pas admissibles. La section 5 présente les méthodes de point intérieur. Leur principe est de résoudre les conditions d’optimalité par une méthode de Newton, mais en traitant les contraintes inégalité par pénalisation barrière. Ces méthodes développées initialement pour les problèmes linéaires sont intéressantes en présence d’un grand nombre de contraintes inégalité. La section 6 présente les méthodes de lagrangien augmenté. Leur principe est de résoudre le problème dual avec une pénalisation quadratique. Ceci élimine les difficultés intrinsèques du problème dual et permet de se ramener à une suite de problèmes sans contraintes. La solution exacte peut être obtenue sans augmenter indéfiniment la pénalisation.

296

Techniques d’optimisation

4.1 Classification des méthodes Les trois grandes catégories de méthodes d’optimisation avec contraintes sont les méthodes primales, primales-duales et duales. Ces méthodes diffèrent par la formulation du problème que l’on cherche à résoudre.

4.1.1 Formulations du problème Cette section rappelle les formulations pour aborder un problème d’optimisation avec contraintes et pour traiter les contraintes inégalité. Formulation primale La forme standard d’un problème d’optimisation à n variables x avec p contraintes d’égalité cE et q contraintes d’inégalité cI est la suivante :

c (x) = 0 minn f (x) sous  E (4.1) x cI (x)  0 Cette formulation définit le problème primal. Les variables x sont appelées les variables primales. Conditions KKT Le lagrangien du problème (4.1) est la fonction de L(x,λ,μ) = f(x) + λT cE (x) + μT cI (x) p

q

= f(x) +  λ jcEj (x) +  μ jcIj (x) j=1

n + p +q

dans

définie par : (4.2)

j=1

p

Les multiplicateurs   sont associés aux p contraintes égalité c E. q Les multiplicateurs   sont associés aux q contraintes inégalité c I. Les multiplicateurs  ,  sont appelés variables duales. Une solution locale du problème (4.1) doit satisfaire les conditions d’optimalité KKT d’ordre 1 : x L(x,λ,μ) = 0 c (x) = 0  E cI (x)  0 μ  0 μ c (x) = 0 , j=1 à q  j Ij

(4.3)

Optimisation avec contraintes

297

Formulation duale La fonction duale  est définie comme le minimum du lagrangien par rapport à x.

(λ,μ) = min L(x,λ,μ)

(4.4)

xD

Le domaine de définition de la fonction duale est D = λ,μ  0 / (λ,μ)  − . Le problème dual du problème (4.1) consiste à maximiser la fonction duale.

max (λ ,μ)

(4.5)

λ ,μ 0

La solution du problème dual satisfait les conditions KKT de minimum local (4.3) et donne par ailleurs une borne inférieure du minimum global du problème (4.1). Contraintes inégalité Certaines contraintes inégalité sont inactives sur la solution du problème (4.1) et ont des multiplicateurs nuls : cIj (x)  0 et  j = 0 . Si ces contraintes inactives étaient connues à l’avance, on pourrait les ignorer et transformer les contraintes inégalité actives en égalité. Le problème (4.1) pourrait alors être reformulé en un problème ne comportant plus que des contraintes égalité.

c (x) = 0 minn f (x) sous  E x cI (x)  0



minn f (x) sous cact (x) = 0 x

(4.6)

Cette formulation avec contraintes égalité forme la base de nombreux algorithmes d’optimisation sous contraintes. Deux méthodes permettent de s’y ramener. La première méthode consiste à transformer les inégalités en égalités en introduisant q variables d’écart positives notées y. c (x) = 0 minn f (x) sous  E x c I (x)  0



c E (x) = 0  minn f (x) sous c I (x) + y = 0 (4.7) x  y q y  0

Le nouveau problème comporte alors n + q variables et p + q contraintes égalité. On peut lui appliquer un algorithme d’optimisation avec contraintes d’égalité, en veillant de plus à ce que les variables d’écart y restent positives à chaque itération. La seconde méthode dite de contraintes actives consiste à sélectionner à chaque itération l’ensemble A k des contraintes actives au point courant x k . Les

298

Techniques d’optimisation

contraintes inactives en x k (cIj (x k )  0) sont ignorées pour construire un nouveau point x k+1 . On observe alors l’ensemble Ak+1 des contraintes actives au nouveau point x k+1 . Si Ak+1 = Ak , alors la sélection des contraintes actives était correcte et le nouveau point est accepté. Sinon l’itération est reprise à partir du point x k en modifiant la sélection des contraintes actives. On peut par exemple considérer directement l’ensemble Ak+1 ou effectuer des essais en incluant / excluant progressivement les inégalités selon leur statut actif / inactif en x k et x k+1 .

4.1.2 Méthodes primales, primales-duales et duales Les méthodes numériques se basent soit sur la formulation primale (4.1), soit sur les conditions KKT (4.3), soit sur la formulation duale (4.5). Méthodes primales Les méthodes primales abordent le problème d’optimisation sous sa formulation directe (4.1) en ne considérant que les variables primales x. Les multiplicateurs ne sont pas utilisés. Les contraintes sont traitées par pénalisation ou par réduction. L’approche par pénalisation consiste à transformer le problème avec contraintes (4.1) en un problème sans contraintes de la forme :

minn f (x) = f (x) + C(x) x

def

La fonction f :

n



(4.8)

est appelée coût augmenté. Le réel   0 est le

n → mesure la coefficient de pénalisation. La fonction de pénalisation C : violation des contraintes. Elle peut être définie de différentes manières, la plus fréquente étant la forme quadratique suivante. 2 1 1 2 (4.9) cE (x) 2 + max ( 0,c I (x) ) 2 2 2 L’approche par pénalisation permet d’appliquer un algorithme d’optimisation sans contraintes, ce qui simplifie énormément la résolution. Les contreparties sont le respect approximatif des contraintes (selon la forme de pénalisation choisie) et les difficultés liées au conditionnement du coût augmenté (4.8). Les méthodes de pénalisation sont présentées en section 4.2.

C(x) =

Pour certaines applications, le respect des contraintes est impératif et prime sur l’optimalité de la solution. L’approche par réduction consiste à générer une suite

Optimisation avec contraintes

299

de points admissibles réduisant la fonction coût. Même si l’optimum n’est pas atteint, les solutions intermédiaires sont viables. Ces méthodes nécessitent un point initial admissible x 0 qui peut être construit en minimisant la fonction de pénalisation (4.9) jusqu’à l’annuler. À chaque itération, on linéarise les contraintes actives au point courant x k , puis on réalise une minimisation dans l’espace tangent aux contraintes actives (espace réduit) pour déterminer un nouveau point x d . Si les contraintes sont non linéaires, il faut restaurer un point admissible x k+1 à partir de x d et vérifier que ce point est meilleur que x k . Les méthodes de gradient réduit/projeté sont présentées en section 4.3. Méthodes primales-duales Les méthodes primales-duales se basent sur les conditions KKT (4.3). Ces conditions forment un système d’équations et d’inéquations dont les inconnues sont les variables primales x et les variables duales  ,  . Les inéquations provenant des contraintes inégalité ne permettent pas d’appliquer directement une méthode de Newton à la résolution du système KKT. Les contraintes inégalité sont traitées soit par variables d’écart, soit par contraintes actives. La première méthode consiste à introduire q variables d’écart positives y comme en (4.7). Les conditions KKT (4.3) prennent la forme : f (x) + cE (x)λ + cI (x)μ = 0 c (x) = 0  E cI (x) + y = 0 μ j yj = 0 , j=1 à q  y  0 , μ  0

(4.10)

Les 4 premières équations forment un système non linéaire qui peut être résolu par une méthode de Newton. Cependant les conditions de complémentarité (impliquant l’annulation de  j ou de y j ) introduisent un aspect combinatoire qui peut bloquer les itérations si une variable s’approche trop rapidement de zéro. Les méthodes de point intérieur introduisent un paramètre de barrière h  0 et remplacent les conditions de complémentarité par :  j y j = h . Le système KKT perturbé est résolu pour des valeurs décroissantes de h , de façon à approcher la solution de (4.10) en restant à l'intérieur du domaine y  0 ;   0 . Ces méthodes de point intérieur sont présentées en section 4.5.

300

Techniques d’optimisation

La deuxième méthode consiste à ne considérer que les contraintes actives notées c(x) à chaque itération comme en (4.6). Le système KKT prend la forme :

L(x, λ) = 0 avec L(x,λ) = f (x) + λT c(x)

(4.11)

Ce système d’équations non linéaires est de dimension n + m (où m est le nombre de contraintes actives). L’itération de Newton au point x k est donnée par :

d  2 L(xk , λk )  x  = −L(xk , λk )  d 

(4.12)

où (d x ,d ) sont les composantes du déplacement sur des variables (x,  ) . En détaillant (4.12) en fonction des variables x et , on obtient : 2xx L(xk , λk )dx + c(xk )d = −x L(xk , λk )  T = −c(xk ) c (xk )dx

(4.13)

On peut remarquer que ce système linéaire en (d x ,d ) correspond aux conditions KKT du problème quadratique-linéaire local suivant, obtenu en développant le lagrangien à l’ordre 2 et les contraintes à l’ordre 1 au point (x k ; k ) . 1 min x L(xk , k )T dx + dTx 2xx L(xk , k )dx sous c(xk )T dx + c(xk ) = 0 (4.14) 2 Les méthodes de programmation quadratique séquentielle présentées en section 4.4 utilisent cette équivalence en résolvant une suite de problèmes quadratiques locaux. Ces méthodes basées sur des itérations de Newton nécessitent un processus de globalisation. Par ailleurs, les points successifs sont non admissibles. Leur qualité est évaluée par une fonction mérite ou un filtre (section 4.1.3) tenant compte du double objectif de minimiser la fonction coût et de satisfaire les contraintes. dx Rn

Méthodes duales Les méthodes duales abordent le problème d’optimisation sous la formulation (4.5), qui se présente comme un problème de max-min :

max  min L(x,λ,μ)  λ ,μ 0  x 

avec L(x,λ,μ) = f (x) + T cE (x) + TcI (x) (4.15)

Pour simplifier les notations, on regroupe les contraintes et multiplicateurs.

c   c= E , =  def c def     I

(4.16)

Optimisation avec contraintes

301

Le problème (4.15) devient :

max  min L(x,)    x 

avec L(x,) = f (x) + T c(x)

(4.17)

Les variables duales  sont les variables de premier niveau. Les variables primales x sont des variables de second niveau obtenues en minimisant le lagrangien pour  fixé. L’intérêt de cette formulation est que les contraintes ne sont pas appliquées explicitement. On peut ainsi appliquer des algorithmes sans contraintes pour le problème de premier niveau comme pour celui de second niveau. La fonction duale  est définie par :

() = min L(x,) xD

(4.18)

et son domaine de définition est D =  / ()  − . Idéalement, il faudrait trouver le minimum global du lagrangien par rapport à x. On convergerait alors vers un point-selle (si un tel point existe), ce qui garantirait que l’on a trouvé le minimum global (Théorème 1-7). En pratique, il faut se contenter d’un minimum local du lagrangien, et on aboutit à un point vérifiant les conditions KKT de minimum local. La méthode d’Uzawa consiste à résoudre le problème (4.18) par un algorithme de plus forte pente. La formulation (4.18) présente une difficulté liée au domaine de définition D qui n’est pas connu à l’avance. Les itérations peuvent faire sortir de ce domaine et le lagrangien n’est plus borné inférieurement. Les méthodes de lagrangien augmenté évitent cette difficulté en ajoutant des termes de pénalisation au lagrangien classique de façon à garantir l’existence d’un minimum. Les méthodes de lagrangien augmenté sont présentées en section 4.6.

4.1.3 Mesure de l’amélioration Un algorithme d’optimisation est une méthode itérative générant une suite de points. Ces points doivent d’une part améliorer la satisfaction des contraintes, d’autre part faire décroître la fonction coût. La question se pose alors de comparer différents points en tenant compte de ces deux objectifs. Supposons que l’on cherche à minimiser simultanément plusieurs fonctions :  minn c1 (x)  x   minn c m (x)  x

(4.19)

Pour comparer deux points, on définit une relation de dominance. Cette relation peut être définie en composantes ou en norme.

302

Techniques d’optimisation

Dominance en composantes Les fonctions à minimiser sont comparées séparément. Le point x  n domine le point y  n s’il est meilleur pour chacune des fonctions à minimiser. x

y

c1 (x)  c1 (y)     c m (x)  c m (y)

(4.20)

La Figure 4-1 montre les régions dominées et non dominées associées à un point x  n dans le cas de deux fonctions c1 (x) et c2 (x) à minimiser.

Figure 4-1 : Relation de dominance et front de Pareto L’axe des abscisses représente la valeur de la fonction c1 (x) , l’axe des ordonnées représente la valeur de la fonction c2 (x) . Le front de Pareto dans ces mêmes axes est l’ensemble des solutions non dominées pour lesquelles il n’existe aucun point améliorant simultanément toutes les fonctions à minimiser. Lorsqu’un algorithme produit une suite de points, le filtre associé mémorise les solutions non dominées. Chaque nouveau point évalué est comparé aux solutions du filtre et vient remplacer les solutions qu’il domine. Au cours des itérations, le filtre permet ainsi de stocker l’ensemble des meilleures solutions rencontrées visà-vis des m fonctions à minimiser. Dans le cas idéal, les points du filtre en fin d’exécution de l’algorithme sont des points du front de Pareto. La Figure 4-2 ci-après illustre un filtre comportant quatre solutions x1;x 2 ;x3 ;x 4  pour deux fonctions c1 (x) et c2 (x) à minimiser.

Optimisation avec contraintes

303

Figure 4-2 : Points du filtre La dominance en composantes conduit à stocker beaucoup de points dans le filtre, en proportion du nombre de fonctions à minimiser. Une approche plus économique se base sur la dominance en norme. Dominance en norme Les m fonctions à minimiser dans (4.19) forment un vecteur c  de dominance en norme se base sur la norme de ce vecteur.

x

y  c(x)  c(y)

m

. La relation (4.21)

Toute norme peut être utilisée, en particulier : - la norme L1 : c 1 =  ck ; k

- la norme L2 : c 2 = - la norme L : c



c k

k

2

;

= max ck . k

La relation (4.21) est une relation d’ordre qui classe l’ensemble des points sur la base de la seule fonction fm (x) = c(x) appelée alors fonction mérite. Le filtre se réduit alors au meilleur point. La dominance en norme est plus simple à mettre en œuvre, mais elle est moins « précise » que la dominance en composantes. Une fonction peut en effet se dégrader alors que d’autres s’améliorent. On peut affecter des poids aux fonctions de façon à privilégier les plus importantes.

304

Techniques d’optimisation

Les concepts de dominance et de filtre s’appliquent à la résolution d’un système d’équations, qui équivaut à minimiser les normes des fonctions. L’Exemple 4-1 compare un filtre en norme (fonction mérite) et un filtre en composantes.

Exemple 4-1 : Résolution d’équations avec filtre

1 − x1 = 0 On considère le système :  dont la solution est (1 ; 1). 2 10(x2 − x1 ) = 0 Cherchons à résoudre ce système par méthode de Newton avec recherche linéaire en partant du point initial (0 ; 0).  1 − x1  En notant : c(x1 , x2 ) =  , la direction de Newton est donnée par : 2  10(x2 − x1 )  −T

1 − x1   −1 −20x1   1 − x1   dN = −c c = −  =    2  10  10(x2 − x1 )   x1 (2 − x1 ) − x2  0 Le nouveau point est défini par recherche linéaire suivant la direction de Newton. 1 − x1  x'   x    x ' = x + sdN →  1  =  1  + s    x '2   x2   x1 (2 − x1 ) − x2  Le point de Newton s = 1 est testé en premier. S’il n’est pas accepté, le pas s est divisé par 2 jusqu’à produire un point acceptable. Le critère d’acceptation dépend du filtre choisi. Examinons un filtre en norme, puis un filtre en composantes. −T

Filtre en norme La fonction mérite est définie ici comme la norme L1 du vecteur c(x1 , x2 ) .

fm (x1 , x2 ) = c(x1 , x2 ) 1 = 1 − x1 + 10(x2 − x12 ) Le filtre ne contient que le point de fonction mérite minimale. Un nouveau point est accepté si la fonction mérite décroît. La valeur initiale étant fm (0,0) = 1 , le deuxième terme de la fonction mérite doit rester petit (ce terme est prépondérant à cause du facteur 10). Les nouveaux points resteront donc au voisinage de la 2 courbe d’équation x2 = x1 . Le Tableau 4-1 ci-après montre les points successifs acceptés sur la base de la fonction mérite. On observe que le pas s (de la forme s = 1/ 2n ) augmente et que les deux dernières itérations acceptent le point de Newton s = 1 . La figure à droite montre la position des points qui restent au 2 voisinage de la courbe d’équation x2 = x1 . La solution exacte (1 ; 1) est obtenue en 11 itérations et 85 évaluations de la fonction c(x1 , x2 ) .

Optimisation avec contraintes

Itér Pas s

x1

x2

fm(x1,x2)

305

c1

c2

0

0,0000 0,0000 0,0000 1,0000 1,0000 0,0000

1

0,0625 0,0625 0,0000 0,9766 0,9375 -0,0391

2

0,0625 0,1211 0,0076 0,9499 0,8789 -0,0710

3

0,0625 0,1760 0,0213 0,9207 0,8240 -0,0967

4

0,1250 0,2790 0,0588 0,9117 0,7210 -0,1907

5

0,1250 0,3691 0,1115 0,8789 0,6309 -0,2481

6

0,1250 0,4480 0,1728 0,8312 0,5520 -0,2792

7

0,2500 0,5860 0,3034 0,8139 0,4140 -0,3999

8

0,2500 0,6895 0,4347 0,7175 0,3105 -0,4070

9

0,5000 0,8448 0,6691 0,5998 0,1552 -0,4445

10 1,0000 1,0000 0,9759 0,2410 0,0000 -0,2410 11 1,0000 1,0000 1,0000 0,0000 0,0000 0,0000

Tableau 4-1 : Itérations avec filtre en norme

Filtre en composantes Le filtre compare chaque composante de c(x1 , x2 ) . Le nouveau point est accepté par le filtre s’il n’est pas dominé, c’est-à-dire s’il permet de faire décroître au moins l’une des deux composantes. Le Tableau 4-2 page suivante montre les points successifs acceptés sur la base du filtre. On observe que le point de Newton s = 1 est accepté dès la première itération, car la composante 1 décroît. Ce point aurait été rejeté sur la base d’une fonction mérite, car la composante 2 augmente très fortement. Cette acceptation 2 permet de s’éloigner de la courbe d’équation x2 = x1 , puis de converger vers la solution exacte (1 ; 1) dès la deuxième itération. La solution a été obtenue avec simplement 2 évaluations de la fonction c(x1 , x2 ) . Sur cet exemple, le filtre en composantes s’avère plus efficace, car il autorise plus de liberté de déplacement. Il s’agit cependant d’un exemple illustratif dont la conclusion ne peut être généralisée.

306

Techniques d’optimisation

Itér Pas s

x1

x2

F(x1,x2)

c1

c2

0

0

0,0000 0,0000 1,0000 1,0000 0,0000

1

1

1,0000 0,0000 10,0000 0,0000 -10,000

2

1

1,0000 1,0000 0,0000 0,0000 0,0000

Tableau 4-2 : Itérations avec filtre en composantes

Le concept de filtre s’applique de façon similaire à un problème d’optimisation sous forme standard avec p contraintes égalité cE et q contraintes inégalité cI :

c (x) = 0 min f (x) sous  E (4.22) x cI (x)  0 Pour ce problème, on peut envisager trois formes de dominance, selon que l’on compare séparément les fonctions f, cE et cI, ou que l’on cherche à les regrouper pour réduire la taille du filtre. Dominance avec contraintes individuelles La relation de dominance est définie par : x

y

f (x)  f (y)    c Ej (x)  c Ej (y) , j = 1 à p c (x)  c + (y) , j = 1 à q Ij  Ij

(4.23)

+ avec la notation cI (y) = max ( 0,cI (y) ) . def

La condition sur les contraintes inégalité impose que : - les inégalités inactives en y restent satisfaites en x : cIj (x)  cIj+ (y) = 0 ; - les inégalités non satisfaites en y décroissent :

cIj (x)  cIj+ (y) = cIj (y) .

Chaque contrainte est examinée séparément ainsi que la fonction coût. Un point x est meilleur qu’un point y si la fonction coût est inférieure, si chaque contrainte égalité est plus proche de 0 et si chaque contrainte inégalité violée (donc positive) est plus proche de 0. Cette dominance avec contraintes individuelles conduit à retenir de nombreux points dans le filtre.

Optimisation avec contraintes

307

Dominance avec contraintes en norme La relation de dominance est définie par :

x

y

Le vecteur c 

f (x)  f (y)    c(x)  c(y) p+q

(4.24)

est défini par c = (cE ,c+I ) avec c+I = max ( 0,cI ) . La violation def

des contraintes est mesurée par la norme du vecteur c. On peut utiliser : - la norme L1 : c(x) 1 = c E (x) 1 + c I+ (x)

1

- la norme L2 : c(x) 2 = cE (x)

2

+ cI+ (x)

2

- la norme L : c(x)



+ c I+ (x)





= c E (x)

avec c 1 =  c k ; k

avec c 2 =

avec c



c k

k

2

;

= max c k . k

La relation de dominance (4.24) est moins stricte que la précédente (4.23). Il est en effet possible qu’une contrainte se dégrade alors que d’autres s’améliorent. On peut affecter des poids aux contraintes de façon à privilégier les plus importantes. Cette relation de dominance conduit à retenir moins de points dans le filtre. Dominance avec fonction mérite Les deux objectifs de minimiser la fonction coût et la violation des contraintes sont « concaténés » en une fonction mérite. La fonction mérite sert à comparer deux solutions, mais elle peut aussi être considérée comme une nouvelle fonction coût à minimiser. Dans ce cas, on l’appelle coût augmenté ou fonction pénalisée. La fonction mérite f : n → est de la forme :

f (x) = f (x) + C(x)

(4.25) n

→ La fonction de pénalisation C : mesurant la violation des contraintes est pondérée par le coefficient   0 . On choisit généralement une pénalisation en norme comme en (4.24). La relation de dominance est alors définie par : x

y

 f (x)  f  (y)

+

avec C(x) = c(x) def

(4.26)

Cette relation d’ordre réduit le filtre à un seul point, ce qui simplifie sa mise en œuvre. Elle est utilisée dans la plupart des algorithmes d’optimisation. Lorsque le filtre comporte plusieurs points, il faut à chaque itération choisir quel(s) point(s) du filtre l’algorithme cherchera à améliorer. On peut par exemple sélectionner le dernier point entré dans le filtre ou utiliser la fonction mérite (4.25) pour classer les points du filtre et choisir le meilleur pour l’itération courante.

308

Techniques d’optimisation

Une autre stratégie consiste à essayer d’améliorer systématiquement plusieurs points du filtre. Bien que plus coûteuse à chaque itération, cette stratégie peut favoriser une progression plus rapide en élargissant la zone de recherche.

4.2 Pénalisation 4.2.1 Problème pénalisé La méthode de pénalisation consiste à remplacer le problème avec contraintes :

c (x) = 0 min f (x) sous  E x cI (x)  0 par le problème « équivalent » sans contraintes :

(4.27)

min f (x) = f (x) + C(x) x

(4.28)

def

La fonction à minimiser est le coût augmenté f :

n



qui dépend du

n → + coefficient de pénalisation   0 et de la fonction de pénalisation C : Cette fonction mesurant la violation des contraintes doit être nulle en un point admissible et strictement positive en un point non admissible.

On choisit généralement une fonction de pénalisation de la forme :

C(x) = cE (x) + c+I (x)

avec c +I (x) = max ( 0 , c I (x) )

(4.29)

Le vecteur cI (x) est de même dimension que cI (x) en remplaçant les inégalités satisfaites par zéro. Ce vecteur ne comptabilise que les inégalités non satisfaites. +

Toute norme vectorielle peut être utilisée pour définir la fonction C (4.29). n On rappelle la définition de la norme p d’un vecteur y  : y

p

 n =   yi  i=1

1

p

p  

(4.30)

Les normes couramment utilisées sont : - la norme 1 (somme des valeurs absolues des composantes) ; - la norme 2 (norme euclidienne usuelle) ; - la norme  (plus grande composante en valeur absolue) : y  = max yi est la limite de la norme p pour p →  .

( ) qui

Optimisation avec contraintes

309

La solution du problème pénalisé (4.28) dépend de la forme de pénalisation choisie et ne coïncide pas forcément avec la solution exacte du problème (4.27). L’écart entre solution pénalisée et solution exacte dépend de la norme choisie et de la valeur du coefficient de pénalisation  . L’augmentation de  réduit cet écart et peut même l’annuler si l’on choisit une pénalisation L 1 (Propriété 4-2). Cependant cette augmentation dégrade le conditionnement du hessien et rend la minimisation de f plus difficile. Il n’est généralement pas efficace de fixer d’emblée une valeur de  très grande et une stratégie progressive est préférable. On commence par résoudre le problème (4.28) avec une pénalisation faible (par exemple 1 = 1 ) pour obtenir un minimum local x 1 . Ce point ne respectant pas parfaitement les contraintes du problème (4.27), on se donne des tolérances (Ej ) j=1 à p sur les contraintes égalité et (Ij ) j=1 à q sur les contraintes inégalité. Si les tolérances sont respectées au point x 1 :   c Ej (x 1 )   Ej , j = 1 à p   c Ij (x 1 )   Ij , j = 1 à q

(4.31)

ce point est une approximation acceptable de la solution du problème (4.27). Sinon il faut augmenter la pénalisation pour forcer un meilleur respect des contraintes. On multiplie la pénalisation par un facteur (par exemple 2 = 101 ) et on résout à nouveau le problème (4.28) en prenant x 1 comme point initial.

L’exemple suivant montre qu’une pénalisation modérée peut suffire à obtenir une solution de bonne qualité.

Exemple 4-2 : Problème de la boîte Reprenons le problème de la boîte (Exemple 1-7) :

min f (h, r) = r2 + rh sous c(h, r) = r2h − 2v0 = 0 h,r

1

1

2

La solution pour un volume v0 est : r = v03 , h = 2v03 pour une surface : f = 3v0 3 . Solution approchée par pénalisation

1 2 2 2 Le problème pénalisé en norme 2 est : min f (h,r) = r + rh + (r h − 2v0 ) . h,r 2

310

Techniques d’optimisation

En dérivant par rapport à r et h :  f 2 2 → r(r2h − 2v0 ) = −1  h = r + r (r h − 2v0 ) = 0  f   = 2r + h + 2rh(r2 h − 2v0 ) = 0 → h = 2r  r on obtient une équation en r : 2r(r3 − v0 ) + 1 = 0 . Cette équation est résolue numériquement en faisant varier la pénalisation  de 10−3 à 102. Les résultats sont donnés dans le Tableau 4-3. Le volume est fixé à v0 = 1 000 . La solution exacte est : r = 10 , h = 20 , f = 300. On observe qu’une pénalisation modérée ( = 1) donne une solution assez précise pour une tolérance sur la contrainte de 0,2. 

r

h

f

c

0,001

9,641582

19,28316

278,881

792,565

0,01

9,966442

19,93288

297,990

979,933

0,1

9,996664

19,99333

299,800

997,999

1

9,999667

19,99933

299,980

999,800

10

9,999967

19,99993

299,998

999,980

100

9,999997

19,99999

300,000

999,998

Tableau 4-3 : Solution du problème de la boîte par pénalisation

L’augmentation de  améliore la qualité de la solution, mais rend la résolution du problème pénalisé plus difficile. S’il n’est pas possible d’obtenir une solution suffisamment précise, une stratégie plus fine consiste à pénaliser individuellement les contraintes avec des coefficients distincts. Chaque coefficient est augmenté ou diminué selon la précision obtenue sur la contrainte et la tolérance visée. Examinons maintenant les différentes formes de pénalisation et leurs propriétés.

Optimisation avec contraintes

311

4.2.2 Pénalisation différentiable Le problème sans contraintes (4.28) peut être résolu par les méthodes de descente exposées au chapitre 3. Pour appliquer une méthode à base de gradient, il est naturel de choisir une fonction de pénalisation C différentiable. Supposons donc la fonction C différentiable. Son gradient en un point admissible x a (qui est par construction un minimum local de C) est nul et le gradient de la fonction mérite f en x a se réduit à :

f (x a ) = f (x a )

(4.32)

Ceci s’applique en particulier au point x* solution du problème (4.27). Le point x* vérifie par ailleurs la conditions KKT :

L(x*, *, *) = 0  f (x*) = −cE (x*) T − c I (x*)T

(4.33)

Le gradient de f en x* donné par (4.33) n’est en général pas nul. D’après (4.32), il en sera de même du gradient de f . Le point x* n’est alors pas un minimum de la fonction mérite, d’où la propriété suivante.

Propriété 4-1 : Pénalisation différentiable Le minimum d’une fonction pénalisée différentiable ne coïncide généralement pas au minimum x* du problème d’optimisation (4.27). Une telle pénalisation est dite inexacte. Malgré ce constat défavorable, une pénalisation différentiable (en particulier quadratique) présente des propriétés intéressantes examinées plus bas. Par ailleurs, si l’on utilise le lagrangien L au lieu de la fonction coût f pour définir la fonction mérite (que l’on note alors L ) :

L (x) = L(x, , ) + C(x)

(4.34)

la formule (4.32) devient :

L (xa ) = x L(xa , , )

(4.35)

et la minimisation de L permet de satisfaire la condition KKT (4.33). Une pénalisation différentiable sur le lagrangien ne présente plus le défaut d’être inexacte. Ces méthodes de lagrangien augmenté sont présentées en section 4.6.

312

Techniques d’optimisation

4.2.3 Pénalisation exacte Une pénalisation différentiable ne permet pas d’obtenir la solution exacte du problème (4.27). Examinons alors une fonction de pénalisation C définie avec la norme 1 (somme des valeurs absolues des composantes). C(x) = c E (x) 1 + c +I (x)

1

avec c 1 =  c k

(4.36)

k

et c+I (x) = max ( 0,c I (x) )

Cette fonction appelée pénalisation L1 n’est pas différentiable en un point + admissible, à cause de la fonction c I . Son intérêt vient de la propriété suivante.

Propriété 4-2 : Pénalisation exacte Supposons que x* est un minimum local du problème (4.27) associé aux multiplicateurs  * et  * . Si l’on choisit un coefficient de pénalisation  supérieur en valeur absolue aux multiplicateurs  * et  * , alors x* est un minimum local du problème pénalisé en norme L1 (4.36).

Démonstration (voir [R3], [R11], [R12]) Le triplet (x*, *, *) vérifie les conditions KKT du problème (4.27) :

 L(x*, *, *) = 0  f (x*) = −cE (x*) * −cI (x*) *  x cE (x*) = 0 , cI (x*)  0 j * = 0 ou cIj (x*) = 0 pour j = 1 à q La fonction mérite est définie par : f (x) = f (x) +  cE (x) 1 +  cI+ (x) . 1

Sa valeur en x* + d , où d est un déplacement petit à partir de x * est :

f (x* + d) = f (x* + d) +  cE (x* + d) 1 +  cI+ (x* + d)

1

Évaluons chacun des termes pour en donner un développement à l’ordre 1. •

Terme f (x* + d)

La fonction f est différentiable et son gradient s’exprime avec la condition KKT.

f (x* + d) = f (x*) + f (x*)T d = f (x*) −  *T cE (x*)T d −  *T cI (x*)T d

Optimisation avec contraintes

313

En introduisant les vecteurs d E 

p

et d I 

q

d = cE (x*)T d définis par :  E T dI = cI (x*) d

et en notant que : f (x*) = f (x*) +  cE (x*) 1 +  cI+ (x*) = f (x*) , on obtient : 1

p

q

j=1

j=1

f (x* + d) = f (x*) −  *T dE −  *T dI = f (x*) −   j *dEj −  j *dIj •

Terme cE (x* + d) 1

La fonction cE est nulle en x*. Elle est différentiable partout et peut être développée à l’ordre 1. En utilisant le vecteur d E défini ci-dessus, on obtient : p

cE (x* + d) 1 = cE (x*) + cE (x*)T d = cE (x*)T d = dE 1 =  dEj 1



Terme c+I (x* + d)

1

j=1

1

+ La fonction c I n’est pas différentiable en un point où une contrainte inégalité cIj

s’annule. Il faut donc examiner séparément chaque composante, selon que la contrainte est active ou non. En utilisant le vecteur d I défini plus haut, on a : q c+ (x * +d) = max ( 0,cIj (x * +d) ) c+I (x* + d) =  cIj+ (x* + d) avec  Ij T 1 j=1 cIj (x * +d) = cIj (x*) + cIj (x*) d = cIj (x*) + dIj - Si la contrainte est active : cIj (x*) = 0  c+Ij (x * + d) = max(0,d Ij )

- Si la contrainte est inactive : cIj (x*)  0 , elle le reste pour d petit et on a

cIj (x * + d)  0  c+Ij (x * + d) = 0 . Par ailleurs, son multiplicateur  j * est nul (condition KKT). Les termes de f (x * + d) associés à une contrainte cIj inactive sont donc tous nuls. Regroupons à présent les différents termes de f (x * + d) en ne gardant que les inégalités actives (indices notés de 1 à q act). p

qact

j=1 p

j=1

p

qact

j=1

j=1

f (x* + d) = f (x*) −   j *dEj −   j *dIj +  dEj +  max(0,dIj ) qact

= f (x*) +  dEj (   j *) +   max(0,dIj ) −  j *dIj  j=1

j=1

- Pour les contraintes égalité, le signe  dépend du signe de d Ej . - Pour les contraintes inégalité, le multiplicateur  j * est positif.

314

Techniques d’optimisation

On vérifie bien que si  est supérieur en valeur absolue à tous les multiplicateurs :

(  *,  *  ) , alors les termes de droite sont tous positifs. On a pour tout déplacement d : f (x * + d)  f (x*) , signifiant que x* est un minimum local de f

Cette propriété montre que la solution exacte x* du problème (4.27) s’obtient par une simple minimisation sans contraintes de la fonction pénalisée L1, avec une valeur finie de la pénalisation.

Exemple 4-3 Pénalisation exacte L1 On considère le problème d’optimisation à une variable : min x sous x  0 . x

Le lagrangien est L(x, ) = x − x où   0 est le multiplicateur de la contrainte inégalité. Les conditions KKT donnent le minimum local :



* = 1  x L(x*, *) = 1 − * = 0   *(−x*) = 0 x* = 0  Cherchons maintenant le minimum du problème pénalisé L 1. La fonction pénalisée a pour expression : x si x  0 f (x) = x +  max(0, −x) = (1 − )x si x  0



Si   1 , la fonction f est croissante et n’a pas de minimum. Si   1 , la fonction f a son minimum en x  = 0 . On vérifie bien que si   * = 1 , alors le minimum x  du problème pénalisé donne le minimum local x* du problème d’optimisation initial.

La Propriété 4-2 reste valable pour une pénalisation : - en norme L : C(x) = c E (x)

+ c I+ (x)



- en norme L2 : C(x) = cE (x) 2 + c (x)

2



+ I

avec c



= max c k ;

avec c 2 =

k

c k

k

2

.

Optimisation avec contraintes

315

Ces normes qui permettent de trouver le minimum exact sont non différentiables en un point admissible, en cohérence avec la Propriété 4-1. Ceci peut poser des difficultés à un algorithme de descente à base de gradient. Il subsiste par ailleurs la difficulté que les multiplicateurs  * et  * ne sont pas connus a priori, ce qui ne permet pas de fixer directement une valeur adéquate de pénalisation. Pour ces raisons, on préfère généralement employer la pénalisation quadratique décrite dans la section suivante.

4.2.4 Pénalisation quadratique Considérons maintenant une fonction de pénalisation quadratique (somme des carrés des composantes) très fréquemment utilisée. C(x) =

1 c E (x) 2

2 2

+

1 + c I (x) 2

2

avec c

2

=  c k2

2 2

k

et c +I (x) = max ( 0,c I (x) )

(4.37)

Cette pénalisation quadratique est différentiable y compris aux points où les contraintes inégalité s’annulent. Le problème pénalisé se formule comme : 1 min f (x) = f (x) +  cE (x) x 2

2 2

+

1  c I+ (x) 2

2

(4.38)

2

L’intérêt de cette pénalisation vient de ses propriétés de convergence vers un minimum global (Propriété 4-3) ou local (Propriété 4-4) du problème (4.27)

Propriété 4-3 : Convergence vers un minimum global Si x  est un minimum global du problème pénalisé (4.38) et si lim x  = x * , →

alors x * est un minimum global du problème (4.27).

Démonstration (voir [R12]) Soit x a un point admissible du problème (4.27) :

cE (xa ) = 0  + cI (xa )  0  cI (xa ) = max ( 0,cI (xa ) ) = 0

316

Techniques d’optimisation

La fonction pénalisée a pour valeur en x a : 2 1 1 2 f (xa ) = f (xa ) +  cE (xa ) 2 +  c+I (xa ) = f (xa ) 2 2 2 Si x  est un minimum global de f , on a : f (x )  f (x a ) = f (x a ) . 2 2 1 1 En explicitant f (x ) : f (x ) +  cE (x ) +  cI+ (x )  f (xa ) (inégalité I) 2 2 2 2 Utilisons cette inégalité (I) pour montrer que la limite (qui existe par hypothèse) x* = lim x  est un minimum global de (4.27). →

Il faut montrer que x* est admissible et meilleur que tout autre point. •

Admissibilité

2 f (xa ) − f (x )   lim cE (x ) = cE (x*) = 0 → et en prenant la limite  →  , on en déduit :  . c+I (x ) = c+I (x*) = 0 lim → Le point limite x* est donc admissible pour le problème (4.27). 2

2

2

2

En mettant l’inégalité (I) sous la forme cE (x ) + c+I (x ) 



Minimum

2 2 1 1 Les termes  c étant positifs, on a : f (x )  f (x ) +  cE (x ) 2 +  cI+ (x ) . 2 2 2 Soit en reportant dans l’inégalité (I) : f (x )  f (xa ) .

Cette inégalité est vraie pour tout point admissible x a et pour toute valeur de  . En passant à la limite  →  , on a : f (x*)  f (xa ) pour tout x a admissible. Le point admissible x*, meilleur que tout autre point admissible, est donc un minimum global du problème (4.27).

Cette propriété suppose que l’on sait déterminer un minimum global de f , ce qui rarement le cas en pratique. Lorsqu’on ne détermine qu’un minimum local de f , on a le résultat de convergence suivant.

Optimisation avec contraintes

317

Propriété 4-4 : Convergence vers un minimum local Si x  est un minimum local du problème pénalisé (4.38) et si lim x  = x * , →

et si les contraintes sont linéairement indépendantes en x*, alors (x*, *, *) vérifie les conditions KKT de minimum local

lim c E (x  ) =  * → avec les multiplicateurs de Lagrange définis par  lim c +I (x  ) =  * →

Démonstration (voir [R12]) La fonction mérite f a un minimum en x  . Pour tout déplacement d petit, on a :

f (x + d)  f (x ) En explicitant la fonction mérite, on a pour tout d petit l’inégalité (I) suivante : 2 2 2 1 1 1 1 f (x  + d) +  cE (x  + d) +  cI+ (x  + d)  f (x  ) +  c E (x  ) +  c I+ (x  ) 2 2 2 2 2 2 2 Développons à l’ordre 1 chaque terme en (x  + d) du premier membre. Terme f (x + d) La fonction f est différentiable :

f (x + d) = f (x ) + f (x )T d + o ( d

2 2

)

2

Terme cE (x + d) = cE (x + d)T cE (x + d) 2

( )

La fonction cE est différentiable : cE (x + d) = cE (x ) +  cE (x )T d + o d

 cE (x + d) = cE (x )T cE (x ) + 2  cE (x )cE (x )  d + o ( d 2

T

2

)

2

Terme c+I (x + d) = c+I (x + d)T c+I (x + d) 2

La fonction c n’est pas différentiable en un point où une contrainte inégalité cIj + I

s’annule. Il faut examiner chaque contrainte inégalité cIj selon son signe en x  . •

1er cas - Une contrainte strictement négative en x  le reste en x + d :

c+Ij (x  + d) = 0

318



Techniques d’optimisation

2e cas - Une contrainte strictement positive en x  le reste en x + d :

c+Ij (x  + d) = cIj (x  + d)  0

( )

La fonction cIj est différentiable : cIj (x + d) = cIj (x ) +  cIj (x )T d + o d

 c+Ij (x + d) = cIj (x )T cIj (x ) + 2  cIj (x )cIj (x )  d + o ( d 2

T

2



)

3 cas - Pour une contrainte nulle en x  , la valeur en x + d dépend de d : e

- Un déplacement d diminuant cIj donne :

c+Ij (x  + d) = 0 .

- Un déplacement d augmentant cIj donne : c+Ij (x  + d) = c Ij (x  + d) . Dans ce dernier cas, le développement de c+Ij (x + d)

2 2

à l’ordre 1 (comme pour le

2e cas ci-dessus) ne comporte que des termes nuls car cIj (x  ) = 0 . Au final, on remarque que les 3 cas sont couverts par la formule suivante :

c+I (x + d) = c+I (x )T c+I (x ) + 2  cI (x )cI+ (x )  d + o ( d 2

T

2

)

Reportons à présent les différents termes dans l’inégalité (I) qui se simplifie en : T

T

f (x  )T d +   cE (x  )cE (x  )  d +   c I (x  )c I+ (x  )  d  0

Cette inégalité est vérifiée pour tout d petit, ce qui n’est possible que si : f (x  ) +  cE (x  )c E (x  ) +  c I (x  )c I+ (x  ) = 0 (égalité E) Utilisons cette égalité (E) pour établir que le point limite x* est admissible (sous conditions) et pour obtenir les multiplicateurs de Lagrange du problème (4.27). Admissibilité En passant à la limite  →  , avec l’hypothèse limx  = x * , on déduit de (E) que : →

lim  c E (x  ) c E (x  ) =  c E (x*) c E (x*) = 0 →  lim  c I (x  ) c I+ (x  ) =  c I (x*) c I+ (x*) = 0 → Si les contraintes sont linéairement indépendantes en x*, alors x* est admissible : cE (x*) = 0  + cI (x*) = 0 Sinon x* peut être non admissible (il minimise alors la norme des contraintes). Multiplicateurs de Lagrange En définissant  

p

et  

q

  =  c E (x  ) par :  def + , =  c I (x  )  0  def

Optimisation avec contraintes

319

l’égalité (E) s’écrit :

f (x ) +  cE (x ) +  cI (x ) = 0

lim   =  *  →  Puis en passant à la limite , avec → noté , on obtient : lim  =  * →  noté f (x*) +  cE (x*) * + cI (x*) * = 0 Le point x* admissible (si les contraintes sont linéairement indépendantes) vérifie donc toutes les conditions KKT d’ordre 1, en prenant comme multiplicateurs les limites  * et  * . En particulier, si une contrainte inégalité cIj est inactive en x*, alors on a pour  assez grand :

cIj (x )  0  j =  c+Ij (x ) = 0  lim j =  j* = 0 →

Les multiplicateurs des contraintes inégalité inactives en x* sont nuls et on retrouve la condition complémentaire.

Une minimisation locale de la fonction avec pénalisation quadratique f permet ainsi d’obtenir simultanément l’estimation x  d’un minimum local du problème (4.27) et les estimations   et   des multiplicateurs de Lagrange en ce point. L’augmentation de la pénalisation  permet d’approcher de la solution exacte, mais au détriment du conditionnement du problème pénalisé. Considérons en effet le problème (4.38) avec seulement les contraintes actives notées (ci (x))i=1 à m . 1 1 m 2 min f (x) = f (x) +  c(x) 2 = f (x) +  ci (x) 2 x 2 2 i=1

(4.39)

En notant c =  , le hessien de f est donné par : m

m

 2f  =  2f +  ci 2ci +  cici T i =1 m

i =1 m

=  f +   i ci +  cici T 2

2

i =1

(4.40)

i =1

Lorsque  →  , les deux premiers termes convergent vers le hessien du lagrangien  2 L au point (x*; *) : m

2f   2 L +  cici T →

i =1

(4.41)

320

Techniques d’optimisation

Le hessien de f est la somme de  2 L et d’une matrice de rang m (si les contraintes sont linéairement indépendantes) affectée du facteur  . Ce hessien comporte m valeurs propres de l’ordre de  (venant de ccT ) et n − m valeurs propres bornées. Son conditionnement (rapport entre la plus grande et la plus petite valeur propre) se dégrade lorsque  augmente, ce qui limite la précision atteignable sur la solution numérique (section 3.5.3). L’exemple suivant montre l’effet de la pénalisation sur les lignes de niveau du coût augmenté.

Exemple 4-4 : Effet de la pénalisation sur les lignes de niveau 1 On considère le problème : min f ( x1 , x 2 ) = (x 22 − x12 ) sous x1 = 1 x1 ,x 2 2 * dont la solution est : (x1; x 2 ) = (1 ; 0) . • Les lignes de niveau de la fonction coût sont des hyperboles. • Les lignes de niveau 0 de la fonction coût sont les asymptotes : x 2 =  x1 . • La ligne de niveau 0 de la contrainte est la droite verticale d’équation : x1 = 1. Ces lignes de niveau et la solution sont représentées sur la Figure 4-3.

Figure 4-3 : Lignes de niveau du problème initial

Optimisation avec contraintes

321

La formulation pénalisée de ce problème est : 1 1 min f ( x1 , x 2 ) = (x 22 − x12 ) + (x1 − 1) 2 x1 ,x 2 2 2

   * ; 0 . Le minimum du critère augmenté f est en : (x 1; x  2 ) =    −1  Lorsque  augmente, ce point se rapproche du minimum exact (x1; x 2 )* = (1 ; 0). Les lignes de niveau du critère augmenté et la solution sont représentées sur la Figure 4-4 pour les quatre valeurs de pénalisation  = 1 , 2 , 10 et 100. On observe que le problème pénalisé n’a pas de minimum pour  = 1 , la pénalisation étant alors trop faible. L’augmentation de  resserre les lignes de niveau, ce qui traduit le mauvais conditionnement du problème.   −1 0  Le hessien du coût augmenté : H =   a pour valeurs propres 1 et  − 1.  0 1 Le conditionnement  =  − 1 est de l’ordre de  comme observé en (4.41).

Figure 4-4 : Lignes de niveau du coût augmenté

322

Techniques d’optimisation

4.2.5 Pénalisation barrière La projection définie en (4.29) : c+I (x) = max ( 0,cI (x) ) rend la fonction mérite non différentiable aux points saturant les contraintes. Ceci peut causer des difficultés aux algorithmes de descente par gradient. Par ailleurs, cette forme de pénalisation ne garantit pas que le minimum x  respectera réellement les contraintes inégalité. La méthode barrière consiste à pénaliser les contraintes inégalité par la fonction : q

B(x) = − ln  −cIj (x) 

(4.42)

j=1

Cette fonction n’est définie que dans le domaine admissible (cI  0) en excluant sa frontière. La fonction B est appelée fonction barrière (car elle empêche de traverser la ligne cI = 0 ) ou pénalisation intérieure (car elle force à rester à l’intérieur du domaine admissible vis-à-vis des contraintes inégalité). La fonction mérite avec cette pénalisation est définie par : min f (x) = f (x) + x

1 B(x) 

(4.43)

La pénalisation a un effet repoussoir par rapport à la limite cI = 0 . Lorsque  →  cet effet diminue et les contraintes inégalité peuvent s’approcher de 0. Une forme alternative de fonction barrière est : q

B'(x) = − j=1

1 c Ij (x)

(4.44)

La fonction B’ a le même effet repoussoir par rapport à la limite cI = 0 , mais elle présente le défaut de ne pas interdire les valeurs positives. La fonction B (4.42) est plus fréquemment utilisée, en particulier dans les méthodes de point intérieur. La pénalisation barrière s’applique aux contraintes inégalité. Les contraintes égalité sont conservées explicitement dans la formulation du problème : min f (x) = f (x) + x

1 B(x) sous c E (x) = 0 

(4.45)

ou sont traitées par pénalisation quadratique comme en section 4.2.4 : 1 1 2 min f (x) = f (x) +  c E (x) 2 + B(x) x 2 

(4.46)

La pénalisation barrière présente les mêmes propriétés de convergence vers le minimum que la pénalisation quadratique (Propriété 4-3).

Optimisation avec contraintes

323

En notant x  le minimum de f , on a : lim x  = x * . Exprimons le gradient du →

lagrangien du problème (4.45) avec les multiplicateurs   des contraintes égalité :  x L (x  ,   ) = f (x  ) −

1 q 1 c Ij (x  ) + c E (x  )    j=1 c Ij (x  )

(4.47)

et le gradient du lagrangien du problème (4.27) avec des multiplicateurs  ,  : (4.48)

x L(x, , ) = f (x) + cE (x) + cI (x)

En comparant ces gradients lorsque  →  , on établit la propriété de convergence pour les multiplicateurs des contraintes inégalité :

lim− →

1 = * cI (x  )

(4.49)

La pénalisation barrière conduit aux méthodes de point intérieur (section 4.5).

4.3 Gradient réduit Les méthodes de gradient réduit sont des méthodes primales avec contraintes actives. Le principe est de construire une suite de solutions admissibles en faisant décroître la fonction coût. Chaque itération se compose d’un déplacement dans l’espace tangent aux contraintes et d’un déplacement complémentaire pour restaurer une solution admissible. Ces méthodes sont intéressantes lorsque le respect des contraintes est impératif et prime sur l’optimalité de la solution.

4.3.1 Déplacement dans l’espace tangent Considérons d’abord un problème sous m contraintes linéaires (m < n).

minn f (x) sous Ax = b , A  xR

mn

, b

n

(4.50)

Appliquons un déplacement p à partir d’un point x 0 admissible : Ax 0 = b .

Le nouveau point x 0 + p est admissible si : A(x0 + p) = b , ce qui conduit à :

Ap = 0

(4.51) n

Les vecteurs p  vérifiant cette équation forment l’espace nul des contraintes appelé aussi hyperplan des contraintes.

324

Techniques d’optimisation

Passons maintenant à un problème sous m contraintes non linéaires.

minn f (x) sous c(x) = 0 , c : xR

n



m

(4.52)

Remplaçons les contraintes c(x) par leur développement d’ordre 1 au point x0.

minn f (x) sous c(x0 ) + c(x0 )T (x − x0 ) = 0 xR

(4.53)

Ce problème est de la forme (4.50) avec A = c(x 0 )T et b = c(x 0 )T x 0 − c(x 0 ) . L’espace nul tangent ou hyperplan tangent des contraintes en x 0 est l’ensemble n des vecteurs p  vérifiant : (4.54)

c(x0 )T p = 0

Cet espace tangent est défini localement en x 0. En partant d’un point x0 admissible, un déplacement p dans l’espace tangent donne un point non admissible du fait de la non-linéarité de la contrainte comme le montre la Figure 4-5. Si le déplacement p est petit, on peut espérer revenir sur la ligne de niveau c(x) = 0 par un déplacement complémentaire (dit de restauration) détaillé en section 4.3.2.

Figure 4-5 : Hyperplan tangent aux contraintes En choisissant une base Z  n(n−m) de l’espace tangent et une base Y  nm complémentaire dans n (section 1.3.1), le déplacement p se décompose en : p = YpY + ZpZ

avec



AZ = 0 et A = c(x0 )T AY inversible

(4.55)

Optimisation avec contraintes

325

Un déplacement dans l’espace tangent vérifie : Ap = AYpY = 0

p = 0 →  Y  p = ZpZ

(4.56)

Ce déplacement ne dépend que des composantes libres p Z  n −m . La fonction réduite f r au point x 0 est la fonction coût limitée aux déplacements dans l’espace tangent : p = ZpZ . Elle est définie par : f r (pZ ) = f (x 0 + ZpZ )

(4.57)

def

On cherche les n − m composantes p Z minimisant la fonction réduite. La direction de plus forte pente est le gradient de f r , appelé gradient réduit. (4.58)

f r (p Z ) = ZTf (x 0 + Zp Z )

Le gradient réduit g r est associé aux variables p Z au point x 0 . (4.59)

g r = ZT g 0

Ce vecteur est de dimension n − m . La direction d dans

n

est donnée par (4.55). (4.60)

T

d = Zg r = ZZ g 0

Le gradient réduit dépend du choix de la base Z. Les choix usuels présentés en section 1.3.1 sont : - soit une base formée directement à partir des colonnes de la matrice A ; - soit une base orthogonale formée issue de la factorisation QR de la matrice A. Le premier choix est plus simple, le second est mieux conditionné. Base formée de colonnes de la matrice jacobienne On choisit une base B  mm formée de m colonnes indépendantes de A. La base Z de l’espace tangent est alors définie par : n −m

 A = B  m

 N 

n −m



 −B−1N  m Z=   I n − m

(4.61)

Le gradient de f a des composantes (gB , g N ) associées aux colonnes (B , N) . Le gradient réduit sur la base B choisie est donné par : T

T  − B−1N   gB  −1 gr = Z g =     = gN − B N gB  I   gN  T

(

)

(4.62)

326

Techniques d’optimisation

Base formée de colonnes orthogonales La matrice AT  nm (m  n) admet une factorisation QR de la forme : m

 m A = QR = n  Q1  T

 R  m Q2  1   0  n − m

n −m

(4.63)

La matrice Q est orthogonale (QQT = I) . La matrice R1 est triangulaire supérieure. Les sous-matrices rectangulaires Q1 et Q2 sont formées de colonnes orthogonales entre elles et vérifient les relations : QQT = I



( Q1

 QT  Q2 )  1T  = I  Q2 

 QT    1T  ( Q1  Q2 

T

Q Q=I

Q2 ) = I

 Q1Q1T + Q2QT2 = I

(4.64) T 1

 Q Q2 = 0

La base Z de l’espace tangent est alors définie par : (4.65)

→ AZ = R1TQ1TQ2 = 0

Z = Q2

Le gradient réduit sur cette base et la direction d associée (4.55) sont donnés par :

gr = ZT g0 = QT2 g0 d = Zgr = Q2QT2 g0

(4.66)

Cette direction d est appelée gradient projeté en raison de la propriété suivante. Propriété 4-5 : Gradient projeté La direction (4.66) associée au gradient réduit sur une base orthogonale est aussi la projection orthogonale du gradient sur l’hyperplan tangent.

Démonstration La projection orthogonale de g sur l’hyperplan d’équation Ap = 0 est calculée par

gp = Pg avec la matrice de projection P = I − AT ( AAT ) A (voir Exemple 1-20). −1

Explicitons cette matrice P avec la factorisation QR de A donnée par (4.63) :  QT  R   I 0  R1  T AAT = R1T 0  1T  ( Q1 Q2 )  1  = R1T 0    = R1 R1 0 0 I 0       Q2 

(

(

 AAT

)

)

−1

(

)

= R1−1R1− T car la matrice R1 triangulaire est inversible.

Optimisation avec contraintes

(

P = I − AT AAT

)

−1

327

R  A = I − ( Q1 Q2 )  1  R1−1R1− T R1T 0

 QT  0  1T   Q2 

(

)

 QT  I soit avec (4.64) : P = I − ( Q1 Q2 )   ( I 0 )  1T  = I − Q1Q1T = Q2QT2 0  Q2  La direction d = Q2QT2 g0 définie en (4.66) est donc bien la projection du gradient

sur l’hyperplan tangent, car Q2QT2 = P .

Propriété 4-6 : Direction de plus forte pente Le gradient projeté est la direction de plus forte pente dans l’espace tangent.

Démonstration La direction de plus forte pente dans l’espace tangent est le vecteur unitaire d Ad = 0 T solution du problème : minn g0 d sous  . T dR  d =1  d d =1 T

T

T

Le lagrangien de ce problème est : L(d, , ) = g0 d +  Ad + (d d − 1) . Les conditions KKT s’écrivent : g0 + AT  + 2d = 0 → d = −(g0 + AT ) / (2)  → Ag0 + AAT  = 0 →  = −(AAT )−1 Ag0 Ad = 0  → 2 =  g0 + AT   d =1 On obtient pour la direction d : d =

g0 − AT (AAT )−1 Ag0 Pg0 = . T T −1 Pg0 g0 − A (AA ) Ag0

Le gradient projeté Pg0 est la direction de plus forte pente dans l’espace tangent.

La Propriété 4-6 implique que la méthode du gradient projeté a une convergence très lente, comme la méthode de plus forte pente (section 3.5.2). Il est donc préférable de combiner la technique de réduction avec une méthode de quasiNewton. Pour cela, on remplace dans la formule (4.60) le gradient g0 par une −1

direction de quasi-Newton de la forme H g 0 , où H est une approximation du hessien de f obtenue par une méthode DFP, BFGS ou SR1 (section 3.2.2).

328

Techniques d’optimisation

Le gradient réduit gr est alors remplacé par la direction réduite dr : (4.67)

d r = ZT H −1g 0

et la direction de descente dans

n

(opposée au gradient) est donnée par : (4.68)

d = − Zd r = − ZZT H −1g 0

La méthode de quasi-Newton peut être appliquée sur le hessien complet ou le hessien réduit de la fonction coût. Ces options sont discutées en section 4.3.3. L’exemple suivant illustre le calcul du gradient réduit et du gradient projeté par les formules (4.62) et (4.67).

Exemple 4-5 : Gradient réduit et projeté On considère le problème : min f ( x) = x1 + x2 x

sous c(x) = x12 + (x2 − 1)2 − 1 = 0 .

La figure ci-contre montre : - la ligne de niveau 0 de la contrainte (cercle de centre (0 ; 1) et de rayon 1) ; - les lignes de niveau de la fonction coût (droites de pente −1) ; - le minimum (point noir). Pour faciliter les calculs, on passe en coordonnées polaires : f (r, ) = r(cos  + sin ) + 1  x1 = r cos   x = r sin  + 1 →  2  2 c(r, ) = r − 1 La contrainte impose r =1 . Le problème se réduit à la fonction F de la variable .

min F() = cos  + sin  + 1 

Le minimum est obtenu pour F'() = 0 et F''()  0 .

 5   5 F'() = − sin  + cos  = 0 → tan  = 1 →  = ou   4 4  → * = 4 F''() = − cos  − sin   0 → cos (1 + tan )  0 → cos   0   x * = − 1/ 2  −0,70711 Le minimum (point noir sur la figure) est en :  1 .  x2 * = 1 − 1/ 2  0, 29289

Optimisation avec contraintes

329

Plaçons-nous en un point admissible x0 de coordonnées polaires (r0 = 1 ; 0 ) . Les gradients de f et c sont donnés par :  cos 0   2x1   1 f (x0 ) =   , c(x0 ) =    = 2r0   1  2(x2 − 1)   sin 0  Calculons le gradient réduit avec les deux choix de bases (4.61) ou (4.65). Gradient réduit sur une base des colonnes de la matrice jacobienne La matrice jacobienne des contraintes a 2 colonnes :

A = c(x0 )T = 2r0 ( cos 0 sin 0 )

Choisissons comme base B la première colonne : B = ( cos 0 ) , N = (sin 0 ) . On peut alors calculer avec (4.61) :  −B−1N   − tan 0  Z= - la matrice Z : =  ;  I   1  T

 − tan 0  1 - le gradient réduit gr : gr = Z g0 =     = 1 − tan 0 ;  1   1  − tan 0  cos 0 − sin 0  − sin 0  - la direction associée : d = Zgr =   .  (1 − tan 0 ) = cos2 0  1   cos 0  T

On trouve une direction tangente au cercle en x0 .

Gradient réduit sur une base orthogonale L’utilisation d’une base orthogonale équivaut à projeter le gradient sur l’espace tangent. Déterminons directement le gradient projeté gp sans passer par la factorisation QR de la matrice A. La matrice de projection P se calcule par :  sin2 0 − sin 0 cos 0  T T −1 T P = I − A (AA ) A avec A = c(x0 ) → P =   cos2 0   − sin 0 cos 0

 − sin 0  → gp = ( cos 0 − sin 0 )    cos 0  gp  − sin 0  =  La direction du gradient projeté d =  est un vecteur tangent au gp  cos 0 

gp = Pg0

avec g0 = f (x0 )

cercle en x0 , représenté sur la Figure 4-6 page suivante.

330

Techniques d’optimisation

Figure 4-6 : Gradient projeté Les deux méthodes de réduction donnent sur cet exemple la même direction tangente au cercle. Ceci vient du fait que l’espace nul est de dimension 1. Dans le cas général, les deux méthodes de réduction donnent des directions différentes.

4.3.2 Déplacement de restauration Le déplacement dans l’espace tangent a pour but de minimiser la fonction coût, mais il ne préserve pas l’admissibilité lorsque les contraintes ne sont pas linéaires. Il doit être complété par un déplacement pour revenir sur une solution admissible. Ce déplacement dit de restauration doit être peu coûteux à calculer et s’écarter le moins possible du déplacement tangent. On rappelle ci-dessous le principe des différentes méthodes de restauration qui ont été discutées en section 1.3.2. Le déplacement p1 dans l’espace tangent (Ap1 = 0) conduit au point x1 = x0 + p1 Si les contraintes en x1 ne sont pas satisfaites : c(x1 )  0 , on cherche un déplacement p2 tel que le point x 2 = x1 + p2 soit admissible : c(x 2 ) = 0 .

Optimisation avec contraintes

331

Ce déplacement illustré sur la Figure 4-7 est basé sur un développement d’ordre 1 des contraintes en x1 et en réutilisant la matrice jacobienne c(x 0 ) pour limiter la quantité de calculs. c(x1 + p2 )  c(x1 ) + c(x 0 )T p 2 = 0

(4.69)

Figure 4-7 : Déplacement tangent et restauration Le système linéaire (4.69) est sous-déterminé (n inconnues, m < n équations). Il peut être résolu par les deux méthodes suivantes. L’objectif est de s’écarter le moins possible du point x1 ayant permis de minimiser la fonction coût. Restauration de norme minimale Le déplacement p2 de norme minimale est obtenu en résolvant le problème :

A = c(x 0 )T sous A1p 2 = b1 avec  1  b1 = − c(x1 )

minn p2

p 2

(4.70)

Ce problème de projection a été résolu dans l’Exemple 1-20. La solution est :

(

p2 = A1T A1A1T

)

−1

b1

(4.71)

Restauration hors espace tangent Le déplacement p1 dans l’espace tangent est de la forme : p1 = ZpZ , où les composantes p Z ont été choisies pour minimiser la fonction réduite (4.57).

332

Techniques d’optimisation

Pour dégrader le moins possible la fonction coût, on cherche le déplacement p2 dans l’espace complémentaire de base Y : p2 = YpY . On résout le système : A1p2 = b1

 A1YpY = b1  pY = ( A1Y ) b1 −1

(4.72)

ce qui donne le déplacement : p2 = Y ( A1Y ) b1 −1

(4.73)

On remarque que la première formule (4.71) est un cas particulier de la seconde T (4.73) si l’on choisit comme base complémentaire Y = A1 (Théorème 1-5). Le déplacement p2 étant défini à partir des contraintes linéarisées en x1 et sans recalculer la matrice jacobienne en x1 , rien ne garantit que le point x 2 = x1 + p2

soit admissible. Si c(x 2 )  0 , il faut, soit calculer un déplacement additionnel p3 à partir de x 2 selon la même approche (4.69), soit réduire le déplacement p1 en espérant revenir dans le « domaine de linéarité » des contraintes (Figure 4-8).

Figure 4-8 : Effet de la non linéarité sur la restauration

4.3.3 Recherche linéaire L’objectif à chaque itération est de trouver à partir d’un point admissible un nouveau point admissible améliorant la fonction coût. Les itérations sont réalisées par une recherche linéaire incluant la restauration. Notons x 0 le point en début d’itération. Les éléments disponibles en x 0 sont : T - la matrice jacobienne des contraintes actives : A = c(x 0 ) ;

- une base Z n(n − m) de l’espace tangent et une base complémentaire Y - le gradient g0 = f (x 0 ) et une approximation H du hessien de f .

nm

;

Optimisation avec contraintes

333

Le nouveau point est obtenu par un déplacement d’un pas s  0 suivant la direction de descente d (4.68) dans l’espace tangent :

p = sd avec  1 T −1 d = − ZZ H g 0 suivi d’un (ou plusieurs) déplacement de restauration défini par (4.73) : x1 = x 0 + p1

x 2 = x1 + p2

avec p2 = −Y ( AY ) c(x1 ) −1

(4.74)

(4.75)

On cherche par dichotomie un pas s tel que le point x 2 soit admissible et vérifie des conditions de décroissance et de déplacement suffisants (section 3.3.2). On peut par exemple imposer les conditions de Goldstein (3.111) basées sur la dérivée T directionnelle g0 d suivant la direction de descente d. f (x0 + sd)  f (x0 ) + c1sg0Td  T f (x0 + sd)  f (x0 ) + c2sg0 d

, c1 = 0,1 , c2 = 0,9

(4.76)

La non-linéarité des contraintes induit deux difficultés : - la restauration peut s’avérer irréalisable (Figure 4-8) ; - la restauration peut dégrader la fonction coût (Figure 4-9).

Figure 4-9 : Effet de la restauration sur la fonction coût Dans les deux cas, le pas s doit être réduit pour trouver un point acceptable x 2 . Lorsque les contraintes sont fortement non-linéaires, la progression peut devenir très lente et demander beaucoup d’itérations. On pourrait atténuer ces difficultés en recalculant la matrice jacobienne c(x1 ) pour corriger la direction de restauration (Figure 4-7), mais ce calcul à réaliser à chaque nouvel essai de pas s serait beaucoup trop coûteux. Il est plus efficace d’utiliser la direction d’ordre 2 introduite ci-dessous.

334

Techniques d’optimisation

Direction d’ordre 2 Considérons la direction pc = p1 + p2 où p1 et p2 sont calculés par (4.74) et (4.75). En développant les contraintes à l’ordre 2 au voisinage de x 0 avec leur hessien G : 1 T  c(x 0 + p1 ) = c(x 0 ) + Ap1 + 2 p1 Gp1  1 c(x 0 + p c ) = c(x 0 ) + Ap c + p cT Gp c 2 

(4.77)

puis en utilisant les relations imposées à p1 et p2 :  Ap1 = − c(x 0 )  Ap = − c(x + p ) 0 1  2

(4.78)

on obtient les valeurs des contraintes aux points x 0 + p1 et x 0 + pc : 1 T  c(x 0 + p1 ) = 2 p1 Gp1  1 c(x 0 + p c ) = p1T Gp 2 + p T2 Gp 2 2 

(4.79)

ainsi que la relation suivante entre les déplacements p2 et p1 : 1 Ap2 = −c(x 0 + p1 ) = − p1T Gp1 2

(4.80)

Ces formules montrent que p2 est d’ordre 2 par rapport à p1 (4.80) et que la valeur des contraintes passe de l’ordre 2 en x 0 + p1 à l’ordre 3 en x 0 + pc (4.79). La direction pc appelée direction d’ordre 2 prend en compte la non-linéarité des contraintes et suit mieux la ligne admissible que la direction p1 (Figure 4-10).

Figure 4-10 : Direction d’ordre 2

Optimisation avec contraintes

335

Une recherche linéaire suivant la direction pc (au lieu de p1 ) donne des points plus faciles à restaurer et permet généralement de réaliser des pas plus grands. La direction d’ordre 2 peut être définie en début d’itération avec un pas initial fixé (par exemple s = 1 correspondant au pas de Newton) et avec le déplacement p2 associé (4.75), même si le point x 2 n’est pas admissible. On peut aussi l’utiliser en fin d’itération pour tenter d’améliorer le point x 2 obtenu. Gestion des contraintes actives La recherche linéaire avec les déplacements p1 (4.74) et p2 (4.75) suppose que les contraintes actives restent les mêmes au point initial x 0 et au point x 2 . Si les contraintes actives changent, l’itération est à reprendre en actualisant l’ensemble des contraintes actives et les matrices A, Z, Y. La difficulté est de deviner les contraintes inégalité à désactiver ou à activer en début de recherche linéaire. Une méthode systématique consiste à effectuer l’itération une première fois en ne considérant que les contraintes égalité, puis à reprendre l’itération en ajoutant les contraintes inégalité actives au point x 2 . Cette méthode est simple, mais elle n’utilise pas l’information des inégalités actives au point initial x 0 . Chaque itération sera effectuée au moins deux fois, ce qui conduit à davantage de calculs. Une méthode plus adaptative consiste à calculer le point x1 = x0 + p1 en

conservant les contraintes actives en x 0 . Le déplacement p1 ayant pour but de minimiser la fonction coût, on peut considérer que le point x1 donne une bonne indication des inégalités à désactiver ou à activer. Il faut ensuite vérifier que les inégalités inactives en x1 le restent effectivement en x 2 . Cette méthode est plus rapide lorsque l’ensemble des contraintes actives varie peu au cours des itérations. Lorsque l’ensemble des contraintes actives change, les matrices Z et Y doivent être recalculées. Ces matrices résultent d’une factorisation de la matrice T jacobienne A = c(x 0 ) . Elles peuvent être actualisées de manière économique à partir de la factorisation précédente en tenant compte des lignes des contraintes supprimées ou ajoutées à la matrice A. Ceci évite une factorisation complète partant de zéro qui est coûteuse sur des problèmes de grande taille.

336

Techniques d’optimisation

4.3.4 Méthode de quasi-Newton Comme indiqué en (4.68), la réduction dans l’espace tangent peut se combiner à une méthode de quasi-Newton. La direction de descente en x k est de la forme : d k = − Zk ZTk H k−1g k

(4.81)

Dans cette formule : - Zk est une base de l’espace tangent aux contraintes en x k : c(x k )T Zk = 0 ; - gk = f (x k ) est le gradient de f en x k , calculé numériquement ; - H k est une approximation du hessien de f en x k , obtenue par quasi-Newton. La matrice H k est actualisée à chaque itération par une formule DFP, BFGS ou SR1 comme pour une optimisation sans contraintes (section 3.2.2). La mise à jour utilise les variations du point pk = x k − x k−1 et du gradient yk = gk − gk−1 au cours de l’itération précédente et vérifie l’équation sécante :

Hk pk = yk

(4.82)

Pour un problème avec contraintes, le vrai hessien  2f n’a aucune raison d’être défini positif, même au voisinage de la solution. Pour obtenir une direction de descente par la formule (4.81), la matrice H k doit être définie positive. Ceci est réalisable par une méthode BFGS pondérée (section 3.2.3), ou par une méthode SR1 avec ajout d’une matrice diagonale ou factorisation de Cholesky modifiée (section 3.3.1). L’inconvénient est que la matrice H k corrigée s’écarte du vrai hessien et peut conduire à une direction de descente peu efficace. Une alternative consiste à appliquer la méthode de quasi-Newton au hessien réduit Hr = ZT HZ au lieu du hessien complet H. Les conditions KKT d’ordre 2 (1.127) indiquent que le hessien réduit du lagrangien est défini positif au voisinage de la solution. Même s’il s’agit ici du hessien de la fonction coût, on peut penser qu’il aura davantage de chance d’être défini positif que le hessien complet. Montrons comment appliquer une méthode de quasi-Newton au hessien réduit. Considérons pour cela le développement d’ordre 1 du gradient de f en x 0 . 2f (x 0 )p  f (x 0 + p) − f (x 0 )

(4.83)

Le déplacement p est de la forme p = YpY + ZpZ où la composante de restauration

YpY est beaucoup plus petite que la composante de minimisation ZpZ . Cette constatation repose sur la formule (4.80) entre les déplacements p2 et p1 .

Optimisation avec contraintes

337

En négligeant la composante YpY et en prémultipliant (4.83) par ZT , on obtient :

ZT2f (x 0 ) ZpZ = ZT f (x 0 + p) − f (x 0 )

(4.84)

qui fait apparaître le hessien réduit ZT 2f (x 0 )Z . L’équation (4.84) est une équation sécante de la forme : (4.85)

Hr s = y - Hr est une approximation du hessien réduit de f ; - s = pZ est la variation du point dans l’espace tangent ; T - y = gr (x 0 + p) − gr (x 0 ) est la variation du gradient réduit g r = Z f .

On peut appliquer une formule de quasi-Newton (DFP, BGFS ou SR1) basée sur l’équation sécante (4.85) pour actualiser l’approximation du hessien réduit. La matrice Hr de dimension n − m est plus petite que H, ce qui réduit la quantité de calculs algébriques, en particulier pour des problèmes avec un grand nombre de contraintes. Cette approche suppose que l’ensemble des contraintes actives ne varie pas d’une itération à l’autre. En cas de changement des contraintes actives, le hessien réduit doit être réinitialisé à l’identité. En appliquant une méthode de quasi-Newton au hessien réduit, la direction de descente dans l’espace tangent (dimension n − m ) est définie au point x k par : (4.86)

−1 −1 T dr,k = −Hr,k gr,k = −Hr,k Zk gk

et la direction d k résultante dans

n

est donnée par : (4.87)

−1 T dk = Zk dr,k = − Zk Hr,k Zk gk

4.3.5 Algorithme La méthode du gradient réduit nécessite de partir d’un point admissible. Un tel point peut être obtenu en résolvant le problème préliminaire :

minn C(x) = cE (x) x

2 2

+ max(0,cI (x))

2 2

où la fonction C mesure la violation des contraintes.

(4.88)

338

Techniques d’optimisation

Ce problème sans contraintes se résout par une méthode sans gradient (chapitre 2) ou une méthode de descente (chapitre 3). Une valeur nulle de C correspond à un point admissible du problème sous contraintes (4.1). Chaque itération comporte la sélection des contraintes actives, la recherche linéaire dans l’espace tangent avec restauration et mise à jour de quasi-Newton selon les méthodes décrites aux sections 4.3.1 à 4.3.4. De nombreuses variantes sont possibles, en particulier concernant la stratégie de restauration (direction, nombre d’essais) et peuvent s’avérer plus ou moins efficaces selon le problème à traiter. L’algorithme s’arrête sur déplacement insuffisant des variables ou amélioration insuffisante de la fonction coût ou nombre maximal d’itérations ou d’évaluations de la fonction et des contraintes. L’intérêt de la méthode du gradient réduit est que la solution obtenue est admissible, même si elle n’est pas optimale. Ceci est critique pour certaines applications. L’algorithme du gradient réduit est schématisé sur la Figure 4-11.

Figure 4-11 : Algorithme de gradient réduit

L’exemple suivant illustre le déroulement d’un algorithme de gradient réduit.

Optimisation avec contraintes

339

Exemple 4-6 : Algorithme du gradient réduit On reprend le problème de l’Exemple 4-5 :

min f ( x) = x1 + x2 x

sous c(x) = x12 + (x2 − 1)2 − 1 = 0

 x * = − 1/ 2  −0,70711 La solution est en :  1 .  x2 * = 1 − 1/ 2  0, 29289 On se place en coordonnées polaires pour faciliter les calculs. Les gradients de f et c sont donnés par :  cos 0   2x1   1 f (x0 ) =   , c(x0 ) =    = 2r0   1  2(x2 − 1)   sin 0 

 x   0,1 L’algorithme du gradient réduit est appliqué à partir du point initial :  1  =   .  x2   1   x   r cos   • Le point courant admissible est sur le cercle : x =  1  =  .  x2   r sin  + 1  • •



 − sin   Le gradient projeté (Exemple 4-5) est : gp = ( cos  − sin  )  .  cos   Le déplacement de descente applique un pas s1 suivant le gradient projeté.  − sin   x ' = x − s1d1 avec d1 suivant gp → d1 =     cos   Le signe est choisi selon f (x) pour avoir une direction de descente.

Le déplacement de restauration applique un pas s2 suivant le gradient de c.  cos   x '' = x '− s2d2 avec d2 suivant c → d2 =     sin   Le signe est choisi selon c(x') pour ramener la contrainte vers 0.

Le pas s2 est réglé pour restaurer un point admissible : c(x'') = 0 . Le pas s1 est réglé pour vérifier une condition d’Armijo (décroissance suffisante). Le Tableau 4-4 montre les itérations avec le réglage du pas s1 suivant la direction de descente, les coordonnées du point x’ et le réglage du pas de restauration s 2 suivant  c .

340 Itér

Techniques d’optimisation x1

x2

f(x)

c(x)

Descente s1

x1'

x 2'

c(x')

Restauration s2

1

0,10000 1,00000 1,10000 -0,99000 0,00000 0,10000 1,00000 -0,99000

4,50000

2

1,00000 1,00000 2,00000 0,00000 1,00000 1,00000 0,00000 1,00000

-0,50000

3

0,00000 0,00000 0,00000 0,00000 0,50000 -0,50000 0,00000 0,25000

-0,06699

4 -0,50000 0,13397 -0,36603 0,00000 0,18301 -0,65849 0,22548 0,03349

-0,00844

5 -0,65005 0,24011 -0,40994 0,00000 5,492E-02 -0,69178 0,27581 3,016E-03 -7,547E-04 6 -0,69080 0,27696 -0,41385 0,00000 1,612E-02 -0,70246 0,28809 2,599E-04 -6,497E-05 7 -0,70237 0,28819 -0,41418 0,00000 4,722E-03 -0,70573 0,29150 2,230E-05 -5,576E-06 8 -0,70572 0,29151 -0,41421 0,00000 1,383E-03 -0,70670 0,29249 1,913E-06 -4,783E-07 9 -0,70670 0,29249 -0,41421 0,00000 4,051E-04 -0,70699 0,29277 1,641E-07 -4,103E-08 10 -0,70699 0,29277 -0,41421 0,00000 1,187E-04 -0,70707 0,29286 1,408E-08 -3,520E-09 11 -0,70707 0,29286 -0,41421 0,00000 3,475E-05 -0,70710 0,29288 1,208E-09 -3,020E-10 12 -0,70710 0,29288 -0,41421 0,00000

Tableau 4-4 : Itérations du gradient réduit La Figure 4-12 montre les itérations dans le plan (x1,x2) avec un zoom à droite sur la convergence vers la solution. On observe le suivi de la contrainte avec l’alternance des pas de descente et de restauration.

Figure 4-12 : Itérations du gradient réduit

Optimisation avec contraintes

341

4.4 Programmation quadratique séquentielle Les méthodes de programmation séquentielle quadratique (SQP, Sequential Quadratic Programming) sont des méthodes primales-duales avec contraintes actives. Le principe est de résoudre les conditions KKT par la méthode de Newton, ce qui équivaut à résoudre une suite de problèmes quadratiques linéaires. Ces méthodes sont intéressantes en présence de contraintes fortement non linéaires.

4.4.1 Modèle quadratique local Considérons un problème d’optimisation sous forme standard.

c (x) = 0 minn f(x) sous  E x cI (x)  0

(4.89)

Notons c(x) le vecteur des m contraintes actives en un point x 0 et supposons que les mêmes contraintes sont actives en x* solution du problème (4.89). Il est alors équivalent de résoudre le problème avec contraintes égalité :

minn f (x) sous c(x) = 0

(4.90)

x

Le lagrangien est défini avec les multiplicateurs  

m

des m contraintes. (4.91)

L(x, ) = f (x) + Tc(x) Le gradient et le hessien du lagrangien sont donnés par :

  L(x, )   f (x) + c(x)  L(x, ) =  x  =    L(x, )   c(x) 2 2 2     L(x,  )  L(x,  )  c(x)  x xx L(x,  ) 2 L(x, ) =  2xx =  2 T 0   x L(x, )  L(x, )   c(x)

(4.92)

Les conditions KKT d’ordre 1 forment un système de dimension n + m.

 L(x, ) = 0 L(x, ) = 0   x   L(x, ) = 0



f (x) + c(x) = 0 c(x) = 0

(4.93)

Ce système se résout par la méthode de Newton. Au point (x k ; k ) , l’itération de Newton donne un déplacement d = (dx ,d ) tel que :

2 L(xk , k )d = −L(xk , k )

(4.94)

342

Techniques d’optimisation

soit en explicitant les composantes en (x; ) avec les formules (4.92) : 2xx L(xk , k )dx + c(xk )d = − x L(xk , k )  T = − c(xk ) c(xk ) dx

(4.95)

Montrons que ces équations se déduisent d’un problème quadratique local. Problème quadratique local Plaçons-nous au point (x k ; k ) et considérons le problème quadratique linéaire (QP) suivant dont les variables sont dQP 

minn

dQP 

1 T dQP QdQP + gT dQP 2

n

.

sous AdQP = b

n n Les matrices Q  , A  mn et les vecteurs g  définis au point (x k ; k ) par :

(4.96) n

, b

m

sont constants,

Q = 2xx L(xk , k ) A = c(xk )T et   g = f (xk ) b = −c(xk )

(4.97)

Le lagrangien de ce problème QP est noté LQP . Il dépend des multiplicateurs

QP 

m

associés aux m contraintes linéaires :

1 T dQPQdQP + gTdQP + TQP (AdQP − b) 2 Les conditions KKT d’ordre 1 forment un système de dimension n + m. LQP (dQP , QP ) =

(4.98)

Qd + g + AT QP = 0  L(d ,  ) = 0 L(dQP , QP ) = 0   d QP QP   QP (4.99)  L(dQP , QP ) = 0 AdQP − b = 0 En remplaçant Q,A,g,b par leurs expressions (4.97), on obtient : 2  xx L(xk , k )dQP + c(xk )QP = − f (xk ) (4.100)  T = − c(xk )  c(xk ) dQP On observe que ce système est identique à l’itération de Newton (4.95) en posant :

dQP = dx  = d +  k   QP

(4.101)

Réaliser une itération de Newton sur le système KKT (4.93) au point (x k ; k ) équivaut donc à résoudre le problème quadratique local (4.96) au même point.

Optimisation avec contraintes

343

L’exemple suivant compare les itérations par la méthode de Newton et la résolution des problèmes quadratiques successifs.

Exemple 4-7 : Équivalence Newton – Problème quadratique On considère le problème : min f ( x) = 2x12 + 2x 22 − 2x1x 2 − 4x1 − 6x 2 sous c(x) = 2x12 − x 2 = 0 x

2 2 2 Le lagrangien est : L( x, ) = 2x1 + 2x 2 − 2x1x 2 − 4x1 − 6x 2 + (2x1 − x 2 ) .

4x1 − 2x 2 − 4 + 4x1 = 0  Les conditions KKT  4x 2 − 2x1 − 6 −  = 0 ont pour solution  2x 2 − x = 0 2  1

 x1*  1,06902   x 2 *  2, 28563   *  1,00446 

On compare le déroulement des itérations de Newton sur le système KKT et la résolution des problèmes quadratiques successifs. Itérations de Newton

 d x1    Les itérations de Newton sont définies par : F ( x1 , x 2 ,  )  d x 2  = −F ( x1 , x 2 ,  ) d     4x1 − 2x 2 − 4 + 4x1   4 + 4 −2 4x1      4 −1  avec F ( x1 , x 2 ,  ) =  4x 2 − 2x1 − 6 −   → F ( x1 , x 2 ,  ) =  −2     2x12 − x 2    4x1 −1 0  Détaillons les calculs à la première itération. En partant du point initial :  x1   0   −6   4 −2 0           x 2  =  1  → F ( x1 , x 2 ,  ) =  −2  → F ( x1 , x 2 ,  ) =  −2 4 −1     0  −1   0 −1 0           4 −2 0  d x1   6   d x1   1           la première itération donne :  −2 4 −1 d x 2  =  2  →  d x 2  =  −1   0 −1 0  d   1   d   −8             x1   x1 + d x1   1        et le nouveau point est :  x2  →  x2 + dx2  =  0     + d   −8        

344

Techniques d’optimisation

Le Tableau 4-5 récapitule les itérations. La solution est atteinte en 7 itérations. Itér

x1

x2

1

0,00000 1,00000

2

1,00000 0,00000

3

1,20000 2,80000

4

1,08639 2,33466

5

1,06933 2,28636

6

1,06902 2,28563

7

1,06902 2,28563

c(x1,x2) F(x1,x2,) dF(x1,x2,) -6,000 4,000 -2,000 0,000 0,00000 -4,00000 -1,00000 -2,000 -2,000 4,000 -1,000 -1,000 0,000 -1,000 0,000 -32,000 -28,00 -2,000 4,000 -8,00000 -2,00000 2,00000 0,000 -2,000 4,000 -1,000 2,000 4,000 -1,000 0,000 8,640 15,200 -2,000 4,800 2,80000 -9,76000 0,08000 0,000 -2,000 4,000 -1,000 0,080 4,800 -1,000 0,000 7,4E-01 8,664 -2,000 4,346 1,16588 -10,16445 0,02582 0,0E+00 -2,000 4,000 -1,000 2,6E-02 4,346 -1,000 0,000 1,1E-02 8,027 -2,000 4,277 1,00676 -10,14342 0,00058 0,0E+00 -2,000 4,000 -1,000 5,8E-04 4,277 -1,000 0,000 2,8E-06 8,018 -2,000 4,276 1,00446 -10,14283 1,88E-07 0,0E+00 -2,000 4,000 -1,000 1,9E-07 4,276 -1,000 0,000 2,1E-13 8,018 -2,000 4,276 1,00446 -10,14283 1,60E-14 0,0E+00 -2,000 4,000 -1,000 1,6E-14 4,276 -1,000 0,000 

f(x1,x2)

Tableau 4-5 : Itérations de la méthode de Newton Problèmes quadratiques successifs Les problèmes quadratiques sont définis par : 1 min f (x)T d x + d Tx 2xx L(x, )d x sous c(x) T d x + c(x) = 0 dx 2 2 4x  1 − 2x 2 − 4   4x1   4 + 4 −2  2 avec f ( x ) =   , c ( x ) =   ,  xx L ( x,  ) =   4  −1   −2  4x 2 − 2x1 − 6  Détaillons les calculs à la première itération. En partant du point initial :  x1   0   −6  0  4 −2      2  x 2  =  1  → f ( x ) =  −2  , c ( x ) =  −1 ,  xx L ( x,  ) =  −2 4            0    

Optimisation avec contraintes

le problème QP est :

345

T

T

 −6   d  1  d   4 −2   d x1   0  d  min    x1  +  x1   sous    x1  − 1 = 0    d x1 ,d x 2 −2    d x 2  2  d x 2   −2 4   d x 2   −1  d x 2  x 2 min 2d x1 − 4d x1 d = 1   x1 avec  QP = −8 La solution est donnée par :  dx1 d = − 1 x 2  d = − 1  x 2  x1 + d x1   1   x1        et le nouveau point est :  x2  →  x2 + dx2  =  0       −8  QP       Le Tableau 4-6 récapitule les itérations. La solution est atteinte en 7 itérations. Itér 1 2 3 4 5 6 7

x1

x2



f(x1,x2)

c(x1,x2)

f

0,00000 1,00000 0,00000 -4,00000 -1,00000 -6,000 -2,000 1,00000 0,00000 -8,0000 -2,00000 2,00000 0,000 -8,000 1,20000 2,80000 2,80000 -9,76000 0,08000 -4,800 2,800 1,08639 2,33466 1,16588 -10,16445 0,02582 -4,324 1,166 1,06933 2,28636 1,00676 -10,14342 0,00058 -4,295 1,007 1,06902 2,28563 1,00446 -10,14283 1,9E-07 -4,295 1,004 1,06902 2,28563 1,00446 -10,14283 1,6E-14 -4,295 1,004

c

L

0,000 -1,000 4,000 -1,000 4,800 -1,000 4,346 -1,000 4,277 -1,000 4,276 -1,000 4,276 -1,000

-6,000 -2,000 -32,000 0,000 8,640 0,000 0,74262 0,00000 1,1E-02 0,0E+00 2,8E-06 0,0E+00 2,1E-13 0,0E+00

2L(x1,x2,) 4,000 -2,000 -28,000 -2,000 15,200 -2,000 8,664 -2,000 8,027 -2,000 8,018 -2,000 8,018 -2,000

-2,000 4,000 -2,000 4,000 -2,000 4,000 -2,000 4,000 -2,000 4,000 -2,000 4,000 -2,000 4,000

Tableau 4-6 : Problèmes quadratiques successifs Les itérations sont identiques à celles de la méthode de Newton. À chaque itération, le multiplicateur  k mis à jour par la méthode de Newton est égal au multiplicateur  QP du problème quadratique.

L’interprétation de cette équivalence Newton / problème quadratique pour une optimisation sous contraintes est donnée ci-dessous.

346

Techniques d’optimisation

Équivalence Newton – Problème quadratique Les équations KKT : L(x, ) = 0 sont les conditions d’ordre 1 du problème dual

max  min L(x, )  .   x  On sait d’après la section 3.1.3 que l’itération de Newton pour résoudre un système de la forme F = 0 équivaut à minimiser ou maximiser un modèle quadratique local de la fonction F. L’itération de Newton sur les équations KKT : L(x, ) = 0 équivaut ici à minimiser en x / maximiser en  un modèle quadratique local du lagrangien L(x, ) . Écrivons le développement d’ordre 2 du lagrangien L(x, ) au point (xk ; k ) .

L(xk + dx , k + d ) = L(xk , k ) + x L(xk , k )T dx +  L(xk , k )T d 1 1 2 + dTx 2xx L(xk , k )dx + dT  L(xk , k )d + dT2x L(xk , k )dx 2 2 Exprimons les dérivées du lagrangien. x L(xk , k ) = f (xk ) + c(xk )k  L(xk , k ) = c(xk ) L(x, ) = f (x) + Tc(x)   2  L(xk , k ) = c(xk )T  2x  L(xk , k ) = 0 En remplaçant et en regroupant les termes, on obtient : 1 L(xk + dx , k + d ) = L(xk , k ) + f (xk )T dx + dTx 2xx L(xk , k )dx 2 + (k + d )T c(xk ) + c(xk )T dx  − Tk c(xk ) soit avec les matrices et vecteurs définis par (4.97) : 1 L(xk + dx , k + d ) − L(xk , k ) − Tk b = dTx Qdx + gTdx + (d + k )T (Adx − b) 2 dQP = dx On retrouve au second membre le lagrangien LQP (4.98) avec :  . QP = d + k

Ce lagrangien vient du problème quadratique (4.96) dont la résolution conduit à minimiser LQP en dQP et le maximiser en QP . La résolution du problème quadratique linéaire (4.96) est donc bien équivalente à l’itération de Newton pour résoudre les équations KKT. Ce problème quadratique linéaire consiste à minimiser le lagrangien développé à l’ordre 2 sous les contraintes développées à l’ordre 1.

Optimisation avec contraintes

347

La solution du système (4.100) s’exprime analytiquement : −1 T −1 −1   QP = −(AQ A ) (AQ g + b) (4.102)  −1 T  d QP = −Q (A  QP + g) Ces formules nécessitant des inversions de matrices ne sont pas utilisées en pratique. Il est plus efficace de résoudre directement le système linéaire (4.100) qui présente déjà un bloc de zéros. L’algorithme SQP consiste à résoudre à chaque itération le problème quadratique local (4.96), puis à appliquer le déplacement (d QP ,  QP ) . Sa mise en œuvre requiert quelques adaptations.

La méthode de Newton est susceptible de diverger. Comme pour les méthodes de descente, une globalisation par recherche linéaire (section 3.3) ou par région de confiance (section 3.4) permet de vérifier et corriger la solution de Newton si besoin. 2 Le hessien du lagrangien Q =  xx L étant très coûteux à calculer, on le remplace par une approximation obtenue par une méthode de quasi-Newton. La solution (d QP ,  QP ) est un minimum du problème (4.96) si la matrice Q est définie positive (condition KKT d’ordre 2). Il faut donc s’assurer à chaque itération que cette matrice est positive, en la modifiant si besoin.



• •

4.4.2 Globalisation La résolution du problème quadratique équivaut à une itération de Newton. Comme pour une minimisation sans contraintes, la méthode de Newton n’est pas robuste. L’exemple suivant montre différents comportements possibles. Exemple 4-8 : Algorithme SQP sans globalisation On reprend le problème de l’Exemple 4-5 (présenté dans [R3]) : min f ( x) = x1 + x2 sous c(x) = x12 + (x2 − 1)2 − 1 = 0 x

2 2 Le lagrangien est : L( x, ) = x1 + x 2 + (x1 + (x 2 − 1) − 1) .

 x1* = − 1/ 2  −0,70711 1 + 2x = 0 1   Les conditions KKT 1 + 2(x 2 − 1) = 0 donnent  x 2 * = 1 − 1/ 2  0, 29289   2 2  x1 + ( x 2 − 1) − 1 = 0  * = 1/ 2  0,70711 Le problème quadratique est formulé avec les matrices Q, g, A, b (4.97). T  2x1   2 0   1 T Q =  2xx L ( x,  ) =  , g =  f (x) = , A =  c(x) =   , b = −c(x)     0 2   1  2(x 2 − 1) 

348

Techniques d’optimisation

Appliquons l’algorithme SQP à partir de différents points initiaux, sans contrôle du déplacement. Pour chaque cas, les itérations sont données dans un tableau et représentées graphiquement.

 x1   1      Point initial :  x 2  =  −1  1     Itér 1 2 3 4 5 6 7

x1 1,00000 0,00000 -1,00000 -0,77401 -0,70743 -0,70714 -0,70711

x2 -1,00000 -0,50000 -0,08333 0,24973 0,28900 0,29291 0,29289

 1,00000 0,50000 0,47222 0,60672 0,69818 0,70707 0,70711

La convergence est rapide en 7 itérations.

 x1   −0,1     Point initial :  x 2  =  1    1      Itér 1 2 3 4 5 6 7 8 9 10 11 12

x1 -0,10000 -5,05000 -2,62404 -1,50286 -1,08612 -1,01047 -1,33383 -0,96379 -0,72273 -0,70890 -0,70710 -0,70711

x2 1,00000 0,50000 0,75032 0,87826 0,96364 1,19247 -0,65614 0,10912 0,25387 0,29344 0,29289 0,29289

 1,00000 -44,5000 -21,2782 -8,90106 -2,13558 0,31161 0,39510 0,48447 0,63996 0,70407 0,70710 0,70711

La première itération s’éloigne nettement de la solution et les 6 premières itérations sont chaotiques. Malgré tout, le point final correspond bien à la solution.

Optimisation avec contraintes

349

 x1   0,1     Point initial :  x 2  =  1    1      Itér 1 2 3 4 5 6 7 8 9 10

x1 0,10000 5,05000 2,62404 1,50282 1,08576 1,00831 0,92650 0,70291 0,70870 0,70711

x2 1,00000 0,50000 0,75028 0,87782 0,95907 1,11015 1,72824 1,74580 1,70662 1,70711

 1,00000 -54,5000 -26,2801 -11,4197 -3,50192 -0,71030 -0,55351 -0,67324 -0,70579 -0,70710

Bien que ce point initial soit très proche du précédent, on ne converge pas vers la solution. Le point final vérifie les équations KKT, mais il s’agit d’un maximum local, diamétralement opposé au minimum sur le cercle représentant la contrainte.

La globalisation consiste à vérifier que le nouveau point se rapproche de la solution du problème (4.89). Pour une minimisation avec contrainte, l’amélioration peut se mesurer par une fonction mérite avec une pénalisation L1 :

f (x) = f (x) +  c(x) 1

m

avec c(x) 1 =  ci (x)

(4.103)

i =1

On sait en effet d’après la Propriété 4-2 que le minimum de cette fonction donne la solution exacte x* du problème (4.89) si la pénalisation  est suffisamment grande. La globalisation est réalisée par recherche linéaire ou région de confiance. Globalisation par recherche linéaire On utilise la solution d QP du problème quadratique comme direction de recherche linéaire. La propriété suivante permet de calculer la dérivée directionnelle de la fonction mérite f dans la direction d QP et de s’assurer qu’il s’agit bien d’une direction de descente.

350

Techniques d’optimisation

Propriété 4-7 : Dérivée directionnelle de la fonction mérite La dérivée directionnelle de la fonction mérite (4.103) au point x k suivant la direction d QP issue du problème quadratique (4.96) est donnée par :

(f )

'

 d

(4.104)

(xk ) = f (xk )T dQP −  c(xk ) 1

Elle vérifie de plus l’inégalité :

(f )

'

 d

(

T (xk )  −dQP 2xx L(xk , k )dQP −  − QP



) c(x ) k

1

(4.105)

où  QP est le multiplicateur issu du problème quadratique (4.96).

Démonstration La dérivée directionnelle de f dans la direction d QP est définie par :

( f ) (x ) = lim '

 d

k

f (xk + sdQP ) − f (xk )

s Développons la fonction mérite à l’ordre 1. f (xk + sdQP ) − f (xk ) = f (xk + sdQP ) +  c(xk + sdQP ) − f (xk ) −  c(xk ) 1 def s→0

1

T = sdTQPf (xk ) +  c(xk ) + sdQP c(xk ) −  c(xk ) 1 + o(s) 1

= sdTQPf (xk ) +  (1 − s)c(xk ) 1 −  c(xk ) 1 + o(s)

car la solution d QP du problème quadratique vérifie (4.100) : dTQPc(xk ) = − c(xk ) T f (xk ) − s c(xk ) 1 + o(s) Pour 0  s  1 , on obtient : f (xk + sdQP ) − f (xk ) = sdQP

f (xk + sdQP ) − f (xk )

= dTQPf (xk ) −  c(xk ) 1 s Pour l’inégalité (4.105), on utilise les équations (4.100) vérifiées par la solution du problème quadratique. Ces équations permettent d’exprimer dTQPf (xk ) . d'où la formule (4.104) :

lim s →0

2 xx L(xk , k )dQP + c(xk )QP = − f (xk )  T = − c(xk ) c(xk ) dQP T T  dTQPf (xk ) = −dQP 2xx L(xk , k )dQP − dQP c(xk )QP T 2 = −dQPxx L(xk , k )dQP + c(xk )T QP

Par ailleurs, on a : m

m

m

i =1

i =1

i =1

c(xk )T QP =  ci (xk )QPi   ci (xk ) QPi   ci (xk ) QP



= c(xk ) 1 QP



Optimisation avec contraintes

351

D’où l’on déduit :

( f ) (x ) = d '

 d

k

T QP

T f (xk ) −  c(xk ) 1 = −dQP 2xx L(xk , k )dQP + c(xk )T QP −  c(xk ) 1

(

 −dTQP2xx L(xk , k )dQP + QP



)

−  c(xk ) 1

La formule (4.104) est utile pour exprimer les conditions de Goldstein (3.111) de décroissance et de déplacement suffisants. Ces conditions ont la forme suivante :

f (x + sd )  f (x ) + c s ( f )' (x ) , c = 0,1 QP k 1 k 1   d  k  ' f (x + sdQP )  f (xk ) + c2s ( f ) (xk ) , c2 = 0,9  d  k

(4.106)

La formule (4.105) aide à régler la pénalisation pour que d QP soit une direction de descente. Notons Zk une base de l’espace tangent aux contraintes associée à T

T

2

la matrice jacobienne A = c(xk ) . Si le hessien réduit Zk xx L(xk , k )Zk est défini positif, ce qui est le cas au voisinage de la solution de (4.89), on obtient une direction de descente ( f ) (xk )  0 pour une pénalisation telle que : '

d

  QP

(4.107)



En pratique, on part d’une pénalisation faible que l’on augmente progressivement. Une pénalisation initiale trop forte ralentirait la progression en accordant un poids trop important aux contraintes dans la fonction mérite. Globalisation par région de confiance On ajoute au problème quadratique (4.96) une contrainte de région de confiance avec un rayon rk .

minn

dQP 

1 T dQP QdQP + gT dQP 2

 AdQP = b sous  r d   QP 2 k

(4.108)

avec les matrices et vecteurs définis au point (x k ; k ) par :

Q = 2xx L(xk , k ) A = c(xk )T et   g = f (xk ) b = −c(xk )

(4.109)

La solution du problème (4.108) donne un nouveau point x k +1 = x k + d QP .

352

Techniques d’optimisation

Le rapport de réduction  compare l’amélioration réelle et l’amélioration prévue.

=

f (xk ) − f (xk +1 ) fˆ (x ) − fˆ (x ) 

k



(4.110)

k +1

L’amélioration réelle est mesurée par la fonction mérite f définie comme :

f (x) = f (x) +  c(x)

(4.111)

L’amélioration prévue est mesurée par la fonction modèle fˆ , qui est l’équivalent de la fonction mérite (4.111) appliquée au problème quadratique-linéaire (4.108).

1 T (4.112) fˆ (xk + dQP ) = f (xk ) + gTdQP + dQP QdQP +  c(xk ) + AdQP 2 On peut choisir une pénalisation en norme L1 ou L2 pour évaluer le rapport  . L’acceptation du nouveau point et le réglage du rayon de confiance suivent les mêmes principes que pour une optimisation sans contraintes (section 3.4.1). •



Un rapport supérieur à 1 indique que le modèle quadratique représente bien la fonction dans la région de rayon rk . Dans ce cas, on augmente le rayon à l’itération suivante de façon à autoriser un déplacement plus important. Un rapport petit ou négatif indique inversement que l’approximation quadratique n’est pas bonne. Dans ce cas, il faut reprendre l’itération en réduisant le rayon de confiance pour obtenir un point x k+1 acceptable.

4.4.3 Gestion des contraintes L’algorithme SQP requiert certaines précautions concernant les contraintes. Contraintes actives Le problème quadratique (4.96) est défini en linéarisant les contraintes actives au point x k . Si les contraintes actives au nouveau point x k+1 sont différentes, l’itération est à reprendre selon l’une des deux approches suivantes. Une première approche est de linéariser l’ensemble des contraintes égalité et inégalité à chaque itération et de résoudre le problème quadratique local :

c (x ) + cE (xk )T dQP = 0 1 minn dTQP2xx L(xk , k )dQP + f (xk )T dQP sous  E k (4.113) T dQP 2 cI (xk ) + cI (xk ) dQP  0

Optimisation avec contraintes

353

Cette formulation évite les difficultés liées au choix des contraintes actives, mais la présence de contraintes inégalité complique la résolution. Une seconde approche pour deviner les contraintes actives en x k+1 consiste à résoudre le problème linéaire suivant obtenu en ignorant le terme d’ordre 2 et en ajoutant une contrainte de rayon de confiance. minn f (xk )T dQP

dQP 

cE (xk ) + cE (xk )T dQP = 0  sous cI (xk ) + cI (xk )T dQP  0 d r  QP  k

(4.114)

Ce problème préalable peut être résolu efficacement par une méthode spécifique de programmation linéaire (chapitre 5). Sa solution sert à sélectionner les contraintes actives qui seront traitées comme des égalités pour l’itération courante. Contraintes incompatibles La linéarisation peut rendre le problème quadratique incompatible, en particulier si l’on y inclut des contraintes inégalité comme en (4.108) ou (4.113). Cette difficulté peut être évitée par relaxation ou par pénalisation. La méthode de relaxation consiste à résoudre le problème préalable :

minn Ad' − b 2 d '

sous  2  0,8rk

(4.115)

La solution d ' de ce problème est dans la région de confiance (avec une marge venant du coefficient 0,8) et mesure l’écart minimal aux contraintes : c = Ad '− b En ajoutant cet écart au second membre des contraintes du problème (4.108) :

minn

dQP 

1 T dQP QdQP + gT dQP 2

 AdQP = b + c sous  r d   QP 2 k

(4.116)

on s’assure que les contraintes sont compatibles. La valeur d QP = d ' est alors admissible et peut initialiser la résolution du problème quadratique relaxé (4.116). La méthode de pénalisation consiste à remplacer le problème (4.108) par :

minn

dQP 

1 T dQP QdQP + gT dQP +  AdQP − b 1 2

sous dQP



 rk

(4.117)

354

Techniques d’optimisation

Ce problème avec une pénalisation L1 est toujours compatible. Les contraintes inégalité peuvent également être incorporées à la fonction coût. La fonction mérite mesurant l’amélioration (4.111) est dans ce cas défini avec la norme L 1. Direction d’ordre 2 En présence de contraintes fortement non linéaires, la direction d QP issue du problème quadratique peut s’avérer inefficace pour réduire la fonction mérite. On peut alors utiliser la direction d’ordre 2 construite en deux étapes. Le problème quadratique est résolu une première fois sous sa forme (4.96) avec le second membre des contraintes valant b = −c(x k ) .

minn

dQP 

1 T dQP QdQP + gT dQP 2

sous AdQP = b

(4.118)

On obtient une solution d QP et on évalue les contraintes au point x k + d QP . Une valeur forte c(x k + dQP ) = c indique que les contraintes sont fortement non noté

linéaires. On résout alors à nouveau le problème quadratique en changeant le second membre des contraintes en b' = −c(x k ) − c .

minn

dQP 

1 T dQP QdQP + gT dQP 2

sous AdQP = b'

(4.119)

La nouvelle solution d 'QP prend en compte la courbure des contraintes. Cette direction d’ordre 2 d 'QP est utilisée à la place de d QP pour la recherche linéaire. L’exemple suivant illustre l’utilisation de la direction d’ordre 2.

Exemple 4-9 : Direction d’ordre 2 Considérons le problème à deux variables : min f ( x) = 2(x12 + x 22 − 1) − x1 sous c(x) = x12 + x 22 − 1 = 0 x

1 1 0 3 →  2xx L ( x*,  *) =  La solution est : x* =   , * = − . 2 0 0 1  cos   Plaçons-nous en un point xk de coordonnées polaires x k =  .  sin    4cos  − 1  2cos   Les gradients de f et c sont : f (x k ) =   , c(x k ) =  .  4sin    2sin  

Optimisation avec contraintes

355

Première résolution du problème quadratique En prenant Q = I , le problème quadratique en xk se formule comme : 1 min (4cos  − 1)d1 + 4d 2 sin  + (d12 + d 22 ) sous d1 cos  + d 2 sin  = 0 d1 ,d 2 2 La solution s’obtient par élimination : d1 = −d2 tan  .

 sin   → d QP = sin    d2  − cos    cos  + sin 2   On obtient le nouveau point : x k +1 =  .  sin  − sin  cos  

min d 2 tan  +

1 d 22 → d 2 = − sin  cos  2 2cos 

1 Calculons les distances entre la solution x* =   et les points xk et xk+1 . 0  2  cos  − 1  x k − x * = 2 (1 − cos  )  x k − x* =     sin     cos   2   x k +1 − x* = (1 − cos  )  sin    x k +1 − x * = 1 − cos     Le nouveau point xk+1 est plus proche de la solution x*. Comparons maintenant les valeurs du coût et des contraintes en xk et en xk+1 . f (x k ) = − cos  Fonction coût :  2 f (x k +1 ) = − cos  + sin  c(x k ) = 0 • Contrainte :  2 c(x k +1 ) = sin  On observe que la fonction coût et la contrainte ont augmenté. Bien que plus proche de la solution, le point xk+1 sera rejeté, car il augmente la fonction mérite. Examinons maintenant la direction d’ordre 2.



Deuxième résolution du problème quadratique On résout à nouveau le problème quadratique en modifiant le second membre des 2 contraintes de la valeur observée en xk+1 . La correction vaut : c = c(x k +1 ) = sin . Le problème quadratique corrigé se formule comme : 1 min (4cos  − 1)d1 + 4d 2 sin  + (d12 + d 22 ) sous d1 cos  + d 2 sin  = − sin 2  d1 ,d 2 2 La solution s’obtient par élimination : d1 = − ( d2 + sin ) tan  .

356

Techniques d’optimisation

1 1 2 min d 2 tan  + d 22 + d + sin  ) → d 2 = − sin  cos  − sin 3  2 ( 2 d2 2 2cos   sin   2  cos   Le déplacement corrigé à l’ordre 2 est : d 'QP = sin    − sin   .  − cos    sin   On observe sur la Figure 4-13 que ce déplacement d 'QP comporte : - la composante tangentielle précédente associée au déplacement d QP ; - une composante radiale additionnelle venant de la correction d’ordre 2. Le déplacement d’ordre 2 corrige la non linéarité de la contrainte. Le point obtenu dégrade la contrainte (on n’est plus sur la ligne de niveau 0 correspondant au cercle), mais diminue la fonction coût (lignes de niveau tracées en pointillés). Ce point diminue la fonction mérite et peut être accepté pour l’itération suivante.

Figure 4-13 : Direction d’ordre 2

4.4.4 Méthode de quasi-Newton 2

La matrice Q du problème quadratique (4.96) est le hessien du lagrangien  xx L au point (x k ; k ) . Cette matrice étant très coûteuse à calculer numériquement, on la remplace par une approximation H k mise à jour à chaque itération par une méthode de quasi-Newton (section 3.2.2).

Optimisation avec contraintes

357

À partir du développement d’ordre 1 du gradient du lagrangien au point (x k ; k ) :

2xx L(x k ,  k )(x k − x k −1 )   x L(x k ,  k ) −  x L(x k −1 ,  k )

(4.120)

on obtient l’équation sécante vérifiée par la matrice H k :

Hk pk = yk

p = x k − x k −1 avec  k  y k =  x L(x k ,  k ) −  x L(x k −1 ,  k )

(4.121)

La matrice H k est actualisée à chaque itération par une formule DFP, BFGS ou SR1 comme pour une optimisation sans contraintes (section 3.2.2). La mise à jour utilise les variations du point et du gradient du lagrangien au cours de l’itération. 2

Le hessien complet  xx L n’a aucune raison d’être défini positif, même au voisinage de la solution. Pour que le problème quadratique admette une solution, la matrice H k doit être définie positive. Ceci est réalisable par une méthode BFGS pondérée (3.2.3) ou par une méthode SR1 corrigée par ajout d’une matrice diagonale ou par factorisation de Cholesky modifiée (section 3.3.1). L’inconvénient est que la matrice H k corrigée peut différer fortement du vrai hessien, conduisant à une direction d QP peu favorable à la progression.

Une alternative consiste à appliquer la méthode de quasi-Newton au hessien réduit Hr = ZT HZ au lieu du hessien complet H. Les conditions KKT d’ordre 2 (1.127) indiquent en effet que le hessien réduit du lagrangien est défini positif au voisinage de la solution. Le développement est identique à celui présenté en section 4.3.4 en utilisant une base Zk de l’espace tangent aux contraintes en x k . On obtient l’équation sécante « réduite » de la forme :

Hrsk = yk

(4.122)

T 2 - Hr est une approximation du hessien réduit du lagrangien Zk  xx L(x k ,  k ) Zk . - sk = pZk est la variation du point dans l’espace tangent.

- yk = ZTk x L(x k , k ) −x L(x k−1, k ) est la variation du gradient réduit de L.

L’approximation du hessien réduit est actualisée par une formule de quasi-Newton (DFP, BGFS, SR1) basée sur l’équation sécante réduite (4.122). La matrice Hr de dimension n − m est plus petite que H, ce qui réduit notamment la quantité de calculs algébriques pour des problèmes avec un grand nombre de contraintes. Cette approche suppose que l’ensemble des contraintes actives ne varie pas d’une itération à l’autre. En cas de changement des contraintes actives, le hessien réduit doit être réinitialisé à l’identité.

358

Techniques d’optimisation

4.4.5 Algorithme L’algorithme de programmation quadratique séquentielle part d’un point (x 0 ; 0 ) choisi librement. Les multiplicateurs n’ayant de signification physique simple, on peut soit les initialiser à zéro, soit déterminer une solution de moindres carrés. La solution de moindres carrés consiste à choisir pour x 0 donné la valeur  0 minimisant la norme du gradient du lagrangien :

minm  x L(x 0 , )

2

(4.123)



On aura ainsi la valeur  0 approchant « au mieux » la solution des équations KKT. La dérivée par rapport à  est donnée par :

d d 2 2  x L(x 0 , ) = f (x 0 ) + c(x 0 ) d d = 2c(x 0 )T f (x 0 ) + c(x 0 ) 

(4.124)

On obtient la valeur de  0 annulant la dérivée. −1

0 = − c(x 0 )T c(x 0 )  c(x 0 )T f (x 0 )

(4.125)

Cette solution de moindres carrés peut servir à réinitialiser les multiplicateurs, par exemple en cas de changement de contraintes actives lors d’une itération. Chaque itération comporte la sélection des contraintes actives, la globalisation par recherche linéaire ou région de confiance avec la fonction mérite en pénalisation L1, la mise à jour de quasi-Newton avec les modifications éventuelles pour garder une matrice positive. La valeur de pénalisation initiale est faible (par exemple  = 1 si le problème est mis à l’échelle). Lorsque la dérivée directionnelle de la fonction mérite n’est pas négative, on peut réinitialiser le hessien à l’identité. Si cela ne suffit pas, il faut augmenter la pénalisation. L’augmentation doit être progressive (par exemple avec un facteur 2). La non linéarité des contraintes peut dans certains cas bloquer la progression basée sur la fonction mérite. Les remèdes possibles sont l’utilisation de la direction d’ordre 2, une stratégie de descente non monotone (section 3.3.3) ou l’acceptation de solutions par filtre (section 4.1.3). L’algorithme s’arrête lorsque la norme du gradient du lagrangien est suffisamment petite. Ce critère peut être difficile à atteindre en pratique à cause d’imprécisions numériques de simulation ou de calcul des gradients par différences finies. Il faut donc prévoir d’autres critères d’arrêt : le déplacement insuffisant des variables, ou le nombre maximal d’itérations ou d’évaluations de la fonction et des contraintes.

Optimisation avec contraintes

359

La Figure 4-14 illustre les étapes principales de l’algorithme SQP.

Figure 4-14 : Algorithme de programmation quadratique séquentielle L’exemple suivant illustre le déroulement d’un algorithme SQP. Exemple 4-10 : Algorithme de programmation quadratique séquentielle On reprend le problème de l’Exemple 4-8 (présenté dans [R3]) : min f ( x) = x1 + x2 sous c(x) = x12 + (x2 − 1)2 − 1 = 0 x

Dans l’Exemple 4-8, l’algorithme SQP était appliqué sans globalisation à partir de 3 points initiaux. En partant du 2e point, la convergence était chaotique pendant les premières itérations. En partant du 3e point, l’algorithme convergeait vers un maximum. On applique ici une globalisation par recherche linéaire suivant la direction dQP. La matrice hessienne exacte est utilisée à chaque itération : 0   2  2xx L ( x k ,  k ) =  k   0 2 k  Cette matrice est rendue définie positive par ajout d’une matrice diagonale avec un coefficient  choisi comme un multiple de 10. 1 0 H k =  2xx L ( x k ,  k ) + I = ( 2 k +  )   avec 2 k +   0 0 1

360

Techniques d’optimisation

Appliquons l’algorithme SQP globalisé à partir des points 2 et 3 de l’Exemple 4-8. Les itérations sont données dans un tableau et représentées graphiquement.



 x1   −0,1     Point initial :  x 2  =  1    1      Itér 1 2 3 4 5 6 7 8

x1 -0,10000 -1,33750 -1,03171 -0,94371 -0,74975 -0,71035 -0,70710 -0,70711

x2 1,00000 0,87500 0,82117 0,58304 0,22132 0,29156 0,29288 0,29289

 1,00000 -44,5000 1,63129 0,62377 0,65803 0,70147 0,70708 0,70711

La progression est régulière et la convergence est réalisée en 8 itérations au lieu de 12. Le Tableau 4-7 détaille à chaque itération les valeurs de  et le pas s de la recherche linéaire. Itér x1 x2  L 1 -0,10000 1,00000 1,00000 9,90000 1,00000 2 -1,33750 0,87500 -44,500 -3,36370 0,59218 3 -1,03171 0,82117 1,63129 -0,28710 0,77690 4 -0,94371 0,58304 0,62377 -0,24198 0,45126 5 -0,74975 0,22132 0,65803 -0,05185 -0,09244 6 -0,71035 0,29156 0,70147 -4,6E-03 -1,9E-03 7 -0,70710 0,29288 0,70708 4,7E-06 -1,7E-05 8 -0,70711 0,29289 0,70711 -4,2E-10 2,7E-10

2L(x1,x2,)  2,00000 0,00000 0,0 0,00000 2,00000 0,0 -89,000 0,00000 100,0 0,00000 -89,000 100,0 3,26258 0,00000 0,0 0,00000 3,26258 0,0 1,24754 0,00000 0,0 0,00000 1,24754 0,0 1,31605 0,00000 0,0 0,00000 1,31605 0,0 1,40294 0,00000 0,0 0,00000 1,40294 0,0 1,41417 0,00000 0,0 0,00000 1,41417 0,0 1,41421 0,00000 0,0 0,00000 1,41421 0,0

dx -4,95000 -0,50000 0,30579 -0,05383 0,08800 -0,23812 0,19396 -0,36172 0,03940 0,07024 3,2E-03 1,3E-03 -3,3E-06 1,2E-05 3,0E-10 -1,9E-10

Tableau 4-7 : Itérations SQP avec globalisation (point initial 2)

Pas s 0,25 0,25 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00

Optimisation avec contraintes

361

 x1   0,1     Point initial :  x 2  =  1    1     



Itér 1 2 3 4 5 6 7 8 9 10 11 12

x1 0,10000 1,33750 1,03687 0,97837 0,94133 0,50173 -0,82925 -1,05655 -0,80511 -0,70800 -0,70721 -0,70711

x2 1,00000 0,87500 0,87643 0,75123 0,60794 -0,43482 -0,67191 -0,18790 0,23137 0,28512 0,29295 0,29289

 1,00000 -54,5000 4,23389 -0,24333 -0,35556 -0,26135 0,26961 0,45516 0,58156 0,69118 0,70699 0,70711

On converge bien vers le minimum (au lieu du maximum) avec davantage de corrections de globalisation ( et s dans le Tableau 4-8) que pour le cas précédent. Itér

x1

x2



L

1

0,10000

1,00000

1,00000

2

1,33750

0,87500

-54,5000

3

1,03687

0,87643

4,23389

4

0,97837

0,75123

-0,24333

5

0,94133

0,60794

-0,35556

6

0,50173

-0,43482 -0,26135

7

-0,82925 -0,67191

0,26961

8

-1,05655 -0,18790

0,45516

9

-0,80511

0,23137

0,58156

10

-0,70800

0,28512

0,69118

11

-0,70721

0,29295

0,70699

12

-0,70711

0,29289

0,70711

-9,90000 1,00000 12,32567 -0,05847 0,49539 1,06014 0,30426 1,17691 0,50796 1,20493 1,27054 0,22632 0,24512 -0,52197 -0,22888 -0,38167 -0,11295 -0,06252 -1,1E-03 -1,1E-02 -1,4E-04 8,0E-05 1,2E-08 -2,5E-08

2L(x1,x2,) 2,00000 0,00000 -109,000 0,00000 8,46779 0,00000 -0,48667 0,00000 -0,71112 0,00000 -0,52271 0,00000 0,53921 0,00000 0,91032 0,00000 1,16311 0,00000 1,38235 0,00000 1,41398 0,00000 1,41421 0,00000

0,00000 2,00000 0,00000 -109,000 0,00000 8,46779 0,00000 -0,48667 0,00000 -0,71112 0,00000 -0,52271 0,00000 0,53921 0,00000 0,91032 0,00000 1,16311 0,00000 1,38235 0,00000 1,41398 0,00000 1,41421



dx

Pas s

0,0 0,0 150,0 150,0 0,0 0,0 1,0 1,0 1,0 1,0 1,0 1,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0

4,95000 -0,50000 -0,30063 0,00143 -0,05850 -0,12520 -0,59272 -2,29267 -1,75838 -4,17104 -2,66197 -0,47418 -0,45458 0,96802 0,25143 0,41927 0,09711 0,05376 8,0E-04 7,8E-03 1,0E-04 -5,7E-05 -8,4E-09 1,8E-08

0,25 0,25 1,00 1,00 1,00 1,00 0,06 0,06 0,25 0,25 0,50 0,50 0,50 0,50 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00 1,00

Tableau 4-8 : Itérations SQP avec globalisation (point initial 3)

362

Techniques d’optimisation

4.5 Point intérieur Les méthodes de point intérieur sont des méthodes primales-duales appliquant une pénalisation barrière aux contraintes inégalité. Les conditions KKT du problème pénalisé sont résolues par la méthode de Newton en abaissant progressivement la barrière. Ces méthodes sont intéressantes pour les problèmes comportant un grand nombre de contraintes inégalité. Cette section introduit quelques principes de base des méthodes de points intérieurs. Des explications plus détaillées sont données au chapitre 5 consacré à la programmation linéaire.

4.5.1 Problème barrière Le problème standard (4.1) est reformulé en transformant les inégalités en égalités avec des variables d’écart s positives : c E (x) = 0  min f (x) sous c I (x) + s = 0 x,s  s  0

(4.126)

On applique une pénalisation barrière B (4.42) aux contraintes s  0 . Le problème pénalisé ne comporte que des contraintes égalité et se formule comme :

min f (x,s) = f (x) − x,s

1 q c (x) = 0 ln s j sous  E   j=1 cI (x) + s = 0

(4.127)

Les contraintes inégalité s  0 sont ignorées dans cette formulation, mais elles seront prises en compte dans les itérations de Newton développées plus bas. Le lagrangien L du problème (4.127) s’exprime avec des multiplicateurs   associés aux p contraintes : cE = 0 , et des multiplicateurs   contraintes : cI + s = 0 .

L (x,s, , ) = f (x) −

1 q  ln s j + TcE (x) + T cI (x) + s   j=1

q

p

associés aux q

(4.128)

Les conditions KKT d’ordre 1 forment un système d’équations non linéaires :

 x L (x,s, , )  s L (x,s, , )    L (x,s, , )  L (x,s, , )   

= f (x) + c E (x) + c I (x) = 0 1 =− + = 0 s = c E (x) = 0 = c I (x) + s = 0

(4.129)

Optimisation avec contraintes

363

On remarque que les dérivées du lagrangien L par rapport à x, ,  ne dépendent pas de  et sont identiques aux dérivées du lagrangien L du problème (4.1). La pénalisation  n’apparaît que dans la deuxième équation qui prend la forme :



1 1 +  = 0  s j j = , j =1 à q s 

où les matrices diagonales S,M 

 s1 0   0 s2 S=  0 0 0 0 

0 0 sq −1 0

qq

 SMe =

et le vecteur e 

0  1 0   0  0 2  , M=    0 0 0  0 0 sq  

0 0 q −1 0

q

1 e 

(4.130)

sont définis par :

0  1    0  1  , e =   (4.131)    0  1  1  q   

Lorsque  →  , les équations (4.130) donnent les conditions de complémentarité

s j j = 0 associées aux contraintes inégalité s  0 . On utilise par convention −1

l’inverse de la pénalisation : h =  appelée hauteur de barrière. Sa valeur initialement grande décroît jusqu’à zéro pour revenir au problème initial (4.126). Appliquons la méthode de Newton au système (4.129) mis sous la forme :

  x L(x,s, , )    SMe − he  F(x,s, , ) =  =0   c E (x)    c I (x) + s 

(4.132)

L’itération de Newton est définie avec un pas  s pour les variables primales (x,s) et un pas  pour les variables duales (, ) . Ces pas seront choisis pour que les variables s et  restent positives. Leur réglage est examiné plus bas.  dx   x k +1   x k   sd x        d   s k +1  =  s k  +  s s  avec F(x ,s ,  ,  )T  ds  = −F(x ,s ,  ,  ) (4.133) k k k k k k k k  d    k +1    k   d              d   k +1   k   d   

364

Techniques d’optimisation

La matrice jacobienne de F de dimension n + q + p + q a pour expression :   2xx L 0 c E  0 M 0 FT =  T  c 0 0 E  T I 0  c I

c I   S  0   0 

(4.134)

où 2xx L est le hessien du lagrangien du problème initial (4.1). Le système de Newton est rendu symétrique en prémultipliant la deuxième ligne de la matrice FT par S−1 . La matrice diagonale S est inversible, car les variables s sont maintenues strictement positives au cours des itérations.   2xx L 0 c E  −1 S M 0  0  cT 0 0 E  T I 0  cI

c I  d x   x L      Me − hS−1e  I  d s  = −   cE 0  d       0   d    cI + s 

(4.135)

On peut exprimer d s à partir de la deuxième ligne.

ds = −M −1Sd − M −1 S(M e − hS−1e) = −M −1Sd  − s + hM −1e

(4.136)

car M −1S = SM −1 (matrices diagonales) et Se = s . Le système (4.135) se réduit à :

  2xx L cE  T 0  cE  cTI 0 

cI  d x   x L      0  d   = −  cE   c + hM −1e   −M −1S   I    d 

(4.137)

On peut ensuite exprimer d  à partir de la troisième ligne :

d = S−1McTI d x + S−1 M(cI + hM −1e) = S−1McTI d x + S−1 (Mc I + he)

(4.138)

Le système (4.141) se réduit à :   2xx L + cIS−1McTI c E   d x    x L + c IS−1 (Mc I + he)  = −     (4.139)   cTE 0   d  cE    La résolution du système linéaire peut se faire à partir de (4.137) ou (4.139). La forme la plus intéressante dépend du nombre de contraintes inégalité et de la 2 densité de la matrice  xx L . Si cette matrice est creuse, la forme (4.137) peut s’avérer plus rapide à résoudre numériquement que la forme (4.139) plus dense.

Optimisation avec contraintes

365

La résolution du système linéaire donne le déplacement (dx ,ds ,d ,d ) . Outre les précautions usuelles liées à la méthode de Newton (globalisation, approximation du hessien), il faut restreindre ce déplacement pour rester dans le domaine s  0 ;   0 et faire baisser progressivement la hauteur de barrière h pour revenir au problème initial.

4.5.2 Globalisation Pour rester dans le domaine s  0 ;   0 , le déplacement (dx ,ds ,d ,d ) est réduit avec un pas  s sur les variables primales (x,s) et un pas  sur les variables duales (, ) . Les pas sont réglés pour garder une marge avec le bord du domaine, par exemple :

s k + sds  0,01s k  +  d  0,01   k  k

(4.140)

Il faut éviter des valeurs petites de s et  sous peine de bloquer les déplacements ultérieurs ou de rendre la matrice FT (4.134) mal conditionnée. Le déplacement est évalué par une fonction mérite de la forme : q

f m (x,s) = f (x) − h  ln s j + m ( cE (x) + cI (x) + s j=1

)

(4.141)

avec une pénalisation sur la violation des contraintes. Le coefficient de pénalisation m est à régler indépendamment de la hauteur de barrière h. La globalisation est réalisée par recherche linéaire suivant la direction (d x ,ds ) . Le pas  s décroît à partir de la valeur maximale (4.140) jusqu’à satisfaire une condition d’Armijo sur la fonction mérite. On peut également accepter le déplacement sur la base d’un filtre. Une approche alternative consiste à résoudre le système KKT (4.129) par un algorithme SQP avec région de confiance. La mise en œuvre est plus complexe, mais permet de mieux contrôler la progression visà-vis du bord du domaine admissible. 2

La matrice  xx L est approchée par une méthode de quasi-Newton (section 3.2.2). Pour converger vers un minimum, la matrice du système (4.135) réduite sur T l’espace tangent aux contraintes (défini par la jacobienne (cE , cI ) ) doit être 2 définie positive. Ceci est réalisé par ajout d’une matrice diagonale :  xx L + I avec  assez grand.

366

Techniques d’optimisation

4.5.3 Hauteur de barrière La solution du problème barrière (4.129) est fonction de la hauteur de barrière h. Lorsque h est nulle, on retrouve les conditions KKT du problème initial (4.1). La valeur de h doit être réduite progressivement en évitant d’annuler ou de réduire prématurément une partie des variables s i et  i . Des valeurs trop petites de ces variables risqueraient en effet de bloquer les déplacements ultérieurs. Une première stratégie consiste à résoudre complètement le système (4.129) avant de modifier h. Le système est résolu avec une tolérance forte au départ, puis plus faible lorsque h décroît. On peut par exemple arrêter la résolution lorsque :

 x L(x,s, , ) SMe − he F(x,s, , ) = h c E (x) c I (x) + s

(4.142)

puis réduire la valeur de h d’un facteur fixé, par exemple h ' = h /10 . Une seconde stratégie plus efficace consiste à modifier h à chaque itération de Newton (4.133) en fonction de la distance au bord du domaine s  0 ;   0 . Cette distance est mesurée par la moyenne des produits sii appelée mesure de dualité  au point (s; ) .

1 1 q  = sT =  sii q q i=1

(4.143)

La valeur de h est définie avec une pondération  comprise entre 0 et 1.

h =  =

 q  sii q i=1

(4.144)

Une valeur petite de  diminue la hauteur de barrière et permet d’approcher plus rapidement le bord du domaine s  0 ;   0 . Les options de réglage de  sont semblables à celles appliquées pour des problèmes linéaires (section 5.2). La première option se base sur la répartition des produits sii . Si ces produits sont voisins, on peut espérer une décroissance simultanée rapide avec une valeur  0. Sinon on règle  en fonction du plus petit produit sii afin de ne pas l’annuler prématurément. On peut par exemple régler  en fonction de

 −1. min(sii )

Optimisation avec contraintes

367

La seconde option de type prédiction consiste à calculer le déplacement de Newton (4.133) avec h = 0 . Ce déplacement limité par (4.140) donne un point (s ; ) ayant une mesure de dualité  . La valeur de  est alors réglée par la formule empirique utilisée en programmation linéaire (section 5.2.4) : 3

 (4.145) =   La section 5.2 présente des exemples illustratifs pour des problèmes linéaires.

4.6 Lagrangien augmenté Les méthodes de lagrangien augmenté sont des méthodes duales appliquant une pénalisation quadratique aux contraintes. Le principe est de résoudre le problème dual en actualisant les multiplicateurs et la pénalisation après chaque minimisation du lagrangien par rapport aux variables primales. On se ramène ainsi à une suite de problèmes sans contraintes. L’intérêt de ces méthodes est que la solution exacte peut être obtenue sans augmentation excessive de la pénalisation.

4.6.1 Problème dual Pour le problème d’optimisation sous forme standard :

c (x) = 0 minn f (x) sous  E x cI (x)  0

(4.146)

le problème dual consiste à maximiser la fonction duale  :

L(x,λ,μ)  (λ,μ) = min xD max (λ,μ) avec  T T λ ,μ 0  L(x,λ,μ) = f(x) + λ cE (x) + μ cI (x)

(4.147)

La fonction duale est définie sur le domaine D = λ,μ  0 / (λ,μ)  − . En regroupant les contraintes et les multiplicateurs :

c   c= E , =  def c def     I

(4.148)

le problème dual (4.147) se met sous la forme :

 L(x,) , D =  / ()  −  () = min xD max () avec  T   L(x,) = f (x) +  c(x)

(4.149)

368

Techniques d’optimisation

Calculons d’abord le gradient et le hessien de la fonction duale . La valeur de x minimisant le lagrangien L(x, ) pour  fixé est notée x L () et vérifie :

x L xL (), = 0 , 

(4.150)

En dérivant par rapport à  :

d dx x L  xL (),  = L 2xx L(xL , ) + 2x L(xL , ) d d dxL 2 = xx L(xL , ) + c(xL )T d

(4.151)

on obtient la dérivée de x L () : −1 dxL (4.152) = −c(xL )T 2xx L(xL ,) d Cherchons maintenant le maximum de la fonction duale  qui s’exprime comme :

(

)

() = min L(x,) = L  xL (),  

(4.153)

x

En dérivant  avec (4.150) et (4.152), on obtient le gradient et le hessien : dxL   = d x L(xL , ) +  L(xL , ) =  L(xL , ) = c(xL )  −1 dx 2 = L c(xL ) = −c(xL )T 2xx L(xL , ) c(xL ) d 

(

)

(4.154)

Les méthodes duales consistent à résoudre le problème (4.149) qui est une simple maximisation sans contraintes. Elles utilisent le gradient et le hessien ci-dessus. La méthode d’Uzawa consiste à maximiser  par une méthode de gradient simple avec un pas s à régler. Les itérations sur  sont de la forme :

k+1 = k + s(k ) = k + sc  xL (k )

(4.155)

Le pas s est fixé pour éviter une recherche linéaire coûteuse. En effet, chaque essai de pas s nécessite une minimisation du lagrangien (4.153) pour évaluer la valeur de . Avec un pas fixé, l’itération en  (4.155) est immédiate, mais la convergence de cette méthode de plus forte pente est généralement lente (section 3.5.2). Une amélioration consiste à effectuer une itération de Newton pour définir k+1.

(

k +1 = k − 2(k )

)

−1

(k )

(4.156)

2 2 Le calcul de   (4.154) utilise le hessien du lagrangien xx L(xL , ) ou une

Optimisation avec contraintes

369

approximation de celui-ci. Cette approximation est disponible si la minimisation par rapport à x (4.153) est réalisée par une méthode de quasi-Newton. Après une modification éventuelle pour rendre la matrice  2 négative (pour maximiser ), on applique l’itération de Newton avec un pas s.

(

−1

)

−1 (4.157) k +1 = k + s c(xL )T 2xx L(xL , ) c(xL )  c(xL )   Le pas s est à régler par une condition d’Armijo pour que la solution s’améliore. L’amélioration est mesurée par fonction mérite ou par filtre (section 4.1.3).

L’exemple suivant compare le déroulement des méthodes d’Uzawa et de Newton.

Exemple 4-11 : Méthodes d’Uzawa et de Newton On considère le problème d’optimisation de l’Exemple 4-10 :

min f (x) = x1 + x2 sous c(x) = x12 + ( x2 − 1) − 2 = 0 2

x

(

)

Le lagrangien L(x, ) = x1 + x2 +  x12 + ( x2 − 1) − 2 a son minimum en : 2

1  1  xL (λ) =  − ,− + 1 2   2 ce qui donne la fonction duale :

(λ) = min L(x,λ) = L[xL (λ),λ] = 1 − 2 − x

1 . 2

1 1 − 2 , 2() = − 3 . 2 2   −1 1 La solution du problème dual est : max ()  * = → x* =   .  2 0 La solution identique à la solution primale est donc un point-selle (section 1.4.2). Le gradient et le hessien sont :

() =

Appliquons les méthodes d’Uzawa et de Newton à la résolution du problème.  1  • L’itération d’Uzawa est définie par : k +1 = k + s  2 − 2  .  2k 

 1  L’itération de Newton est définie par : k +1 = k + s3k  2 − 2  .  2k  Examinons d’abord le comportement de la méthode d’Uzawa selon la valeur du pas s = 0,1 ou 0,2. Le Tableau 4-9 page suivante montre les itérations pour ces deux valeurs. La solution est atteinte dans les deux cas, mais avec des oscillations dans le deuxième cas. Il serait alors préférable de réduire le pas pour converger plus rapidement. •

370

Techniques d’optimisation

Méthode d’Uzawa avec s = 0,1 Itér 1 2 3 4 5 6 7 8 9 10 11 12

x1 -0,10000 -0,50000 -0,58824 -0,69521 -0,81186 -0,91292 -0,97205 -0,99334 -0,99861 -0,99972 -0,99994 -0,99999

x2 1,00000 0,50000 0,41176 0,30479 0,18814 0,08708 0,02795 0,00666 0,00139 0,00028 5,63E-05 1,13E-05

 1,00000 0,85000 0,71920 0,61587 0,54769 0,51438 0,50335 0,50070 0,50014 0,50003 0,50001 0,50000

s 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1

Méthode d’Uzawa avec s = 0,2 Itér 1 2 3 4 5 6 7 8 9 10 11 12

x1 -0,10000 -0,50000 -0,71429 -0,99190 -1,00476 -0,99711 -1,00172 -0,99896 -1,00062 -0,99963 -1,00022 -0,99987

x2 1,00000 0,50000 0,28571 0,00810 -0,00476 0,00289 -0,00172 0,00104 -0,00062 0,00037 -2,24E-04 1,34E-04

 1,00000 0,70000 0,50408 0,49763 0,50145 0,49914 0,50052 0,49969 0,50019 0,49989 0,50007 0,49996

s 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2 0,2

Tableau 4-9 : Effet du pas sur la méthode d’Uzawa On compare ensuite la méthode d’Uzawa avec s = 0,1 et la méthode de Newton avec un pas initial s = 1 réglé par une condition d’Armijo (avec réduction d’un facteur 2 à chaque essai). Le Tableau 4-10 montre les itérations de chaque méthode. La méthode de Newton est plus rapide et précise. La valeur du pas s fixé pour la méthode d’Uzawa ralentit la convergence. Méthode d’Uzawa Itér 1 2 3 4 5 6 7 8 9 10

x1 -0,10000 -0,50000 -0,58824 -0,69521 -0,81186 -0,91292 -0,97205 -0,99334 -0,99861 -0,99972

x2 1,00000 0,50000 0,41176 0,30479 0,18814 0,08708 0,02795 0,00666 0,00139 0,00028

 1,00000 0,85000 0,71920 0,61587 0,54769 0,51438 0,50335 0,50070 0,50014 0,50003

Méthode de Newton s 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1 0,1

Itér 1 2 3 4 5 6 7 8

x1 -0,10000 -0,50000 -0,80000 -0,93091 -1,00854 -1,00011 -1,00000 -1,00000

x2 1,00000 0,50000 0,20000 0,06909 -0,00854 -0,00011 -1,72E-08 0,00E+00

Tableau 4-10 : Itération d’Uzawa et de Newton

 1,00000 0,62500 0,53711 0,49577 0,49995 0,50000 0,50000 0,50000

s 0,25 0,50 1,00 1,00 1,00 1,00 1,00 1,00

Optimisation avec contraintes

371

Les méthodes d’Uzawa et de Newton ne tiennent pas compte des aspects suivants : - on ne connaît pas à l’avance le domaine de définition D de la fonction duale ; - s’il n’existe pas de point-selle, la solution duale peut être différente de la solution primale (Théorème 1-7 et Exemple 1-10). Lorsque les multiplicateurs ne sont pas dans le domaine D, le lagrangien n’a pas de minimum. Il n’existe pas moyen de détecter cette situation lors des itérations d’Uzawa (4.155) ou de Newton (4.157), ce qui rend ces méthodes peu robustes.

4.6.2 Problème dual augmenté Les difficultés liées au domaine de définition de la fonction duale peuvent être évitées en introduisant une pénalisation quadratique. Considérons d’abord un problème avec m contraintes égalité. Le traitement des contraintes inégalité fait l’objet de la section 4.6.3.

min f (x) sous c(x) = 0

(4.158)

x

Son lagrangien s’exprime avec des multiplicateurs  

m

. (4.159)

L(x, ) = f (x) + Tc(x) Notons (x* ; *) une solution des conditions KKT d’ordre 1 et 2.

 x L(x*, *) = f (x*) + c(x*)* = 0  T 2 n , d  0 tel que c(x*)d = 0 d  xx L(x*, *)d  0 , d 

(4.160)

Le problème augmenté est défini à partir de (4.158) en ajoutant une pénalisation quadratique à la fonction coût. Les contraintes égalité restent présentes.

1 2 (4.161) min f (x) = f (x) +  c(x) 2 sous c(x) = 0 x 2 Le lagrangien de ce problème est noté L et s’appelle le lagrangien augmenté. En gardant la notation  

m

pour les multiplicateurs, il s’exprime comme :

1 2 L (x, ) = f (x) + Tc(x) = L(x, ) +  c(x) 2 2 Calculons le gradient et le hessien de L par rapport aux variables x.

x L (x, ) = x L(x, ) + c(x)c(x)

(4.162)

(4.163)

372

Techniques d’optimisation

Pour calculer le hessien, on écrit explicitement la somme sur les m contraintes. m

 x L (x, ) =  x L(x, ) +  c j (x)c j (x)

(4.164)

j=1

On obtient en dérivant par rapport à x : m

m

j=1

j=1 m

 2xx L (x, ) =  2xx L(x, ) +  c j (x)c j (x) T +  c j (x) 2c j (x) 2 xx

=  L(x, ) + c(x)c(x)

T

+  c j (x) c j (x) 2

(4.165)

j=1

En un point admissible : c(x) = 0 , le gradient et le hessien se simplifient en :  x L (x, ) =  x L(x, )  2 2 T  xx L (x, ) =  xx L(x, ) + c(x)c(x)

(4.166)

Ces formules s’appliquent en particulier à la solution x* du problème (4.158). Elles sont utilisées pour démontrer la propriété suivante.

Propriété 4-8 : Point-selle du problème augmenté Pour  assez grand, la solution des conditions KKT du problème (4.158) est un point-selle du problème augmenté (4.161).

Démonstration Il faut montrer que le point (x* ; *) solution des conditions KKT du problème (4.161) réalise : max L (x*, ) = L (x*, *) = min L (x, *) . 

x

L’égalité de gauche se déduit de (4.162) : L (x*, ) = f (x*) ne dépend pas de . Pour l’égalité de droite, on doit vérifier que x* est un minimum de L (x, *) . x L (x*, *) = 0 Les conditions de minimum à vérifier sont :  2 . xx L (x*, *)  0 La condition sur le gradient est vérifiée en utilisant (4.166) et (4.160). x L (x*, *) = x L(x*, *) = 0 .

Il reste à montrer que la condition sur le hessien est vérifiée pour  assez grand.

Optimisation avec contraintes

373

Supposons par l’absurde que pour tout entier k, il existe une valeur k  k telle que la matrice 2xx Lk (x*, *) ne soit pas définie positive. On peut alors trouver un vecteur unitaire dk tel que : dTk 2xx Lk (x*, *)dk  0 . En remplaçant dans (4.166), on obtient l’inégalité notée (I) : 2

dTk 2xx L(x*, *)dk + k c(x*)dk  0 (inégalité I) Les vecteurs dk appartiennent à la sphère unité qui est compacte. La suite (dk ) admet un point d’accumulation d sur la sphère unité : d = 1 . Écrivons l’inégalité (I) comme : c(x*)dk

2

−

1 T 2 dk xx L(x*, *)dk k

c(x*)d  lim −

et passons à la limite k →  :

k →

1 T 2 dk xx L(x*, *)dk = 0 k

Cette limite vaut 0, car k →  et le numérateur est borné pour dk = 1 . Le vecteur d appartient à l’espace tangent aux contraintes en x* : c(x*)d = 0 . T 2 Ce vecteur non nul vérifie donc la condition KKT 2 (4.160) : d xx L(x*, *)d  0

Par ailleurs, l’inégalité (I) donne :

2

dTk 2xx L(x*, *)dk  − k c(x*)dk  0

T 2 soit en passant à la limite k →  : d xx L(x*, *)d  0

2 On arrive à une contradiction. L’hypothèse xx L(x*, *) non définie positive est 2 donc fausse. Pour  assez grand xx L(x*, *) est définie positive. Le point x* est

alors un minimum de L (x, *) et les conditions de point-selle sont satisfaites.

La pénalisation quadratique crée un point-selle n’existant pas nécessairement dans le problème d’origine et ce point-selle coïncide avec la solution KKT lorsque la pénalisation est assez grande. L’exemple suivant illustre cette propriété.

Exemple 4-12 : Création d’un point-selle par pénalisation On considère le problème : minf (x) = −x1x2 Le lagrangien est :

x

sous c(x) = x1 + x2 −1 = 0 .

L(x, ) = f (x) + c(x) = −x1x 2 + (x1 + x 2 −1) . 1 1 1 La solution des conditions KKT est : * = , x1* = x 2 * = → L(x*, *) = − . 2 2 4 Examinons le problème dual « brut », puis le problème dual pénalisé.

374

Techniques d’optimisation

Problème dual « brut » La fonction duale (λ) = min L(x,λ) n’est définie pour aucune valeur de λ . x

En effet, en prenant x1 = − , on a L(x, ) = 2x 2 −  2 −  qui n’est pas minoré. Ce problème n’admet pas de point-selle et la méthode d’Uzawa est inapplicable. Problème dual pénalisé Appliquons maintenant une pénalisation quadratique sur la fonction coût. Le problème pénalisé est : 1 min fp (x) = −x1x2 + (x1 + x2 − 1)2 sous c(x) = x1 + x2 − 1 = 0 x 2 Le lagrangien augmenté est le lagrangien de ce problème pénalisé. 1 L (x, ) = f (x) + c(x) = −x1x 2 + (x1 + x 2 − 1) 2 + (x1 + x 2 − 1) 2 Cherchons le domaine de définition de la fonction duale :  (λ) = min L (x,λ) . Le lagrangien L (x,λ) admet un minimum si :

x

le gradient est nul : −  −  x 2 +  ( x1 + x 2 − 1) +  = 0  x L = 0    x1 (  ) = x 2 (  ) = 1 − 2 − x1 +  ( x1 + x 2 − 1) +  = 0  − 1   • le hessien est positif :  2xx L  0   0   −1  



1 = 1 1 Les valeurs propres du hessien :  sont positives si   . 2 2 = 2 − 1 1 Si   , la fonction duale est définie pour tout  , et a pour expression : 2 2

2

  −   1  2 − 1  2 − 1   ( ) = −   +   + 1 − 2  1 − 2  2  1 − 2  Résolvons alors le problème dual : max  () . Le maximum est obtenu pour : 

d  () = 0  − 2( − ) + 2(2 − 1) + (1 − 2)(4 − 1) = 0 d 1 1 1 ce qui donne la solution : * =   (*) = − et x1 (*) = x 2 (*) = 2 4 2 qui est identique à la solution KKT donnée au début de l’exemple. 1 Le saut de dualité est nul :  (*) = − = L(x*, *) . 4

Optimisation avec contraintes

375

Le problème pénalisé admet donc un point-selle correspondant à la solution KKT, ce qui permet d’appliquer une méthode duale. Le point-selle est créé par la pénalisation quadratique qui rend le problème convexe, dès lors que   0,5 . Une méthode duale appliquée au problème pénalisé permet ainsi de trouver la solution exacte sans augmenter indéfiniment la pénalisation.

Le lagrangien augmenté a son minimum en x* lorsque le multiplicateur vaut  * et si la pénalisation est assez grande. En pratique, les valeurs de  * et de la pénalisation minimale ne sont pas connues à l’avance. En minimisant le lagrangien augmenté pour un multiplicateur  =  * +  et une pénalisation  , on obtient une solution x = x* + x vérifiant la condition de minimum :

x L (x* + x,  * + ) = 0

(4.167)

Effectuons un développement à l’ordre 1 à partir de la formule (4.163) et en utilisant les relations vérifiées par la solution KKT : x L(x*, *) = 0 et c(x*) = 0.

 x L (x* + x,  * + ) =  x L(x* + x,  * + ) + c(x* + x)c(x* + x)  x L(x* + x,  * + )   2xx L(x*, *)x +  2x L(x*, *) (4.168)  avec  =  2xx L(x*, *)x + c(x*) c(x* + x)c(x* + x)  c(x*)c(x*) T x  En reportant dans (4.167) et en divisant par  , on obtient la relation : 1 2 1 T    xx L(x*, *) + c(x*)c(x*)  x = −  c(x*)  

(4.169)

Cette relation suggère deux manières de réduire l’écart x à la solution : diminuer  ou augmenter  . Ces deux approches sont combinées dans l’algorithme présenté en section 4.6.4. L’amélioration du multiplicateur est à privilégier pour éviter d’augmenter la pénalisation et de dégrader le conditionnement du problème.

4.6.3 Contraintes inégalité Les contraintes inégalité sont prises en compte en reformulant le problème (4.146) avec q variables d’écart s positives associées aux q contraintes inégalité :

c (x) = 0 min f (x) sous  E x,s0 cI (x) + s = 0

(4.170)

376

Techniques d’optimisation

En regroupant les contraintes en un seul vecteur de dimension m :

 c (x)  c(x,s) =  E   cI (x) + s  le problème se met sous la forme : min f (x) sous c(x,s) = 0 x,s0

(4.171)

(4.172)

Ce problème est analogue au problème (4.158) à la différence que les variables s doivent être positives. En notant (E , I ) les multiplicateurs respectifs des contraintes (cE ,cI + s) , le lagrangien augmenté s’exprime comme :

1 1 2 2 L (x,s, ) = f (x) +  cE (x) 2 + TEcE (x) +  cI (x) + s 2 +  TI c I (x) + s  (4.173) 2 2 Deux approches sont envisageables pour minimiser le lagrangien augmenté. La première approche consiste à calculer explicitement les variables s. En effet, le lagrangien (4.173) est une fonction quadratique de s et on peut déterminer explicitement les valeurs de s minimisant L (x,s, ) pour x fixé.

1 2 min L (x,s, )  min  cI (x) + s 2 +  TI c I (x) + s  s 0 s 0 2 Le minimum est obtenu pour :    s = max 0 , − c I (x) − I   

(4.174)

(4.175)

   En remplaçant dans (4.173) avec la notation : c +I (x) = max c I (x) , − I  , on   obtient une fonction de x (notée F ) dont on cherche le minimum par rapport à x. 2 1 1 2 min F (x, ) = f (x) +  cE (x) 2 +  TEcE (x) +  cI+ (x) +  TI c I+ (x) (4.176) 2 x 2 2 Cette fonction n’est pas dérivable si cI (x) = −I , ce qui pose des difficultés.

Une deuxième approche consiste à effectuer une recherche linéaire suivant une direction projetée pour ne pas sortir du domaine s  0 . Notons (d x ,ds ) les composantes de la direction de descente au point (x; s) .

Optimisation avec contraintes

377

La composante d x peut venir d’une méthode de quasi-Newton et la composante d s peut être le gradient de L (4.173) : ds = −s L = − cI (x) + s +  I  . Un déplacement d’un pas  suivant la direction (d x ,ds ) conduit au point :  x ' = x + d x s ' = s + d s 

(4.177)

Supposons que la composante d s,1 est négative. Le pas maximal associé pour rester dans le domaine s  0 est : 1 = −

s1 . d s,1

Supposons également que la composante d s,1 donne le plus petit pas parmi toutes les composantes négatives de d s . On va alors annuler la composante d s,1 pour des pas   1 de façon à rester sur la borne s1 = 0 . Le même processus est appliqué à chaque composante négative de d s en les traitant dans l’ordre croissant des pas

 j . Pour les composantes positives de d s , le pas n’est pas borné (  j =  ).

La direction de recherche linéaire est ainsi définie par intervalles fonction de  . d s = ( d s,1 ds = ( 0

ds = ( 0 ds = ( 0

d s,2

d s,3

d s,q −1

d s,2

d s,3

d s,q −1

0

d s,3

d s,q −1

0

0

0

d s,q ) si 0    1

d s,q ) si 1     2

d s,q ) si  2    3

(4.178)

d s,q ) si  q −1     q

Les valeurs s1 ,s2 , s’annulent en même temps que les composantes ds1,ds2 , à chaque changement d’intervalle. Cette direction projetée permet d’effectuer la recherche linéaire en restant dans le domaine s  0 , et en cherchant un pas vérifiant par exemple une condition d’Armijo.

4.6.4 Algorithme Chaque itération comporte une minimisation du lagrangien augmenté par rapport à x, puis l’actualisation des multiplicateurs  ou de la pénalisation  . La minimisation est réalisée par recherche linéaire ou par région de confiance en estimant le hessien du lagrangien augmenté par méthode de quasi-Newton. Cette minimisation n’a pas besoin d’être précise pendant les premières itérations. Notons (x k ; k ) les valeurs des variables et multiplicateurs à l’itération k avec une valeur de pénalisation k .

378

Techniques d’optimisation

En comparant la condition de minimum du lagrangien augmenté (4.162) et la condition KKT (4.160) du problème initial :  x L (x k ,  k ) = 0  f (x k ) + c(x k )  k + k c(x k )  = 0  x L(x*, *) = 0  f (x*) + c(x*)  * =0

(4.179)

on déduit une stratégie simple de mise à jour des multiplicateurs : (4.180)

k+1 = k + k c(x k )

Le choix d’actualiser les multiplicateurs  dépend de la valeur des contraintes. Si les contraintes sont mal respectées, il est préférable d’augmenter la multiplication. En pratique, on fixe à chaque itération un seuil de précision k sur la minimisation du lagrangien et un seuil de tolérance k sur le respect des contraintes. La minimisation du lagrangien est réalisée jusqu’au critère d’arrêt :

 x L (x k ,  k )   k

(4.181)

Si les contraintes sont respectées avec la tolérance demandée, on actualise les multiplicateurs et on réduit les seuils sans modifier la pénalisation. c(x k )  k

 k +1   →  k +1   k +1  k +1

=  k + k c(x k ) = k =  k / k +1 = k / (k +1 )0,9

(4.182)

Sinon on augmente la pénalisation et les seuils sans modifier les multiplicateurs. c(x k )  k

 k +1   →  k +1   k +1  k +1

= k = 10 k = 1/ k +1 = 1/ (k +1 )0,1

(4.183)

Les coefficients de réglages ci-dessus sont ceux du logiciel Lancelot. Les itérations s’arrêtent lorsque les seuils sur les contraintes et le gradient atteignent des valeurs suffisamment petites. L’exemple suivant illustre le déroulement d’un algorithme de lagrangien augmenté. Exemple 4-13 : Algorithme de lagrangien augmenté On considère le problème d’optimisation (présenté dans [R3]) : min f ( x) = 2(x12 + x 22 − 1) − x1 sous c(x) = x12 + x 22 − 1 = 0 x

La solution est : x1 = 1 , x 2 = 0 ,  = −1,5 .

Optimisation avec contraintes

379

Le Tableau 4-11 montre les itérations de l’algorithme de lagrangien augmenté en partant du point initial : x1 = 0,5 , x 2 = 1,3 ,  = 0 . On observe les augmentations de la pénalisation (avec un facteur 10), la convergence vers 0 de la contrainte et de la norme du lagrangien et le nombre d’itérations pour la minimisation en x.

Itér

x1

x2





c(x)

L (x, )

Newton

1 2 3 4 5 6 7 8 9

0,50000 0,40707 0,73467 0,91556 0,98869 0,99953 0,99905 0,99995 1,00000

1,30000 0,34917 0,63433 0,39077 0,16985 0,04158 -0,00320 0,00171 0,00045

0,00000 -0,71238 -1,29122 -1,38175 -1,38175 -1,30283 -1,49103 -1,50003 -1,50003

1 10 10 10 100 100 100 100 100

-0,71238 -0,05788 -0,00905 0,00635 0,00188 -0,00188 -0,00009 2,06E-06 1,85E-06

0,90050 0,90016 0,50091 0,41807 0,62061 0,01728 0,00172 0,00057 0,00031

1 1 2 2 2 2 1 3

Tableau 4-11 : Itérations du lagrangien augmenté La Figure 4-15 montre les itérations dans le plan (x 1 , x2) avec un zoom à droite sur la convergence finale. La ligne de niveau zéro de la contrainte est le cercle en trait plein. Les lignes de niveau de la fonction coût sont les cercles en pointillés. On observe une première phase de convergence vers la contrainte, suivie d’une progression le long de la ligne de niveau zéro jusqu’à l’optimum en (1 ; 0).

Figure 4-15 : Itérations du lagrangien augmenté

380

Techniques d’optimisation

À titre de comparaison, on applique l’algorithme SQP au même problème en partant du même point initial. Le Tableau 4-12 et la Figure 4-16 montrent les itérations des deux algorithmes. On observe que l’algorithme SQP tente moins de respecter la contrainte lors des premières itérations et parvient de ce fait plus rapidement à la solution.

SQP Itér 1 2 3 4 5 6 7 8 9

x1 0,50000 0,59665 1,12042 1,18366 1,03482 1,00084 1,00000

x2 1,30000 0,90129 0,46118 -0,19988 0,02190 -0,00103 0,00000

Lagrangien augmenté  0,00000 -1,38660 -1,70047 -1,57065 -1,52359 -1,50118 -1,50000

x1 0,50000 0,40707 0,73467 0,91556 0,98869 0,99953 0,99905 0,99995 1,00000

x2 1,30000 0,34917 0,63433 0,39077 0,16985 0,04158 -0,00320 0,00171 0,00045

 0,00000 -0,71238 -1,29122 -1,38175 -1,38175 -1,30283 -1,49103 -1,50003 -1,50003

Tableau 4-12 : Comparaison SQP - Lagrangien augmenté

Figure 4-16 : Comparaison SQP - Lagrangien augmenté

Optimisation avec contraintes

381

4.7 Conclusion 4.7.1 Les points essentiels •

Une fonction mérite ou un filtre servent à comparer des solutions en tenant compte de la minimisation de la fonction coût et du respect des contraintes.



Les méthodes de contraintes actives sélectionnent à chaque itération les inégalités saturées et les traitent comme des égalités.



Les méthodes de pénalisation se ramènent à un problème sans contraintes dont la solution approche (pénalisation quadratique) ou coïncide (pénalisation en norme 1) avec la solution exacte si la pénalisation est suffisamment grande.



Les méthodes d’optimisation sous contraintes abordent le problème sous sa formulation primale (gradient réduit), primale-duale (séquentiel quadratique, point intérieur) ou duale (lagrangien augmenté).



La méthode du gradient réduit a l’intérêt de ne produire que des itérations admissibles. Les méthodes SQP et de point intérieur sont plus rapides et s’adaptent bien aux problèmes de grande taille. Les méthodes de lagrangien augmenté permettent de se ramener à une suite de problèmes sans contraintes.

4.7.2 Pour aller plus loin •

Programmation mathématique (M. Minoux, Lavoisier 2008, 2 e édition) Le chapitre 5 présente la méthode du gradient projeté / réduit et la méthode SQP. Le chapitre 6 présente les méthodes de pénalisation et de lagrangien augmenté. Des résultats théoriques sont donnés sur la convergence des algorithmes.



Introduction à l’optimisation différentiable (M. polytechniques et universitaires normandes 2006)

Bierlaire,

Presses

La méthode du gradient projeté est présentée au chapitre 18. Les méthodes de point intérieurs sont présentées au chapitre 19 dans le cas de problèmes linéaires. Le chapitre 20 présente les méthodes de lagrangien augmenté. Le chapitre 21 présente la méthode SQP. De nombreux exemples détaillés illustrent le fonctionnement des algorithmes. •

Numerical optimization (J. Nocedal, S.J. Wright, Springer 2006) Ce livre est l’un des plus complets concernant la programmation non linéaire. Il détaille de nombreuses options algorithmiques avec des conseils pratiques

382

Techniques d’optimisation

d’implémentation et de réglages. Les logiciels disponibles sont passés en revue avec leurs forces et leurs faiblesses et les perspectives d’évolution des différentes méthodes sont discutées. On y trouvera la programmation quadratique au chapitre 16, les méthodes de pénalisation et de lagrangien augmenté au chapitre 17, les méthodes SQP au chapitre 18 et les méthodes de point intérieur au chapitre 19. •

Practical optimization (P.E. Gill, W. Murray, M.H. Wright, Elsevier 2004) Le chapitre 6 est consacré aux méthodes de programmation non linéaire : pénalisation (section 6.2), gradient projeté et gradient réduit (section 6.3), lagrangien augmenté (section 6.4), programmation quadratique séquentielle (section 6.5). Le chapitre 21 présente la méthode SQP. De nombreux conseils pratiques sont donnés aux chapitres 7 et 8 concernant l’implémentation des algorithmes et les difficultés numériques pouvant entraver la convergence.

Programmation linéaire

383

5. Programmation linéaire La programmation linéaire concerne les problèmes à fonction coût et contraintes linéaires. Ces problèmes sont d’une très grande importance pratique, ce qui justifie le développement d’algorithmes spécifiques. La section 1 présente la méthode du simplexe. L’étude théorique d’un problème linéaire montre que la solution comporte un nombre minimal de variables nulles. L’algorithme du simplexe exploite cette propriété pour effectuer une recherche ordonnée parmi toutes les combinaisons possibles. La solution est trouvée après un nombre fini d’essais, généralement très inférieur au nombre de combinaisons possibles. Bien que le nombre d’essais puisse devenir exponentiel dans les pires cas, la méthode du simplexe s’avère extrêmement performante sur la majorité des applications, même à grands nombres de variables. La méthode du simplexe dual est basée sur le même algorithme appliqué au problème linéaire dual. Son intérêt est de pouvoir repartir d’une solution connue lorsque le problème est modifié par l’ajout d’une contrainte. La méthode du simplexe complémentaire est une adaptation permettant de résoudre des problèmes quadratiques linéaires convexes. La section 2 présente les méthodes de point intérieur. Contrairement à la méthode du simplexe qui recherche la solution directement en bordure du domaine admissible, ces méthodes cherchent à approcher la solution continument par l’intérieur du domaine. Leur principe est de résoudre les conditions d’optimalité de Karush, Kuhn et Tucker par une méthode de Newton en veillant à chaque itération à ne pas trop s’approcher du bord du domaine admissible. Ces méthodes sont plus complexes à régler que la méthode du simplexe, mais elles s’avèrent compétitives sur les problèmes de grandes tailles et présentent une complexité polynomiale (alors que le simplexe présente une complexité exponentielle dans les cas pires).

384

Techniques d’optimisation

5.1 Simplexe La méthode du simplexe est spécifique aux problèmes de programmation linéaire. Cette méthode élaborée par G. Dantzig à la fin des années 1940 exploite les propriétés de la solution d’un problème linéaire pour réduire le domaine de recherche. Elle s’avère extrêmement efficace sur la plupart des applications. Les améliorations apportées depuis 1950 ont étendu son domaine d’application, en particulier aux problèmes de grandes tailles et à la programmation linéaire mixte.

5.1.1 Forme standard La forme standard d’un problème de programmation linéaire est la suivante :

minn z = cT x sous x



Ax = b x0

mn

avec A 

, b

m

, c

n

(5.1)

La fonction coût et les contraintes sont linéaires. Les variables x sont positives. Le nombre m de contraintes est inférieur au nombre n de variables et la matrice A est supposée de rang plein : rang(A) = m  n . Ces hypothèses assurent l’existence de solutions admissibles. Le problème (5.1) est désigné par (PL). Tout problème de programmation linéaire peut se mettre sous la forme standard (5.1) grâce aux transformations suivantes. •

Une contrainte inégalité est transformée en égalité en introduisant une variable d’écart positive.

 T  aT x + x ' = b a 1 a x  b     x '  0 x '  0  T



(

x

) x ' = b  

Une borne inférieure x l (lower bound) est traitée par changement de variable, une borne supérieure x u (upper bound) est traitée en introduisant une variable d’écart positive.

x  0  x  = x − xl , xl  x  x u  0  x − xl  x u − x l    x   x u − xl x  0  x  = x − xl ,    + = − x x '' x x , x ''  0 u l  •

(5.2)

(5.3)

Une variable libre s’exprime comme la différence de deux variables positives.

x

 x = x ''− x ' avec x '  0 , x''  0

(5.4)

Programmation linéaire

385

Exemple 5-1 : Mise sous forme standard d’un problème linéaire Considérons le problème linéaire (PL) : =5 − x1 + 3x2  min x1 + 2x2 + 3x3 sous  2x1 − x2 + 3x3  6 x1 ,x2 ,x3  x1  , x2  1, x3  4 Ce problème est mis sous forme standard en deux étapes. •



Traitement des bornes sur les variables  x1   x1 = x1 ''− x1 ' → x1 ', x1''  0   x  1  → x2 '  0  2  x2 ' = x2 − 1  x3  4  x3 ' = 4 − x3 → x3 '  0 Traitement des contraintes inégalité

2x1 − x2 + 3x3  6  2x1 − x2 + 3x3 − x2 '' = 6 → x2 ''  0 On obtient la forme standard (PL’) équivalente au problème initial (PL). = 2  x1 ' − x1 '' + 3x2 ' min x1 ''− x1 '+ 2x2 '− 3x3 '+ 14 sous  x1 ',x1'',x2'',x2 ',x3 ' − 2x ' + 2x '' − x ' − 3x ' − x '' = −5 1 1 2 3 2  Ce problème comporte 5 variables positives et 2 contraintes égalité.

Le domaine admissible défini par les contraintes linéaires du problème (PL) forme un polytope noté P dans n . Un polytope est la généralisation en dimension n d’un polygone (n = 2) ou d’un polyèdre (n = 3).



P = x

n



/ Ax = b, x  0

(5.5)

Le polytope P est un sous-espace de n de dimension n − m (n variables et m équations linéaires). On appelle sommet du polytope P tout point x du polytope qui ne peut s’exprimer comme une combinaison linéaire convexe de deux autres points de P. En termes géométriques, le point x ne se trouve sur aucun segment joignant deux points du polytope comme illustré page suivante sur la Figure 5-1 en dimension 2.

x sommet de P 



y  P,z  P , x  y + (1 − )z  , 0    1

(5.6)

Le calcul des sommets utilise la notion de base exposée dans la section suivante.

386

Techniques d’optimisation

Figure 5-1 : Sommets d’un polytope

La fonction coût z = cT x étant linéaire sur n , on devine qu’elle atteindra son minimum en un sommet. La Propriété 5-1 précise cette idée. Propriété 5-1 : Sommet optimal Si le problème (PL) admet une solution, alors il existe un sommet optimal.

Démonstration Supposons que le problème (PL) admet une solution de coût fini f*. Considérons l’ensemble Q des points du polytope P tels que : cT x = f * . Q est un sous-polytope de P défini par : Q = x  n / Ax = b , cT x = f * , x  0 .





Soit x* un sommet de Q ; x* est alors une solution du problème (PL). Supposons par l’absurde que x* n’est pas un sommet de P. Alors x* est combinaison linéaire convexe de 2 points y et z de P distincts de x* : x* = y + (1 − )z avec 0    1 (équation E) f* étant par hypothèse le minimum de la fonction coût sur P, on a : cT x*  cT y  cT y + (1 − )cT z  cT y  cT z  cT y car 0    1  T T T T T T T c x*  c z  c y + (1 − )c z  c z  c y  c z T T d’où l’on déduit : c y = c z . T

T

T

Puis en reportant dans l’équation E : c x* = c y = c z = f * . Les points y et z distincts de x* appartiennent donc à Q. Ils vérifient l’équation E, ce qui est en contradiction avec l’hypothèse initiale que x* est un sommet de Q. Par conséquent, x* (qui est une solution du problème PL) est un sommet de P.

Programmation linéaire

387

5.1.2 Base Une base de la matrice A  mn est une sous-matrice carrée B  mm inversible formée à partir de m colonnes de la matrice A. Une telle matrice existe, car la matrice A est supposée de rang plein égal à m. Moyennant une permutation des colonnes de A, on suppose que la matrice B est formée des m premières colonnes de A. Les n − m colonnes restantes forment la matrice hors-base notée N  m(n −m) . Le découpage de A en matrice de base B et hors-base N induit une partition des variables x  n en variables de base x B  m et variables hors-base x N  n −m comme illustré sur la Figure 5-2.

x  E T x =  B  xN 

Figure 5-2 : Matrice et variables de base et hors-base La matrice E  nn représente la permutation permettant de placer les colonnes de base en première position. Une permutation des colonnes j et k de la matrice A est obtenue en post-multipliant A par la matrice de permutation E jk  nn montrée sur la Figure 5-3. La matrice E est le produit de matrices de la forme Ejk.

Figure 5-3 : Matrice de permutation de colonnes

388

Techniques d’optimisation

Introduisons maintenant le concept de solution de base associée à la matrice B. Solution de base Les variables de base sont aussi appelées variables liées ou dépendantes et les variables hors base sont aussi appelées variables libres ou indépendantes. En effet, les contraintes égalité donnent la relation (la matrice B étant inversible) :

Ax = b  BxB + NxN = b  xB = B−1 (b − NxN )

(5.7)

On peut donc choisir arbitrairement les valeurs de x N et en déduire les valeurs de x B permettent de respecter les contraintes égalité. On appelle solution de base associée à B le point x obtenu en fixant x N = 0 , ce qui donne :

 B−1b  (5.8) E x =   0  Une base B est dite admissible ou réalisable si la solution de base associée respecte les contraintes x  0 du polytope P (5.5). T

B admissible  B−1b  0

(5.9)

La propriété suivante relie les solutions de base et les sommets du polytope.

Propriété 5-2 : Sommets et solutions de base x est un sommet du polytope P  x est une solution de base admissible.

Démonstration de l’implication 

 xB = B−1b  0  T E x = Soit x une solution de base admissible :   .  xN = 0  Supposons par l’absurde que x n’est pas un sommet de P. Alors x s’exprime comme une combinaison linéaire convexe de deux points y et z de P distincts de x : x =y + (1 − )z avec 0    1 .  x = yB + (1 − )zB Faisons apparaître les composantes de base et hors base :  B  xN =yN + (1 − )zN

Programmation linéaire

389

L’équation xN =yN + (1 − )zN = 0 avec x N = 0 (par hypothèse sur x) et yN ,zN  0 (car y, z P ) conduit à yN = zN = 0. L’équation Ay = b (car yP ) conduit à ByB + NyN = b  yB = B−1b car yN = 0. L’équation Az = b (car zP ) conduit à BzB + NzN = b  zB = B−1b car zN = 0.  B−1b  On obtient : y = z =   = x , ce qui contredit l’hypothèse (y et z distincts de x).  0  x est donc un sommet de P.

Démonstration de l’implication  Soit x un sommet de P comportant p composantes non nulles que l’on suppose T

n  1 p p+1  0 . être les p premières (moyennant une permutation) : E x =  x1 xp 0   Supposons par l’absurde que les p premières colonnes de A (notées A.1, ,A.p ) T

sont dépendantes. Il existe alors une combinaison linéaire avec des coefficients 1, , p non tous nuls tels que : 1A.1 + + p A.p = 0 . T

n  1 p p+1  T 0 . Formons le point x ' = x + d avec d défini par : E d =  1 p 0   Ax' = A(x +  d) = Ax +  Ad = b +  (  A + +  A ) = b. Ce point vérifie : 1 .1 p .p

Pour  petit, ce point vérifie aussi : x '  0 (car x1,

, xp sont strictement positifs). Le point x’ est donc un point du polytope. En choisissant un pas   0 , puis un pas   0 , on peut ainsi construire deux points y et z de P alignés avec x et de part et d’autre de x, ce qui est en contradiction avec l’hypothèse que x est un sommet. En conséquence, les colonnes A.1, ,A.p sont indépendantes et le nombre p de

composantes non nulles de x est inférieur à m (car les colonnes A.k sont de dimension m). On peut alors former une base B en complétant les p colonnes A.1, ,A.p par m − p colonnes choisies parmi les colonnes restantes de A (ceci est toujours possible, car la matrice A est de rang m). Le point x admissible (car x  P ) est alors une solution de base associée à B (car ses composantes hors-base sont nulles), ce qui achève la démonstration.

La Propriété 5-2 indique qu’au moins n − m composantes (correspondant aux variables hors-base) d’un sommet sont nulles. Si par ailleurs des variables de base sont nulles, la base est dite dégénérée.

390

Techniques d’optimisation

La relation sommet-base admissible n’est pas une bijection, car plusieurs bases admissibles peuvent définir le même sommet comme le montre l’exemple suivant.

Exemple 5-2 : Calcul des sommets d’un polytope (exemple présenté dans [R3]) Considérons le polytope P sous forme standard dans 4 1 1 P = ( x1 ,x2 ,x3 ,x4 ) / Ax = b, x  0 avec A =  1 −1 Afin de visualiser les sommets de P, on exprime x3 et x4





:

1 0 1  , b=  0 1  1 en fonction de x1 et x2 .

x + x + x = 1  x = 1 − x1 − x2 Ax = b   1 2 3   3 x − x + x = 1  1 2 4  x4 = 1 − x1 + x2 x  0 x + x  1 x0   3   1 2 x  0  x1 − x2  1  4 On définit ainsi un polytope réduit P’ dans

 x  P' =   1  /   x2 

2

.

 x1 + x2  1  x1  0  ,     x1 − x2  1  x2  0 

Ce polytope forme le triangle ABC représenté sur la Figure 5-4. Figure 5-4 : Polytope réduit dans R2 Le polytope P est la forme standard du polytope réduit P’. Grâce à la réduction dans 2 , on pourra visualiser les points (x1 ;x2 ) associés aux sommets du polytope P. Examinons maintenant toutes les bases de P. Choisir une base consiste à choisir deux colonnes indépendantes de la matrice A. Il y a au maximum 6 bases possibles. La solution de base associée est obtenue en fixant les 2 variables hors-base à 0 et en calculant les 2 variables de base pour respecter les contraintes égalité. La base est admissible si l’on obtient des variables de base positives. Le point est alors un sommet.

Programmation linéaire



391

Base associée à (x1 ;x2 )

1 1  −1  0,5 0,5  1 B =  , B =  , xB =   1 −1  0,5 −0,5  0 → base admissible (point B) •

1 xB =   0

→ x = (1 0 0 0 )

1 xB =   0

→ x = (1 0 0 0 )

T

Base associée à (x1 ;x4 )

1 0   1 0 −1 B =  , B = , 1 1   −1 1  → base admissible (point B) •

T

Base associée à (x1 ;x3 )

1 1  0 1  −1 B =  , B = , 1 0   1 −1 → base admissible (point B) •

→ x = (1 0 0 0 )

T

Base associée à (x2 ;x3 )

 1 1  −1  0 −1  −1 T B =  , B =  , xB =   → x = ( 0 −1 2 0 )  −1 0  1 1  2 → base non admissible (point D) •

Base associée à (x2 ;x4 )

 1 0  −1 1 0  1 B = xB =    , B = ,  −1 1  1 1   2 → base non admissible (point C) •

→ x = (0 1 0 2)

T

Base associée à (x3 ;x4 )

1 0 1 0 −1 B =  , B = , 0 1 0 1 → base admissible (point A)

 1 xB =    1

→ x = ( 0 0 1 1)

On obtient au total 5 bases réalisables : 1 pour le sommet A. 3 pour le sommet B. 1 pour le sommet C.

T

392

Techniques d’optimisation

La Propriété 5-1 établit qu’il existe au moins un sommet optimal et la Propriété 5-2 montre que l’on peut déterminer tous les sommets du polytope en parcourant m les Cn bases possibles. Cette énumération systématique permet de résoudre à coup sûr le problème (PL) comme dans l’exemple suivant présenté dans [R3]. Exemple 5-3 : Résolution par énumération systématique des bases Considérons le problème linéaire sous forme standard :  x1 + x2 + x3 = 1  min z = − x1 − 2x2 sous  x1 − x2 + x4 = 1 x1 ,x2 ,x3 ,x4  x1 , x2 , x3 , x4  0 Les contraintes (identiques à celle de l’Exemple 5-2) sont représentées par le   x   x + x  1  x1  0  ,  polytope P’ dans 2 : P' =   1  /  1 2 .   x2   x1 − x2  1  x2  0  La Figure 5-5 montre le polytope P’ et les lignes de niveau de la fonction coût. Le Tableau 5-1 montre l’énumération des 6 bases. La meilleure base correspond au sommet C.

Base x x1,x2 (1 0 0 0) → B x1,x3 (1 0 0 0) → B x1,x4 (1 0 0 0) → B

z −1 −1

−1 x2,x3 (0 −1 2 0) → D Non admissible x2,x4 (0 1 0 2) → C −2 x3,x4 (0 0 1 1) → A 0

Tableau 5-1 : Énumération des bases Figure 5-5 : Solution graphique

L’énumération systématique devient irréalisable dès que la dimension du problème augmente. Une méthode de recherche plus efficace consiste à progresser de sommet en sommet en choisissant des sommets de coût décroissant. Le déplacement entre sommets s’appuie sur la notion de direction de base.

Programmation linéaire

393

Direction de base Plaçons-nous en sommet x associé à la base admissible B.

 x   B−1b  ET x =  B  =  0  xN   0 

(5.10)

Un déplacement d  n à partir de x de composantes de base d B et hors-base d N est admissible si x + d appartient au polytope, ce qui conduit aux conditions :

dB = −B−1NdN A(x + d) = b Ad = 0  (5.11) x + dP     xB + dB  0 x+d 0 x+d 0 dN  0  Les composantes hors-base d N doivent être positives, car les variables hors-base x N sont nulles. Une composante d Nj  0 ferait sortir du polytope.





Choisissons les composantes hors-base d N toutes nulles sauf celle associée à la k-ième variable hors-base fixée à 1.

0   1 ET   =  0  dN  

k −1

k

k +1

0 1 0

T

n  0 

(5.12)

= ek

noté

ek désigne le k-ième vecteur de la base canonique de n . Les composantes de base d B sont calculées par (5.11) pour respecter Ad = 0 .

En notant A.k la k-ième colonne de la matrice AE et d j les composantes de d N (toutes nulles sauf dk ), on obtient : dB = − B−1NdN = − B−1



j hors base

A.jd j = −B−1A.k

(5.13)

On appelle k-ième direction de base en x la direction d k définie par (5.12-5.13).

 dkB   −B−1A.,k   1 E d =  k =   + ek =  dB1   dN   0  T k

m

m +1

dBm 0

k −1 k k +1

010

T

 0  n

(5.14)

Considérons le point x + sd k , où s  0 est un pas de déplacement suivant d k . La direction de base d k est dite admissible si le point x + sd k appartient au polytope pour s suffisamment petit. En d’autres termes, un déplacement petit suivant d k est possible sans sortir du polytope des contraintes. Il faut pour cela que les composantes de base restent positives.

x B + sdB  0

(5.15)

394

Techniques d’optimisation

Deux situations sont possibles, selon que la base est dégénérée ou non : - si la base est non dégénérée ( x B  0 ), on peut toujours trouver s petit vérifiant (5.15) et toutes les directions de base sont admissibles ; - si la base est dégénérée, les composantes de d B correspondant aux variables de

base nulles doivent être positives : x Bj = 0  dBj  0 . Il peut alors exister des directions de base non admissibles.

L’exemple suivant illustre la procédure de calcul des directions de base.

Exemple 5-4 : Calcul des directions de base (présenté dans [R3]) Reprenons le polytope P de l’Exemple 5-2 :

1 1 1 0  1 avec A =   , b=  1 −1 0 1   1 Pour calculer les directions de base en un sommet associé à une base B : - on fixe une composante de d N à 1 (variable numéro k) et les autres à 0 ;

P=

( x ,x ,x ,x ) / Ax = b, x  0 1

2

3

4

- on calcule d B par (5.13) : dB = −B−1A.k ; - si la base est dégénérée, on vérifie si la direction est admissible :

x Bj = 0  dBj  0.

Dans le cas du polytope P, il existe en chaque sommet 2 directions de base associées aux 2 variables hors-base. Examinons trois bases admissibles et leurs directions de base. •

La base admissible associée à (x2 ;x4 ) correspond au sommet C.

 1 0  −1 1 0  B =  , B = ,  −1 1  1 1 

1 xB =    2

→ x = (0 1 0 2)

La 1re direction de base d1 est associée à la variable hors-base x1. 1 0 1  −1  T 1 dB = −B−1A.1 = −    =   → d = (1 −1 0 −2 ) 1 1 1  −2  La base étant non-dégénérée, la direction d1 est admissible. La 2e direction de base d3 est associée à la variable hors-base x3. 1 0  1   −1 T 3 dB = −B−1A.3 = −    =   → d = ( 0 −1 1 −1) 1 1  0   −1 La base étant non-dégénérée, la direction d3 est admissible.

T

Programmation linéaire



395

La base admissible associée à (x1 ;x4 ) correspond au sommet B.

1 0   1 0 1 −1 B =  , B =  , xB =   1 1   −1 1  0

→ x = (1 0 0 0 )

T

La 1re direction de base d2 est associée à la variable hors-base x2.  1 0  1   −1 T 2 dB = −B−1A.2 = −    =   → d = ( −1 1 0 2 )  −1 1  −1  2  2 La base est dégénérée ( x4 = 0 ). On doit avoir : d4  0 , ce qui est bien le cas. La direction d2 est admissible.

La 2e direction de base d3 est associée à la variable hors-base x3.  1 0  1   −1 T dB = −B−1A.3 = −  → d3 = ( −1 0 1 1)   =    −1 1  0   1  3 La base est dégénérée ( x4 = 0 ). On doit avoir : d4  0 , ce qui est bien le cas. La direction d3 est admissible.



La base admissible associée à (x1 ;x2 ) correspond au sommet B.

1 1  −1  0,5 0,5  1 B =  , B =  , xB =   1 −1  0,5 −0,5  0

→ x = (1 0 0 0 )

T

La 1re direction de base d3 est associée à la variable hors-base x3.  0,5 0,5  1   −0,5  T 3 dB = −B−1A.3 = −    =   → d = ( −0,5 −0,5 1 0 )  0,5 −0,5  0   −0,5  3 La base est dégénérée ( x2 = 0 ). On doit avoir : d2  0 , ce qui n’est pas le cas. La direction d3 n’est pas admissible.

La 2e direction de base d4 est associée à la variable hors-base x4.  0,5 0,5  0   −0,5  T 4 dB = −B−1A.4 = −    =   → d = ( −0,5 0,5 0 1)  0,5 −0,5  1   0,5  4 La base est dégénérée ( x2 = 0 ). On doit avoir : d2  0 , ce qui est bien le cas. La direction d4 est admissible.

La Figure 5-6 page suivante montre les directions de base en chaque sommet. Les directions admissibles suivent les arêtes du polytope, alors que les directions non admissibles sortent du polytope.

396

Techniques d’optimisation

Figure 5-6 : Directions de base en (x2 ; x4), en (x1 ; x4) et en (x1 ; x2)

Les directions de base présentent la propriété suivante.

Propriété 5-3 : Directions admissibles Toute direction admissible à partir d’un sommet x s’exprime comme une combinaison linéaire des directions de base en x.

Démonstration Soit d 

n

une direction admissible de composantes de base dB et hors-base dN .

Notons j les composantes de dN dans la base canonique de

n

: dN =

d étant admissible, les composantes de dB sont : dB = − B−1NdN = B−1



j hors base



j hors base

 je j .

 jA.j .

 B−1A. j   d  En regroupant les composantes, on obtient : d =  B  =   j   + ej    dN  j hors base  0  qui est une combinaison linéaire des directions de base définies par (5.14).

Programmation linéaire

397

La résolution du problème linéaire (5.1) amène à évaluer une suite de solutions de base avec leurs directions de base associées. La mise du problème sous forme canonique permet de simplifier notablement cette suite de calculs. Forme canonique Reprenons le problème linéaire sous forme standard :

minn z = cT x sous x

mm

Soit une base B 



Ax = b x0

avec A 

mn

, b

m

, c

n

(5.16)

et le découpage en variables de base xB et hors-base xN :

Ax = BxB + NxN → T T T c x = cB xB + cN xN Les contraintes linéaires permettent d’éliminer les variables de base : x  AE = ( B N ) , x = E  B   xN 

(5.17)

Ax = b  BxB + NxN = b  xB = B−1 (b − NxN )

(5.18)

et conduisent à un problème à n − m variables et sans contraintes égalité :

x = B−1 (b − NxN )  0 minn−m z = cTBB−1b + (cTN − cTBB−1N)xN avec  B xNR  xN  0 Ce problème réduit est appelé forme canonique du problème (PL).

(5.19)

Pour simplifier sa formulation, on définit les termes b, z , cN .

min z = z + cNT xN

xN Rn −m xN 0

 b = B−1b  (5.20) avec xB = b − B−1NxN  0 et  z = cTB b  cNT = cTN − cTBB−1N 

Les inconnues du problème sous forme canonique sont les variables hors-base xN. On sait que la solution du problème est un sommet (Propriété 5-1) et que les sommets correspondent aux solutions de base définies par xN = 0 (Propriété 5-2). L’intérêt de la forme canonique (5.20) est de faire apparaître directement les grandeurs associées à la base B : - le vecteur b 

m

donne la valeur des variables de base xB ;

- le réel z donne la valeur de la fonction coût z ; - le vecteur cN 

n −m

appelé coût réduit indique si la solution est optimale.

398

Techniques d’optimisation

Propriété 5-4 : Coût réduit et optimalité Si les coûts réduits dans la base B sont positifs ou nuls, la solution de base associée à B est optimale.

Démonstration Appliquons un déplacement (dB ,dN ) sur la solution de base (xB , xN ) admissible. car xN = 0 dN  0  Le point (xB + dB ; xN + dN ) est admissible si : dB = −B−1NdN car A(x + d) = b . dBj  0 si xBj = 0  T

T

T

T

−1

T

T

La variation du coût est : z = c d = cBd B + c Nd N = −cBB Nd N + c Nd N = cN d N . Si cN  0 , aucun déplacement admissible (dN  0) ne peut faire décroître le coût.

T Le coût réduit cN est le gradient de la fonction coût réduite : z(x N ) = z + cN x N . Il devrait en toute rigueur être appelé gradient réduit.

On remarque que si l’on fait varier une seule composante hors-base (associée à la −1 variable x k ), alors la direction de déplacement (d B = −B Nd N , d N ) est la direction de base dk définie en (5.14). Les composantes du vecteur cN  sont donc les dérivées directionnelles suivant les n − m directions de base.

n −m

5.1.3 Pivotage Si le coût réduit associé à une variable hors-base x k est négatif, alors la base n’est pas optimale et la direction de base dk est une direction de descente. En se déplaçant dans cette direction : - les variables hors-base autres que x k restent nulles (et restent donc hors-base) ; - la variable x k prend une valeur positive non nulle (et entre donc dans la base) ; - les variables de base initialement positives sont modifiées selon dB .

Programmation linéaire

399

Le pivotage consiste à se déplacer le plus loin possible suivant la direction dk . Le déplacement est limité par les contraintes : x B  0 . Deux situations sont possibles : - si aucune composante de dB n’est négative, alors le déplacement n’est pas borné et le problème linéaire n’a pas de solution ; - sinon les variables x Bj pour lesquelles dBj  0 décroissent. Le déplacement est borné par la première variable de base s’annulant suivant la direction dk . Cette variable va sortir de la base pour être remplacée par la variable x k . Le pivotage amène à un sommet adjacent au sommet de départ. Les deux sommets adjacents sont liés par une arête du polytope dirigée suivant dk et leurs bases ne diffèrent que par une seule variable (x k ) . Examinons maintenant le choix de la variable entrante, le choix de la variable sortante et les formules de changement de base (appelée formules de pivotage). Choix de la variable entrante La première étape du pivotage consiste à choisir une variable hors-base qui va entrer dans la base. La variable entrant dans la base est à sélectionner parmi les variables de coût réduit négatif. Plusieurs critères de sélection sont possibles. •

Choisir la variable de coût réduit le plus négatif (1re règle de Dantzig), ce qui correspond à la direction de plus forte pente.



Choisir la variable de plus petit indice (règle de Bland, 1977), ce qui permet d’éviter un éventuel cyclage (boucle infinie) lorsque la base est dégénérée.



Choisir des bases dans l’ordre lexicographique croissant (d’après leurs numéros de colonnes) en cas de dégénérescence.



Choisir la variable produisant la plus forte diminution de coût après pivotage, ce qui nécessite d’évaluer toutes les possibilités.



Choisir la variable aléatoirement avec une probabilité proportionnelle au coût réduit.

Malgré le risque de cyclage en cas de dégénérescence, la 1 re règle de Dantzig est généralement la plus efficace. Ce n’est cependant pas toujours le cas.

400

Techniques d’optimisation

Considérons par exemple la Figure 5-7 avec un polytope dans 2 et la fonction coût définie par : z(x1,x 2 ) = −x 2 . Le sommet initial est en haut, la solution est l’ensemble du segment horizontal en bas (solution dégénérée). En partant vers la gauche, on suit la plus forte pente (1 re règle de Dantzig) et on réalise aussi une diminution plus importante de coût (règle 4 ci-dessus) qu’en partant vers la droite. Pourtant ce choix initial nécessitera 12 pivotages pour arriver à la solution, alors que 2 pivotages suffisent en partant vers la droite. Il est en fait impossible de déterminer à coup sûr le meilleur choix de pivotage.

Figure 5-7 : Suite de pivotages amenant à l’optimum

Choix de la variable sortante La deuxième étape du pivotage consiste à choisir la variable de base qui va sortir de la base. La variable entrante x e étant choisie, la variable sortante est la première qui s’annule suivant la direction de base associée d e . Ceci constitue la 2e règle de Dantzig.

Programmation linéaire

401

La forme canonique (5.20) exprime les variables de base en fonction des variables hors-base. En notant B−1N = (aij )iB, jN , on a : noté

xi = bi −  aij x j  0 , i  B

(5.21)

jN

Dans la direction de base d e (5.14), les variables hors-base restent toutes nulles à l’exception de x e qui devient positive. L’expression (5.21) se simplifie en : (5.22)

xi = bi − aie xe  0 , i  B

Notons sie la valeur maximale que peut prendre la variable x e tout en respectant la contrainte liée à la variable de base x i . • •

bi . aie Si aie  0 , alors : sie = + (déplacement non borné). Si aie  0 , alors : sie =

Le pas maximal réalisable dans la direction d e est alors : se = min sie = min iB

iB aie 0

bi . aie

La variable sortante x s est celle qui correspond au pas maximal se . Formules de pivotage Reprenons la forme canonique (5.20) dans la base B, en notant B−1N = (aij )iB, jN . noté

min z = z +  cjx j sous xi = bi −  aijx j  0 , i  B xN 0

jN

jN

(5.23)

Par abus de notation, B et N (matrices de base et hors-base) désignent également les ensembles d’indices de base et hors-base. Le pivotage échange une variable de base x s et une variable hors-base x e . Ce changement de base s’écrit comme :

B' = B − s + e N ' = N − e + s

(5.24)

Après pivotage, la forme canonique dans la nouvelle base B’ devient : min z = z '+  cj'x j sous xi = bi '−  aij'x j  0 , i  B' xN 0

jN '

jN '

(5.25)

Les formules de pivotage ci-après expriment les valeurs b ', a ', z ', cN ' dans la nouvelle base B’ en fonction des valeurs b, a , z , cN dans l’ancienne base B.

402



Techniques d’optimisation

Termes b ', a ' associés à la nouvelle variable de base x e

 b  be ' = s a se  1  i = e →  aes ' = → j=s ase  asj   aej ' = a → j  N − e se  •

Termes b ', a ' associés aux autres variables de base xi , i  B − s

 aie  bi ' = bi − bs ase  a  i  B − s →  ais ' = − ie → j=s a se  aie   aij ' = aij − a asj → j  N − e se  •

(5.26)

(5.27)

Termes z ', cN '

 b  z ' = z + ce s ase  ce  → j=s  cs ' = − ase  asj   cj ' = cj − ce a → j  N − e se 

(5.28)

Démonstration Formules (5.26) Partons de l’expression de la variable de base x s en fonction des variables horsbase initiales N : xs = bs −  asjx j = bs − ase xe −  asjx j d’où l’on déduit : jN −e

jN

xe =

asj

bs 1 − xs −  xj ase ase jN −e ase

Programmation linéaire

403

Exprimons x e en fonction des variables hors-base finales N’ : xe = be '−  aej'x j . jN '

Par identification, on obtient les formules (5.26). Formules (5.27) Exprimons de même les autres variables de base x i en fonction des variables horsbase initiales N : xi = bi −  aijx j = bs − aie xe −  aijx j jN −e

jN

Remplaçons x e en utilisant (5.26) : xe = be '−  aej'x j = jN '

a 1 1 bs − xs −  sj x j ase ase jN −e ase

ce qui donne pour x i :

  aie a a bs + ie bs xs −   aij − ie asj  x j ase ase ase  jN−e  Exprimons x i en fonction des variables hors-base finales N’ : xi = bi '−  aij'x j . xi = bi −

jN '

Par identification, on obtient les formules (5.27). Formules (5.28) Exprimons le coût en fonction des variables hors-base initiales N, avec (5.26) pour remplacer x e :

 1  a 1 cjx j = z + ce  bs − xs −  sj x j  +  cjx j  ase  jN −e ase jN jN −e jN −e ase   Exprimons le coût en fonction des variables hors-base finales N’ : z = z '+  cj 'x j z = z +  cjx j = z + ce xe +



jN'

Par identification, on obtient les formules (5.28).

Les formules de pivotage permettent de passer de la forme canonique dans la base B à la forme canonique dans la base B' = B − s + e . Pour les appliquer de manière simple, on dispose les calculs dans un tableau appelé tableau du simplexe.

404

Techniques d’optimisation

5.1.4 Tableau du simplexe La forme canonique du problème linéaire dans la base B :

min z = z + cNT xN x N 0

sous xB + B−1NxN = b  0

(5.29)

est synthétisée dans le tableau du simplexe :

TE =

xB I 0

xN B N b cNT − z −1

→ xB + B−1NxN = b → cNT xN = z − z

(5.30)

La notation TE indique que l’on a effectué une permutation de colonnes afin de placer les variables de base dans les premières colonnes. Ce tableau comporte m + 1 lignes et n + 1 colonnes : - les m premières lignes sont la forme matricielle des contraintes ; - la ligne m + 1 exprime la fonction coût : z − z ; - les colonnes 1 à m correspondent aux variables de base x B ; - les colonnes m + 1 à n correspondent aux variables hors-base x N . Les éléments importants du tableau sont la dernière colonne et la dernière ligne. La dernière colonne donne les valeurs des variables de base (x B = b) et l’opposé de la valeur du coût (z = z) associés à la solution de base (x N = 0) . La dernière ligne donne les coûts réduits qui permettent de savoir si la solution est optimale (coûts positifs ou nuls) ou de choisir la variable entrante du prochain pivotage (coût négatif). Dans le tableau TE (5.30), les variables de base correspondent aux m premières colonnes. Cette permutation n’est pas utile en pratique et on conserve l’ordre des variables du problème linéaire. Le tableau T se présente alors sous la forme : x1 −1

B A b T= cT − z

=

−1

B A.1 c1

xj −1

B A.j cj

xn

B−1A.n cn

b −z

où A.k représente la j-ième colonne de la matrice A. Détaillons maintenant l’algorithme du simplexe sur le tableau T.

(5.31)

Programmation linéaire

405

Étape 0 : Créer le tableau initial Cette initialisation suppose que l’on connaisse une base initiale admissible et que le problème soit mis sous forme canonique (5.29) dans cette base. La section 5.1.5 présente la méthode pour déterminer une base initiale admissible. La forme canonique permet de remplir directement le tableau TE . En remettant les variables de base et hors-base à leur position initiale, on obtient le tableau T. Étape 1 : Repérer les variables de base et hors-base Dans le tableau T, on repère facilement les variables de base, car leurs colonnes sont celles de la matrice identité et leurs coûts réduits sont nuls. Leurs valeurs b se lisent en dernière colonne. Étape 2 : Choisir la variable hors-base entrante x e La variable est choisie parmi celles de coût réduit négatif (dernière ligne). On choisit en général la variable de coût le plus négatif (1re règle de Dantzig) ou la première dans l’ordre naturel (règle de Bland). Étape 3 : Calculer le pas maximal réalisable On se place sur la colonne de la variable entrante x e et on calcule pour chaque ligne le déplacement maximal associé : sie =

bi , si aie  0 . aie

Étape 4 : Choisir la variable de base sortante x s Cette variable est celle donnant le pas le plus petit : se = minsie . iB

La valeur ase est appelée le pivot (par analogie avec la méthode du pivot de Gauss pour la résolution d’un système linéaire). Étape 5 : Mettre à jour le tableau associé à la nouvelle base On divise la ligne s (associée à la variable x s ) par le pivot ase pour faire apparaître la valeur 1 à la place du pivot. On combine chaque ligne (y compris la dernière ligne des coûts réduits) avec la ligne du pivot pour faire apparaître des zéros en colonne e. À l’issue de ces opérations, la colonne e est une colonne de la matrice identité, ce qui traduit l’entrée de la variable x e dans la base. Son coût réduit est nul et sa valeur apparaît en dernière colonne. Cette étape est illustrée cidessous.

406

Techniques d’optimisation

Figure 5-8 : Pivotage sur le tableau du simplexe Les étapes 1 à 5 sont à répéter tant qu’il existe des coûts réduits négatifs. Le dernier tableau correspond à la base optimale. Il donne les valeurs des variables de base en dernière colonne et l’opposé du coût en bas de la dernière colonne L’exemple suivant détaille le déroulement de l’algorithme du simplexe avec la mise à jour du tableau à chaque pivotage.

Exemple 5-5 : Tableau du simplexe Considérons le problème linéaire à 3 variables (x1 , x2 , x3 ) :  x1 + 2x2 + 2x3  20 2x + x2 + 2x3  20 min − 10x1 − 12x2 − 12x3 sous  1 x1 ,x2 ,x3 2x + 2x2 + x3  20  1  x1 , x2 , x3  0 Le problème est mis sous forme standard avec 3 variables d’écart (x4 , x5 , x6 ) :  x1 + 2x2 + 2x3 + x4 = 20 2x + x2 + 2x3 + x5 = 20 min − 10x1 − 12x2 − 12x3 sous  1 x1 ,x2 ,x3 ,x4 ,x5 ,x6 2x + 2x2 + x3 + x6 = 20  1  x1 , x2 , x3 , x4 , x5 , x6  0 Ce problème est sous forme canonique dans la base des variables (x4 , x5 , x6 ) . En effet, ces variables (x4 , x5 , x6 ) apparaissent dans les contraintes avec une matrice identité et n’apparaissent pas dans la fonction coût. Par ailleurs, la solution de base (x4 ,x5 ,x6 ) = (20,20,20) est admissible, car les variables sont positives. On a ainsi la double « chance » d’avoir directement une forme canonique avec une base admissible.

Programmation linéaire

407

Le tableau initial est rempli avec la matrice 36 des contraintes, la dernière colonne des seconds membres, la dernière ligne des coûts réduits, et la case de la fonction coût initialisée à 0 (correspondant à la solution de base x4 = x5 = x6 = 0 ). Tableau initial Base : (x4 , x5 , x6 )

La base n’est pas optimale, car des coûts réduits sont négatifs. On applique les pivotages avec la règle de Bland (première variable de coût réduit négatif). Pivotage 1 Base courante : (x4 , x5 , x6 )

→ Variable entrante : x1

Pas limitant sur x4 , x5 , x6 : s15 = 10

→ Variable sortante : x5

Pivot : a51 = 2

→ Division de la ligne 2 par a51

Élimination en colonne 1

→ Nouvelle base (x4 , x1 , x6 ) / coût z = −100

408

Techniques d’optimisation

Pivotage 2 Base courante : (x4 , x1 , x6 )

→ Variable entrante : x2

Pas limitant sur (x4 , x1 , x6 ) : s26 = 0

→ Variable sortante : x6

Pivot : a62 = 1

→ Division de la ligne 3 par a62

Élimination en colonne 2

→ Nouvelle base (x4 , x1 , x2 ) / coût z = −100

Pivotage 3 Base courante : (x4 , x1 , x2 )

→ Variable entrante : x3

Pas limitant sur (x4 , x1 , x2 ) : s34 = 4

→ Variable sortante : x4

Programmation linéaire

409

Pivot : a43 = 2.5

→ Division de la ligne 1 par a43

Élimination en colonne 3

→ Nouvelle base (x3 , x1 , x2 ) / coût z = −136

Tous les coûts réduits sont positifs ou nuls : la base (x3 , x1 , x2 ) est optimale. La solution obtenue est : (x1, x2 , x3 , x4 , x5 , x6 ) = (4,4,4,0,0,0) de coût z = −136 . On observe que la base optimale (x1 , x2 , x3 ) ne comporte que les variables d’origine du problème. Si ce n’est pas le cas, on peut réaliser des pivotages supplémentaires (sans modification de coût) pour obtenir une base ne comportant que les variables d’origine. On remarque aussi que la base au début du 2e pivotage est dégénérée (x6 = 0) , ce qui conduit à un déplacement nul. La règle de Bland permet d’éviter un éventuel cyclage (boucle infinie) qui peut se produire dans cette situation. Le Tableau 5-2 récapitule les itérations avec les pivotages successifs.

Tableau 5-2 : Récapitulatif des itérations du simplexe

Dans l’Exemple 5-5, on a la double « chance » d’avoir un problème sous forme canonique et une solution de base positive. En pratique, il n’y a aucune raison que le problème linéaire se présente naturellement sous cette forme. La section suivante présente la méthode de construction d’une base admissible.

410

Techniques d’optimisation

5.1.5 Problème auxiliaire Reprenons le problème linéaire sous forme standard :

minn z = cT x sous x



Ax = b x0

avec A 

mn

, b

m

, c

n

(5.32)

La méthode du simplexe nécessite de connaître une base admissible pour remplir le tableau initial. Pour construire une telle base, on considère le problème linéaire suivant appelé problème auxiliaire.

minn 0T x + eT y sous x y

m



Ax + y = b x, y  0

Les m nouvelles variables y

m

(5.33)

sont positives et associées aux m contraintes.

T La fonction coût est la somme des nouvelles variables y : e = (1,1, ,1) 

m

.

Supposons que x0 est une solution admissible du problème linéaire (5.32). Alors (x = x0 ; y = 0) est une solution admissible du problème auxiliaire (5.33). Cette solution de coût nul est optimale pour le problème (5.33), car la fonction coût de (5.33) est minorée par zéro. La résolution du problème auxiliaire (5.33) fournit donc une solution admissible du problème (5.32) si le coût optimal est nul, ou indique qu’il n’existe pas de solution admissible si le coût est non nul. Cherchons maintenant à mettre le problème (5.33) sous forme canonique. En utilisant les contraintes pour exprimer la fonction coût :

Ax + y = b  eT y = eT b − eT Ax

(5.34)

le problème auxiliaire se reformule comme :

minn eT b − eT Ax sous x y

m



Ax + y = b x, y  0

(5.35)

On observe que ce problème est sous forme canonique dans la base associée aux variables y. En effet, les variables y apparaissent avec une matrice identité dans les contraintes et n’apparaissent pas dans la fonction coût. Pour que cette base soit admissible, la solution de base associée y = b doit être positive. On peut toujours se ramener au cas b  0 . En effet, si la composante bi est négative, on réécrit la contrainte i en changeant le signe des deux membres. n

a x j=1

ij

j

= bi



n

 (−a )x j=1

ij

j

= − bi

(5.36)

Programmation linéaire

411

Le problème auxiliaire (5.35) étant sous forme canonique dans la base admissible formée des variables y, on peut lui appliquer directement l’algorithme du simplexe avec comme tableau initial :

T=

x A −eT A

y I 0

b −eT b

(5.37)

L’exemple suivant montre le processus de détermination d’une base initiale admissible par résolution du problème auxiliaire.

Exemple 5-6 : Résolution du problème auxiliaire par l’algorithme du simplexe Considérons le problème linéaire à 3 variables (x1 , x2 , x3 ) : min

x1 ,x2 ,x3 ,x4

=3  x1 + 2x2 + 3x3 − x1 + 2x2 + 6x3 =2  x1 + x2 + x3 sous  4x2 + 9x3 =5  3x3 + x4 = 1 x , x , x , x  0  1 2 3 4

Le problème auxiliaire est formulé avec 4 variables additionnelles (y1 , y2 , y3 , y4 ) . min

x1 ,x2 ,x3 ,x4 y1 ,y2 ,y3 ,y4

+ y1 =3  x1 + 2x2 + 3x3 − x1 + 2x2 + 6x3 + y2 =2  y1 + y2 + y3 + y4 sous  4x2 + 9x3 + y3 =5  3x3 + x4 + y4 = 1   x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4  0

Ce problème est reformulé en exprimant y1 + y2 + y3 + y4 à partir des contraintes. min

x1 ,x2 ,x3 ,x4 y1 ,y2 ,y3 ,y4

+ y1 =3  x1 + 2x2 + 3x3  − x1 + 2x2 + 6x3 + y2 =2  − 8x2 − 21x3 − x4 + 11 sous  4x2 + 9x3 + y3 =5  3x3 + x4 + y4 = 1 x , x , x , x , y , y , y , y  0  1 2 3 4 1 2 3 4

On obtient ainsi une forme canonique dans la base (y1 , y2 , y3 , y4 ) . La solution de base (y1 , y2 , y3 , y4 ) = (3,2,5,1)  0 est admissible. Ceci permet de remplir directement le tableau initial du simplexe.

412

Techniques d’optimisation

Tableau initial Base : (y1 , y2 , y3 , y4 )

On applique les pivotages avec la règle de Bland (première variable de coût réduit négatif). Pivotage 1 Base courante : (y1 , y2 , y3 , y4 ) / Variable entrante : x2 / Variable sortante : y2

Programmation linéaire

413

Pivotage 2 Base courante : (y1 , x2 , y3 , y4 ) / Variable entrante : x1 / Variable sortante : y1

Pivotage 3 Base courante : (x1 , x2 , y3 , y4 ) / Variable entrante : x3 / Variable sortante : y4

414

Techniques d’optimisation

Les coûts réduits sont non négatifs : la base (x1 , x2 , y3 , x3 ) est optimale pour le  1 1  problème auxiliaire. La solution (x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4 ) = 1, , ,0,0,0,0,0  de 2 3   coût z = 0 correspond à une solution admissible du problème initial. On constate en ligne 3 que les coefficients des variables x sont tous nuls. La contrainte 3 présente dans le problème initial est donc redondante (elle est en effet la somme des deux premières contraintes) et la matrice des contraintes n’est pas de rang plein. La résolution du problème auxiliaire a permis de faire apparaître cette redondance. En supprimant cette contrainte et la colonne associée à la variable additionnelle y3 , on obtient le tableau solution du problème auxiliaire dans la base (x1, x2 , x3 ) . Cette base est admissible pour le problème linéaire initial.

Tableau solution Base courante : (x1 , x2 , x3 )

Dans le cas où les contraintes ne sont pas redondantes, des pivotages additionnels sont appliqués pour échanger les variables y restantes avec des variables x horsbase. Ces pivotages correspondent à des déplacements nuls qui ne changent pas la solution obtenue et permettent d’obtenir une base admissible du problème linéaire initial. Le processus complet est décrit en section 5.1.6.

Programmation linéaire

415

5.1.6 Méthode des deux phases La résolution du problème auxiliaire donne une solution admissible du problème initial. L’étape suivante consiste à passer du tableau solution du problème auxiliaire au tableau du problème initial. Le tableau solution n’est pas directement utilisable pour deux raisons : - la base solution du problème auxiliaire peut comporter des variables y qui ne font pas partie du problème initial ; - la ligne des coûts du problème auxiliaire n’est pas celle du problème initial. Le processus pour passer du tableau solution du problème auxiliaire au tableau initial du problème d’origine est représenté sur la Figure 5-9. Les croix montrent les portions de tableau à supprimer (à gauche) ou à compléter (à droite).

Figure 5-9 : Passage du tableau auxiliaire solution au tableau initial Présentons les deux traitements permettant de construire le tableau initial à partir du tableau auxiliaire. Passage à une base en variables x Pour faire sortir les variables y éventuellement présentes dans la base solution, il suffit de les pivoter avec des variables x hors-base ayant un pivot non nul. Si la matrice A est de rang plein, il existe nécessairement un tel pivot. La variable y sortant de la base ayant pour valeur 0 (car l’optimum du problème auxiliaire est y = 0 ), le déplacement correspondant est nécessairement nul. Le pivotage a pour seul effet de changer la base sans changer la solution. Lorsque la base ne comporte plus que des variables x, on supprime du tableau les colonnes associées aux variables y (croix sur le tableau de gauche Figure 5-9).

416

Techniques d’optimisation

Passage aux coûts du problème initial La base admissible B étant connue, il faut calculer les coûts réduits dans cette base et la fonction coût associée à la solution de base. Rappelons les formules (5.20) :

 cNT = cTN − cTB B−1N (5.38)  T −1  z = cB B b Pour effectuer ces calculs matriciels de manière simple, on peut remarquer que les matrices I et B−1N associées respectivement aux coûts c N et cB sont déjà présentes dans le tableau obtenu (Figure 5-9). En effet, ces matrices représentent la forme canonique des contraintes dans la base B. On peut donc directement appliquer les formules (5.38) à partir du tableau solution de la Figure 5-9. T

T

En pratique, en disposant les coûts c B et c N sur une ligne au-dessus du tableau comme illustré Figure 5-10, on peut effectuer une multiplication matricielle entre T T les vecteurs c B , c N et les matrices I , B−1N pour obtenir les coûts à mettre en dernière ligne. On remplit ainsi le tableau du problème initial dans la base B (cases grisées sur la Figure 5-9). On peut ensuite appliquer l’algorithme du simplexe à partir de ce tableau.

Figure 5-10 : Calcul des coûts du tableau initial La méthode des deux phases consiste à résoudre d’abord le problème auxiliaire par l’algorithme du simplexe (première phase), à transformer le tableau solution en tableau du problème initial, puis à résoudre le problème initial par l’algorithme du simplexe (deuxième phase). L’exemple suivant détaille ces traitements successifs.

Programmation linéaire

417

Exemple 5-7 : Méthode des deux phases Considérons le problème linéaire à 5 variables (x1 , x2 , x3 , x4 , x5 ) :

min

x1 ,x2 ,x3 ,x4 ,x5

+ 4x4 + x5 = 2  x1 + 3x2 − 3x4 + x5 = 2  x1 + 2x2 2x1 + 3x2 + 3x3 + x4 − 2x5 sous  − x − 4x2 + 3x3 =1  1  x1 , x2 , x3 , x4 , x5  0

Première phase : construction d’une base admissible Le problème auxiliaire est formulé avec 3 variables additionnelles (y1 , y2 , y3 ) .

+ 4x4 + x5 + y1 =2  x1 + 3x2 − 3x4 + x5 + y2 = 2  x1 + 2x2 min y1 + y2 + y3 sous  x1 ,x2 ,x3 ,x4 ,x5 − x − 4x2 + 3x3 + y3 = 1  1 y1 ,y2 ,y3  x1 , x2 , x3 , x4 , x5 , y1 , y2 , y3  0 Ce problème est reformulé en exprimant y1 + y2 + y3 à partir des contraintes. + 4x4 + x5 + y1 =2  x1 + 3x2  x1 + 2x2 − 3x4 + x5 + y2 = 2 min − x1 − x2 − 3x3 − x4 − 2x5 + 5 sous  x1 ,x2 ,x3 ,x4 − x − 4x2 + 3x3 + y3 = 1  1 y1 ,y2 ,y3 ,y4  x1 , x2 , x3 , x4 , x5 , y1 , y2 , y3  0 On obtient ainsi une forme canonique dans la base (y1 , y2 , y3 ) . La solution de base (y1 , y2 , y3 ) = (2,2,1)  0 est admissible. Ceci permet de remplir directement le tableau initial du simplexe. Tableau initial Base : (y1 , y2 , y3 )

On applique les pivotages avec la règle de Bland.

418

Techniques d’optimisation

Pivotage 1 Base courante : (y1 , y2 , y3 ) / Variable entrante : x1 / Variable sortante : y1

Pivotage 2 Base courante : (x1 , y2 , y3 ) / Variable entrante : x3 / Variable sortante : y3

Programmation linéaire

419

Tous les coûts réduits sont positifs ou nuls : la base (x1 , y2 , x3 ) est optimale. La solution est : (x1, x2 , x3 , x4 , x5 , y1, y2 , y3 ) = (2,0,1,0,0,0,0,0) de coût z = 0 . Cette base comporte la variable y2 qui n’existe pas dans le problème initial. Pour se ramener à une base ne comportant que les variables initiales, on choisit une variables x hors-base ayant un pivot non nul sur la ligne de y2 . On peut ici choisir x2 (pivot = −1) ou x4 (pivot = −7), mais pas x5 (pivot = 0). Choisissons x2 pour effectuer un pivotage avec y2 . La variable de base y2 a pour valeur 0 (car la solution optimale du problème auxiliaire est y = 0 ) et garde la valeur 0 en passant hors-base. Le pivotage correspond donc à un déplacement nul qui ne change pas la solution. Pivotage 3 Base courante : (x1 , y2 , x3 ) / Variable entrante : x2 / Variable sortante : y2

On dispose à présent de la base admissible (x1 , x2 , x3 ) pour le problème initial. Deuxième phase : résolution du problème linéaire Pour construire le tableau initial dans la base admissible (x1 , x2 , x3 ) , on commence par supprimer les colonnes des variables additionnelles (y1 , y2 , y3 ) introduites pour le problème auxiliaire.

420

Techniques d’optimisation

Tableau initial (avant remplissage des coûts) Base : (x1 , x2 , x3 )

 cT = cT − cT B−1N Il faut ensuite remplir la dernière ligne du tableau avec :  N TN −1 B  z = cB B b

(cases grisées ci-dessus). Les matrices utiles sont déjà présentes dans le tableau. 1   −17  2     −1 −1 B N= 7 0  , B b = 0  3,67 1/ 3  1     La fonction coût du problème initial est : z = 2x1 + 3x2 + 3x3 + x4 − 2x5 . T

On recopie le vecteur c = (2,3,3,1, − 2) en ligne au-dessus du tableau pour faciliter ces calculs. Ceci donne le tableau initial suivant. Tableau initial (avec les coûts) Base : (x1 , x2 , x3 )

Coûts réduits base :

(x1 , x2 , x3 ) → (0,0,0)

hors-base : (x4 , x5 )

→ (3, − 5)

À partir de ce tableau, on applique l’algorithme du simplexe (règle de Bland).

Programmation linéaire

Pivotage 1 Base courante : (x1 , x2 , x3 ) / Variable entrante : x5 / Variable sortante : x1

Pivotage 2 Base courante : (x5 , x2 , x3 ) / Variable entrante : x4 / Variable sortante : x2

Tous les coûts réduits sont positifs ou nuls : la base (x3 , x4 , x5 ) est optimale. 1   La solution obtenue est : (x1 , x2 , x3 , x4 , x5 ) =  0,0, ,0, 2  de coût z = −3 . 3  

421

422

Techniques d’optimisation

La méthode du simplexe permet de résoudre très efficacement la plupart des problèmes linéaires. Les sections suivantes présentent les principales améliorations et extensions apportées à l’algorithme original de Dantzig.

5.1.7 Simplexe révisé La méthode des tableaux présentée en section 5.1.4 modifie à chaque pivotage l’ensemble de la matrice des contraintes. Pour un problème de grande taille, la succession de nombreux pivotages entraîne une perte progressive de précision numérique (due à la précision machine) et peut empêcher d’aboutir à la solution. La méthode du simplexe révisé présentée ci-dessous repart systématiquement de la matrice initiale à chaque pivotage afin d’éviter cette perte de précision. Elle vise également à minimiser le stockage mémoire et la quantité de calculs. Reprenons le problème linéaire sous forme standard :

minn z = cT x sous x



Ax = b x0

avec A 

mn

, b

m

, c

n

(5.39)

Supposons que l’on dispose d’une base B  mm qui est une sous-matrice de A. Les variables x  n sont partitionnées en (x B , x N ) et le vecteur coût c  n est partitionné en (cB ,c N ) . Les éléments nécessaires au pivotage sont : - le choix de la variable entrante x e d’après les coûts réduits cN ; - le calcul de la direction de base associée d e ; - le choix de la variable sortante x s d’après les pas réalisables suivant d e . Examinons comment déterminer ces éléments à partir des matrices initiales. Les coûts réduits se calculent par :

cN = cN − NT B− TcB = cN − NT avec BT = cB

(5.40)

La direction de base est définie par :

BdeB = −A.e e   d  de =  eB  avec  e  1 e−1 e e+1 n-m T d 0  N  dN =  0 0 1 0    où A.e désigne la colonne numéro e de la matrice A. Les pas réalisables vis-à-vis des variables de base se calculent par :

sie =

bi aie

Bb = b avec  -1 e B N = (aij )iB, jN → aie = (d B )i

(5.41)

(5.42)

Programmation linéaire

423

On constate qu’il suffit de résoudre les 3 systèmes linéaires suivants de matrice B.

 BT  = c B  e  Bd B = − A.e  Bb = b 

(5.43)

Le premier système donne les coûts réduits (5.40) et permet de choisir x e . Le deuxième système donne les composantes de la direction d eB (5.41). Le troisième système permet de calculer les pas (5.42) et de choisir x s . Ces 3 systèmes sont résolus à chaque itération pour effectuer le changement de base. Ils utilisent les matrices A, b, c du problème initial, ce qui maintient la même précision numérique à chaque itération. Les informations à stocker en mémoire se réduisent aux matrices A, b, c et aux numéros des colonnes formant la matrice B. La matrice de base B n’est modifiée que d’une colonne à chaque itération. Pour gagner du temps de calcul lors de la résolution des systèmes linéaires, on peut stocker sa factorisation LU en mémoire et la mettre à jour lors du changement de base. La méthode du simplexe révisé basée sur les systèmes (5.43) permet une implémentation économique et précise de l’algorithme du simplexe.

5.1.8 Simplexe dual Pour un problème linéaire, il est équivalent de résoudre le problème primal ou le problème dual (section 1.4.3). Le Tableau 5-3 rappelle la correspondance entre les variables et contraintes des deux problèmes (voir aussi le Tableau 1-4). Primal (P)

Dual (D)

minn cT x

dim ension

max bT y m

Ax = b Ax  b x0 x n

m m n n

y m y0 AT y  c AT y = c

x

y

Tableau 5-3 : Correspondance problème primal - problème dual

424

Techniques d’optimisation

Dans certaines situations, la résolution du problème dual est plus simple. C’est en particulier le cas en programmation linéaire mixte lorsque l’on connaît déjà une base admissible du problème dual. Pour appliquer la méthode du simplexe au problème dual, il faut d’abord écrire sa forme canonique. Montrons comment passer de la forme canonique du primal (P) à la forme canonique du dual (D) dans une base donnée. Forme canonique du dual Partons de la forme canonique du primal (P) dans une base B.

x + B−1NxN = b → m contraintes (5.44) sous  B xB ,xN x , x  0 → n variables  B N Les variables positives x B jouent le rôle de variables d’écart. En les retirant, on reformule un problème équivalent (P’) avec des contraintes inégalité. (P) min cNT xN

B−1NxN  b → m contraintes sous  xN x  0 → n − m variables  N On passe au dual (D’) de (P’) avec les correspondances du Tableau 5-3. (P') min cNT xN

(

(5.45)

)

 B−1N T y  c → n − m contraintes (5.46) N (D') max b y sous  y → m variables  y  0 On effectue le changement de variable yB = − y et on passe en minimisation. T

T

(D') min b yB yB

(

)

− B−1N T y  c B N sous   yB  0

→ n − m contraintes → m variables

(5.47)

On met le dual sous forme standard (D) avec des variables d’écart positives y N .

(D) min bT yB yB ,yN

(

)

 y − B−1N T y = c → n − m contraintes B N sous  N (5.48) → n variables  yB , yN  0

On observe que le problème (D) est sous forme canonique dans la base B, à condition de considérer y N comme les variables de base et y B comme les variables hors-base. On peut résoudre ce problème linéaire par la méthode des tableaux du simplexe.

Programmation linéaire

425

Tableau du problème dual Formons le tableau du simplexe du dual dans la base B à partir de sa forme canonique (5.48). Ce tableau est noté TD .

yN TD =

I 0

y

B −1

− (B N)T bT

cN −z

(

)

T

→ yN − B−1N yB = cN

(5.49)

→ bT yB = z − z

L’interprétation de ce tableau dual est similaire à celle d’un tableau primal, avec une inversion des rôles de B (colonnes hors-base) et N (colonnes de base). •

Les variables de base sont y N et ont pour valeur cN .



Les variables hors-base sont y B et ont pour coûts réduits b .



La matrice des contraintes du dual AT (Tableau 5-3) donne la matrice réduite (B−1N)T dans le tableau TD .

• •

y = c La solution de base associée à B est :  N N .  yB = 0 La base B est dite dual-admissible si : yN = cN  0 .

Les règles de pivotage du simplexe s’appliquent à l’identique : - entrée en base d’une variable hors-base y B de coût réduit négatif ; - sortie de la première variable de base y N à s’annuler. Notons ye , e  B la variable hors-base entrante de coût réduit be  0 . Comme en (5.21–5.22), les variables y B vont rester nulles lors du déplacement, à l’exception de ye . Les contraintes de positivité des variables de base y N donnent :

yi = cNi + aei ye  0 , i  N

(5.50)

en conservant la notation déjà utilisée en (5.21) : B−1N = (aij )iB, jN . noté

Notons sie la valeur maximale que peut prendre la variable ye en respectant la contrainte liée à la variable de base y i . c • Si aei  0 , alors : sie = Ni . − aie •

Si aei  0 , alors : sie = + (déplacement non borné).

426

Techniques d’optimisation

Le pas maximal réalisable dans la direction de base associée à ye est donné par :

se = min sie = min iN

iN aei 0

cNi − aie

(5.51)

La variable sortante ys , s  N est celle qui correspond au pas minimal se . Le pivotage est réalisé avec le pivot ase  0 et fait apparaître une colonne de la matrice identité en colonne e. Algorithme du simplexe dual On remarque que le pivotage précédent peut s’effectuer à partir du tableau primal TP sans former explicitement le tableau dual TD . En effet, ces deux tableaux rappelés ci-dessous contiennent les mêmes éléments disposés différemment. En particulier, les coûts réduits cN et les valeurs de base b sont transposés et la matrice réduite des contraintes est transposée et changée de signe.

TD =

TP =

yN I 0 xB I 0

yB − (B−1N)T bT xN (B−1N) cNT

cN −z

(5.52)

b −z

Reprenons les règles de pivotage énoncées plus haut pour le tableau dual TD et transcrivons-les dans le tableau primal TP . •

Variable entrante du dual Règle initiale dans TD :

choisir y B de coût réduit négatif (be  0)

Règle transcrite dans TP : choisir x B de valeur négative (be  0) •

Variable sortante du dual choisir y N de pas minimal min

cNi (pivot < 0) − aie

Règle transcrite dans TP : choisir x N de pas maximal max

cNi (pivot < 0) aie

Règle initiale dans TD :

iN aei 0

iN aei 0

Programmation linéaire

427

La matrice des contraintes B−1N étant de signe opposé dans le tableau dual, il est équivalent de chercher le pas maximum en prenant directement les valeurs aie présentes dans le tableau primal. •

Réalisation du pivotage Règle initiale dans TD : faire apparaître une colonne identité pour yBe Règle transcrite dans TP : faire apparaître une colonne identité pour x Ns

Le pivotage suivant ces règles est appelé pivotage dual, pour rappeler qu’il s’agit de la résolution du problème dual, bien que l’on travaille sur le tableau primal TP . Ces règles définissent l’algorithme du simplexe dual. Remarques de vocabulaire •



Bien que la variable x B soit une variable entrante du dual, on convient de l’appeler variable sortante de manière à conserver la nomenclature du tableau primal. De même, la variable x N sortante du dual est appelée variable entrante. Une base est primal-admissible si les variables de base sont positives (b  0) et dual-admissible si les coûts réduits sont positifs (cN  0) .

L’algorithme du simplexe primal part d’une base primal-admissible (b  0) et cherche à atteindre par pivotage primal des coûts réduits positifs (cN  0) . L’algorithme du simplexe dual part d’une base dual-admissible (cN  0) et cherche à atteindre par pivotage dual des variables positives (b  0) . Selon la base initiale dont on dispose, il est plus avantageux d’utiliser le simplexe primal ou le simplexe dual. L’algorithme du simplexe dual se révèle très intéressant lorsqu’un problème a déjà été résolu et qu’on veut le résoudre à nouveau en ajoutant des contraintes, en changeant les seuils des contraintes ou en fixant la valeur de certaines variables. Ces opérations modifient la partie « contraintes » du tableau du simplexe, mais ne changent pas les coûts réduits qui restent positifs. La base du problème déjà résolu reste ainsi dual-admissible pour le nouveau problème. Cette propriété est utilisée en particulier en programmation linéaire mixte. L’exemple suivant illustre la résolution d’un problème linéaire par l’algorithme du simplexe dual.

428

Techniques d’optimisation

Exemple 5-8 : Méthode du simplexe dual Considérons le problème linéaire à 5 variables (x1 , x2 , x3 , x4 , x5 ) :

min

x1 ,x2 ,x3 ,x4 ,x5

 x1 + x2 = 1 − x − x + x = 0 x1 + 2x2 + 2x3 + 3x4 + x5 sous  2 3 5 −x + x + x = 0  1 3 4  x1 , x2 , x3 , x4 , x5  0

On remplit le tableau avec les matrices :  1 1 0 0 0 1     A =  0 −1 −1 0 1  , b =  0  , cT = (1 2 2 3 1)  −1 0 1 1 0  0     Tableau initial (non canonique)

Mettons le problème sous forme canonique dans la base (x2 , x3 , x4 ) par combinaisons de lignes (pour avoir la matrice identité sur les colonnes (x2 , x3 , x4 ) et des coûts nuls sur la dernière ligne).

Programmation linéaire

429

On obtient ainsi le tableau du simplexe dans la base (x2 , x3 , x4 ) . Tableau initial (canonique) Base : (x2 , x3 , x4 )

Ce tableau montre que la base (x2 , x3 , x4 ) n’est pas primal-admissible, car x3  0 Cette base est en revanche dual-admissible, car les coûts réduits en dernière ligne sont positifs. On peut donc appliquer l’algorithme du simplexe dual à partir de ce tableau. La base n’est pas dual-optimale, car des variables sont négatives. On applique un pivotage dual en choisissant la première variable négative (ici x3 ). Pivotage 1 Base courante : (x2 , x3 , x4 ) Pas limitant sur x1 , x5 : max(s31 = −1 , s35 = 0)

Pivot : a35 = −1 Élimination en colonne 5

→ Variable sortante : x3 → Variable entrante : x5

→ Division de la ligne 2 par a35 → Nouvelle base (x2 , x5 , x4 ) / coût z = 3

Toutes les variables de base sont positives ou nulles : la base (x2 , x4 , x5 ) est optimale. La solution obtenue est : (x1, x2 , x3 , x4 , x5 ) = (0,1,0,0,1) de coût z = 3 . Le tableau final est optimal pour le problème primal et pour le problème dual.

430

Techniques d’optimisation

5.1.9 Simplexe complémentaire La méthode du simplexe peut être adaptée pour résoudre un problème quadratique-linéaire convexe de la forme :



1 Ax  b minn xTQx+cT x sous , Q x0 x 2

nn

, A

mn

, b

m

, c

n

(5.53)

La fonction coût est supposée convexe avec une matrice Q symétrique définie positive. Le lagrangien s’exprime avec des multiplicateurs  et  associés respectivement aux contraintes inégalité −(Ax − b)  0 et − x  0 . Les contraintes inégalité sont exprimées dans le sens  (forme standard) et leurs multiplicateurs sont positifs.

1 L(x, , ) = xTQx + cT x − T (Ax − b) − T x 2 Les conditions KKT d’ordre 1 donnent le système : Qx + c − AT −  = 0 Ax − b  0  x  0 ,   0 ,   0 i xi = 0 , i =1 à n  (Ax − b) = 0 , j = 1 à m j  j

(5.54)

(5.55)

Les conditions KKT d’ordre 2 sont vérifiées, car la matrice Q est définie positive. Réécrivons les conditions d’ordre 1 en introduisant m variables d’écart positives r associées aux m contraintes Ax − b  0 .

Qx + c − AT −  = 0 Ax − b − r = 0  x  0 , r  0 ,   0 ,   0 i xi = 0 , i =1 à n  (Ax − b) = 0 , j = 1 à m j  j

(5.56)

Regroupons les variables (x, ) d’une part et les variables (, r) d’autre part.  Q −AT  x   c  En introduisant les notations : y =   ,  =   , G =   ,  =  0   r  −b  A

le système (5.56) prend la forme compacte :

I − Gy =    y  0 ,  0  yii = 0 , i = 1 à n + m

(5.57)

Programmation linéaire

431

Par analogie avec la méthode du simplexe, on observe que l’équation I  − G y =  se présente sous forme canonique si l’on considère : -   n + m comme les variables de base (matrice I ) ; - y  n + m comme les variables hors-base (matrice − G ). La dernière ligne ajoute des conditions de complémentarité. Les variables y i et i sont appelées variables complémentaires. = La solution de base : satisfait les conditions de complémentarité, mais pas y=0



forcément les conditions de positivité   0 . Notons z = (y, ) l’ensemble des 2(n + m) variables du problème (5.57). La moitié des variables est en base, l’autre moitié est hors-base. La méthode du simplexe complémentaire consiste à réaliser des changements de base maintenant les conditions de complémentarité jusqu’à vérifier les conditions de positivité. Chaque changement de base se compose d’un pivotage standard suivi si besoin de pivotages complémentaires pour restaurer la complémentarité. Un pivotage standard consiste à choisir une variable de base négative et à faire entrer en base sa variable complémentaire (qui est nécessairement hors-base). Notons z e la variable entrante : - ze = e si la variable de base choisie est ye ; - ze = ye si la variable de base choisie est e . Les contraintes sur les variables z sont de la forme : zi +  ijz j = i , i  B jN

(5.58)

Lorsque z e augmente en laissant les autres variables hors-base (z j ) jN , je nulles, ces contraintes se réduisent à :

zi + ieze = i , i  B

(5.59)

La valeur maximale que peut prendre z e est définie par la première variable de base qui s’annule. Si i = 0 et a ie  0 , la valeur maximale est nulle : ze = 0 . Sinon, si i et a ie sont de même signe, la valeur maximale est donnée par :

   ze = min  i , i  0  ie ie iB

(5.60)

432

Techniques d’optimisation

Cette règle est similaire à celle du simplexe usuel, à la différence que le second membre i peut être négatif. Notons z s la variable de base sortante. Cette variable n’est pas nécessairement la complémentaire de z e , ce qui détruit la complémentarité de la base. Les pivotages complémentaires ont pour but de restaurer la complémentarité. Le pivotage complémentaire consiste à choisir comme variable entrante la variable complémentaire de z s . En effet, la variable z s venant de sortir de la base, on cherche à y faire rentrer sa complémentaire. Notons z'e cette variable entrante. On applique ensuite la même règle de pivotage (5.60) que ci-dessus. La variable sortante z's est la première variable de base qui s’annule lorsque z'e augmente. Pour éviter un cyclage, la variable précédente z e doit être exclue de cette recherche. Les pivotages complémentaires sont à répéter tant que la base n’est pas complémentaire, en veillant à ne pas revenir à une base déjà obtenue. Lorsqu’une base complémentaire est restaurée, on peut à nouveau appliquer un pivotage standard s’il reste des variables de base négatives. L’exemple suivant illustre la résolution d’un problème quadratique-linéaire par l’algorithme du simplexe complémentaire.

Exemple 5-9 : Méthode du simplexe complémentaire x + x  2 Considérons le problème : min − 6x1 + 2x12 − 2x1x2 + 2x22 sous  1 2 . x1 ,x2  x1 , x2  0 Introduisons un multiplicateur 1  0 pour la contrainte x1 + x2 − 2  0 et des multiplicateurs 1 , 2  0 pour les contraintes x1 , x2  0 . Le lagrangien s’exprime 2 2 comme L(x1 , x2 , 1 , 1 , 2 ) = −6x1 + 2x1 − 2x1x2 + 2x2 + 1 (x1 + x2 − 2) − 1x1 − 2 x2 .

Les conditions KKT sont formulées en introduisant une variable d’écart r1  0 :  −6 + 4x1 − 2x2 + 1 − 1 = 0  −4x1 + 2x2 − 1 + 1 = −6  −2x1 + 4x2 + 1 − 2 = 0  2x1 − 4x2 − 1 + 2 = 0 x + x  2  x + x + r1 = 2 1 2  1 2  ⎯⎯ → 1x1 = 0 1x1 = 0 2 x2 = 0 2 x2 = 0  (x + x − 2) = 0  r = 0  1 1 2  11 x , x ,  ,  ,   0  1 2 1 1 2  x1 , x2 , 1 , 1 , 2 , r1  0

Programmation linéaire

433

 4 −2  Les conditions KKT d’ordre 2 portent sur la matrice 2xx L =   .  −2 4  Ses valeurs propres sont 2 et 6. Elle est définie positive et le problème est convexe. Pour résoudre le système KKT, on forme le tableau du simplexe complémentaire. Les couples de variables complémentaires sont : (x1 , 1 ) , (x2 , 2 ) , (1,r1 ) .

Le problème initial se présente sous forme canonique dans la base (1 , 2 ,r1 ) . Tableau initial Base : (1 , 2 ,r1 )

La solution de base est non-admissible, car la variable 1 est négative (1 = −6) . Le premier pivotage fait entrer en base la variable x1 complémentaire de 1 . L’objectif de ce pivotage standard est de faire sortir 1 de la base pour l’annuler. L’augmentation de x1 est limitée par la première variable de base qui s’annule. Les déplacements maximaux vis-à-vis des variables de base (1 , 2 ,r1 ) sont respectivement (1.5 , 0 , 2) . La première variable s’annulant lorsque x1 augmente est donc 2 avec un déplacement nul. Pivotage 1 : standard Base courante : (1 , 2 ,r1 )

→ Variable entrante : x1

Pas sur 1 , 2 ,r1 : min(s1 = 1,5 , s2 = 0 , sr1 = 2) → Variable sortante : 2

Pivot : 2x1 = 2

→ Division de la ligne 2 par 2 x1

Élimination en colonne 1

→ Nouvelle base (1 , x1,r1 )

434

Techniques d’optimisation

La base (1 , x1,r1 ) n’est plus complémentaire. La variable 2 étant sortie de la base, on cherche à y faire rentrer sa variable complémentaire x2 par un pivotage complémentaire. Les déplacements maximaux vis-à-vis des variables de base (1 , x1,r1 ) sont respectivement (1 ,  , 2 / 3) . Le pas sur x1 n’est pas borné, car le second membre est nul (ligne 2) et le coefficient de x2 est négatif. La variable x2 peut donc augmenter indéfiniment vis-à-vis de cette contrainte. La première variable s’annulant lorsque x2 augmente est donc r1 . Pivotage 2 : complémentaire Base courante : (1 , x1,r1 )

→ Variable entrante : x2

Pas sur 1 , x1 ,r1 : min(s1 = 1 , sx1 =  , sr1 = 2 / 3) → Variable sortante : r1

Pivot : r1x2 = 3 Élimination en colonne 2

→ Division de la ligne 3 par r1x2 → Nouvelle base (1 , x1, x2 )

Programmation linéaire

435

La base (1 , x1, x2 ) n’est toujours pas complémentaire. La variable r1 étant sortie de la base, on cherche à y faire rentrer sa variable complémentaire 1 par un pivotage complémentaire. Les déplacements maximaux vis-à-vis des variables de base (1 , x1, x2 ) sont respectivement (1 ,  , 4) . Le pas sur x1 n’est pas borné, car le second membre et le coefficient de 1 sont de signes contraires. La première variable s’annulant lorsque 1 augmente est donc 1 . Pivotage 3 : complémentaire Base courante : (1 , x1, x2 )

→ Variable entrante : 1

Pas sur 1 , x1, x2 : min(s1 = 1 , sx1 =  , sx2 = 4) → Variable sortante : 1

Pivot : 12 = −2

→ Division de la ligne 1 par 12

Élimination en colonne 3

→ Nouvelle base (1 , x1, x2 )

La base (1 , x1, x2 ) est complémentaire et les variables de base toutes positives. Cette base est donc optimale. La solution de base associée est : 3 1 x1 = , x2 = , 1 = 1 , 1 = 0 , 2 = 0 , r1 = 0 2 2 Cette solution vérifie bien l’ensemble des conditions KKT d’ordre 1 écrites au début de cet exemple. Le tableau suivant récapitule les pivotages réalisés.

436

Techniques d’optimisation

Tableau 5-4 : Récapitulatif des itérations du simplexe complémentaire

La méthode du simplexe complémentaire ne peut s’appliquer que si le problème quadratique-linéaire est convexe. Comme pour le simplexe usuel, il existe différentes façons de réaliser les pivotages standards et complémentaires (choix de la variable entrante). On peut démontrer que la solution est obtenue en un nombre fini d’itérations, à condition de se prémunir contre un éventuel cyclage, par exemple en choisissant des variables entrantes de numéros croissants.

5.2 Point intérieur La méthode du simplexe résout un problème linéaire en parcourant les sommets du polytope, mais elle peut conduire dans certains cas à un grand nombre m d’itérations, comme sur la Figure 5-7. Dans des cas pires, les Cn sommets sont parcourus avant d’arriver à la solution (problème de Klee et Minty, 1972). Les méthodes de points intérieurs utilisent une stratégie différente. Plutôt que de se déplacer sur le bord du polytope, on part de l’intérieur pour se diriger directement vers le sommet solution. Ces méthodes développées depuis les années 1980 s’avèrent compétitives en particulier pour les problèmes de grandes tailles.

5.2.1 Chemin central Reprenons le problème linéaire sous forme standard :

minn cT x sous x



Ax = b x0

avec A 

mn

, b

m

, c

n

(5.61)

Le lagrangien s’exprime avec des multiplicateurs   m pour les contraintes égalité et des multiplicateurs s  n pour les contraintes inégalité.

L(x, ,s) = cT x + T (Ax − b) − sT x

(5.62)

Programmation linéaire

437

Les conditions KKT d’ordre 1 donnent un système en variables (x, ,s) .

Ax − b = 0 c − AT  − s = 0 x s = 0 , i = 1 à n  ii  x,s  0

(5.63)

Ce système non linéaire présente un aspect combinatoire venant des conditions de complémentarité xisi = 0 . On sait par ailleurs que la solution du problème linéaire (5.61) est un sommet du polytope des contraintes (Propriété 5-1) et que la solution de base associée (Propriété 5-2) comporte au moins n − m composantes x i nulles (variables hors-base). Une idée naturelle est de résoudre le système (5.63) par la méthode de Newton, en veillant à ne pas sortir du domaine x  0 ; s  0 . Si l’itération de Newton sort de ce domaine, on peut la corriger par projection ou par réduction du pas. Cette approche est très sensible au point initial. En effet, lorsque l’on approche du bord du domaine x  0 ; s  0 , les itérations de Newton « projetées » ont tendance à suivre le bord et la progression devient très lente. Pour converger vers la solution, il faut éviter que des variables x i ou s i s’annulent prématurément avant d’arriver au voisinage du sommet optimal. Ceci amène à considérer un problème de la forme : n

minn fh (x) = cT x − h  ln xi sous x

i =1



Ax = b x0

(5.64)

La fonction coût est pénalisée par la fonction barrière logarithmique B introduite en section 4.2.5 : n

B(x) = − ln xi

(5.65)

i =1

La fonction barrière B a un effet repoussoir par rapport au bord du domaine x  0. Le paramètre h  0 est la hauteur de la barrière. Le problème (5.64) est appelé problème barrière et sa solution est notée x h . •

Lorsque h = 0 , le point x h = x * est la solution du problème linéaire (5.61).



Lorsque h =  , le point x h = x  est la solution du problème : n

minn −  ln xi sous x

i =1



Ax = b x0

(5.66)

Ce point appelé centre du polytope est « le plus éloigné » des bornes x i = 0 .

438

Techniques d’optimisation

L’ensemble des points x h ; h  0 forme le chemin central primal allant du centre du polytope (pour h =  ) à la solution du problème linéaire (pour h = 0 ). Ce chemin est appelé primal, car il ne porte que sur les variables primales x, par opposition au chemin primal-dual défini plus loin.

Exemple 5-10 : Centre analytique du polytope (exemple présenté dans [R3]) x + x + x = 1 défini par :  1 2 3 .  x1 , x2 , x3  0 Ce polytope représenté sur la Figure 5-11 forme un triangle équilatéral (ABC).

Considérons le polytope dans

3

Figure 5-11 : Centre analytique du polytope Les coordonnées du centre du polytope sont obtenues en résolvant le problème :  x + x + x3 = 1 min − (ln x1 + ln x2 + ln x3 ) sous  1 2 x1 ,x2 ,x3  x1 , x2 , x3  0 En observant que les 3 coordonnées jouent des rôles symétriques, on obtient 1 directement la solution à partir de la contrainte : x1 = x2 = x3 = . 3 Le centre du polytope noté x est le centre du triangle équilatéral (ABC). Ce point est bien équidistant des 3 sommets A, B et C du polytope.

Programmation linéaire

439

Formons le lagrangien du problème barrière (5.64) en notant temporairement  n les multiplicateurs des contraintes inégalité : n

Lh (x, , ) = cT x − h  ln xi + T (Ax − b) − T x

(5.67)

i =1

et écrivons les conditions KKT d’ordre 1 avec la notation :

1 1 =   x  x i i=1 à n

Ax − b = 0  h c − − AT  −  = 0  x  xii = 0 , i = 1 à n x  0 ,   0 

n

.

(5.68)

En faisant le changement de variable : s =  +

h , ces équations deviennent : x

Ax − b = 0 c − AT  − s = 0 x s = h , i = 1 à n  ii  x  0 , s  0

(5.69)

On remarque que ce système (5.69) est identique au système KKT du problème linéaire d’origine (5.63), à l’exception des conditions de complémentarité imposées à h au lieu de 0. L’ensemble des solutions (x h , h , sh ) ; h  0 du système KKT (5.69) forme le chemin central primal-dual, qui porte sur les variables primales x et duales ,s Lorsque h = 0 , on obtient le point (x*; *; s*) solution du système KKT initial. L’exemple suivant illustre géométriquement la construction du chemin central.

Exemple 5-11 : Chemin central primal-dual (exemple présenté dans [R3]) Considérons le problème dans

3

x + x + x = 1 : min x1 + 2x2 + 3x3 sous  1 2 3 . x1 ,x2 ,x3  x1 , x2 , x3  0

Les contraintes correspondent au polytope de l’Exemple 5-10. Pour illustrer géométriquement les calculs précédents, on résout successivement le problème linéaire et le problème barrière.

440

Techniques d’optimisation

Résolution du problème linéaire On traite les conditions KKT du problème linéaire (5.63) dans l’ordre suivant.  x1 = 0 ou s1 = 0    x2 = 0 ou s2 = 0  x3 = 0 ou s3 = 0

 x1s1 = 0    x2s2 = 0  x3s3 = 0 → 6 combinaisons possibles

xisi = 0

AT  + s = c

s0

 + s1 = 1    + s2 = 2  + s3 = 3 s1  0   s2 = 1 + s1  1 s3 = 1 + s2  2

s1 = 1 −   s = s − 1  s2 = 2 −    1 2 s2 = s3 − 1 s3 = 3 −   x1 = 0 ou s1 = 0    x2 = 0  x3 = 0

→ reste 2 combinaisons possibles

Ax − b = 0

 x1 + x2 + x3 = 1  x1 = 1  x1 = 1 s1 = 0   La solution  x2 = 0 , s2 = 1 ,  = 1 correspond au sommet A (Figure 5-12).  x3 = 0 s3 = 2 Résolution du problème barrière On traite les conditions KKT du problème barrière (5.69) dans l’ordre suivant. T

A +s = c

xisi = h

Ax − b = 0

 + s1 = 1    + s2 = 2  + s3 = 3

s1 = 1 −    s2 = 2 −  s3 = 3 − 

 h h =  x1 = 1 −   −1   x1s1 = h  h h    x2s2 = h en posant  = 2 −    x2 = = 2 −   x3s3 = h  h h   x3 = 3 −  =  + 1  h h h + + =1  x1 + x2 + x3 = 1   −1   + 1

 3 − 3h2 −  + h = 0

Programmation linéaire

441

On obtient une équation du 3e degré en  . Cette équation peut admettre 1, 2 ou 3 racines selon la hauteur de barrière h. La solution des équations KKT est ensuite donnée en fonction de  par : sh = (1 − h 2 − h 3 − h )  h = 2 −  ,   1 1 1    xh = h  1 −  2 − h 3 − h  h   x  0 Les conditions  h permettent de choisir  parmi les 3 racines éventuelles. sh  0 Ces équations paramétrées sont utilisées pour tracer le chemin central contenu 1 1 1 dans le triangle (ABC). Il part du centre du triangle x  ; ;  et se termine 3 3 3 au sommet A (1 ; 0 ; 0) , qui est la solution du problème linéaire (pour h = 0 ).

Pour ce tracé, on définit un système de coordonnées dans le triangle (ABC) ayant pour origine A et pour axes AB et CD (hauteur issue de C). Ce système d’axes est représenté sur la Figure 5-12.

Figure 5-12 : Système d’axes du polytope Dans ces axes, les coordonnées (u1;u2 ) d’un point M du chemin central sont :  x1 − 1  −1  −1/ 2  1  u1 = x2 + x3       AM = u1 AB + u2 DC   x2  = u1  1  + u2  −1/ 2    2 u2 = x3  x  0  1   3     

442

Techniques d’optimisation

On résout l’équation en  pour différentes valeurs de h, d’où l’on déduit xh puis (u1;u2 ) . Le Tableau 5-5 montre les solutions obtenues pour une hauteur de barrière décroissant de 10 000 à 0. La Figure 5-13 montre le chemin central dans les axes (u1;u2 ) du triangle (ABC). Ce chemin apparaît quasiment rectiligne. h 10000 1000 100 10 1 0,1000 0,0100 0,0010 0,0001 0,0000

x1 0,33335 0,33342 0,33444 0,34457 0,45162 0,86308 0,98507 0,99863 0,99970 1,00000

x2 0,33334 0,33331 0,33332 0,33309 0,31112 0,08962 0,00990 0,00100 0,00010 0,00000

x3 0,33333 0,33320 0,33222 0,32236 0,23729 0,04726 0,00497 0,00050 0,00005 0,00000

s1 29998,5 2999,2 299,0 29,0 2,2142 0,1159 0,0102 0,0010 0,0001 0,0000

s2 29999,5 3000,2 300,0 30,0 3,2142 1,1159 1,0102 1,0010 1,0001 1,0000

s3 30000,5 3001,2 301,0 31,0 4,2142 2,1159 2,0102 2,0010 2,0001 2,0000

 -29997,5 -2998,2 -298,0 -28,0 -1,2142 0,8841 0,9898 0,9990 0,9999 1,0000

Tableau 5-5 : Points du chemin central en fonction de la hauteur de barrière

Figure 5-13 : Tracé du chemin central dans le polytope en axes (u1 ; u2)

Programmation linéaire

443

5.2.2 Direction de déplacement Cherchons à résoudre le système KKT (5.69) par la méthode de Newton. En définissant les matrices diagonales X,S 

 x1 0   0 x2 X=   0 0 0 0 

nn

0 0

0  s1 0   0  0 s2  , S=   xn −1 0  0 0 0 0 0 xn   les équations (5.69) se mettent sous la forme :

et le vecteur e 

0 0 sn −1 0

n

:

0  1    0  1  , e =   (5.70)    0  1  1  sn   

 Ax − b    F(x, ,s) =  AT  + s − c  = 0  XSe − he   

(5.71)

L’itération de Newton est définie avec un pas  à régler pour ne pas sortir du domaine x  0 ; s  0 (ce réglage est examiné en section 5.2.3).

 xk +1   xk   dx         k +1  =  k  +   d  s  s  d   k +1   k   s

 dx    avec F(xk , k ,sk )  d  = −F(xk , k ,sk ) d   s T

(5.72)

En explicitant la fonction F et son gradient, on obtient le système donnant la direction de déplacement (d x ,d ,ds ) .

A 0  T 0 A S  k 0

0  dx   Axk − b      I  d  = −  AT k + sk − c    X S e − he  Xk   ds   k k 

(5.73)

On remarque que les deux premières équations KKT (5.71) sont linéaires. Par conséquent, si le point (x k ; k ; sk ) vérifie ces équations, le point (x k+1 ; k+1 ; sk+1 ) résultant de l’itération de Newton les vérifiera également. De tels points appartiennent à l’ensemble des points intérieurs Xint défini par :

(x, ,s)  Xint

Ax − b = 0   AT  + s − c = 0  x  0 , s  0

(5.74)

444

Techniques d’optimisation

En partant d’un point initial intérieur, le second membre de (5.73) se simplifie :

A 0  T 0 A S  k 0

0  dx  0       I  d  = −  0    X S e − he  Xk   ds   k k 

(5.75)

La résolution de ce système linéaire donne la direction (d x ,d ,ds ) . Cette direction dépend de la hauteur de barrière h qui définit un point du chemin central, entre le centre du polytope (pour h =  ) et la solution du problème linéaire (pour h = 0 ). Rappelons que les points du chemin central (5.69) vérifient : (xisi )i=1à n = h . Supposons que l’on se trouve au point (x;s) , et que l’on cherche à revenir sur le chemin central pour favoriser la progression de la méthode de Newton. Une idée naturelle pour viser le point du chemin central « le plus proche » de (x;s) est de prendre pour h la moyenne des produits x isi . Cette moyenne s’appelle la mesure de dualité  au point (x;s) .

=

1 T 1 n x s =  xisi n n i=1

(5.76)

En pratique, cette moyenne est pondérée par le paramètre de centrage  compris entre 0 et 1. La valeur de h pour calculer la direction (d x ,d ,ds ) est ainsi :

h =  =

 n  xisi n i=1

avec 0    1

(5.77)

- pour  = 1 , la direction sera orientée vers le chemin central ; - pour  = 0 , la direction sera orientée vers le bord du domaine x  0 ; s  0 . Le paramètre  permet de corriger la direction de Newton pour éviter une approche trop rapide du bord du domaine admissible. L’exemple suivant illustre les directions obtenues en fonction de la valeur de  .

Exemple 5-12 : Effet du paramètre de centrage (exemple présenté dans [R3]) Reprenons le problème de l’Exemple 5-11 : x + x + x = 1 min x1 + 2x2 + 3x3 sous  1 2 3 x1 ,x2 ,x3  x1 , x2 , x3  0 Les matrices de ce problème linéaire sont : A = (1 1 1) , b =1 , cT = (1 2 3) .

Programmation linéaire

445

 x1 + x2 + x3 = 1 Ax − b = 0  + s1 = 1  T , xi  0 , si  0. Les points intérieurs vérifient : A  + s − c = 0    + s2 = 2  x,s  0   + s3 = 3 Pour illustrer géométriquement l’effet du paramètre de centrage  , on choisit trois points intérieurs et on calcule le déplacement en ces points pour  = 0 ou 1 . Coordonnées des trois points intérieurs

s1 = 1  Les points intérieurs choisis ont les mêmes valeurs de  et s :  = 0  s2 = 2 s3 = 3 ( 0,6 ; 0, 2 ; 0, 2 ) → point n 1  et pour valeurs de x respectives : ( x1 ; x2 ; x3 ) = ( 0, 2 ; 0,6 ; 0, 2 ) → point n 2 ( 0, 2 ; 0, 2 ; 0,6 ) → point n 3 

1 1 1 Ces points sont équidistants du centre du polytope situé en x =  ; ;  . 3 3 3 Déplacement de Newton

1 1 1  0 0 0 0 0 0  L’équation (5.75) donne :  0 0 0 s 0 0  1  0 s2 0   0 0 s3

0 0 0 1 1 0 1 0 1 1 0 0 0 x1 0 0 0 x2 0 0 0

0  dx1   0      0  dx 2   0   0  dx3   0     1  d  =  0  0  ds1   − x1s1 + h      0  ds2   − x2s2 + h     x3   ds3   − x3s3 + h 

  x1 x2 x3  1 1 1 d  + +  = x1 + x2 + x3 − h  + +   s1 s2 s3    s1 s2 s3  dont on déduit : ds1 = ds2 = ds3 = −d  h + x1d h + x2d h + x3d − x1 , dx 2 = − x2 , dx3 = − x3 dx1 = s1 s2 s3  La hauteur de barrière h est réglée par h =  où  est la mesure de dualité : 1 1  = xTs = (x1s1 + x2s2 + x3s3 ) n 3

446

Techniques d’optimisation

Le déplacement de Newton est complètement déterminé lorsqu’on se donne la valeur du paramètre de centrage  entre 0 et 1. On calcule les déplacements obtenus pour  = 0 (direction de Newton) ou  = 1 (direction centrale) en partant des trois points intérieurs choisis. Les tableaux 5.6, 5.7 et 5.8 donnent les composantes du déplacement (dx1,dx2 ,dx3 ,ds1,ds2 ,ds3 ,d ). Les figures 5.14, 5.15 et 5.16 montrent les déplacements dans le plan du polytope ABC (Figure 5-12). •

Directions pour  = 0 ou  = 1 au point : ( x1 ; x2 ; x3 ) = ( 0,6 ; 0,2 ; 0,2 )

Tableau 5-6 : Direction centrale et de Newton au point (0,6 ; 0,2 ; 0,2)

Figure 5-14 : Direction centrale et de Newton au point (0,6 ; 0,2 ; 0,2) Le point initial est très proche du chemin central. On observe que : - le déplacement pour  = 0 (direction de Newton) progresse nettement vers le sommet solution A ; - le déplacement pour  = 1 (direction centrale) revient vers le chemin central mais en s’éloignant du sommet solution A.

Programmation linéaire



447

Directions pour  = 0 ou  = 1 au point : ( x1 ; x2 ; x3 ) = ( 0,2 ; 0,6 ; 0,2 )

Tableau 5-7 : Direction centrale et de Newton au point (0,2 ; 0,6 ; 0,2)

Figure 5-15 : Direction centrale et de Newton au point (0,2 ; 0,6 ; 0,2) Le point initial est loin du chemin central. On observe que : - le déplacement pour  = 0 (direction de Newton) se rapproche du bord (AB) avec un risque de blocage ultérieur ; - le déplacement pour  = 1 (direction centrale) revient vers le chemin central tout en progressant vers le sommet solution A. •

Directions pour  = 0 ou  = 1 au point : ( x1 ; x2 ; x3 ) = ( 0,2 ; 0,2 ; 0,6 )

Tableau 5-8 : Direction centrale et de Newton au point (0,2 ; 0,2 ; 0,6)

448

Techniques d’optimisation

Figure 5-16 : Direction centrale et de Newton au point (0,2 ; 0,2 ; 0,6) Le point initial est loin du chemin central. On observe que : - le déplacement pour  = 0 (direction de Newton) progresse légèrement vers le sommet solution A ; - le déplacement pour  = 1 (direction centrale) revient vers le chemin central et progressant davantage vers le sommet solution A. Au final, on observe que la valeur  = 0 n’est intéressante que si l’on se situe déjà à proximité du chemin central (point numéro 1). Sinon, elle peut conduire à un blocage en approchant trop vite du bord (point numéro 2). Il est donc important de se situer à proximité du chemin central pour permettre à la méthode de Newton de progresser rapidement.

5.2.3 Pas de déplacement Chaque itération de Newton comporte un calcul de direction (d x ,d ,ds ) défini par les équations (5.75) avec la hauteur de barrière réglée par (5.77) :

A 0  T 0 A S  k 0

0  dx  0       I  d  = −  0    X S e −  e  Xk  d s k k k    

avec k =

1 T xk sk n

(5.78)

Programmation linéaire

449

suivi d’un déplacement d’un pas  dans cette direction :

 xk +1   xk   dx         k +1  =  k  +   d  s  s  d   k +1   k   s

(5.79)

La direction dépend du paramètre de centrage  (compris entre 0 et 1) et le déplacement dépend du pas  . L’objectif est de régler les valeurs de  et  pour progresser à proximité du chemin central et éviter l’approche prématurée du bord du domaine x  0 ; s  0 . Définissons d’abord le voisinage du chemin central. Voisinage du chemin central

1 T 1 n x s =  xisi . n n i=1 (x;s) Le point du chemin central « le plus proche » de est celui ayant la même mesure de dualité  . On définit la distance du point (x;s) au chemin central par : Considérons un point (x;s) ayant pour mesure de dualité :  =

 x1s1     1  1    = −   = XSe −e          xn sn    

(5.80)

Cette distance normalisée vaut : -  = 0 si (x,s) est sur le chemin central, car (xisi )i=1 à n =  ; -  = e si (x,s) est la solution du problème linéaire, car (xisi )i=1 à n = 0 . Le voisinage du chemin central est l’ensemble des points intérieurs tels que   m où la largeur de voisinage m est choisie entre 0 et 1. Rappelons que les points intérieurs vérifient par ailleurs les équations (5.74). On considère principalement deux types de voisinages selon la norme choisie. En utilisant la norme 2 :

1 XSe −e 2  m  

2

 xisi  − 1  m2     i =1  n

(5.81)

on définit le voisinage restreint noté V2 (m ) :

 V2 (m ) = (x, ,s)  Xint / 

2   xisi  2  − 1      m   i =1   n

(5.82)

450

Techniques d’optimisation

En utilisant la norme  :

1 XSe −e   m  − m  xisi −  m   (1 − m )  xisi  (1 + m )

(5.83)

et en changeant m en 1− m , on définit le voisinage large noté V− (m ) :

V− (m ) = (x, ,s)  Xint / xisi  m 

(5.84)

Ce voisinage large ne porte que sur la valeur inférieure des produits x isi , car l’objectif est d’éviter l’approche trop rapide du bord du domaine x  0 ; s  0 . Examinons maintenant deux stratégies simples basées sur ces voisinages.

Algorithme à pas restreint Cet algorithme cherche à rester dans le voisinage restreint en réglant uniquement le paramètre  (qui détermine la direction) et en fixant le pas  = 1 . Le nouveau point (x k+1 ; k+1 ; sk+1 ) doit vérifier :

1 Xk +1Sk +1e −k e 2  m k

(5.85)

où  k est la mesure de dualité au point initial (x k ; k ; sk ) . Pour calculer le produit Xk+1Sk+1e , on introduit comme en (5.70) les matrices diagonales Dx ,Ds associées respectivement aux vecteurs d x ,ds :

 dx,1 0   0 dx,2 Dx =   0  0  0 0 

0 0 dx,n −1 0

0   0   , Ds  0  dx,n 

 ds,1 0   0 ds,2 =  0  0  0 0 

0 0 ds,n −1 0

0   0   (5.86)  0  ds,n 

Développons le produit Xk+1Sk+1e .

Xk+1Sk+1e = (Xk + Dx )(Sk + Ds )e = XkSke + Xk Dse + DxSke + Dx Dse

(5.87)

Programmation linéaire

451

En observant que DxSk = Sk Dx (matrices diagonales), Dxe = dx , Dse = ds , et en négligeant le terme Dx Dse d’ordre 2 (déplacements petits), on obtient :

Xk+1Sk+1e = XkSke + Xkds + Skdx

(5.88)

La direction (5.78) vérifie : Sk dx + Xk ds = −(XkSke − ke) , ce qui conduit à :

Xk+1Sk+1e = ke

(5.89)

Reportons dans l’inégalité (5.85) avec e 2 = n et 0    1 .

1 1 Xk +1Sk +1e −k e 2 = ( − 1)k e 2 =  − 1 n = (1 − ) n  m k k

(5.90)

On obtient la valeur minimale du paramètre de centrage  pour que le nouveau point (x k+1 ; k+1 ; sk+1 ) reste dans le voisinage V2 (m ) .

  1−

m n

(5.91)

Cette inégalité ayant été obtenue en négligeant les termes d’ordre 2 dans (5.87), il faut vérifier que le nouveau point reste dans V2 (m ) et éventuellement augmenter la valeur de  pour se rapprocher davantage du chemin central. Une largeur de voisinage m de l’ordre de 0,5 permet d’initialiser le réglage de . Algorithme à pas long Cet algorithme cherche à rester dans le voisinage large en fixant le paramètre  (qui détermine la direction) et en réglant le pas  . Cette stratégie est « l’inverse » de celle de l’algorithme à pas restreint. Le nouveau point (x k+1 ; k+1 ; sk+1 ) doit vérifier :

min xisi  k m

i =1 à n

(5.92)

On calcule d’abord la direction (d x ,d ,ds ) par (5.78) avec la valeur de  choisie. Le pas est ensuite réglé par dichotomie en partant de  = 1 et en divisant par 2 jusqu’à satisfaire la condition (5.92). Le voisinage large V− (m ) étant peu contraignant on peut fixer une largeur de voisinage petite : m = 0,001 et un paramètre de centrage petit :  = 0,1 .

452

Techniques d’optimisation

La Figure 5-17 illustre la progression de l’algorithme à pas long. Dans l’espace primal-dual (produits x isi ), le voisinage V− (m ) est un cône issu de l’origine. Chaque itération s’écarte de la borne avant d’y revenir.

Figure 5-17 : Itérations de l’algorithme à pas long L’Exemple 5-13 compare les performances de l’algorithme à pas restreint et de l’algorithme à pas long.

Exemple 5-13 : Algorithmes à pas restreint et à pas long (voir [R3]) Comparons les algorithmes à pas restreint et à pas long sur le problème de l’Exemple 5-12 : x + x + x = 1 min x1 + 2x2 + 3x3 sous  1 2 3 x1 ,x2 ,x3  x1 , x2 , x3  0

Les points de départ sont les 3 points intérieurs de l’Exemple 5-12, dont les coordonnées respectives sont : ( 0,6 ; 0, 2 ; 0, 2 ) → point n 1 s1 = 1    = 0  s2 = 2 et ( x1 ; x2 ; x3 ) = ( 0, 2 ; 0,6 ; 0, 2 ) → point n 2 s3 = 3 ( 0, 2 ; 0, 2 ; 0,6 ) → point n 3  Les tableaux et figures suivantes montrent la décroissance de la mesure de dualité  pour les deux algorithmes.

Programmation linéaire

453

Algorithme à pas restreint (m = 0,4)

x1 x2 x3 Itération 0 1 2 3 4 5 6 7 8 9 10 20 30 40 45

0,6 0,2 0,2  0,53333 0,41017 0,31544 0,24259 0,18657 0,14348 0,11035 0,08486 0,06526 0,05019 0,03860 0,00279 0,00020 0,00001 0,00000

0,2 0,6 0,2  0,66667 0,51271 0,39430 0,30324 0,23321 0,17935 0,13793 0,10608 0,08158 0,06274 0,04825 0,00349 0,00025 0,00002 0,00000

Pas restreint

Algorithme à pas long (m = 10−3 ,  = 0,1)

0,2 0,2 0,6  0,80000 0,61525 0,47316 0,36389 0,27985 0,21522 0,16552 0,12729 0,09790 0,07529 0,05790 0,00419 0,00030 0,00002 0,00001

x1 x2 x3 Itération 0 1 2 3 4 5 6 7 8

0,6 0,2 0,2  0,53333 0,29333 0,16133 0,08873 0,00887 0,00089 0,00009 0,00001 0,00000

0,2 0,6 0,2  0,66667 0,36667 0,20167 0,02017 0,00202 0,00020 0,00002 0,00000 0,00000

0,2 0,2 0,6  0,80000 0,44000 0,24200 0,02420 0,00242 0,00024 0,00002 0,00000 0,00000

Pas long

Tableau 5-9 : Algorithme à pas restreint et long : mesure de dualité La Figure 5-18 et la Figure 5-19 montrent la progression vers le sommet solution A dans le plan du polytope.

454

Techniques d’optimisation

Figure 5-18 : Algorithme à pas restreint : progression dans le plan du polytope

Figure 5-19 : Algorithme à pas long : progression dans le plan du polytope On observe que l’algorithme à pas long est plus efficace : la contrainte de voisinage du chemin central est moins forte, ce qui permet une progression plus directe vers la solution.

Programmation linéaire

455

5.2.4 Algorithme de prédiction-correction Les stratégies à pas restreint ou à pas long sont simples, mais n’exploitent pas complètement les possibilités de réglage combiné des paramètres  et  . L’algorithme de prédiction-correction implémenté dans les logiciels combine ces réglages en trois étapes à chaque itération : prédiction, correction, recentrage. L’étape de prédiction vise directement la solution du problème linéaire avec un paramètre de centrage nul :  = 0 . Le déplacement associé noté (dpx ,dp ,dps ) est obtenu en résolvant le système linéaire :

 A 0 0   dpx   0       T I   dp  = −  0  0 A S   X S e  k 0 Xk   dps   k k 

(5.93)

En appliquant ce déplacement, on obtiendrait :

Xk+1Sk+1e = (Xk + Dpx )(Sk + Dps )e = XkSke + Xk Dpse + DpxSke + Dpx Dpse (5.94) où Dpx ,Dps sont les matrices diagonales associées respectivement à d px ,d ps . Cette expression se simplifie en observant que Dxe = dx , Dse = ds et en utilisant la dernière équation de (5.93) qui donne : Sk dpx + Xk dps + XkSk e = 0 .

Il ne reste que le terme d’ordre 2, ce qui est logique car l’itération de Newton ne considère que les termes d’ordre 1.

Xk+1Sk+1e = Dpx Dpse

(5.95)

L’étape de correction vise à annuler ce terme d’ordre 2. Le déplacement associé noté (dcx ,dc ,dcs ) est obtenu en résolvant le système linéaire :

 0   A 0 0  dcx       T I  dc  = −  0  0 A S    Dpx Dpse   k 0 Xk  dcs   

(5.96)

Les déplacements de prédiction (dpx ,dp ,dps ) et de correction (dcx ,dc ,dcs ) ne prennent pas en compte les limites du domaine x  0 ; s  0 .

456

Techniques d’optimisation

L’étape de recentrage introduit le paramètre de centrage  . Pour estimer ce paramètre, on calcule le pas maximal réalisable dans la direction (dpx ,dp ,dps ) sans sortir du domaine

x  0 ; s  0 .

Le déplacement est limité par les

composantes négatives de d px et d ps . Le pas maximal  px suivant d px et le pas maximal ps suivant d ps sont donnés par :

 x   s  px = min  − k,i , 1 , ps = min  − k,i , 1   i,dpx ,i 0  d i,dps ,i 0  d  px,i   ps,i 

(5.97)

En appliquant ces pas  px et ps à partir du point (xk ;sk ) , on obtiendrait la mesure de dualité  :

1 (5.98)  = (xk + px dpx )T (sk + psdps ) n Le paramètre de centrage  est réglé en comparant  et la valeur initiale  k . Si   k , la progression suivant la direction de prédiction est bonne et ne nécessite pas de recentrage. Si   k , la progression suivant la direction de prédiction est limitée par le pas, et le recentrage est nécessaire. En pratique, le réglage empirique suivant donne de bons résultats : 3

 (5.99) =    k À l’issue des trois étapes de prédiction, correction, recentrage, la direction de déplacement (d x ,d ,ds ) est obtenue en résolvant le système linéaire :   0  A 0 0  dx       T I  d  = −  0  0 A S  d    0 X X S e + D D e −  e k  s  px ps k   k  k k

(5.100)

Le nouveau point est défini en appliquant un pas x suivant d x (pas primal) et un pas  s suivant d  et d s (pas dual).

 xk +1   xk   x dx         k +1  =  k  +  s d  s  s  d   k +1   k   s s 

(5.101)

Programmation linéaire

457

Les pas x et  s sont réglés pour que le nouveau point (x k+1 ; k+1 ; sk+1 ) reste dans un voisinage large V− (m ) du chemin central. La largeur m de ce voisinage peut être initialement petite (m = 0,1) , puis croître à l’approche du sommet solution. On peut également régler directement les pas x et  s par rapport à la limite du domaine x  0 ; s  0 , sans notion de voisinage.

 x   s  x = min  − k,i , 1 , s = min  − k,i , 1 (5.102)   i,dpx ,i 0  d i,dps,i 0  d  x,i   s,i  Ces pas sont appliqués dans (5.101) avec un coefficient réducteur  légèrement inférieur à 1, de façon à rester strictement à l’intérieur du domaine admissible. Résolution du système linéaire L’algorithme de prédiction-correction demande de résoudre trois systèmes linéaires de même matrice à chaque itération. Ces systèmes sont de la forme :

A 0  T 0 A S  k 0

0  dx   x      I  d  =       Xk   ds   s 

(5.103)

Les matrices X k et Sk sont diagonales non singulières (car x k  0 , sk  0 ) et ont pour inverses X −k1 et S−k 1 . En exprimant d s à partir de la dernière équation, et en permutant les deux premières équations, on obtient un système réduit symétrique :

 −X−k1Sk AT   dx    − X−k1s      =  0   d   x  A  avec ds = Xk−1s − Xk−1Sk dx

(5.104)

Cette formulation est bien adaptée à des problèmes de grandes tailles lorsque la matrice A est creuse. On peut poursuivre la résolution en exprimant d x à partir de la première équation. Il reste un système linéaire en d  à partir duquel on peut calculer d s et d x .

ASk−1Xk AT d = x + AS−k1Xk − AS−k1s  T ds =  − A d dx = Sk−1s − Sk−1Xk ds 

(5.105)

Selon la structure de la matrice A, il est plus simple d’utiliser (5.104) ou (5.105).

458

Techniques d’optimisation

Initialisation Le comportement de l’algorithme est assez sensible au point initial. Idéalement, il faudrait choisir un point intérieur pas trop proche du bord du domaine x  0 ; s  0 . Rappelons que l’ensemble des points intérieurs Xint est défini par (5.74) :

Ax − b = 0  (x, ,s)  Xint  AT  + s − c = 0 (5.106)  x,s  0 Une bonne initialisation peut être obtenue en résolvant les 2 problèmes suivants : 1 min xT x sous Ax = b x 2 1 min sTs sous AT  +s = c  ,s 2 dont les solutions respectives sont :

 x = AT (AAT )−1 b  T −1  = (AA ) Ac s = c − AT  

(5.107)

(5.108)

Les composantes négatives des vecteurs x et s sont ensuite corrigées de manière arbitraire pour revenir à l’intérieur du domaine x  0 ; s  0 . Ce point initial ne vérifie pas les égalités (5.106), mais les seconds membres de ces équations linéaires sont annulés dès la première itération de Newton (5.73).

5.2.5 Extensions La formulation développée en section 5.2.1 et aboutissant au système KKT (5.69) peut s’étendre de manière similaire à des problèmes non linéaires. Examinons en particulier le cas d’un problème quadratique-linéaire et le cas d’un problème non linéaire avec contraintes égalité. Problème quadratique Un problème quadratique-linéaire se met sous la forme standard :



1 Ax = b minn xT Qx + cT x sous x0 x 2

(5.109)

Programmation linéaire

459

Le lagrangien s’exprime avec des multiplicateurs   m pour les contraintes égalité et des multiplicateurs s  n pour les contraintes inégalité.

1 (5.110) L(x, ,s) = xTQx + cT x + T (Ax − b) − sT x 2 Les conditions KKT d’ordre 1 donnent un système en variables (x, ,s) :

Ax − b = 0  T (5.111) Qx + c − A  − s = 0  xisi = 0 , xi  0 , si  0 , i = 1 à n que l’on transforme en problème barrière avec un paramètre de hauteur h :  Ax − b F(x, ,s) =  Qx + c − AT  − s   XSe − he

(5.112)

A 0  T Q A S  k 0

(5.113)

 =0   La méthode de Newton donne le système linéaire : 0  dx   Axk − b    I  d  = −  Qk xk + AT k + sk + c     Xk   XkSk e − he   ds 

très semblable au système (5.73) à l’exception de la matrice Q. Problème non linéaire Un problème non linéaire avec contraintes égalité est de la forme :

minn f (x) sous x



c(x) = 0 x0

(5.114)

Le lagrangien s’exprime avec des multiplicateurs   m pour les contraintes égalité et des multiplicateurs s  n pour les contraintes de bornes sur x.

L(x, ,s) = f (x) + Tc(x) − sT x

(5.115)

Les conditions KKT d’ordre 1 donnent un système en variables (x, ,s) :

c(x) = 0  x L(x, ,s) = 0  xisi = 0 , xi  0 , si  0 , i = 1 à n

(5.116)

460

Techniques d’optimisation

que l’on transforme en problème barrière avec un paramètre de hauteur h :

 c(x)  F(x, ,s) =  x L(x, ,s)  = 0  XSe − he   

(5.117)

La méthode de Newton donne le système linéaire :

 c(xk )T 0 0   dx   c(xk )   2     L(x ,  ,s )  (5.118)  L(x ,  ,s )  c(x ) I d = − k x k k k  xx k k k       Sk 0 Xk   ds   XkSk e − he   Ce système est plus complexe que le système (5.73), car il nécessite une estimation du hessien du lagrangien. Par ailleurs, la prise en compte de contraintes inégalité nécessite des améliorations algorithmiques décrites dans la section 4.5.

5.3 Conclusion 5.3.1 Les points essentiels •

La solution d’un problème linéaire correspond à un sommet du polytope des contraintes. Elle présente au moins n − m variables nulles, où n est le nombre de variables et m le nombre de contraintes égalité.



La méthode du simplexe parcourt les sommets de manière ordonnée pour arriver à la solution. C’est la méthode la plus utilisée et elle s’avère très performante sur la grande majorité des applications, même si le temps de calcul peut être exponentiel dans les cas pires.



Les méthodes de point intérieur cherchent à résoudre les conditions d’optimalité par une méthode de Newton en progressant à l’intérieur du polytope des contraintes. Elles sont plus difficiles à régler que le simplexe, mais elles garantissent un temps de calcul polynomial et s’avèrent performantes sur des problèmes de grandes dimensions.

Programmation linéaire

461

5.3.2 Pour aller plus loin •

Programmation mathématique (M. Minoux, Lavoisier 2008, 2 e édition) Le chapitre 2 présente en détail les résultats théoriques de programmation linéaire, la méthode du simplexe et du simplexe dual. Les explications sont poursuivies dans le chapitre 7 pour aborder la programmation linéaire en nombres entiers.



Introduction à l’optimisation différentiable (M. polytechniques et universitaires normandes 2006)

Bierlaire,

Presses

La méthode du simplexe est présentée au chapitre 17 et les méthodes de point intérieur au chapitre 19. Les explications sont accompagnés d’exemples détaillés d’application des algorithmes. •

Numerical optimization (J. Nocedal, S.J. Wright, Springer 2006) La méthode du simplexe est présentée au chapitre 13 et les méthodes de point intérieur au chapitre 14. Les résultats théoriques de convergence sont donnés avec leurs démonstrations. Beaucoup de conseils pratiques sont également donnés sur l’implémentation des algorithmes.



Practical methods of optimization (R. Fletcher, Wiley 1987, 2nd edition) Le chapitre 8 présente la méthode du simplexe. Le chapitre 10 sur la programmation quadratique décrit la technique du simplexe avec pivotage complémentaire. De nombreux conseils pratiques sont donnés concernant l’utilisation des algorithmes.

462

Techniques d’optimisation

Index affectation quadratique .................................................................................... 163 affine shaker .................................................................................................... 140 algorithmes évolutionnaires............................................................................. 179 base ........................................................................................................... 25, 387 admissible ........................................................................................... 388, 410 dégénérée ............................................................................................ 389, 394 dual-admissible ........................................................................................... 425 réalisable ..................................................................................................... 388 centre du polytope ........................................................................................... 437 chemin central ......................................................................................................... 439 de zéros ....................................................................................................... 198 dogleg ......................................................................................................... 261 CMAES ........................................................................................................... 146 colonie de fourmis ........................................................................................... 176 condition d'Armijo .............................................................................................. 248, 255 de complémentarité ............................................................ 55, 61, 64, 299, 431 de courbure ..........................................................................219, 224, 228, 250 de Goldstein ................................................................................ 248, 333, 351 de qualification ............................................................................................. 51 de Wolfe.............................................................................................. 248, 284 KKT ........................................................... 54, 60, 70, 296, 299, 317, 341, 437 conditionnement .............................................................................9, 27, 289, 320 cône tangent .......................................................................................... 50, 61, 68 contrainte active ..................................................................... 13, 32, 50, 297, 341 convergence linéaire ........................................................................................................ 286 quadratique ................................................................................................. 286 vitesse ................................................................................................. 193, 286 courbure .............................................................................................................. 8 coût augmenté ..................................................................................... 298, 307, 308 réduit ......................................................................................30, 397, 404, 426 dérivée complexe ....................................................................................................... 19 directionnelle .......................................................................................... 8, 350 descente non monotone ................................................................................... 255 développement de Taylor .................................................................................... 4 différence finie .................................................................................................. 15

463

dilatation ........................................................................................................... 88 DIRECT .......................................................................................................... 105 direction admissible à la limite..................................................................................... 49 conjuguée ............................................................................................ 222, 240 de base ........................................................................................................ 392 de descente ...................................................................................................... 6 d'ordre 2 ........................................................................................ 36, 334, 354 dominance ....................................................................................................... 301 dualité faible ............................................................................................................. 39 forte ............................................................................................................... 41 saut de ..................................................................................................... 39, 42 élimination ........................................................................................................ 31 équation normale ............................................................................................... 209, 211 sécante ................................................................................................ 213, 217 erreur d'arrondi ........................................................................................................ 17 de troncature ........................................................................................... 15, 17 essaim de particules ......................................................................................... 171 extrapolation de Richardson .............................................................................. 20 factorisation de Cholesky modifiée ................................................................. 247 filtre ................................................................................................................. 302 fonction barrière ................................................................................................ 322, 437 convexe conjuguée ...................................................................................... 280 de Griewank .......................................................................................... 89, 175 de pénalisation .......................................................................86, 298, 307, 308 de Rosenbrock.......................................... 5, 139, 145, 152, 175, 254, 266, 268 directionnelle .................................................................................. 9, 219, 248 duale.............................................................................................. 37, 297, 367 lipschitzienne .............................................................................................. 105 mérite ...................................................................................303, 307, 349, 365 quadratique .............................................................. 4, 204, 221, 236, 240, 286 forme canonique .................................................................................... 397, 401, 410 standard .............................................................................. 2, 45, 384, 397, 436 formule de Broyden .................................................................................................. 216 de Fletcher-Reeves ...................................................................................... 244 de Polak-Ribière.......................................................................................... 244 de Sherman-Morrison-Woodbury ............................................................... 223

464

Techniques d’optimisation

front de Pareto ................................................................................................. 302 globalisation .................................................................................................... 231 gradient ......................................................................................................... 3, 71 accéléré ....................................................................................................... 235 conjugué...................................................................................................... 242 préconditionné ............................................................................................ 245 projeté ......................................................................................................... 326 proximal ...................................................................................................... 275 proximal accéléré ........................................................................................ 277 réduit ............................................................................................... 30, 68, 323 hauteur de barrière ................................................................................... 363, 437 hessien ................................................................................................................. 4 réduit ............................................................................................... 30, 68, 337 hyperrectangle ................................................................................................. 118 potentiellement optimal ............................................................................... 123 identité de Moreau ........................................................................................... 281 incrément complexe ....................................................................................................... 19 optimal .......................................................................................................... 17 indépendance linéaire ............................................................................ 51, 53, 58 inégalité de Kantorovich ............................................................................................ 289 de Zoutendijk .............................................................................................. 285 interpolation quadratique ................................................................................. 102 lagrangien ............................................................................................ 37, 54, 296 augmenté ............................................................................................. 301, 371 ligne de niveau .................................................................................................... 5 matrice jacobienne............................................................................................... 3 mesure de dualité ............................................................................. 366, 444, 449 métaheuristique ................................................................................................. 94 méthode BFGS .......................................................................................................... 224 de Broyden .................................................................................................. 213 de Gauss-Newton ................................................................................ 208, 211 de la sécante ................................................................................................ 214 de la tangente .............................................................................................. 191 de moindres carrés ...................................................................................... 208 de Nesterov ......................................................................................... 238, 277 de Newton ........................................................................................... 190, 204 de plus forte pente ....................................................................... 232, 286, 327 de quasi-Newton ..................................................................214, 336, 356, 357 d'Euler ......................................................................................................... 274 DFP ............................................................................................................. 218

465

d'homotopie................................................................................................. 196 dogleg ......................................................................................................... 261 d'Uzawa ...................................................................................................... 368 proximale primale-duale ............................................................................. 278 SR1 ............................................................................................................. 225 minimisation unidimensionnelle........................................................................ 96 minimum global .................................................................................................... 44, 301 local ........................................................................................................ 12, 88 mise à l’échelle .................................................................................................. 17 moindres carrés ....................................................................................... 208, 358 multiplicateur ...................................................................................... 37, 54, 296 anormal ......................................................................................................... 70 Nelder-Mead ................................................................................................... 132 nombre d’or ............................................................................................... 99, 100 noyau ................................................................................................................. 28 opérateur proximal ...................................................................................................... 269 paramètre de centrage ...................................................................................... 444 pénalisation ............................................................................................... 86, 353 barrière ................................................................................................ 322, 362 coefficient ..................................................................................... 86, 298, 378 différentiable ............................................................................................... 311 intérieure ..................................................................................................... 322 L1................................................................................................................ 312 quadratique ................................................................................................. 371 pivotage ........................................................................................................... 399 complémentaire ........................................................................................... 432 dual ............................................................................................................. 427 primal .......................................................................................................... 427 standard ....................................................................................................... 431 point de Cauchy ................................................................................................... 261 de Newton ................................................................................................... 261 intérieur ............................................................................................... 299, 436 proximal ...................................................................................................... 269 selle .................................................................................... 40, 42, 44, 369, 372 polytope................................................................................................... 132, 385 précision machine.............................................................................................. 16 préconditionnement ......................................................................................... 246 prédiction-correction ....................................................................................... 455 problème anormal ......................................................................................................... 70

466

Techniques d’optimisation

auxiliaire ..................................................................................................... 410 barrière ........................................................................................................ 437 dual .................................................................................. 38, 46, 297, 367, 424 primal ............................................................................................ 47, 296, 424 quadratique ................................................................................................. 257 quadratique local ......................................................................................... 342 programmation linéaire .................................................................................................. 45, 384 quadratique séquentielle ...................................................................... 300, 341 projection .................................................................................................. 76, 326 pseudo-gradient ............................................................................................... 136 pseudo-mesure................................................................................................. 207 rapport de réduction ................................................................................ 259, 352 recherche linéaire .................................................................................... 232, 349 recuit simulé .................................................................................................... 153 réduction ........................................................................................................... 25 région de confiance ................................................................................. 256, 351 règle de Bland ...................................................................................................... 399 de Dantzig ................................................................................................... 399 relaxation ......................................................................................................... 353 résidu ............................................................................................................... 208 restauration ................................................................................................ 33, 330 sensibilité .......................................................................................................... 77 simplexe complémentaire ........................................................................................... 431 dual ............................................................................................................. 425 révisé ........................................................................................................... 422 solution de base ............................................................................... 388, 410, 431 sommet .....................................................................................132, 385, 388, 399 sous-différentiel ............................................................................................... 268 sous-gradient ................................................................................................... 268 suite de Fibonacci .............................................................................................. 99 tableau du simplexe ......................................................................................... 404 transformée de Legendre-Fenchel ................................................................... 280 valeur propre ....................................................................................................... 8 variable complémentaire ........................................................................................... 431 de base .................................................................................387, 400, 401, 431 d'écart .................................................................................................. 375, 384 duale.............................................................................................. 37, 296, 363 entrante ................................................................................399, 405, 426, 431 hors-base ..................................................................................... 387, 399, 401

467

libre ............................................................................................................. 388 liée .............................................................................................................. 388 primale .......................................................................................... 37, 296, 363 sortante ................................................................................................ 400, 405 voisinage ......................................................................................... 162, 164, 174 large ............................................................................................................ 450 largeur ......................................................................................................... 449 restreint ....................................................................................................... 449 voyageur de commerce ............................................................................ 158, 177

469

Bibliographie succincte [R1]

Introduction to numerical continuation methods (E.L. Allgower, K. Georg, Siam 2003) [R2] Analyse numérique (Collectif direction J. Baranger, Hermann 1991) [R3] Introduction à l’optimisation différentiable (M. Bierlaire, Presses polytechniques et universitaires normandes 2006) [R4] Optimisation continue (F.J. Bonnans, Dunod 2006) [R5] Numerical optimization (J.F. Bonnans, J.C. Gilbert, C. Lemaréchal, C.A. Sagastizabal, Springer 2003) [R6] Numerical methods for unconstrained optimization and nonlinear equations (J.E. Dennis, R.B. Schnabel, Siam 1996) [R7] Métaheuristiques pour l’optimisation difficile (J. Dréo, A. Pétrowski, P. Siarry, E. Taillard, Eyrolles 2003) [R8] Practical methods of optimization (R. Fletcher, Wiley 1987, 2nd edition) [R9] Practical optimization (P.E. Gill, W. Murray, M.H. Wright, Elsevier 2004) [R10] Les mathématiques du mieux-faire (J.B. Hiriart-Urruty, Ellipses 2008) [R11] Programmation mathématique (M. Minoux, Lavoisier 2008, 2ème édition) [R12] Numerical optimization (J. Nocedal, S.J. Wright, Springer 2006) [R13] Proximal algorithms (N. Parikh, Foundations and Trends in Optimization, Vol 1, No 3, 2013) [R14] Ant colony optimization (M. Rodrigo, T. Stützle, MIT Press 2004) [R15] Stochastic optimization (J.J. Schneider, S. Kirkpatrick, Springer 2006) [R16] Practical mathematical optimization (J.A. Snyman, Springer 2005)