1. Introduction : Les algorithmes génétiques sont des algorithmes d'optimisation s'appuyant sur des techniques dérivées de la génétique et de l'évolution naturelle: croisements, mutations…etc. Leur but est d'obtenir une solution approchée à un problème d'optimisation, lorsqu'il n'existe pas de méthode exacte (ou que la solution est inconnue) pour le résoudre en un temps raisonnable. Les algorithmes génétiques utilisent la notion de sélection naturelle et l'appliquent à une population de solutions potentielles au problème donné. Les algorithmes génétiques ont déjà une histoire relativement ancienne puisque les premiers travaux de John Holland remontent à 1962.
2. Eléments de réalisation : Pour réaliser un AG, on doit disposer des cinq éléments suivants: Un principe de codage de l'élément de la population après une phase de modélisation mathématique du problème traité. La qualité du codage des données conditionne le succès des algorithmes génétiques. Un mécanisme de génération de la population initiale. Une fonction à optimiser appelée fitness ou fonction d'évaluation. Des opérateurs permettant de diversifier la population qui sont le croisement et la mutation. Des paramètres de dimensionnement: la taille de la population, nombre total de générations ou critère d'arrêt, probabilités d'application des opérateurs de croisement et de mutation. Un algorithme génétique générique à la forme suivante: 1) Initialiser la population initiale P. 2) Evaluer P. 3) Tant Que (Pas Convergence) faire a) P' = Sélection des parents dans P b) P' = Appliquer opérateur de croisement sur P' 2
c) P' = Appliquer opérateur de mutation sur P' d) P= Remplacer les anciens de P parleurs descendants de P' e) Evaluer P FinTantQue Différents critères d'arrêt de l'algorithme peuvent être choisis: - Le nombre de générations fixé d’avance. - L'algorithme peut être arrêté lorsque la population n'évolue plus.
3. Description détaillée: 3.1. Codage des données: 3.1.1. Le codage binaire: c'est le plus utilisé. - Chaque gène dispose du même alphabet binaire {0, 1}. - Un gène est représenté par un entier long (32 bits). - Un chromosome est un tableau de gènes. - Un individu est un tableau de chromosomes. 3.1.2. Le codage réel: cela peut-être utile notamment dans le cas où l'on recherche le maximum d'une fonction réelle.
3.2. Génération aléatoire de la population initiale: Le choix de la population initiale d'individus conditionne fortement la rapidité de l'algorithme. Si des informations à priori sur le problème sont disponibles, il parait bien évidemment naturel de générer les individus dans un sous-domaine particulier afin d'accélérer la convergence.
3.3. Gestion des contraintes: Un élément de la population qui viole une contrainte aura une mauvaise fitness et aura une probabilité forte d'être éliminé par le processus de sélection. Cependant il peut être intéressant de conserver des éléments non admissibles car ils peuvent permettre de générer des éléments admissibles de bonne qualité.
3
3.4. Opérateur de sélection: La sélection permet d'identifier statistiquement les meilleurs individus d'une population et d'éliminer les mauvais. Parmi les méthodes de sélection: 3.4.1.
La méthode de sélection roulette wheel :
Consiste à associer à chaque individu un segment dont la longueur est proportionnelle à sa fitness et on reproduit le principe de tirage aléatoire utilisé dans les roulettes de casinos avec une structure linéaire. 3.4.2.
La méthode élitiste:
Cette méthode consiste à sélectionner les n individus dont on a besoin pour la nouvelle génération P' en prenant les n meilleurs individus de la population P après l'avoir triée de manière décroissante selon la fitness de ses individus.
3.5. Opérateur de croisement: Le croisement a pour but d'enrichir la diversité de la population. Classiquement, les croisements sont envisagés avec deux parents et génèrent deux enfants. Initialement, le croisement associé au codage par chaînes de bits est le croisement à découpage de chromosomes (slicing crossover). Pour effectuer ce type de croisement sur des chromosomes constitués de M gènes, on tire aléatoirement une position dans chacun des parents. On échange ensuite les deux sous-chaînes terminales de chacun des deux chromosomes, ce qui produit deux enfants C1 et C2. Ci-dessous, un schéma illustrant un croisement en un point et un autre pour un croisement en deux points:
Figure 1. Slicing crossover
4
Figure 2. Slicing crossover à 2 points Ce type de croisement à découpage de chromosomes est très efficace pour les problèmes discrets. Pour les problèmes continus, un croisement « barycentrique » est souvent utilisé: deux gènes P1(i) et P2(i) sont sélectionnés dans chacun des parents à la même position i. Ils définissent deux nouveaux gènes C1(i) et C2(i) par combinaison linéaire: {
() ()
(
() ( ) ()
) () ()
Où α est un coefficient de pondération aléatoire adapté au domaine d'extension des gènes (il n'est pas nécessairement compris entre 0 et 1, il peut par exemple prendre des valeurs dans l'intervalle [-0.5, 1.5] ce qui permet de générer des points entre, ou à l'extérieur des deux gènes considérés).
3.6. Opérateur de mutation: La mutation est l’inversion d’un bit dans un chromosome.
5
4. Conclusion : Les algorithmes génétiques ont l'énorme avantage de pouvoir être appliqués dans un grand nombre de domaines de recherche de solution lorsqu'il n'est pas nécessaire d'avoir la solution optimale qui prendrait par exemple trop de temps et de ressources pour être calculée (ou tout simplement si personne n'est capable de la trouver de manière théorique).
6
Références [1]. Souquet Amédée et Radet Francois-Gérard « ALGORITHMES GENETIQUES » Disponible sur : http://souqueta.free.fr/Project/files/TE_AG.pdf [2]. « Algorithme génétique » Disponible sur : http://fr.wikipedia.org/wiki/Algorithme_g%C3%A9n%C3%A9tique [3]. « Les Algorithmes Génétiques » Disponible sur : http://www.recherche.enac.fr/opti/papers/thesis/HABIT/main002.html