Portail collaboratif de partage de la connaissance
Bienvenue sur A525G, un portail collaboratif que tout le monde peut faire évoluer.
sciences
1. Introduction
L’Optimisation est l’une des branches les plus importantes des mathématiques appliquées modernes, et de nombreuses recherches, à la fois pratiques et théoriques, lui sont consacrées. Si on met de côté les problèmes d’optimisation discrète ou multicritère, alors la théorie de l’optimisation peut être séparée en deux grandes branches : l’optimisation locale et l’optimisation globale. Si on peut considérer que la première est presque « entièrement connue », la seconde est encore partiellement méconnue et les recherches y sont à leur apogée, comme le confirment les nombreuses parutions récentes [Zhi91]. La tâche principale de l’optimisation globale est la recherche de la solution qui minimisera un critère de coût donné, appelée « optimum global ». L’optimisation globale vise donc à rechercher non seulement un minimum local, mais surtout le plus petit de ces minima locaux.
Il existe deux grandes approches à l’optimisation globale. L’une est dite déterministe : les algorithmes de recherche utilisent toujours le même cheminement pour arriver à la solution, et on peut donc « déterminer » à l’avance les étapes de la recherche. L’autre est aléatoire : pour des conditions initiales données, l’algorithme ne suivra pas le même cheminement pour aller vers la solution trouvée, et peut même proposer différentes solutions. C’est vers cette seconde branche, la recherche globale aléatoire, que vont s’orienter nos travaux, et plus particulièrement vers un type bien précis d’algorithme de recherche aléatoire, les algorithmes génétiques.
2. Les algorithmes génétiques
2.1 Généralités sur les algorithmes génétiques
2.1.1 Introduction
Dans la nature, les êtres vivants croissent et interagissent les uns avec les autres. Chaque individu est caractérisé par un génotype indépendant de l’environnement où il vit. Les opérateurs génétiques fonctionnent au niveau génotypique tandis que le mécanisme de sélection opère au niveau phénotypique (le phénotype d’un individu est l’ensemble des traits caractéristiques d’un individu, alors que le génotype est le codage de ces traits en gènes). Les algorithmes génétiques sont à la base des algorithmes d’optimisation stochastiques, mais peuvent également servir pour l’apprentissage automatique, par exemple. Les premiers travaux dans ce domaine ont commencé dans les années cinquante, lorsque plusieurs biologistes américains ont simulé des structures biologiques sur ordinateur. Puis, entre 1960 et 1970, John Holland [Hol75], sur la base des travaux précédents, développe les principes fondamentaux des algorithmes génétiques dans le cadre de l'optimisation mathématique. Malheureusement, les ordinateurs de l'époque n'étaient pas assez puissants pour envisager l'utilisation des algorithmes génétiques sur des problèmes réels de grande taille. La parution en 1989 de l'ouvrage de référence écrit par D.E. Goldberg [Gol98] qui décrit l'utilisation de ces algorithmes dans le cadre de résolution de problèmes concrets a permis de mieux faire connaître ces derniers dans la communauté scientifique et a marqué le début d'un nouvel intérêt pour cette technique d'optimisation, qui reste néanmoins très récente. Parallèlement, des techniques proches ont été élaborées, dont on peut notamment citer la programmation génétique [Koz92] ou les stratégies évolutionnistes [Sch95]. Dans le même temps, la théorie mathématique associée aux algorithmes génétiques s'est développée mais reste encore bien limitée face à la complexité théorique induite par ces algorithmes.
Comme nous l’avons mentionné précédemment, les algorithmes génétiques s'attachent à simuler le processus de sélection naturelle dans un environnement hostile lié au problème à résoudre, en s'inspirant des théories de l'évolution proposées par Charles Darwin [Dar59] :
On parlera ainsi d'individu dans une population et bien souvent l'individu sera résumé par un seul chromosome (individu haploïde). Les chromosomes sont eux-même constitués de gènes qui contiennent les caractères héréditaires de l'individu. On retrouvera aussi les principes fondamentaux de l'évolution naturelle, à savoir les principes de sélection, de croisement, de mutation, etc.
Dans le cadre de l'optimisation, chaque individu représente un point de l'espace d'état auquel on associe la valeur du critère à optimiser. On génère ensuite une population d'individus aléatoirement pour laquelle l'algorithme génétique s'attache à sélectionner les meilleurs individus tout en assurant une exploration efficace de l'espace d'état. Les algorithmes génétiques diffèrent des algorithmes classiques d’optimisation et de recherche essentiellement en quatre points fondamentaux :
La robustesse est une des caractéristiques principales des algorithmes génétiques : ils permettent de fournir une ou plusieurs solutions de « bonne » qualité (pas nécessairement optimales, mais suffisantes en pratique) à des problèmes très variés, en sollicitant un investissement (temps et puissance de calcul) assez faible. En effet, l’heuristique de l’évolution est en quelque sorte « universelle », et très peu d’informations suffisent pour résoudre un problème quelconque. C'est ainsi qu'ils ont donné de bons résultats dans le problème du voyageur de commerce [HSL93], dans le domaine médical [FSJP93] ou dans les problèmes de contrôle du trafic aérien [DASF94]. Ils sont également efficaces sur des problèmes pour lesquels il n’existe pas - encore - d’algorithme de résolution ou dont la taille est rédhibitoire pour les méthodes classiques.
Après avoir exposé le fonctionnement général d’un algorithme génétique, nous détaillerons chacun de ses composants, puis les divers raffinements présents dans les versions modernes, et nous terminerons par les limitations de ce type d’algorithme.
2.1.2 Principes généraux des algorithmes génétiques
A présent, nous allons expliciter rapidement le principe de fonctionnement des algorithmes génétiques. Nous reviendrons plus en détail sur les différentes étapes par la suite.
Les opérations successives utilisées dans les algorithmes génétiques sont illustrées sur la figure ci-après :
Il n’existe pas qu’une seule manière de définir les mécanismes des algorithmes génétiques. Ainsi, le codage et l’évaluation des individus, la sélection, le croisement et la mutation peuvent différer d’un problème à un autre (et chaque utilisateur aura même ses préférences). Pour utiliser un algorithme génétique sur un problème particulier, on doit donc disposer des cinq éléments suivants, que nous décrirons plus loin en détail dans leurs versions les plus classiques et les plus simples à mettre en œuvre, en mentionnant leurs avantages et leurs inconvénients :
Les individus sont figurés par les croix, l’optimum par le cercle.
La surface représente la fitness des individus à cet endroit de l’espace, les pics figurent les individus les mieux adaptés à leur environnement. L’objectif est de rapprocher les individus des pics.
2.1.3 Codage des individus
Dans la nature, les structures géniques sont codées en base 4, dont les "chiffres" sont les quatre bases azotées : l'adénine (A), la thymine (T), la cytosine (C) et la guanine (G). Dans le cadre des algorithmes génétiques, ce type de codage est bien difficile à utiliser et n'est donc pas retenu. Le principal problème qui se pose est celui concernant la conservation de la topologie du problème par le codage.
Codage binaire classique et codage de Gray
Historiquement le codage utilisé par les algorithmes génétiques était représenté sous forme de chaînes de bits contenant toute l'information nécessaire à la description d'un point dans l'espace d'état. Ce type de codage a pour intérêt de permettre de créer des opérateurs de croisement et de mutation simples (par inversion de bits par exemple). C'est également en utilisant ce type de codage que les premiers résultats de convergence théorique ont été obtenus. Néanmoins, ce type de codage ne conserve pas la topologie de départ. En effet, deux éléments voisins en terme de distance de Hamming (représente le nombre de bits dont diffèrent deux nombres binaires) ne codent pas nécessairement deux éléments proches dans l'espace de recherche : par exemple, dans le cas présenté sur la figure ci-dessus, les individus 1 et 2 sont proches mais ne le sont plus après transposition en binaire (« 001 » et « 010 », donc une distance de Hamming de 2), alors que « 1 » et « 3 » deviennent proches après codage binaire (« 001 » et « 011 »). On peut cependant remédier à ceci en utilisant le codage réfléchi (ou codage de Gray) qui conserve une distance de Hamming de « 1 » entre deux individus consécutifs quelconques, donc la topologie du problème. De plus, pour des problèmes d'optimisation dans des espaces de grande dimension, le codage binaire peut rapidement devenir mauvais. En effet, l'ordre des variables a une importance dans la structure du chromosome binaire, alors qu'il n'en a pas forcément dans la structure du problème. Enfin, la structure binaire empêche l'utilisateur d'accéder à une valeur particulière.
Malgré tout, il est dur de répondre à la question soulevée par ce problème, à savoir « Faut-il conserver la topologie de l’espace de recherche ? ». En effet, un codage qui conserve la topologie favorise généralement l’exploration, c’est-à-dire qu’il a essentiellement tendance à améliorer les individus lors de l’application des opérateurs génétiques. Au contraire, un codage qui ne conserve pas la topologie favorise plutôt l’exploration, car il est possible d’obtenir un individu très distant de ses parents lors d’un croisement ou d’une mutation. La question pourrait alors devenir : « Faut-il favoriser l’exploration ou l’exploitation ? ». C’est un des grands dilemmes des algorithmes génétiques qui met bien en avant la difficulté du problème du codage, et nous ne nous hasarderons pas à donner notre avis dessus.
2.1.4 Génération aléatoire de la population initiale
Si l'on n’a aucune idée de la position de l'optimum dans l'espace d'état, on génère aléatoirement des individus en faisant des tirages uniformes dans chacun des domaines associés aux composantes de l'espace d'état, en veillant à ce que les individus respectent les contraintes du problème. Si par contre on dispose d'informations a priori sur le problème indiquant un sous-domaine où l'on est sûr de trouver l'optimum, il faut alors générer les individus dans ce sous-domaine, afin d'accélérer la convergence. Dans l'hypothèse où cet objectif est trop difficile à atteindre, on peut tenir compte des contraintes en les incluant dans le critère sous forme de pénalités. Ainsi, un individu qui viole une contrainte se verra attribuer une mauvaise fitness et sera éliminé par le processus de sélection. L’avantage de cette solution est qu’elle permet de se passer des propriétés de connexité de l’espace des individus admissibles en assurant une probabilité non nulle de passer d’une population connexe à une autre.
A présent que nous disposons d'une population d'individus aléatoirement répartis, il nous faut être capable d'entretenir la diversité de la population au cours des générations, afin d'entretenir le processus d'exploration de l'espace d'état : c'est le rôle des opérateurs de sélection, de croisement et de mutation, que nous allons à présent aborder.
2.1.5 Principes de sélection
A l'inverse d'autres techniques d'optimisation, les algorithmes génétiques n'ont pas besoin de connaître la dérivée de la fonction objectif, ce qui rend leur domaine d'application plus vaste.
La sélection, comme son nom l'indique, permet d'identifier statistiquement les meilleurs individus d'une population et d'éliminer partiellement les mauvais. Néanmoins, comme dans la Nature, il ne faut pas confondre sélection et élitisme : ce n’est pas parce qu’un individu est bon qu’il survivra nécessairement (les aléas de la vie) et de même ce n’est pas parce qu’il est mauvais qu’il doit disparaître (la chance aide également à survivre). En effet, bien souvent, une espèce « bien adaptée » peut descendre d’un individu décrété « mauvais ». Il existe différents principes de sélection, dont on citera les deux plus classiques [Gol89] :
Exemple d’application de la roulette wheel selection
Application de la stochastic remainder without replacement selection à l’exemple précédent
On ajoute également fréquemment un principe d’élitisme dans le processus de sélection destiné à conserver systématiquement le ou les meilleurs individus de la population courante dans la génération suivante, sans lui faire subir de croisement ou de mutation qui pourraient le détruire. Ce principe confère aussi à l’algorithme génétique la propriété de croissance monotone de la fitness du meilleur individu au cours des générations.
Les résultats issus de la théorie des schémas montrent que le principe de la roulette wheel selection offre le meilleur compromis entre exploration de l’espace de recherche et exploitation des informations obtenues. Cependant, les hypothèses nécessaires à ce résultat sont rarement satisfaites en pratique et les autres principes de sélection sont souvent plus efficaces.
2.1.6 Opérateur de croisement
Le croisement a pour but d'enrichir la diversité de la population en manipulant la structure des chromosomes [QP93, Sys89]. Classiquement, les croisements sont envisagés avec deux parents et génèrent deux enfants. Il consiste à échanger les gènes des parents afin de donner des enfants qui portent des propriétés combinées. Bien qu'il soit aléatoire, cet échange d'informations offre aux algorithmes génétiques une part de leur puissance : quelque fois, de " bons " gènes d'un parent viennent remplacer les " mauvais " gènes d'un autre et créent des fils mieux adaptés aux parents.
Initialement, le croisement utilisé avec les chaînes de bits était le croisement à découpages de chromosomes, ou slicing crossover. Pour effectuer ce type de croisement sur des chromosomes constitués de L gènes, on tire aléatoirement une position inter-gènes dans chacun des parents. On échange ensuite les deux sous-chaînes de chacun des chromosomes, ce qui produit deux enfants C1 et C2. Ce mécanisme présente l'inconvénient de privilégier les extrémités des individus. Et selon le codage choisi, il peut générer des fils plus ou moins proches de leurs parents. Pour éviter ce problème, on peut étendre ce principe en découpant le chromosome non pas en 2 sous-chaînes mais en 3, 4, etc [BG91]. On parle alors de k-point slicing crossover (figures ci-dessous).
a. Slicing crossover classique
b. 2-point slicing crossover
Ce type de croisement à découpage de chromosomes est très efficace pour les problèmes discrets, mais pour les problèmes continus ou des problèmes n'ayant pas recours au codage binaire (codage décimal, codage symbolique), on utilise de préférence un croisement de type barycentrique. Pour cela, on sélectionne deux gènes P1(i) et P2(i) dans chacun des parents à la même position i que l'on associe en pondération afin de créer deux nouveaux points sur la droite qui relie ces derniers : on crée ainsi C1(i) et C2(i),
C1(i) = a P1(i) + (1-a) P2(i)
C2(i) = (1-a) P1(i) + a P2(i)
où a est un coefficient de pondération aléatoire adapté au domaine de définition des gènes. Le croisement barycentrique permet, selon le domaine choisi pour a, de générer des points entre ou à l'extérieur des deux gènes considérés (on utilise ainsi souvent un intervalle de variation égal à [-0,5 ;1.5]).
Dans certains cas particuliers, où la fitness globale est calculée à l'aide d'un ensemble de sous-fitness associées à chacun des gènes, et si ces sous-fitness sont relativement indépendantes, on peut envisager de cibler (statistiquement) le croisement sur les gènes les moins bons [DAN94].
2.1.7 Opérateur de mutation
L'opérateur de mutation apporte aux algorithmes génétiques la propriété d'ergodicité de parcours de l'espace. Cette propriété indique que l'algorithme génétique sera susceptible d'atteindre tous les points de l'espace d'état (sans pour autant nécessairement les adresser tous dans le processus de résolution). En toute rigueur, l'algorithme peut converger sans croisement, et certaines variantes fonctionnent de cette manière, et les propriétés de convergence des algorithmes génétiques sont donc fortement dépendantes de cet opérateur.
Pour des problèmes discrets, l'opérateur de mutation consiste généralement à tirer aléatoirement un gène dans le chromosome et à remplacer ce dernier par une valeur tirée aussi aléatoirement de l'alphabet propre au gène sélectionné. Dans le cas du codage binaire, la méthode classique consiste, après avoir déterminé le locus à muter, d'appliquer un non logique à la valeur de l'allèle correspondant. Bien que ce déplacement puisse paraître petit au niveau des chaînes de bits, il peut être assez important dans la topologie initiale (considérons une mutation transformant " 000 " en " 100 " avec une topologie initiale basée sur la valeur décimale de la chaîne de bits). Ceci introduit un risque de ne pas générer la descendance dans le voisinage des parents. Dans les problèmes continus, on procède un peu de la même manière en tirant aléatoirement un gène dans le chromosome, auquel on ajoute un bruit aléatoire (par exemple un bruit gaussien) en veillant bien évidemment à ce que le gène résultant reste dans le domaine de définition qui lui est propre. L'écart type de ce bruit est délicat et difficile à régler : s'il est trop faible, l'exploration sera ralentie au début et on risque la convergence locale ; s'il est trop grand, les solutions seront modifiées trop brutalement et on ne pourra pas non plus converger localement vers l'optimum.
a. mutation discrète
b. mutation continue
Comme dans le cas du croisement, on peut imaginer de concentrer les mutations sur les gènes faibles lorsque le problème présente une fitness construite à l'aide d'un ensemble de sous-fitness associées à chacun des gènes.
Il existe également un principe de mutation adaptative, permettant d'optimiser le taux de mutation en codant ce dernier dans la structure du chromosome [Bac92]. Ce second chromosome est géré de la même manière que le premier chromosome codant l'espace d'état, c'est-à-dire lui-même soumis aux opérateurs génétiques (croisement et mutation). Au cours du déroulement de l'algorithme, les gènes et les individus ayant des probabilités de mutation élevées auront tendance à disparaître à mesure que la population converge vers l'optimum. De même, les gènes ayant des probabilités de mutation trop faibles ne peuvent évoluer favorablement et tendent à être supplantés.
Principe de la mutation auto-adaptative
Des opérateurs de mutation très efficaces qui effectuant une optimisation locale sont fréquemment utilisés. Par exemple, Marc Schoenauer a hybridé un algorithme génétique avec un algorithme déterministe de type Newton utilisé en lieu et place de l’opérateur de mutation, appelé Surrogate Deterministic Mutation [AbS].
2.2 Améliorations classiques
2.2.1 Introduction
Les processus de sélection que nous venons d'étudier sont très sensibles aux écarts de fitness et dans certains cas, un très bon individu risque d'être reproduit trop souvent et peut même provoquer l'élimination complète de ses congénères. On obtient alors une population homogène contenant un seul type d'individu. Par exemple, dans l'exemple suivant, le mode local (on utilise le terme « mode » pour désigner un optimum d'une fonction) risque d'être le seul reproduit pour la génération suivante, et seule la mutation pourra ensuite nous aider à atteindre l'objectif global, mais au prix de nombreuses générations supplémentaires.
Les sélections classiques risquent ici de ne reproduire qu’un seul individu
Pour éviter ce comportement très néfaste et pénalisant, il a été développé d'autres méthodes de sélection (notamment le ranking) et des principes (scaling, sharing) qui empêchent les génotypes « forts » d'éliminer totalement les « faibles ». Nous nous contenterons ici de décrire les mécanismes que nous avons utilisés dans nos recherches, à savoir le scaling et le sharing.
2.2.2 Le scaling
Les bons individus, se reproduisant mieux que les moins adaptés, risquent de dominer la population et d’empêcher une évolution équilibrée. Ceci se traduit par une convergence prématurée qui risque de mener la recherche dans un piège local : c’est le cas dans une fonction à fort gradient (à fortes variations). Inversement, si la fonction est à faible gradient, les individus les moins adaptés ne seront pas pénalisés et continuent à se reproduire de la même manière que les bons individus, ce qui empêche la population de converger.
a. Risque de convergence prématurée vers l’optimum local
b. Risque de reproduction forte des mauvais individus
Le scaling, ou mise à l'échelle, modifie les fitness afin de réduire ou d'amplifier artificiellement les écarts entre les individus. On se ramène en fait concrètement à une fitness à gradient modéré. Le processus de sélection ne travaille alors plus sur la fitness réelle fr mais sur son image après scaling, fs. Il existe diverses méthodes utilisées pour cette mise à l'échelle, par exemple le scaling linéaire ou le scaling exponentiel.
Scaling linéaire
Dans ce cas, la fonction de scaling est une fonction affine, dont le coefficient directeur est généralement inférieur à un, ce qui permet de réduire les écarts de fitness et donc de favoriser l'exploration de l'espace. Néanmoins, ce scaling est statique par rapport au numéro de génération et devient donc gênant en fin de convergence lorsqu'on désire favoriser les dominants pour accélérer le processus de recherche. Le scaling exponentiel permet d’éviter ce phénomène.
Scaling exponentiel
Le scaling exponentiel est défini de la façon suivante : fs = frk(n), où n représente le numéro de la génération courante. Il est nécessaire d'introduire un coefficient exposant variable, car les phénomènes résultant du scaling varient avec sa valeur.
Dans la pratique, on fait donc varier k des faibles valeurs vers des valeurs fortes au cours des générations, en utilisant par exemple une formule de ce type (n est l’indice de la génération actuelle, N celui de la dernière génération à calculer).
Ce type de scaling donne de meilleurs résultats que le scaling linéaire.
2.2.3 Le sharing
De la même façon que le scaling, le sharing consiste à modifier la fitness utilisée par le processus de sélection. Pour éviter le rassemblement des individus autour d'un mode dominant, il faut pénaliser la fitness en fonction du taux d'agrégation de la population dans le voisinage d'un individu : plus les individus sont regroupés, plus leur fitness est faible, et des individus proches les uns des autres doivent partager leur fitness. Dans la pratique, pour estimer ce taux d'agrégation, on ouvre un domaine autour d'un individu, puis on calcule les distances entre les individus contenus dans ce voisinage et ce dernier. Il faut donc pouvoir définir une distance représentative entre deux individus, ce qui n’est pas toujours évident lorsqu’on manipule des structures de données complexes (des graphes ou des arbres, par exemple).
a. sans sharing : concentration des individus sur un seul mode
b. avec sharing : répartition des individus sur l’ensemble des modes
Dans la pratique, cette méthode donne de bons résultats, et favorise bien l'émergence des modes secondaires, mais au prix de n² calculs supplémentaires par génération, où n représente la taille de la population.
2.3 Bilan et conclusions
2.3.1 Convergence théorique
Les premiers théorèmes de convergence stochastiques des algorithmes génétiques ont été établis par John Holland sur le codage par chaîne de bits avec la roulette wheel selection, le slicing crossover et la mutation classique. Ils utilisent la théorie des schémas : un schéma H de longueur l(H) est une séquence particulière de gènes de longueur l(H) représentée par une chaîne de caractères issus de l’alphabet {0,1,*} (pour le codage binaire), où * représente 0 ou 1. On dit qu’un chromosome A est une instance d’un certain schéma si la substitution des * par 0 ou 1 peut fournir un chromosome identique : ainsi, le chromosome 1010 est une instance des schémas 10**, 1**0 ou encore 101* (parmi d’autres). L’ordre o(H) d’un schéma est le nombre de symboles différents de * qu’il contient, et sa longueur fondamentale d(H) est la distance séparant les positions des symboles différents de * les plus proches des extrémités : les trois schémas de l’exemple précédent ont donc des ordres respectifs de 2, 2 et 3 ; des longueurs fondamentales respectives de 2, 4, 3. Enfin, l’adaptation f(H) (f pour fitness) d’un schéma est l’adaptation moyenne de toutes ses instances Ai, i entier dans [1,2l(H)-o(H)] :
Le théorème des schémas explique et quantifie la manière dont sont manipulés les schémas par un algorithme génétique : le nombre m(H,t+1) de représentants du schéma H dans la population à la génération t+1 vérifie l’inéquation
où fm est la fitness moyenne des individus à la génération t et l = l(H) est la longueur commune fixée des chromosomes et des schémas. Ce résultat montre que le nombre de représentants d’un schéma dans la population suit une progression géométrique au cours des générations, et que les schémas favorisés sont ceux qui ont une fitness supérieure à la moyenne des fitness et un ordre ainsi qu’une longueur fondamentale faibles. D’autres résultats issus de la théorie des schémas montrent de plus qu’un algorithme génétique muni des trois opérateurs classiques réalise un compromis « quasi optimal » entre l’exploration de l’espace de recherche et l’exploitation des solutions déjà visitées. En outre, le nombre de schémas manipulés pour une population de taille n est de l’ordre de n3, propriété appelée le parallélisme implicite [Gol89].
Cependant, la démonstration de l’efficacité des algorithmes génétiques repose sur l’hypothèse des building blocks, c’est-à-dire de l’existence de schémas de longueur fondamentale et d’ordre faibles qui, incorporés au chromosome d’un individu, tentent de faire accroître sa fitness. Néanmoins, ces hypothèses sont en pratique peu probables sur des problèmes difficiles traités par les algorithmes génétiques, à moins de fournir un effort intensif lors du codage des données.
Hormis les nombreux raffinements sur la théorie des schémas, d’autres tentatives ont été conduites pour rendre compte des performances des algorithmes génétiques. Raphaël Cerf [Cer94] notamment présente des résultats de convergence asymptotique en utilisant une modélisation par les chaînes de Markov et la théorie de Freidlin-Wentzell sur les perturbations aléatoires de systèmes dynamiques, pour un algorithme génétique muni des trois opérateurs classiques avec des gènes sur des ensembles finis (et non pas binaires). Il montre que l’algorithme converge asymptotiquement vers tous les optima quand la population dépasse une taille critique dépendant fortement du problème d’optimisation, en utilisant la mutation et non pas le croisement comme opérateur prépondérant.
L ‘ensemble de ces théories est en outre la preuve d’un intérêt croissant pour les algorithmes génétiques et les algorithmes évolutionnistes en général.
2.3.2 Limitations des algorithmes génétiques
Comme nous l’avons dit précédemment, les algorithmes génétiques sont des outils efficaces pour une classe de problèmes très large. De plus, ils permettent de traiter des problèmes où la fonction à optimiser ne présente aucune propriété de continuité ou de dérivabilité, par exemple. Néanmoins, les sections précédentes mettent en avant un certain nombre de limitations à leur sujet :
Références
| [AbS] | K. Abboud et M. Schoenauer, Surrogate Deterministic Mutation, preliminary results. Laboratoire de l’Ecole Polytechnique CMAPX. |
| [Bac92] | T. Back, Self-Adaptation in genetic algorithms. Dans Proceedings of the first European conference on Artificial Life, 1992. |
| [BG91] | C.L. Bridges et D.E Goldberg, An analysis of multipoint crossover. Dans Proceedings of the Foundation of Genetic Algorithms, 1991. |
| [Cer94] | R. Cerf, Une théorie asymptotique des algorithmes génétiques. Dans Evolutions Artificielle 94, 1994. |
| [DAN94] | N. Durand, J.M. Alliot, J. Noailles, Un croisement adapté aux fonctions partiellement séparables. Dans Evolutions Artificielles 94, 1994. |
| [Dar59] | C. Darwin, On the Origin of Species by means of natural selection, or the Preservations of favored races in the struggle of life, 1859. |
| [DASF94] | D. Delahaye, J.M Alliot, M. Schoenauer et J.L Farges, Genetic Algorithms for partitionning airspace. Dans Proceedings of the Tenth IEEE Conference on Artificial Intelligence for Application, 1994. |
| [FSJP93] | S. Forrest, R.E. Smith, B. Jakornik et A.S. Perelson, Using Genetic Algorithms to explore pattern recognition in the immune system. Dans Evolutionary computation, 1993. |
| [Gol89] | D.E. Goldberg, Genetic Algorithms in Search, Optimisation and Machine Learning, 1989. |
| [Hol75] | J.H. Holland, Adaptation in natural and artificial systems. University of Michigan Press, 1975. |
| [HSL93] | A. Homaifar, G. Shanguchuan et G.A. Liepins, A new approach of the travelling salesman problem by genetic algorithms. Dans Proceedings of the fifth European conference on Genetic Algorithm, 1993. |
| [Koz92] | J.R. Koza, Genetic Programming. MIT Press, 1992. |
| [QP93] | X. Qi et F. Palmieri, The diversification role of the crossover in the genetic algorithm. Dans Proceedings of the fifth European conference on Genetic Algorihm, 1993. |
| [Sch95] | H.P. Schwefel, Evolution and Optimisation Seeking. Wiley, New-York, 1995. |
| [Sys89] | G. Syswerda, Uniform crossover in genetic algorithms. Dans Proceedings of the third European conference on Genetic Algorithm, 1989. |
| [Zhi91] | A.A. Zhigljavsky, Theory of Global Random Search. Mathematics and its applications, Kluwer Academic Publishers, 1991. |
Auteur : Matthieu D.
Date de mise en ligne : 2002-09-03
Réagir à cet article
Aucun commentaire pour l'instant.