• Aucun résultat trouvé

2.5 M´etaheuristiques pour l’optimisation combinatoire

2.5.5 M´etaheuristiques ` a base de population

2.5.5.1 Les algorithmes ´evolutionnaires

Les algorithmes ´evolutionnaires (ou ´evolutionnistes) sont inspir´es de la th´eorie de l’´evolution des esp`eces vivantes initi´ee par C. Darwin [Darw 76] dans la seconde moiti´e du XIXe

si`ecle. C’est en r´ealit´e une grande famille d’algorithmes, car de nombreux chercheurs se sont ind´ependamment lanc´es dans l’adaptation des principes de la g´en´etique `a partir du milieu des ann´ees 50. Pour de plus amples d´etails, un historique et une classification tr`es compl`ete de ces travaux sont ´etablis dans [Foge 06].

C’est `a partir de 1965 et les travaux de I. Rechenberg [Rech 65, Rech 73] qu’apparaissent les premi`eres m´ethodes d’optimisation stochastiques, bas´ees sur des strat´egies d’´evolution. Con¸cues pour r´esoudre des probl`emes d’optimisation continue, elle sont souvent consid´er´ees comme la premi`ere m´etaheuristique `a avoir vu le jour [Beye 02]. L’id´ee de base de ces m´ethodes consiste `a tout d’abord ´echantillonner une population d’individus (un ensemble de solutions), al´eatoirement ou non. Dans le cas continu, une solution est d´efinie comme un vecteur de valeurs r´eelles (qui sont les variables du probl`eme). De ces individus parents, on ne va retenir que les meilleurs par une ´etape de s´election. Afin de g´en´erer une nouvelle g´en´eration d’individus (appel´es enfants), ces individus subissent une mutation dans laquelle on va ajouter ou retrancher une valeur al´eatoire (tir´ee selon une loi de distribution normale par exemple) `a chaque variable qui les compose. Ce processus est r´ep´et´e it´erativement jusqu’`a un crit`ere d’arrˆet, les individus enfants devenant les parents de la g´en´eration suivante.

Parall`element aux strat´egies d’´evolution, apparaissent les premiers travaux qui aboutiront `a une autre branche d’algorithmes ´evolutionnaires : la programmation g´en´etique, ou programma- tion ´evolutionnaire [Lang 02, Poli 08]. Elle s’applique au domaine du Machine Learning dans lequel on tente d’apprendre `a un ordinateur `a r´esoudre un probl`eme de mani`ere autonome, ou plus pr´ecis´ement `a d´efinir un programme r´epondant au mieux `a une tˆache demand´ee par l’uti- lisateur. Les premiers travaux en programmation g´en´etique d´ebutent d`es la fin des ann´ees 1950 [Frie 58, Frie 59, Samu 63, Samu 67], mais le terme de programmation ´evolutionnaire apparaˆıt au sein des travaux de L. Fogel et al. [Foge 66]. Il faut attendre la fin des ann´ees 80 pour qu’un paradigme « standard » de la programmation g´en´etique soit ´etabli [Koza 92], formalisant les m´e- canismes issus de travaux pr´eliminaires : s´election, mutation, croisement (crossover en anglais) [Cram 85], param´etrage... Les premi`eres applications sont cantonn´ees `a des probl`emes simples, car les algorithmes sont gourmands en temps de calcul. Il faut faire ´evoluer une population de solutions, qui sont des programmes dont les instructions peuvent ˆetre soit ajout´ees, soit reti- r´ees, soit recombin´ees. En ´evoluant, ils deviennent en outre g´en´eralement plus volumineux et le calcul de la fitness — c’est-`a-dire la qualit´e de la solution au regard du r´esultat attendu — monopolise alors davantage de temps CPU. La programmation g´en´etique a donc dˆu attendre

l’av`enement des ordinateurs modernes, rapides et capables de calculs parall`eles (ce dernier cri- t`ere ´etant tr`es int´eressant dans les m´etaheuristiques `a base de population, lorsque ses individus ´evoluent ind´ependamment) pour donner des r´esultats probants.

La troisi`eme branche d’algorithmes ´evolutionnaires est celle des algorithmes g´en´etiques. Elle est appliqu´ee aux probl`emes d’optimisation combinatoire (bien que des travaux aient adapt´e cette m´ethode aux probl`emes continus [Chel 00, Haup 04]). Il s’agit de l’analogie la plus fid`ele `a la g´en´etique r´eelle, puisqu’une solution est le plus souvent d´efinie sous forme d’un chromosome ou g´enotype, qui est le vecteur de valeurs correspondant aux variables de d´ecision du probl`eme. Le ph´enotype associ´e est donc le r´esultat de l’instanciation de ces variables, qui se traduit par la qualit´e de la solution au probl`eme d’optimisation. Au cours des g´en´erations, c’est directement sur le g´enotype que vont ˆetre appliqu´ees les op´erations de croisement et de mutation afin de faire ´evoluer la population. La s´election faite `a l’issue des ´evolutions se fait sur l’analyse de la qualit´e du ph´enotype. Historiquement, les algorithmes g´en´etiques sont apparus en 1975 avec les travaux de J.H. Holland [Holl 75], et se sont diversifi´es par diff´erentes m´ethodes. Le premier ouvrage de r´ef´erence, qui jette les bases de l’algorithme g´en´etique « standard », est le livre de D.E. Goldberg [Gold 89]. La section suivante synth´etise l’approche classique de ces algorithmes. 2.5.5.1.b Les algorithmes g´en´etiques

La figure 2.17 illustre le fonctionnement de base d’un algorithme g´en´etique.

Phase d’initialisation Dans un premier temps, on initialise l’algorithme en ´echantillonnant, de mani`ere al´eatoire ou non, une population de solutions (ou individus) de taille param´etr´ee. Ces individus sont ensuite ´evalu´es `a l’aide d’une fonction de performance (ou fitness en anglais), pour d´eterminer leur qualit´e. A cet effet, on calcule g´en´eralement le coˆut des solutions. Cependant, si la taille de la population est grande ou si le nombre de g´en´erations est important, la phase d’´evaluation peut se r´ev´eler coˆuteuse en temps de calcul (car r´ep´et´ee `a chaque g´en´eration par la suite). Dans ce cas, le programmeur devra trouver une alternative en trouvant une fonction plus simple pour estimer la qualit´e d’un individu. A l’issue de cette ´evaluation, le processus d’´evolution commence.

Reproduction Une boucle g´en´erationnelle commence par la phase de reproduction, en deux ´etapes. Dans un premier temps (phase de « duplication ») on s´electionne les meilleurs individus, qui sont recopi´es d’autant plus souvent que leur performance est bonne. Puis ces solutions sont recombin´ees `a l’aide d’un op´erateur de croisement, en intervertissant par exemple une section commune de leur g´enotype (voir figure 2.18) afin de donner naissance `a de nouveaux individus. Avec le croisement, on esp`ere qu’au moins une solution fille tirera le meilleur parti des solutions parentes. Il est `a noter qu’il est possible, `a la diff´erence de la g´en´etique r´eelle, de croiser entre eux plus de deux individus.

Mutation Apr`es le croisement, les solutions filles sont susceptibles de subir des mutations, c’est-`a-dire des modifications libres de la solution. Cette phase a pour but de diversifier la recherche. Cependant, le taux d’individus subissant une mutation est g´en´eralement faible (par exemple 10%) afin de ne pas p´enaliser l’apprentissage de l’algorithme.

Phase de remplacement Enfin, on va ´evaluer les individus de la nouvelle population et s´electionner les meilleurs individus dans l’ensemble de la population (parents et enfants) dans une

Figure2.17 – Sch´ema d’approche de l’algorithme g´en´etique. Les ´etapes de croisements et de mutations constituent la phase d’´evolution des individus.

phase de remplacement afin d’en retirer les individus les moins performants. Sauf cas particulier, on veille `a ce que la population des individus soit de taille constante au cours des g´en´erations (apr`es remplacement). A l’issue d’une g´en´eration, si le crit`ere d’arrˆet n’est pas atteint (en g´en´eral un nombre de g´en´erations d´efini comme param`etre de l’algorithme), le processus recommence.

Les algorithmes g´en´etiques ont, comme les m´etaheuristiques pr´ec´edemment pr´esent´ees, fait l’objet d’hybridations avec d’autres m´ethodes d’optimisation, comme les m´ethodes de recherche locale. L’article [El M 06] dresse une liste assez compl`ete de ces m´ethodes. Afin de traiter plus rapidement des probl`emes de grande taille, ils ont ´egalement fait l’objet de travaux de paral- l´elisation sur cartes graphiques, grˆace aux technologies GP-GPU (General-Purpose Processing on Graphics Processing Units) permettant de programmer en C les processeurs graphiques. Une bibliographie compl`ete de ces travaux est disponible en ligne [Hard 11].

2.5.5.1.c Application au TSP

Les algorithmes g´en´etiques sont bien adapt´es pour r´esoudre le probl`eme du voyageur de commerce, et de nombreux travaux ont ´et´e men´es sur le sujet. Le premier algorithme `a avoir vu le jour est celui de R.M. Brady en 1985 [Brad 85], rapidement suivi par la communaut´e [Gold 85, Gref 85, Oliv 87]. Parall`element, d’autres approches ´evolutionnaires ont ´egalement ´et´e appliqu´ees au probl`eme [Foge 88, Banz 90, Amba 91].

Pour ce probl`eme, diff´erentes mod´elisations ont ´et´e d´efinies. La plus r´epandue utilise une repr´esentation en chemin (o`u un tour est mod´elis´e par un vecteur des villes qui seront succes- sivement emprunt´ees). Cependant, cette mod´elisation pose des probl`emes quant `a la mise en œuvre de l’op´eration de croisement. Prenons un exemple simple : si S1 = {1, 5, 6, 3, 2, 4, 7} et

S2 = {1, 4, 7, 3, 2, 6, 5} sont crois´ees `a l’aide d’un point de coupure apr`es la troisi`eme ville, alors

les solutions filles seront S1′ = {1, 5, 6, 3, 2, 6, 5} et S′2 = {1, 4, 7, 3, 2, 4, 7}. On remarque que ces solutions sont invalides, car elles passent deux fois par certaines villes, et en excluent d’autres. Diff´erents op´erateurs de croisement ont donc ´et´e imagin´es. Une liste compl`ete de ces derniers est pr´esent´ee dans [Larr 99], qui dresse un comparatif exp´erimental. Cet article d´ecrit ´egalement

Figure 2.18 – Illustration d’une ´etape de croisement entre deux individus. (a) Croise- ment simple. (b) Croisement double.

diff´erents op´erateurs de mutations, et les autres repr´esentations possibles (et leurs op´erateurs associ´es), comme la repr´esentation par adjacence [Gref 85], qui consiste en un vecteur dans lequel la position des villes (autrement dit leur index) d´etermine la ville pr´ec´edente dans le tour. Par exemple, la solution S = {(3, 5, 7, 6, 4, 8, 2, 1} d´esigne le tour 1 → 3 → 7 → 2 → 5 → 4 → 6 → 8. Partant de 1 (n´ecessairement), on vient lire la 1e

valeur de S qui est 3 : la ville suivant 1 dans le tour est donc 3. Puis on va lire la 3e

valeur de S qui est 7 : 7 est donc le successeur de 3 dans le tour. Puis on lit la 7e

valeur qui est 2... La mod´elisation par adjacence a une particularit´e : un mˆeme tour ne peut ˆetre repr´esent´e que de deux fa¸cons diff´erentes (un par sens de parcours) car on part toujours de la ville 1. Dans une repr´esentation en chemin, un mˆeme tour peut ˆetre repr´esent´e de 2n mani`eres diff´erentes (n ´etant le nombre de villes du probl`eme).

Aujourd’hui, les algorithmes g´en´etiques sont capables de r´esoudre des instances de TSP de plusieurs milliers de nœuds.