suivant: Restriction de l'espace de
monter: Algorithmes génétiques pour résoudre
précédent: Algorithmes génétiques
  Table des matières
Sous-sections
Nous allons maintenant appliquer les algorithmes génétiques à la résolution du problème du voyageur de commerce.
Un algorithme génétique se caractérise par différents points :
- une instance du problème
- un espace de recherche
- le codage des points de l'espace de recherche (par un chromosome)
- les opérateurs génétiques classiques
- sélection
- hybridation
- mutation
- diversification
Nous allons préciser pour chaqu'un de ces points les options choisies pour l'implantation du problème du
voyageur de commerce.
Une instance du PVC est un graphe complet de
sommets dont les arêtes sont pondérées par un coût strictement positif.
L'instance sera alors implantée comme une matrice
dont les coefficients sont strictements positifs sauf sur la première
diagonale où ils sont tous nuls.
est appelé matrice de coût.
Ainsi la distance entre le sommet j et le sommet i est
. On n'a pas forcemment
et on n'a pas non plus l'inégalité
triangulaire dans le cas général.
Cependant, pour l'implantation de l'algorithme, nous avons choisi le cas d'une distance euclidienne sur
points du plan,
pour construire la matrice de coût.
C'est l'ensemble
des permutations de
. Un point de l'espace de recherche est une permutation.
Chaque points de l'espace de recherche est une permutation de
. Une première idée est de coder alors
chaque permutation par une chaîne de bits.
Par exemple, pour
:
représente la permutation :
Cependant après quelques hybridations, on risque d'avoir un chromosome qui ressemble à :
à savoir
ce qui ne représente plus une permutation. Il suffit alors de répartir les chromosomes comme une chaîne
d'entiers et d'adapter les opérateurs génétiques
à ce codage. Notons que les sommets sont répartis à partir de 0.
C'est ici le coût total d'une permutation. A savoir pour une permutation
:
Le dernier terme de la somme permettant de revenir au sommet initial. C'est cette fonction là que nous cherchons à minimiser.
Nous utilisons ici la méthode de sélection par roulette (
2.4.1). On calcule d'abord la valeur moyenne de la
fonction d'évaluation dans la population :
où
est l'individu i de la population et
la taille de la population.
La place d'un individu
dans la roulette est proportionnel à
.
On sélectionne alors
individus pour la reproduction.
Il y a aussi la possibilité d'avoir une politique d'«élitisme». C'est à dire qu'à chaque étape de sélection le meilleur
chromosome est automatiquement sélectionné.
Une fois la population intermédiaire sélectionné, on complète la population avec les enfants de la population intermédiaire.
Deux chromosomes se combinant donnent naissance à deux autres chromosomes de la façon suivante :
- Un point d'hybridation est déterminé aléatoirement (entre 0 et la longueur du chromosome).
- On copie dans le premier fils les indices du premier père jusqu'au point d'hybridation.
- On complète ensuite par les indices du deuxième chromosome père ne se trouvant pas déjà dans le fils
dans l'ordre donné par le deuxième parent.
- On réitère 2) et 3) avec le même point d'hybridation, mais en inversant le rôle des deux parents.
Par exemple, pour
, on a les deux chromosomes suivants qui s'hybrident :
On hybride à partir du rang 5.
On arrive alors aux deux nouveaux chromosomes :
Une des méthodes les plus simples pour muter un chromosome est d'inverser les positions de deux villes.
Par exemple :
devient
Cependant, cette mutation change beaucoup la fonction d'adaptation.
Si on veut inverser deux sommets non-contigües i et j, la fonction d'adaptation change :
Une solution qui perturbe moins l'individu consiste à inverser tous les sommets entre
et
.
Par exemple,
devient
La différence de la fonction d'évaluation ne dépend plus que de quatre termes :
En fait, au lieu d'inverser deux sommets, cette méthode efface deux arêtes et les remplace par deux autres.
La diversification consiste à mieux répartir les individus de la population dans l'espace de recherche. Ici,
on fait un décalage vers la gauche de longueur aléatoire sur tout les individus nouvellement créés. Cela
n'affecte pas leur valeur d'adaptation et cela permet une meilleur diversité génétique.
On a déjà vu que l'AGC utilisé pour le PVC fabrique des individus qui n'était pas des permutations. Le but des séquences
de Bean et de conserver les méthodes de l'AGC en changeant le codage des individus pour résoudre le PVC.
Pour générer une séquence de Bean, on associe à chaque ville de l'instance du problème un nombre aléatoire.
Par exemple, soit l'ensemble des villes
:
On obtient ainsi une séquence de couples (nb aléatoire, ville).
Ici, pour l'exemple :
Cette séquence s'appelle séquence de Bean.
Pour obtenir l'ordre de séquencement des villes, il faut ensuite trier dans l'ordre croissant cette séquence de Bean
par rapport au nombre associé à chaque ville.
devient alors
Elle code le chemin passant respectivement par
pour revenir en C (cycle hamiltonien).
L'application des opérateurs d'hybridation est simple à réaliser, il suffira de procéder à une hybridation sur les
nombres associés : soient les séquences de Bean
codant la séquence
et
codant la séquence
,
une hybridation à 1 point entre ces deux chromosomes donnerait :
Le fils 1 représente la séquence de Bean
Il code donc la séquence
.
Le fils 2 représente la séquence de Bean
Il code donc la séquence
.
Cette méthode de représentation d'une solution potentielle permet de lever l'ambiguité pour les opérateurs d'hybridation.
Néanmoins, elle ne donne pas pour autant de meilleurs résultats (pas de gain d'itérations sur le nombre
de générations par rapport à la méthode implantée). De plus, il est difficile de contrôler ses effets
lors d'une hybridation, empéchant de ce fait une optimisation locale de l'algorithme.
suivant: Restriction de l'espace de
monter: Algorithmes génétiques pour résoudre
précédent: Algorithmes génétiques
  Table des matières
Tollari Sabrina
2003-05-23