• Aucun résultat trouvé

L’algorithme génétique classique

Dans le document Optimisation des flux de trafic aérien (Page 39-41)

3.6 Algorithmes génétiques

3.6.2 L’algorithme génétique classique

Le codage des données

Dans l’algorithme initial de Holland, chaque solution éligible est codée par une séquence binaire de longueur fixe, appelée chromosome. Ce codage binaire, historiquement le plus ancien, permet d’uti- liser des opérateurs de croisement et de mutation simples. Les premiers résultats théoriques sur les al- gorithmes génétiques ont été obtenus avec ce type de codage, à travers la notion de schéma [Gol89a]. Un schéma est une suite du type *110**01, où * peut être indifféremment un 0 ou un 1. L’ordre d’un schéma est son nombre de positions fixes (0 ou 1). Sa longueur fondamentale est la distance séparant la première position fixe de la dernière. Par exemple, *110**01 est d’ordre 5 et de longueur fondamentale 8-2=6.

Un inconvénient majeur du codage binaire est qu’il tient généralement peu compte de la structure du problème. Les différentes informations utiles sont concaténées en une chaîne de bits. Or les résul- tats théoriques (cf [ASBG02], section 21.3, pour une introduction à la théorie des schémas) montrent que les schémas binaires de longueur fondamentale faible et d’ordre petit sont plus favorisés que les autres lors de la génération d’une nouvelle population. Il faut donc s’efforcer d’avoir un codage qui préserve les informations importantes. Or, dans les problèmes de grande dimension, où les différentes variables sont a priori d’égale importance, chaque variable sera codée sur quelques bits de la séquence. L’emplacement de ces quelques bits conditionnera le poids accordé à la variable dans la résolution : les données des variables situées plus près du bord seront plus volatiles au fil des générations que celles proches du centre de la séquence.

Un codage des données par des vecteurs réels permet d’éviter ce genre de problèmes. C’est celui que nous utiliserons par la suite.

La génération de la population initiale

La population initiale doit être suffisamment diversifiée et de taille assez importante pour que la recherche puisse parcourir l’espace d’état dans un temps limité. Si l’on prend comme population initiale des duplicata d’un seul élément, on comprend qu’il faudra le plus souvent un très grand nombre de mutations et de croisements pour progresser vers une solution qui soit un optimum global. C’est pourquoi la population de départ est le plus souvent obtenue par des tirages aléatoires.

Toutefois, il peut être utile d’orienter la génération initiale vers des sous-domaines intéressants de l’espace d’état. Par exemple lors d’une recherche d’optima dans un problème de minimisation sous

38 CHAPITRE 3. DESCRIPTION DES ALGORITHMES contraintes, il est préférable, quand c’est possible, de produire directement des éléments satisfaisant les contraintes. Sinon, il faudra attribuer une pénalisation supplémentaire aux éléments qui violent les contraintes, et adapter la taille de la population et le temps de recherche.

La sélection

La sélection consiste à favoriser statistiquement les bons éléments, au détriment des mauvais. On introduit dans la génération suivante un certain nombre de clones des éléments de la génération courante. Ce nombre dépend du critère d’adaptation de l’élément. Comme la taille de la population reste fixe, les plus mauvais éléments disparaissent, ce qui peut être dommageable, car certains sont porteurs d’informations menant à des solutions intéressantes après divers croisements et mutations. Le processus de sélection doit donc être conçu pour laisser également une chance aux mauvais éléments. Parmi les nombreux principes existants dans la littérature, celui du stochastic remainder without replacement selectiona été retenu, notamment parce qu’il n’introduit pas de biais de sélection fonction de la taille de la population. Il se décrit comme suit :

– pour chaque élément i, prendre un nombre de clones égal à la partie entière E[ri], où ri =

f (i)/moy(f ) est le rapport du critère d’adaptation f (i) sur la moyenne des adaptations. Si on s’en tient là, aucun des éléments dont l’adaptation est au-dessous de la moyenne n’est retenu et la nouvelle population est incomplète,

– compléter la population en tirant aléatoirement, selon le principe de la roulette biaisée (roulette wheel selection) le nombre nécessaire d’éléments parmi les individus affectés de coefficients ri− E[ri].

Eviter que les meilleurs éléments ne prennent trop rapidement le dessus et garantir le maintien d’une certaine diversité fait l’objet d’améliorations de la sélection (mise à l’échelle, opérateur de partage, présentés en 3.6.3 et 3.6.3), d’importance cruciale dans l’utilisation pratique des algorithmes génétiques.

Le croisement

Le croisement s’avère très simple lorsqu’on utilise un codage binaire. Lorsqu’on veut engendrer deux enfants à partir de deux parents, on découpe chaque chromosome parent en deux parties (croi- sement mono-point) et on recombine les demi-chromosomes pour former les enfants. A travers ce principe très simple, on voit intuitivement que si chaque parent est porteur de “bonnes” et de “mau- vaises” informations dans ses gènes (les bits composant le chromosome), on espère qu’un des deux enfants au moins héritera des bons gènes des deux parents. Il s’agit donc à la fois de diversifier la population en recombinant les chromosomes, et de chercher à améliorer l’adaptation des individus.

Dans le cas d’un codage par des vecteurs réels, qui est celui que nous utiliserons dans cette thèse, d’autres principes sont utilisés, comme le croisement barycentrique, qui s’exprime simplement, pour deux parents ~p1et ~p2, par : (

~

e1 = α ~p1+ (1 − α) ~p2

~

e2 = (1 − α) ~p1+ α ~p2

où le coefficient α est choisi aléatoirement, par exemple dans [-0.5, 1.5], si on veut pouvoir produire des enfants à l’extérieur du segment [ ~p1, ~p2].

Le croisement barycentrique est une possibilité parmi d’autres. L’opérateur doit être adapté au problème traité. Une autre technique de croisement introduite par Nicolas Durand dans [Dur96] donne ainsi d’excellents résultats pour les fonctions partiellement séparables. Cette technique sera présentée dans la section 3.6.3.

3.6. ALGORITHMES GÉNÉTIQUES 39

La mutation

Dans le but d’obtenir un optimum global, il faut être certain que l’algorithme, moyennant un temps de calcul suffisamment long, peut théoriquement accéder à tout point donné de l’espace d’états. Les opérateurs de sélection et de croisement présentés ci-dessus ne suffisent pas à assurer cette propriété, dite d’ergodicité.

La mutation se fait de la façon la plus simple en modifiant quelques bits d’un chromosome dans le cas du codage binaire, ou en introduisant un bruit aléatoire dans les données codées par des réels. Cet opérateur, et celui de sélection, sont à la base des résultats de convergence des algorithmes génétiques. Certains algorithmes sont d’ailleurs implantés de cette façon, sans opérateur de croisement. Toutefois, afin d’accélérer la convergence pour des problèmes complexes, il est préférable d’utiliser un opérateur de croisement et un opérateur de mutation, de préférence adaptés au problème.

Dans le document Optimisation des flux de trafic aérien (Page 39-41)