Está en la página 1de 27

Les algorithmes évolutionnistes : notions avancées

INF6953 Les algorithmes évolutionnistes (2) 1


Favoriser la diversité

• L’un des problèmes des algorithmes évolutionnistes est l’épuisement de la


diversité de la population et la convergence prématurée. Une technique pour
contrer ce phénomène est le fitness sharing

• Lors de la sélection, on biaise l’évaluation des individus pour favoriser les


individus originaux.

• Plus spécifiquement, des individus «trop proches» (selon une certaine


distance) doivent partager leur fitness (évaluation).

INF6953 Les algorithmes évolutionnistes (2) 2


Favoriser la diversité : technique de fittness sharing

• Transformer la fonction de fitness de la manière suivante


- Paramètre : un seuil D
- g(S) = f(S)/m(S)
- où m(S) = Σ sh ( dist(S, Sj) )
- où sh une fonction non croissante telle que
- sh(0) = 1
- sh(a) = 0 pour a >= D,

INF6953 Les algorithmes évolutionnistes (2) 3


Opérateurs de variation

• Rôle : produire des enfants à partir de configurations parentes

• Mutation
- 1 parent produit un enfant
- La mutation consiste à modifier légèrement la structure du parent

• Croisement
- 2 parents produisent un ou deux enfants
- La mutation consiste à combiner la structure des deux parents

• Croisement généralisé à plus de deux parents

INF6953 Les algorithmes évolutionnistes (2) 4


Croisement bi-points sur des chaînes

• Individu = élément de Σ^n, chaîne de n caractères sur l’alphabet Σ

• CroisementBipoints(individus : P1 et P2)
- individu O
- Choix aléatoire uniforme de l’entier a dans [0, n-1]
- Choix aléatoire uniforme de l’entier b dans [0, n-1], b<>a
- Si a < b
- Former O avec P1[0, a-1].P2[a, b-1].P1[b, n-1]
- Sinon
- Former O avec P2[0, b-1].P1[b, a-1].P2[a, n]
- Renvoyer O

INF6953 Les algorithmes évolutionnistes (2) 5


Croisement uniforme sur les chaînes

• Individu = élément de Σ^n, chaîne de n caractères sur l’alphabet Σ

• CroisementUniforme(individus : P1 et P2)
- individu O
- Pour i=1à n faire
- Selon probabilité ½ : O[i] := P1[i]
- Sinon : O[i] := P2[i]
- Renvoyer O

INF6953 Les algorithmes évolutionnistes (2) 6


Croisements sur des vecteurs de réels

• Un enfant est une combinaison linéaire des parents


- Croisement 1 : α choisi globalement
- Croisement 2 : α choisi coordonnée par coordonnée

• Croisement 1 : α choisi globalement


- Choix aléatoire uniforme du réel α dans l’intervalle [0, 1]
- Pour i := 1…n faire
O[i]:= α P1[i] + (1- α) P2[i]
- Renvoyer O

INF6953 Les algorithmes évolutionnistes (2) 7


Croisements sur des vecteurs de réels

• Croisement 2 : α choisi coordonnée par coordonnée


- Pour i := 1…n faire
Choix aléatoire uniforme du réel α dans l’intervalle [0, 1]
O[i]:= α P1[i] + (1- α) P2[i]
- Renvoyer O

• Variante pour croisement 1 ou croisement 2


- choix aléatoire uniforme dans [-0.5, 1.5]
- Effet : préserve mieux la diversité

INF6953 Les algorithmes évolutionnistes (2) 8


Propriétés des opérateurs de recombinaison

1) Opérateur respectueux
- transmet toutes les caractéristiques communes aux deux parents

2) Opérateur correctement assorti


- permet de construire un descendant qui possède n’importe quelle
combinaison de caractéristiques compatibles des deux parents

3) Opérateur transmissif
- Toute caractéristique de l’enfant est présente dans au moins l’un des deux
parents : l’opérateur n’ajoute pas d’information (sinon, on parle de
mutation implicite).

INF6953 Les algorithmes évolutionnistes (2) 9


Propriétés des opérateurs de recombinaison

1) Opérateur aveugle
- Utilise uniquement les deux parents et pas d’autre information
- + éventuellement l’évaluation des deux parents
- + éventuellement des informations sur les contraintes du problème

2) Opérateur heuristique ou hybride


- Utilise, en plus, des connaissances du problème pour
(a) La sélection des propriétés des parents
(b) La sélection de propriétés additionnelles

INF6953 Les algorithmes évolutionnistes (2) 10


Propriétés des opérateurs de recombinaison

• Opérateur pur
- Si les deux parents ont les mêmes caractéristiques, il en est de même de
l’enfant (remarque : un opérateur respectueux est pur)

• Exemple
- Le croisement uniforme est respectueux, correctement assorti et transmissif
- Le croisement uniforme est aveugle

INF6953 Les algorithmes évolutionnistes (2) 11


Propriétés des opérateurs de recombinaison

• Opérateur heuristique : exemple


- Un cas extrême est celui de DOR (dynastically optimal recombination) qui,
dans le cas d’un opérateur transmissif, sélectionne la meilleure combinaison
possible des propriétés des parents à l’aide d’un algorithme exact.

• Opérateur heuristique : exemple


- Pour le TSP, l’opérateur EAX (Edge Assembly Crossover)
1) on construit une tournée partielle valide – selon principe (a)
2) on complète la tournée partielle de manière gloutonne – selon
principe (b)

INF6953 Les algorithmes évolutionnistes (2) 12


Schéma d’algorithme mémétique

• P : construire une population initiale de |pop| individus de manière aléatoire ou


avec un glouton randomisé
• P := appliquer l’opérateur de recherche locale à tous les individus de P
• Répéter
– P’ : recombiner certains parents pour obtenir des enfants
– P’ := appliquer la recherche locale aux éléments de P’
– P’’ : appliquer la mutation certains individus de P union P’
– P’’ : appliquer la recherche locale aux éléments de P’’
– P := sélectionner une population de |pop| individus à partir de P union P’
union P’’

INF6953 Les algorithmes évolutionnistes (2) 13


Procédure de redémarrage

• Une option possible dans un algorithme mémétique consiste à ajouter une


procédure de redémarrage.

• On mesure en permanence la diversité dans la population. Lorsque la diversité


est épuisée (passe au-dessous d’un seuil fixé), on appelle la procédure de
redémarrage.

• La procédure de redémarrage
- Le meilleur individu de la population est conservé
- Les autres
- Soit : sont reconstruits comme lors de l’initialisation
- Soit : subissent une forte mutation

INF6953 Les algorithmes évolutionnistes (2) 14


Un algorithme mémétique pour le TSP

• Merz et Freisleben on proposé l’algorithme mémétique MA-MF pour le TSP

• MA-MF utilise
- Opérateur de croisement : GX Greedy Recombination Crossover
- Opérateur de mutation : double-bridge
- Opérateur de recherche locale : LK (Lin-Kernighan)
- Schéma de sélection : de type (µ+λ)
- Épuisement de la diversité : procédure de redémarrage

• MA-MF est l’un des meilleurs algorithmes connus pour le TSP

INF6953 Les algorithmes évolutionnistes (2) 15


Croisement GX pour le TSP

• L’opérateur de croisment GX
1) Copier certains arêtes communes aux deux parents dans O : la proportion
d’arêtes communes copiées est p1
2) Ajouter dans O certaines arêtes courtes qui n’apparaissent dans aucun des deux
parents : pour un sommet x, ajouter l’une des 5 meilleurs arêtes qui complète
la tournée de manière valide : la proportion d’arêtes ajoutées est p2
3) Prendre les arêtes des parents selon les longueurs croissantes : ajouter l’arête
dans O si elle complète la tournée de manière valide : la proportion d’arêtes
ajoutées est p3
4) Si nécessaire, compléter O avec une version randomisée de l’heuristique
gloutonne.

• C’est avec p1=1 que les meilleurs résultats ont été obtenus

INF6953 Les algorithmes évolutionnistes (2) 16


Un algorithme mémétique pour le coloriage

• Galinier et Hao on proposé l’algorithme mémétique MA-GH pour le k-


coloriage de graphe.

• La stratégie de recherche appliquée est celle des pénalités

• MA-GA utilise
- Opérateur de croisement : spécialisé pour les problèmes de partitionnement
- Opérateur de mutation : aucun
- Opérateur de recherche locale : TabuCol
- Schéma de sélection : incrémental (µ+1), l’enfant remplace le plus mauvais
parent
- Épuisement de la diversité : arrêt de l’algorithme

INF6953 Les algorithmes évolutionnistes (2) 17


Schéma de l’algorithme mémétique MA-GH

• Données : le graphe G = (V,E), l’entier k


• Résultat : la meilleure configuration trouvée

• P := InitPopulation(|pop|)
• Répéter
– (S1, S2) := ChooseParents(P)
– S := Crossover(S1, S2)
– S := LocalSearch(S, L)
– P := UpdatePopulation(P, S)

INF6953 Les algorithmes évolutionnistes (2) 18


L’algorithme mémétique MA-GH

• InitPopulation(n) : construit n configurations aléatoires et applique à chacune


l’algorithme LocalSearch(S, L)

• ChooseParents(P) : renvoie deux configurations différentes de P

• Crossover(S1, S2) : applique l’algorithme de croisement à S1 et S2 et


renvoie l’enfant

• LocalSearch(S, L) : applique à S l’algorithme TabuCol pendant n


itérations et renvoie la meilleure configuration trouvée

• P := UpdatePopulation(P, S) : remplace dans P le plus mauvais parent


par S
INF6953 Les algorithmes évolutionnistes (2) 19
Croisement pour le coloriage proposé dans MA-GH

• Critique des croisements déjà existants


- Les propriétés pertinentes pour le coloriage ne sont pas les couples
sommet/couleur. En effet, il est possible de permuter les numéros des couleurs
sans changer la valeur de la configuration.

• Propriétés pertinentes pour le coloriage


- Pour le coloriage, nous considérons que les propriétés pertinentes sont le fait
qu’un ensemble de sommets sont réunis dans une même classe.

• Pour un opérateur de recombinaison efficace


- L’opérateur uniforme sur les chaînes n’est pas prometteur
- Un opérateur de recombinaison devrait transmettre des classes ou des parties
de classes.

INF6953 Les algorithmes évolutionnistes (2) 20


Croisement pour le coloriage proposé dans MA-GH

• Principe de l’algorithme proposé


- Utiliser k ensembles inclus soit dans une classe de P1, soit dans une classe de
P2, pour construire une configuration partielle :
- De cardinalité aussi grande que possible (on maximise le nombre de
sommets coloriés)
- En faisant jouer un rôle équilibré aux deux parents :
k/2 ensembles inclus dans les classes de P1
k/2 ensembles inclus dans les classes de P2
- Compléter la solution : colorier les sommets restants
- Soit : de manière gloutonne
- Soit même : de manière quelconque

• Technique : on construit les classes de l’enfant de manière gloutonne


INF6953 Les algorithmes évolutionnistes (2) 21
Croisement pour le coloriage proposé dans MA-GH

• Données
– P1 = {V1,1, …, V1,k}
– P2 = {V2,1, …, V2,k}
• Résultat
– O = {V1, Vk}
• Pour i = 1 à k faire
– Si i est impair A:=1, sinon A:=2
– Choisir j tel que Vj,A soit de cardinalité maximum
– Vi := Vj,A
– Retirer les sommets contenus dans Vi,A des classes P1 et P2
• Affecter au hasard les sommets de V-(V1 u … u Vk)

INF6953 Les algorithmes évolutionnistes (2) 22


Croisement spécialisé pour le coloriage : exemple

• P1 = { {1, 2, 3, 4}, {5, 6, 7}, {8, 9, 10} }


P2 = { {4, 6, 7, 8}, {1, 2, 10}, {3, 5, 9} }

• Itération 1
O = { {1, 2, 3, 4} }
S1 = { {5, 6, 7}, {8, 9, 10} }
S2 = { {6, 7, 8}, {10}, {5, 9} }

• Itération 2
O = { {1, 2, 3, 4}, {6, 7, 8} }
S1 = {{5}, {9, 10}}
S2 = { {10}, {5, 9}}

INF6953 Les algorithmes évolutionnistes (2) 23


Croisement spécialisé pour le coloriage : exemple

• Itération 3
O = { {1, 2, 3, 4}, {6, 7, 8}, {9, 10} }
S1 = {{5}}
S2 = {{5}}

• Post-traitement
- Le sommet 5 n’est pas colorié
- Il est introduit dans une classe choisie aléatoirement

INF6953 Les algorithmes évolutionnistes (2) 24


Résultats obtenus par MA-GH

• MA-GH est beaucoup plus efficace que TabuCOL


DSJC500.5 : 48 couleurs au lieu de 49 (record = 48)
DSJC1000.5 : 83 couleurs au lieu de 89 (record précédent = 84)

• MA-GH a amélioré plusieurs records sur les graphes de grande taille

• Algorithme mémétique avec le croisement uniforme (MA-GH en


remplaçant le croisement spécialisé par le croisement uniforme) :
- On n’améliore pas en général les résultats obtenus par TabuCol

INF6953 Les algorithmes évolutionnistes (2) 25


Comportement de MA-GH

• On fixe |pop|=10 dans toutes les expériences

• Rôle du paramètre L = la longueur d’une chaîne de l’algorithme tabou


- L grand : beaucoup d’itérations de recherche locale, peu de X
- L petit : beaucoup d’itérations de recherche locale, beaucoup de X

• Impact de L sur le comportement de l’algorithme


- L’algorithme est le plus «efficace» pour des valeurs petites de L : la
fonction de coût diminue plus vite.
- Malheureusement, les petites valeurs de L épuisent plus rapidement la
diversité.

INF6953 Les algorithmes évolutionnistes (2) 26


Comportement de MA-GH

• Pour un jeu facile, on peut régler L à une petite valeur pour laquelle la
fonction de coût diminue très vite. Comme le jeu est facile, on trouve une
solution (f=0) avant que la diversité ne soit épuisée.

• Pour un jeu plus difficile et une petite valeur de L, la diversité s’épuise


avant d’avoir trouvé une solution. On doit recourir à une valeur plus grande
de L.

• Exemple de réglage de L (avec |pop|=10)


- Jeu facile (DSJC1000.5, k=90) : L=500
- Jeu intermédiaire (DSJC1000.5, k=88) : L=1400
- Jeu difficile (DSJC1000.5, k=84) : L=16000

INF6953 Les algorithmes évolutionnistes (2) 27

También podría gustarte