• Aucun résultat trouvé

C Optimisation d’une fonction

Dans le document Méthodes numériques et simulations (Page 187-192)

Les problèmes d’optimisation sont parmi les plus fréquents rencontrés en calcul scientifique. Dans plusieurs cas, il s’agit de trouver le minimum d’une fonction différentiable E(x) à N variables. Cer- taines méthodes supposent une connaissance des dérivées de E , qui doivent être calculées sépa- rément ; d’autres ne requièrent pas la dérivée, ce qui est crucial si cette dernière est inconnue, par exemple si E est le résultat d’un calcul numérique complexe. Dans certains problèmes, on cherche un point de dérivée nulle de E , qui n’est pas nécessairement un minimum, mais pourrait être un maximum ou un point d’inflexion (un point de selle, en plusieurs variables).

D’autres problèmes, comme le problème du commis voyageur, ne peuvent pas être formulés en fonction d’une ou plusieurs variables continues, mais sont plutôt de nature discrète.

Dans tous les cas, il faut distinguer les minimums locaux du minimum global. La plupart des mé- thodes ne peuvent trouver que des minimums locaux. La recherche du minimum global est un pro- blème très difficile qui n’a pas de solution certaine. La méthode du recuit simulé, vue en fin de section, est la meilleure stratégie dans ce cas.

Une condition nécessaire à l’existence d’un minimum d’une fonction E est la condition de dérivée nulle :

f(x) :=∂ E

∂ x = 0 (17.23)

On peut donc réduire le problème du minimum local à celui de la recherche de racines. Par contre, l’inverse n’est pas vrai : une fonction vectorielle f(x) générale comme celle traitée à la section pré- cédente n’est pas nécessairement le gradient d’une fonction. Il faudrait pour cela qu’elle soit inté- grable. Par exemple, pour N = 3 variables, il faudrait que le rotationnel du vecteur f(x) soit nul. Par contre, le fait que f soit le gradient d’une fonction E nous permet de mettre en place des algorithmes plus efficaces.

17.C.1 Méthode de Newton-Raphson

La méthode de Newton-Raphson requiert de pouvoir calculer non seulement les premières dérivées f= ∂ E /∂ x, mais aussi les dérivées secondes

H= ∂ f ∂ x= 2E ∂ x∂ x ou encore Hi j= ∂ E ∂ xi∂ xj (17.24)

cette matrice porte le nom de matrice hessienne, ou simplement hessien. (dans le contexte d’une re- cherche de racines, l’équivalent de cette matrice était notée J). Si on peut produire le hessien, alors la méthode de Newton-Raphson peut être appliquée comme décrit à la section17.B.1. Lorsque la forme des dérivées de la fonction E n’est pas connue explicitement, la méthode peut quand même être appliquée à condition de procéder à un calcul numérique des dérivées. Par exemple, on pour- rait procéder de la manière suivante : une fonction de N variables à un point donné comporte 1 valeur, N dérivées premières et12N(N +1) dérivées secondes distinctes, soit au total 1+N (N +3)/2

quantités qui doivent être estimées à chaque itération de la méthode. Le calcul numérique de ces quantités requiert donc un nombre égal de valeurs E calculées au point x et dans son voisinage immédiat : il s’agit alors de lisser une forme quadratique sur ces valeurs de la fonction E

E(x) = E (x0) + f · (x − x0) + 1 2(x − x0)

TH(x − x

0) (17.25)

afin de déterminer les N composantes de f et les 12N(N + 1) composantes indépendantes de H.

Si la fonction E est longue à calculer et que N est grand, ceci n’est pas la meilleure stratégie, car le nombre d’évaluations de E se comporte comme N2. On préfèrera dans ce cas les méthodes de quasi-Newton décrites ci-dessous.

17.C.2 Méthodes de quasi-Newton

Les méthodes de quasi-Newton sont semblables à la méthode de Broyden, mais appliquées à la minimisation d’une fonction. L’idée générale est de commencer une procédure itérative à l’aide d’une valeur très imparfaite du hessien, et de mettre à jour le hessien à chaque étape en même temps que la position x.

À chaque étape de la méthode le gradient fn = f(xn) doit être calculé à l’aide d’une approximation aux différences finies :

fn ,i=E(xn+ εei) − E (xn− εei)

2ε (17.26)

où ei est le vecteur unitaire dans la direction no i etε un pas de différentiation petit. Ensuite, la position x est mise à jour à l’aide de la formule

xn+1= xn− Infn In:= H−1n (17.27)

Enfin, dans la méthode dite de DFP (Davidson-Fletcher-Powell) le hessien inverse Inest mis à jour à l’aide de la formule suivante :

In= In−1+ δxnδxTn δxT nδfnIn−1δfnδf T nIn−1 δfT nIn−1δfn (17.28)

On remarque que cette formule préserve la relationδxn= Inδfn:

Inδfn= In−1δfn+ δxn− In−1δfn= δxn (17.29) La méthode dite BFGS (Broyden-Fletcher-Goldfarb-Shanno) modifie la relation (17.28) de la ma- nière suivante : In= In−1+ δxnδxTn δxT nδfnIn−1δfnδf T nIn−1 δfT nIn−1δfn + δfT nIn−1δfnunuTn (17.30)

un= δxn δxT nδfnIn−1δfn δfT nIn−1δfn (17.31) Encore une fois, on constate que la relationδxn = Inδfn est préservée, car le vecteur un est ortho- gonal àδfn:

uTnδfn= 1 − 1 = 0 (17.32)

La méthode BFGS est généralement jugée meilleure de la méthode DFP, au sens de la convergence.

17.C.3 Méthode de Powell

Lorsqu’elle converge, la méthode de Newton-Raphson le fait rapidement. Cependant, elle n’est pas robuste et la solution trouvée n’est pas nécessairement un minimum. La méthode de Powell, que nous allons maintenant décrire, corrige ces deux travers, au prix d’un plus grand nombre d’évalua- tions de la fonction E .

Approximation quadratique en dimension 1

La méthode de Powell repose sur la capacité de trouver le minimum d’une fonction E(x) dans une direction donnée de l’espace, c’est-à-dire de résoudre un problème de minimisation à une variable. Si on désire minimiser une fonction à une variable y(x ), la stratégie générale est la suivante :

1. On doit premièrement cadrer le minimum, c’est-à-dire trouver trois points x1< x2< x3tels que y(x1) > y (x2) et y (x3) > y (x2).

2. Ensuite on lisse une parabole sur ces trois points (la solution est unique). Le minimum xmin. de cette parabole est alors l’estimation suivante du minimum x⋆ de la fonction. xmin.est forcément compris entre x1et x3, mais peut être situé à droite ou à gauche de x2.

3. On doit conserver deux autres points, afin d’itérer la procédure. L’une des deux bornes (x1ou

x3) sera remplacée, et on retourne à l’étape 2 en utilisant les trois nouveaux points xi′définis par le tableau suivant :

condition x1x2x3

xmin.< x2 et y(xmin.) < y (x2) x1 xmin. x2

xmin.< x2 et y(xmin.) > y (x2) xmin. x2 x3 xmin.> x2 et y(xmin.) < y (x2) x2 xmin. x3

xmin.> x2 et y(xmin.) > y (x2) x1 x2 xmin.

4. On arrête la procédure lorsque xmin.≈ x⋆varie par une valeur inférieure à une précisionε. Directions conjuguées

La méthode de Powell proprement dite comporte les étapes suivantes :

1. Choisir un point de départ x0et un ensemble de directions ui(i = 0,1,...,N − 1, où N est la dimension de l’espace dans lequel on minimise). Les directions initiales peuvent simplement être les vecteurs unitaires mutuellement orthogonaux définis par chaque axe.

2. Pour[i=0,i<N,i++], trouver la position du minimum xi+1à partir du point xi, dans la di- rection ui. Autrement dit, on se déplace ainsi : x0→ x1→ x2→ · · · → xN, où le déplacement de xià xi+1est fait dans la direction ui, de manière à minimiser la fonction E(xi+ λui).

3. On met à jour les étiquettes des directions en sacrifiant u0: ui← ui+1.

4. On définit la nouvelle direction uN−1= xN−x0. C’est la direction de plus grande décroissance de la fonction jusqu’ici.

5. On minimise à partir de xN dans la direction uN−1et remplace x0par le point ainsi trouvé. 6. On retourne à l’étape 2, jusqu’à ce que la fonction E ne change plus de manière appréciable. On montre que cette procédure, si elle est appliquée à une fonction quadratique, produit, après k itérations, une séquence de directions ui dont les k derniers membres sont conjugués, au sens de la méthode du gradient conjugué. Cependant, en pratique, les fonctions sur lesquelles on applique la méthode ne sont pas quadratiques et la procédure ci-dessus tend à produire des directions qui éventuellement deviennent linéairement dépendantes, ce qui mène bien sûr à la mauvaise réponse. Cela est dû au fait qu’on jette la direction u0au profit de xN − x0, et que toutes les directions ont tendance à «converger» vers une direction commune.

Il faut donc, en pratique, modifier la procédure ci-dessus, ce qui peut se faire de plusieurs façons. La manière proposée par[PTVF07] consiste à éliminer la direction qui produit la plus grande dimi- nution de E , et qui donc est la plus susceptible d’être proche de xN− x0.

17.C.4 Méthode du simplexe descendant

S’il n’est pas possible d’utiliser l’expression des dérivées de la fonction E , ou si la forme de la fonc- tion ne laisse pas espérer qu’une méthode basée sur des dérivées puisse avoir du succès, alors on peut se rabattre sur la méthode du simplexe descendant (angl. downhill simplex), proposée par Nel- der et Mead.

Un simplexe en d dimensions est une figure géométrique de dimension d bornée par d+1 simplexes de dimension d− 1. Par exemple :

1. Un simplexe de dimension 0 est un point.

2. Un simplexe de dimension 1 est un segment, borné par deux points.

3. Un simplexe de dimension 2 est un triangle, c’est-à-dire une portion de R2bornée par trois segments.

4. Un simplexe de dimension 3 est un tétraèdre irrégulier, c’est-à-dire une portion de R3bornée par 4 triangles, et ainsi de suite.

L’idée générale de la méthode du simplexe descendant est de faire évoluer un simplexe dans l’es- pace Rdsur lequel est définie la fonction E(x). Cette évolution se fait via différentes transformations du simplexe, notamment des réflexions et des contractions, qui amène progressivement le simplexe vers la région où la fonction E(x) comporte un minimum local. Certaines de ces transformations sont illustrées à la figure17.3. Il y a plusieurs variantes de la méthode du simplexe. L’une d’entre elles est décrite ci-dessous :

1. Choisir un simplexe de départ, comportant n= d +1 sommets en dimension d . Les positions sont notées x1, . . . , xn.

2. Trier les sommets dans l’ordre croissant de la fonction f à minimiser : f(x1) ≤ f (x2) ≤ ··· <

f(xn).

(A) simplexe d’origine (B) simplexe inversé

(C) simplexe aplati

(D) simplexe inversé et allongé (E) simplexe contracté

FIGURE17.3

4. Calculer le point réfléchi xr= x0+ α(x0− xn). Ici α est le coefficient de réflexion, habituelle- ment égal à 1. Si f(x1) < f (xr) < f (xn−1), alors remplacer xn→ xr (fig.17.3B) et retourner à l’étape 2.

5. Si, au contraire, le point réfléchi est le meilleur à date, c’est-à-dire si f(xr) < f (x1), alors cal- culer le point étiré xe = x0+ γ(x0− xn), où γ est le coefficient d’élongation, habituellement égal à 2. Si f(xe) < f (xr), alors remplacer xn→ xe (fig.17.3D) et retourner à l’étape 2. Sinon remplacer xn→ xr et retourner à l’étape 2.

6. Si le point réfléchi n’est pas meilleur que xn−1(c’est-à-dire si f(xr) > f (xn−1), alors calculer le point contracté xc = x0+ ρ(x0− xn), où ρ est le coefficient de contraction, habituellement −0.5. Si f (xc) < f (xn), alors remplacer xn→ xc (fig.17.3C) et retourner à l’étape 2.

7. Sinon, alors, contracter le simplexe en remplaçant xi→ x1+ σ(xi− x1) pour tous les points sauf le meilleur (x1, fig.17.3E). Ensuite, retourner à l’étape 2. Le coefficientσ (deuxième co- efficient de contraction) est typiquement égal à 0.5.

Une condition de convergence est requise. Par exemple, la valeur

r = |f (xn) − f (x1)|

|f (xn) + f (x1)| + 10−6

(17.33) peut être calculée à la fin de l’étape 2 et le programme terminé si cette valeur est inférieure à une précision choisie à l’avance.

Dans le document Méthodes numériques et simulations (Page 187-192)