• Aucun résultat trouvé

4.3 Tour d’horizon des algorithmes métaheuristiques

4.3.2 Méthodes basées sur des populations

Les algorithmes génétiques ont été créés par Holland [52], et ils s’inspirent de la théo- rie de l’évolution Darwinienne où une population (un ensemble de solutions) évoluent selon l’enchainement de phase de sélection et de variations aléatoires (mutation). Progressivement, parallèlement aux succès d’ingénieurie, le domaine de recherche s’est élargi à tous les algo- rithmes qui manipulent une population de solutions, qu’ils soient bio-inspiré ou non, et qu’on appelle algorithmes évolutionnaires.

4.3.2.1 Optimisation par colonies de fourmis

La méthode de colonies de fourmis est apparue d’une constatation simple : les insectes sociaux, comme les fourmis ou les abeilles, résolvent naturellement certains problèmes com- plexes. Si un obstacle est introduit sur le chemin des fourmis par exemple, ces dernières vont, après une phase de recherche, avoir tendance à prendre le chemin le plus court entre le nid et l’obstacle. Un tel comportement est possible car même si aucun des individus pris individuellement n’a de connaissance globale du système, la communication entre eux (de ma- nière directe ou indirecte) est très importante. Lorsqu’une fourmi emprunte un chemin, elle dépose des phéromones, et la quantité de phéromones augmente donc avec le nombre de pas- sages ou le nombre de fourmis empruntant cette voie. Les fourmis sont également capable de sentir ces phéromones, et la probabilité d’emprunter une voie donnée augmente avec la quan- tité de phéromones présentes sur cette voie. Les fourmis empruntant la voie la plus courte reviennent plus rapidement au nid, et laissent donc plus de phéromones, incitant d’autres fourmis à l’emprunter, jusqu’a ce que toutes les fourmis l’empruntent. Le premier algorithme d’autorenforcement qui s’inspire de cette analogie (ACO pour Ant Colony Optimization) a été proposé en 1996 par Dorigo et al. [33]. D’un point de vue plus formel, les ACO sont des algorithmes probabilistes de construction de solutions qui sont à rapprocher des algorithmes à estimation de distribution (EDA) [76]

Chaque fourmi représente une distribution de probabilité capable de générer des solu- tions candidates. Soit D l’ensemble des décisions possibles que peut prendre une fourmi pour compléter une solution. La décision d ∈ D qu’elle choisira dépendra de deux facteurs :

— un facteur heuristique local ηd qui représente l’intérêt qu’a la fourmi à prendre la

décision d. Plus cette valeur est grande, plus il semble intéressant de faire ce choix. En général, cette valeur est directement proportionnelle à la qualité de la solution partielle obtenue, mais elle peut aussi intégrer des contraintes inhérentes au problème posé, — la trace τd représente la quantité de phéromones et donc l’intérêt historique qu’a la

fourmi de prendre la décision d. Plus cette quantité est grande, plus il a été intéressant dans le passé de prendre cette décision.

La probabilité de choisir le paramètre d est alors définie en fonction de ces deux critères par :

pd= (ηd) α(τ

d)β P

r∈D(ηr)α(τr)β

avec α et β deux constantes permettant de moduler l’importance des deux facteurs. Lors- qu’une fourmi termine la construction de sa solution, elle laisse une trace proportionnelle à la qualité de la solution construite sur chaque paramètre d emprunté. Finalement, il est impor- tant de mettre en place un processus d’évaporation de la trace afin d’oublier les choix réalisés dans un lointain passé et de donner plus d’importance aux choix réalisés récemment. On pose A l’ensemble des fourmis, et f(a) la valeur de la solution produite par la fourmi a ∈ A. La mise à jour de la trace sur la décision d s’écrit :

τd= (1 − ρ)τd+ c X a∈A

d(a)

où ρ est le paramètre d’évaporation compris entre 0 et 1, c une constante permettant de mettre plus ou moins l’accent sur les performances de la solution, et ∆dreprésente les perfor-

mances de la solution (proportionnel à la fonction d’évaluation si le but est de la maximiser, inversement proportionnel sinon).

4.3.2.2 Optimisation par essaim particulaire

L’optimisation par essaim particulaire développée par Kennedy et Eberhart en 1995 dans [58] est aussi issue d’une analogie avec les comportements animaliers, mais se base cette fois sur une communication directe. En observant les bancs de poissons par exemple, ou les vols d’oiseaux, des dynamiques de déplacement complexes apparaissent, alors que les individus n’ont accès là encore qu’à des informations limitées, comme la position et la vitesse de leurs plus proches voisins. De simples règles telles que "aller à la même vitesse que les autres", "se déplacer dans la même direction" ou encore "rester proche de ses voisins" sont des exemples de comportements qui suffisent à maintenir la cohésion du groupe tout entier, et à permettre des comportements collectifs complexes et adaptatifs. Le principe de l’algorithme est simple : chaque individu utilise non seulement sa propre mémoire, mais également l’information locale sur ses plus proches voisins pour décider de son déplacement. Plus précisément, le déplacement d’un individu est guidé par les trois composantes suivantes :

— une composante physique qui le pousse à suivre sa direction courante de déplacement ; — une composante cognitive qui le pousse à se diriger vers le meilleur site par lequel il est déjà passé, la qualité d’un site de l’espace de recherche étant déterminée par la valeur de la fonction objectif en ce point ;

— une composante sociale qui le pousse à se fier à l’expérience de ses congénères et, ainsi, à se diriger vers le meilleur site déjà atteint par ses voisins.

Considérons un espace de recherche de dimension n. Chaque individu est représenté par une position (une solution) xi = (x1i, ..., xni) est un vecteur de déplacement dans l’espace de

recherche δi = (δ1i, ..., δin). La meilleure position connue de l’individu i est notée xi, et la

meilleure position connue de l’essaim est notée x. Avec ces notations, le vecteur déplacement de l’individu i est actuallisé à chaque pas de temps suivant :

δi = ωδi+ α(xi − xi) + β(x− xi)

où ω est le coefficient d’inertie qui permet de régler le compromis entre les phases diver- sification et intensification du processus de recherche, et α et β des paramètres contrôlant

CHAPITRE 4. ÉTAT DE L’ART - PRINCIPES DE L’OPTIMISATION

respectivement l’attraction vers son propre meilleur site et l’attraction vers le meilleur site de l’essaim.

La position de cet individu, qui représente la nouvelle solution à évaluer devient donc : xi = xi+ δi

Au départ, la population est initialisée aléatoirement, et à chaque itération de l’algorithme, chaque solution est déplacée suivant les équations ci-dessus. Une fois les déplacements effec- tués, les nouvelles solutions sont évaluées, et les meilleures locales et globale sont mises à jour, et ainsi de suite. En raison de la forme du vecteur déplacement, cet algorithme est particulièrement adapté aux problèmes d’optimisation continus.

4.3.2.3 Algorithmes génétiques

Les algorithmes génétiques sont des algorithmes de recherche inspirés des mécanismes de l’évolution naturelle Darwinienne des êtres vivants. Les premiers travaux ont été menés par Holland [52] en 1975 qui formalise les algorithmes génétiques dans le cadre de l’optimisation mathématique, en particulier à l’origine lorsque l’espace de recherche est celui des chaines binaires. Ces méthodes s’attachent à simuler le processus de sélection naturelle dans un envi- ronnement défavorable en s’inspirant de la théorie de l’évolution proposée par Darwin. Selon ces concepts, lorsqu’une population est soumise aux contraintes d’un milieu naturel, seules les solutions les mieux adaptés survivent et génèrent une descendance. Au cours des géné- rations, la sélection naturelle permet l’apparition de solutions de mieux en mieux adaptés au milieu naturel, au détriment de ceux se montrant inadaptés, assurant ainsi la pérennité de l’espèce. Cette particularité de l’évolution naturelle qu’est la capacité d’une population à explorer son environnement et à recombiner les meilleures solutions entre eux, est empruntée par les algorithmes génétiques.

Par analogie, ces algorithmes cherchent, au fur et à mesure des générations, les meilleures solutions à partir d’une population initiale. Une itération de l’algorithme se déroule comme suit (à partir de la population courante) : sélection d’une ou plusieurs solutions au sein de la population, ces solutions sont ensuite croisées pour produire de nouvelles solutions qui sont éventuellement mutées aléatoirement, et viennent remplacer (après évaluation) les solutions de la population qui sont moins performantes. L’évolution de la population est ainsi reproduite grâce aux opérateurs de sélection, de croisement et de mutation suivants.

L’opérateur de sélection a pour objectif d’identifier les solutions qui vont se repro-

duire, c’est à dire les mieux adaptés, et écarter les autres. Cet opérateur ne crée pas de nouvelles solutions mais identifie les meilleures sur la base de différents critères possible :

— la sélection par tournois apparie toutes les solutions de la population, et pour chaque paire, la meilleure est conservée. Toutes les solutions conservées à l’issue du premier tour sont de nouveaux appariées, et ainsi de suite ;

— la sélection par rang consiste à attribuer à chaque solution un rang (plus le score est bon plus le rang sera faible), et à choisir les solutions suivant ce rang et non plus sur la fonction d’évaluation ;

— la sélection uniforme se fait aléatoirement, uniformément et sans intervention de la valeur d’adaptation. Toutes les solutions ont donc la même probabilité d’être choisies.

L’opérateur de croisement est chargé de combiner les solutions sélectionnées, pour en

former de nouvelles. Lors de cette opération, deux solutions s’échangent des parties de

leurs codes, pour donner de nouvelles solutions. Ces croisements peuvent être simples (échanges de portions de codes en un seul point) ou multiples (plusieurs points de croisement).

L’opérateur de mutation est aléatoire et peut, au sein d’une solution, substituer une

partie du code par une autre. L’utilisateur définit un taux de mutation qui représente la probabilité qu’une mutation ai lieu lorsqu’un enfant est créé. La mutation permet de contrôler des capacités d’exploration et d’exploitation.

L’étape de remplacement permet de décider de la survie des solutions présentes dans

la population, et de choisir les nouvelles solutions qui vont entrer dans la population. Une première stratégie consiste à changer toute la population d’une itération à l’autre (c’est-à-dire que seuls les nouvelles solutions sont conservées pour l’itération suivante), on parle alors de remplacement générationnel. Une seconde stratégie consiste à conser- ver une partie de la population et d’en remplacer une autre pour l’itération suivante, dans ce cas-là on parle de remplacement stationnaire (steady state). Usuellement, la taille de population est fixe, et on ne conserve donc que les meilleures solutions de la réunion des anciennes et des nouvelles. Des populations de taille variable sont cepen- dant également possibles, et les solutions à conserver peuvent alors être obtenues par une nouvelle sélection aléatoire.

4.3.2.4 Stratégies d’évolution

Le principe de la méthode fut initialement proposée par Rechenberg [86] en 1965. Il s’agit d’une méthode proche des algorithme génétiques, dédiée à l’origine à l’optimisation continue, et qui manipule itérativement un ensemble de solutions à l’aide des opérateurs de mutation et de sélection. La particularité de l’approche est qu’il n’y a généralement pas de croisement. L’étape de mutation est classiquement effectuée en optimisation continue par l’ajout d’un vecteur aléatoire, tiré au sein d’une distribution choisie par le concepteur, et la sélection s’effectue par un choix déterministe des meilleures solutions, selon l’échelle de valeur de la fonction objectif.

Les stratégies d’évolutions utilisent un ensemble de µ solutions "parents" pour produire λ solutions "enfants". Pour produire chaque enfant, ρ parents se "recombinent". Une fois produits, les enfants sont mutés puis evalués, et le processus recommence. La nouvelle étape de sélection peut alors s’appliquer soit uniquement aux enfants (sélection "virgule"), soit à l’ensemble enfants et parents réunis (sélection "plus"). Dans le premier cas, l’algorithme est noté (µ/ρ, λ)-ES (EA pour Evolutionnary Algorithm), et dans le second (µ/ρ + λ)-EA.

Dans le cas où cette étape de recombinaison est supprimée, les algorithmes sont notés (µ, λ)-EA ou (µ + λ)-EA. Par exemple, un algorithme (µ + 1)-EA produit uniquement un enfant, et supprime la plus mauvaise solution à chaque itération parmis les µ + 1. Cette dernière méthode porte le nom de stratégie d’évolution à états constants (steady-state). A l’inverse, un algorithme (1 + λ)-EA construit l’itération suivante à partir de la meilleure solution, et supprime toutes les autres. Ce genre de stratégie est qualifié de gloutonne, dans la mesure où l’exploitation est maximale.

L’attractivité de cet algorithme réside dans le fait qu’il permet de passer d’un algorithme basé sur une population à un algorithme proche de la recherche locale, dans ce sens qu’il peut ne conserver qu’une solution courante à chaque pas de temps, la meilleure. Cependant, la différence avec les algorithmes de recherche locale est que les nouvelles solutions créés ne se trouvent pas nécessairement dans le voisinage de la solution. L’opérateur de mutation est souvent stochastique et ergodique, et permet d’atteindre toutes les solutions de l’espace de

CHAPITRE 4. ÉTAT DE L’ART - PRINCIPES DE L’OPTIMISATION

recherche.

Cette méthode qui est adoptée dans la suite (sans la recombinaison). Elle est donc discutée plus en détail, en particulier le choix des paramètres µ et λ qui contrôlent le compromis entre exploration et exploitation. Le principe de la mutation, et une implémentation possible de l’algorithme sont également présentés.