Les algorithmes évolutionnaires sont une famille d'algorithmes d'optimisation basés sur le principe de la sélection naturelle darwinienne . Dans le cadre de la sélection naturelle, un environnement donné a une population d'individus qui se disputent la survie et la reproduction. La capacité de chaque individu à atteindre ces objectifs détermine sa chance d'avoir des enfants, c'est-à-dire de transmettre ses gènes à la prochaine génération d'individus qui, pour des raisons génétiques, auront plus de chances de bien, voire mieux, de réaliser ces objectifs. deux objectifs.
Ce principe d'amélioration continue au fil des générations est repris par des algorithmes évolutifs pour optimiser les solutions à un problème. Dans la génération initiale , une population composée de différents individus est générée aléatoirement ou par d'autres méthodes. Un individu est une solution au problème, plus ou moins bonne: la qualité de l'individu par rapport au problème est appelée fitness , ce qui reflète l'adéquation de la solution au problème à résoudre. Plus la condition physique d'un individu est élevée, plus il est probable qu'il transmettra tout ou partie de son génotype aux individus de la génération suivante.
Un individu est codé comme un génotype , qui peut avoir n'importe quelle forme, comme un vecteur ** bit ( algorithmes génétiques ) ou un vecteur de réel (stratégies d'évolution). Chaque génotype est transformé en phénotype lors de l'évaluation de l'individu, c'est-à-dire lorsque son aptitude est calculée. Dans certains cas, le phénotype est identique au génotype: il est appelé codage direct . Sinon, le codage est appelé indirect. Par exemple, supposons que vous souhaitiez optimiser la taille d'un parallélépipède rectangulaire défini par sa longueur, sa hauteur et sa largeur. Pour simplifier l'exemple, supposons que ces trois quantités sont des entiers compris entre 0 et 15. Nous pouvons ensuite décrire chacune d'elles à l'aide d'un nombre binaire de 4 bits. Un exemple de solution potentielle peut être le génotype 0001 0111 01010. Le phénotype correspondant est un parallélépipède de longueur 1, hauteur 7 et largeur 10.
Lors de la transition de l'ancienne à la nouvelle génération, on appelle les opérateurs de variation , dont le but est de manipuler les individus. Il existe deux types distincts d'opérateurs de variation:
- les opérateurs de mutation , qui sont utilisés pour introduire des variations au sein d'un même individu, comme les mutations génétiques;
- les opérateurs de croisement , qui sont utilisés pour croiser au moins deux génotypes différents, comme croisements génétiques issus de la sélection.
Les algorithmes évolutifs ont fait leurs preuves dans divers domaines tels que la recherche opérationnelle, la robotique, la biologie, les nuances ou la cryptographie. De plus, ils peuvent optimiser plusieurs objectifs simultanément et peuvent être utilisés comme des boîtes noires car ils n'assument aucune propriété du modèle mathématique à optimiser. Leur seule véritable limitation est la complexité de calcul.
Franck Dernoncourt
la source
Un algorithme génétique est un algorithme qui génère de manière aléatoire un certain nombre de solutions tentées pour un problème. Cet ensemble de solutions tentées est appelé la "population".
Il essaie ensuite de voir dans quelle mesure ces solutions résolvent le problème, en utilisant une fonction de fitness donnée . Les solutions tentées avec la meilleure valeur de fitness sont utilisées pour générer une nouvelle population. Cela peut être fait en apportant de petites modifications aux solutions tentées (mutation) ou en combinant les solutions existantes tentées (crossover).
L'idée est qu'au fil du temps, une tentative de solution émerge qui a une valeur de fitness suffisamment élevée pour résoudre le problème.
L'inspiration pour cela est venue de la théorie de l'évolution; les solutions les plus adaptées survivent et procréent.
Exemple 1
Supposons que vous cherchiez le moyen le plus efficace de découper un certain nombre de formes dans un morceau de bois. Vous voulez gaspiller le moins de bois possible.
Vos solutions tentées seraient des dispositions aléatoires de ces formes sur votre morceau de bois. La forme physique serait déterminée par le peu de bois qui resterait après la coupe des formes suivant cet arrangement.
Moins il reste de bois, meilleure est la solution tentée.
Exemple 2
Supposons que vous essayiez de trouver un polynôme qui passe par un certain nombre de points. Vos solutions tentées seraient des polynômes aléatoires.
Pour déterminer l' adéquation de ces polynômes, vous déterminez dans quelle mesure ils correspondent aux points donnés. (Dans ce cas particulier, vous utiliseriez probablement la méthode des moindres carrés pour déterminer dans quelle mesure le polynôme correspond aux points). Au cours d'un certain nombre d'essais, vous obtiendrez des polynômes qui correspondent mieux aux points, jusqu'à ce que vous ayez un polynôme qui correspond suffisamment aux points.
la source
Cette réponse demande un exemple pratique de la façon dont l'une pourrait être utilisée, que j'essaierai de fournir en plus des autres réponses. Ils semblent devoir expliquer très bien ce qu'est un algorithme génétique. Donc, cela donnera un exemple.
Disons que vous avez un réseau de neurones (bien qu'ils ne soient pas la seule application de celui-ci), qui, à partir de certaines entrées données, produira des sorties. Un algorithme génétique peut créer une population de ceux-ci, et en voyant quelle sortie est la meilleure, reproduire et tuer des membres de la population. À terme, cela devrait optimiser le réseau neuronal s'il est suffisamment compliqué.
Voici une démonstration que j'ai faite, qui malgré son mauvais codage, pourrait vous aider à comprendre. http://khrabanas.github.io/projects/evo/evo.html Appuyez sur le bouton évoluer et dérangez-vous avec les objectifs.
Il utilise un algorithme génétique simple pour se reproduire, muter et décider entre les populations qui survivent. Selon la façon dont les variables d'entrée sont définies, le réseau pourra atteindre un certain niveau de proximité avec elles, de cette manière, la population deviendra probablement à terme un groupe homogène, dont les résultats ressemblent aux objectifs.
L'algorithme génétique essaie de créer un "réseau de neurones" qui, en absorbant le RVB, produira une couleur de sortie. Tout d'abord, il génère une population aléatoire. Il a ensuite en prenant 3 membres aléatoires de la population, en sélectionnant celui avec la forme physique la plus faible et en le retirant de la population. La forme physique est égale à la différence du but supérieur au carré + la différence du but inférieur au carré. Il élève ensuite les deux autres ensemble et ajoute l'enfant au même endroit dans la population que le membre décédé. Lors de l'accouplement, il y a une chance qu'une mutation se produise. Cette mutation modifiera l'une des valeurs de manière aléatoire.
En remarque, en raison de la façon dont il est configuré, il est impossible qu'il soit totalement correct dans de nombreux cas, même s'il atteindra une relative proximité.
la source
Il existe un certain nombre de bonnes réponses ici expliquant ce que sont les algorithmes génétiques et donnant des exemples d'applications. J'ajoute quelques conseils généraux sur ce à quoi ils sont bons, mais aussi les cas où vous ne devriez PAS les utiliser. Si mon ton semble dur, c'est parce que l'utilisation des AG dans l'un des cas de la section Non approprié entraînera le rejet instantané de votre article de toute revue de premier plan.
Tout d'abord, votre problème DOIT être un problème d'optimisation. Vous devez définir une "fonction fitness" que vous essayez d'optimiser et vous devez avoir un moyen de la mesurer.
Bien:
Non approprié:
Enfin, si vous envisagez une AG, envisagez des travaux plus récents sur les stratégies évolutives. Je suis partisan de CMA-ES , qui, à mon avis, est un bon algorithme simple qui capture la notion de gradient dans le paysage de la forme physique d'une manière que les GA traditionnels ne font pas.
la source
Comme observé dans une autre réponse, tout ce dont vous avez besoin pour appliquer des algorithmes génétiques (AG) est de représenter une solution potentielle à votre problème sous une forme qui est sujette au croisement et à la mutation. Idéalement, la fonction de remise en forme fournira une sorte de rétroaction fluide sur la qualité d'une solution, plutôt que d'être simplement une «aiguille dans une botte de foin».
Voici quelques caractéristiques des problèmes pour lesquels les algorithmes génétiques (et en fait la métaheuristique en général) sont bons pour:
Cependant, malgré leur utilisation répandue à cet effet, notez que les GA ne sont en fait pas des optimiseurs de fonction - les mécanismes des GA ont tendance à ne pas explorer les régions «périphériques» de l'espace de recherche dans l'espoir de trouver une solution distante de haute qualité, mais plutôt à se regrouper autour de plus pics facilement atteignables dans le «paysage du fitness».
Plus de détails sur l'applicabilité des AG sont donnés dans un célèbre premier article "Qu'est-ce qui rend un problème difficile pour un algorithme génétique?"
la source