• Aucun résultat trouvé

Un exemple d’algorithme d’optimisation global déterministe : DI- DI-RECT

Optimisation de fonctions boîtes noires

Algorithme 5.1 Algorithme d’optimisation basés sur une recherche locale Input : La fonction à minimiser f

5.1.2.3 Un exemple d’algorithme d’optimisation global déterministe : DI- DI-RECT

Cet algorithme, initialement proposé par Jones [Jones et al., 1993], a été développé afin de minimiser des fonctions dont le domaine de définition Dx est borné et dans le cas où la fonction à minimiser n’est pas simple, c’est-à-dire non-linéaire, non convexe et dont le gradient n’est pas connu. Il est basé sur un échantillonnage déterministe de la fonction à minimiser. Pour cela, cette méthode s’inspire de la technique du branch and

bound provenant de l’optimisation combinatoire. Plus précisément, elle consiste à mailler

le domaine de définition entier à l’aide d’hypercubes en calculant la valeur de la fonction

f au centre de chacun d’eux et en raffinant les zones où la fonction f est petite. C’est donc un mélange d’exploration et d’intensification. Alors que les algorithmes de la section précédente se focalisent dans une zone du domaine de définition, la recherche globale réalisée par DIRECT porte sur tout le domaine de définition.

Les étapes de l’algorithme DIRECT sont les suivantes : 1. Le domaine de définition Dx étant

borné, il peut être transformé en un hypercube de dimension Nx :

¯ Dx=n

x∈ RNx : ∀i ∈J1, NxK, 0 6 xi6 1o. La valeur de la fonction est évaluée au centre de cet hypercube c1.

c1

2. L’hypercube initial est ensuite divisé en hyper-rectangles à l’aide de la distance entre le centre et les bords de l’hy-percube δ. Cette quantité est appliquée dans toutes les directions (ei)16i6Nx. La fonction est donc évaluée sur les points

c1±1

3δei, i = 1, · · · , Nx. Dès la première itération, il y a donc 2Nx+1 évaluations de f réalisées.

3. Une fois que les divisions ont été faites, il faut ensuite identifier les hyper-rectangles potentiellement optimaux. Pour cela, la condition suivante est proposée par [Finkel et Kelley, 2004]. Soit ε > 0 et soit fminla valeur minimale de la fonction connue à l’itération courante. Un hyper-rectangle j est potentiellement optimal s’il existe un ˜K >0 tel que :

(

f(cj) − ˜j 6 f (ci) − ˜i ∀i

Figure 5.3 – Illustration de l’échantillonnage de l’espace par DIRECT. Les hyper-rectangles optimaux sont illustrés avec leur centre en rouge à l’étape 2 à gauche. Ils sont donc divisés selon la règle du point 3 sur la figure de droite.

avec cj le centre de l’hyper-rectangle j et δj est la distance du centre avec les som-mets de ce rectangle. Elle est inspirée des algorithmes lipschitziens, ce qui justifie le nom de l’étude de Jones.

4. Une fois que les hyper-rectangles optimaux ont été détectés (points rouges sur le graphe précédent et sur la figure 5.3), ces derniers sont redivisés en hyper-rectangles de taille plus réduite. Pour cela, la fonction objectif f est évaluée deux fois le long des dimensions où l’écart δi entre le centre et l’arête de l’hyper-rectangle est la plus longue c ± 1

3δiei. Dans le cas où l’hyper-rectangle est un hypercube, ce dernier est divisé comme à l’étape 2. Ces deux cas sont illustrés sur la figure 5.3. Si l’hyper-rectangle de gauche est potentiellement optimal, alors il est décomposé uniquement selon la direction où la distance à l’arête est la plus grande, comme illustré sur la figure de droite. Si l’hyper-rectangle de centre droit est également potentiellement optimal, alors il est décomposé comme à la première itération puisque sa distance à l’arête est la même dans toutes les directions.

5. Si le critère d’arrêt est vérifié l’algorithme s’arrête, sinon on retourne au point 3. Il peut y avoir plus de 2Nx + 1 évaluations de la fonction à réaliser simultanément à chaque itération de l’algorithme. Cette méthode nécessite donc un nombre important d’appels à la fonction objectif. Dès lors, elle n’est applicable qu’à des fonctions dont le coût d’évaluation est réduit. Toutefois, DIRECT est très adapté au calcul distribué, ce qui peut améliorer le temps de restitution étant donné le nombre important d’appels simultanés à la fonction f qui peut être réalisé. Par ailleurs, le seul paramètre à choisir avec attention est le paramètre K qui sert à déterminer les hyper-rectangles optimaux. Il permet de choisir entre une exploration locale ou globale de l’espace de recherche en focalisant plus ou moins la recherche aux zones où les centres sont à une petite distance de l’arête. Il est donc important de le faire varier au cours de l’algorithme. Cette variation est en général implémentée dans les librairies d’optimisation classique telles que NLOPT [Johnson, 2011]. 5.1.2.4 Un exemple d’algorithme d’optimisation global stochastique :

évolu-tion différentielle

Les algorithmes évolutionnaires s’inspirent principalement de la biologie : ils consistent à initialiser une population de Npop individus de manière aléatoire, puis à les faire évoluer

selon des règles issues par exemple de la sélection naturelle pour les algorithmes génétiques. Les individus sont des réalisations de jeux de paramètre d’optimisation et ils composent la population : P =

x1,· · · , xNpop.

Les étapes de fonctionnement des algorithmes évolutionnaires sont décrites sur la figure 5.4. L’idée est de faire évoluer une population d’individus à l’aide d’opérateurs stochas-tiques inspirés de la biologie comme l’illustre leur nom (mutation, croisement, sélection...). L’étape d’initialisation consiste à générer aléatoirement Npop individus pour construire la population initiale Pk=0. Ensuite, chaque itération permet de passer de la population Pk

à une population Pk+1. Pour cela, les étapes de mutation et de croisement permettent de générer un vecteur donneur d à partir de la population courante Pk. L’étape de re-combinaison permet ensuite d’obtenir une population d’individus candidats Pc. On évalue donc la fonction sur cette population, en général de taille Npop. Enfin, l’étape de sélection permet de construire Pk+1 en ne gardant que les individus les plus intéressants parmi la population à l’itération courante Pk et les individus candidats Pc. Par exemple, CMA-ES est basé sur des générations de populations. Il a été présenté précédemment et rentre dans ce cadre. Une autre technique de ce type régulièrement citée pour ses capacités de résolu-tions de problèmes très divers est l’algorithme à évolution différentielle. Il a été proposé par Storn et Price dans leur étude [Storn et Price, 1997]. Voici le détail des opérateurs de la figure 5.4 dans le cas de cette méthode :

1. Initialisation : Tirage aléatoire de Npop points pour former la population P = x1,· · · , xNpop puis évaluation de la fonction objectif f sur cette popula-tion.

2. Mutation : elle sert à élargir l’espace de recherche. Dans le cas de l’évolution dif-férentielle, tous les membres de la population sont successivement modifiés par un opérateur de mutation. Soit xi tel que 1 6 i 6 Npop l’individu que l’on souhaite faire évoluer. Pour cela, trois individus xr1, xr2 et xr3 distincts deux à deux, sont choisis aléatoirement dans la population pour construire un individu donneur dide la manière suivante :

di= xr1+ F

xr2− xr3

Avec F ∈ [0, 2] le facteur de mutation. Cette étape de construction d’un individu donneur peut varier. Celle-ci, appelée DE/best/1, est l’une des plus utilisées puisque simple et n’introduisant qu’un seul paramètre. D’autres variantes sont présentées dans [Mallipeddi et Lee, 2015].

3. Recombinaison : elle permet de combiner les solutions de la population précédente avec le vecteur de don di. Pour cela, on construit un vecteur ui candidat au rempla-cement de xi en mélangeant aléatoirement les composantes de xi et du vecteur de don di. Afin de réaliser ce mélange, on tire Nx valeurs aléatoires r1,· · · , rNx entre [0, 1] et pour chaque composante 1 6 j 6 Nx on génère le candidat de la manière suivante : uij = ( di j si rj 6 CR xi j si rj > CR

Avec CR ∈ [0, 1] le coefficient de recombinaison à fixer par l’utilisateur. Pour que ui 6= xi, si aucune des composantes précédentes n’est tombée sur celle du vecteur donneur, il faut aléatoirement échanger l’une des composantes de ui avec celle de

di. À cette étape, il faut évaluer la fonction f sur chacun des vecteurs candidats

f(u).

4. Sélection : Afin de choisir les Npop points à retenir pour la nouvelle population P, on garde celui qui réalise le minimum entre f(ui) et f(xi). Ceci signifie que pour tout i tel que 1 6 i 6 Npop, l’individu xi est choisi ainsi :

xi =

(

ui si f(ui) < f(xi) xi sinon

Ensuite, tant que le critère d’arrêt n’est pas vérifié, l’algorithme recommence à l’étape de mutation.

En ce qui concerne le nombre de paramètres à fixer, il est relativement réduit. On peut citer la taille de la population Npopqui doit être au moins égale à 4, le coefficient de recombinaison CR ∈ [0, 1] et le facteur de mutation F ∈ [0, 2]. Au niveau de l’interprétation de ces coefficients, un CR élevé accélère l’exploration au détriment de l’intensification de la recherche dans une zone. Une valeur faible de ce coefficient a donc pour effet de réduire l’exploration, ce qui augmente le risque de converger vers un minimum local. Le facteur

F permet quant à lui d’élargir plus ou moins le domaine de recherche, donc de favoriser l’exploration s’il est élevé ou l’intensification s’il est réduit.

Initialisation Pk=0 Mutation et/ou Croisement Pk → dk Recombinaison dk Pk ) → Pc Sélection Pc Pk ) → Pk+1 Évaluer f(Pc) k := k + 1

Figure 5.4 – Structure des algorithmes évolutionnaires