• Aucun résultat trouvé

Chapitre III. Optimisation de jets photoniques par algorithme génétique

III.3 Algorithme génétique

III.3.9 La recombinaison génétique

Cette technique permet de pallier le problème de dominance d’un « super-individu » (individu de très forte évaluation). Toutefois, elle a tendance à ralentir l’algorithme car elle ne privilégie pas les forts écarts d’évaluation entre individus.

III.3.8.1.3 La sélection par tournoi

La sélection par tournoi consiste à partir d’un sous-ensemble d’individus (généralement deux ou trois) tirés aléatoirement au sein de la population courante à sélectionner simplement celui qui possède la meilleure évaluation. On réitère ces « tournois » entre individus autant de fois qu’il y a d’individus à sélectionner. On note que certains individus peuvent être copiés plusieurs fois, ce qui favorise la pérennité de leurs gènes [61]. Cette méthode possède l’avantage non négligeable de ne pas nécessiter de tri ; ce qui réduit potentiellement le temps du calcul.

III.3.9 La recombinaison génétique

Les opérateurs de recombinaison génétique ont pour but de garantir la diversification des individus dans la population au cours des générations. Les deux opérateurs fondamentaux sont le croisement et la mutation.

III.3.9.1 Le croisement

Le croisement est le mécanisme qui permet la génération de chromosomes à partir des caractéristiques des parents. Le croisement est donc un processus aléatoire qui permet la production de nouvelles solutions à partir de celles déterminées à l’itération précédente. En effet, il consiste à combiner les gènes des individus sélectionnés, dits parents, pour donner de nouveaux chromosomes, dits enfants, possédant des caractéristiques génétiques issues de leurs géniteurs. Il a donc pour but d’enrichir la diversité de la population tout en manipulant la structure des chromosomes. Généralement, un croisement concerne deux parents et génèrent systématiquement deux enfants.

149 Les opérateurs de croisement sont fortement liés au type du codage mais leur principe reste identique. Dans ce qui suit, pour raison de simplicité et de clarté, on présentera rapidement la méthode de croisement simple en codage binaire. Ensuite, on exposera les méthodes de croisement adaptées pour le codage réel utilisé dans ce travail.

III.3.9.1.1 Croisement binaire

Pour le codage binaire, la méthode la plus simple est le croisement en un point nommé croisement simple (figure III.5). Considérons deux parents et constitués de

chacun. Initialement, on tire aléatoirement un nombre entier compris entre 1 et , qui va constituer le point de croisement dans chacun des chromosomes parents. Les enfants héritent de la première partie de la chaîne binaire des parents jusqu’au point de croisement. Ensuite, on échange les deux sous-chaînes terminales de chacun des deux chromosomes parents et , comme illustré sur la figure III.5.

III.3.9.1.2 Croisement réel

Le principe de base du croisement réel est le même que le croisement binaire, à l’exception du fait que ce ne sont plus des bits qui sont mis en jeu mais des variables réelles. Il existe plusieurs méthodes de croisement réel dont les plus courantes sont explicitées ci-dessous :

Croisement simple

Le croisement simple est similaire aux opérateurs de croisement utilisés dans le cas du codage binaire. La seule différence réside dans le fait que le point de découpage est maintenant situé entre les gènes, ce qui revient à échanger les valeurs entières de chaque parent pour composer les chromosomes des enfants. On peut facilement généraliser la méthode à plusieurs points de croisement. Par exemple, si on sélectionne Nc points de croisement, on parle de croisement uniforme (figure III.6)

1 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 Parent P1 Parent P2 Enfant2 Point de croisement Enfant1

Figure III.5. Exemple de croisement simple entre 2 chromosomes de 17 bits avec un point de croisement égale à 6.

150 Il est à noter que cette technique présente un inconvénient majeur qui réside dans le fait qu’aucune valeur nouvelle pour les paramètres n’est créée, ce qui conduit à un taux d’exploration limité. Il est donc nécessaire d’appliquer d’autres méthodes de croisement.

Croisement arithmétique (par mélange)

Le croisement arithmétique a été implémenté spécialement pour le codage réel des paramètres [62, 63]. Ce type de croisement permet d’introduire des nouvelles valeurs de paramètres afin de garantir une meilleure exploration de l’espace de recherche. L'échange d'informations se fait au travers d'une opération arithmétique entre les deux chaînes parents. En effet, il effectue pour un ou plusieurs gènes une simple combinaison linéaire des valeurs prises sur les structures parents, en utilisant une pondération propre à chaque gène de la structure [63]. Considérons par exemple le gène i des deux parent et . Les allèles correspondants aux chromosomes des deux enfants peuvent ainsi être calculés comme suit :

où est un paramètre (poids) compris entre 0 et 1 qui garantit que les allèles des enfants restent contenus dans les valeurs admissibles initialement . Ainsi, lorsque on recopie intégralement le paramètre du parent pour l’enfant et celui du parent pour l’enfant . Lorsque , on prend la moyenne des deux allèles des parents.

Croisement linéaire

Un autre opérateur de croisement proposé par Wright [64] est le croisement linéaire. Pour le gène i, il consiste à partir de deux parents et à construire 3 valeurs d’allèle par les formules suivantes : Enfant2 Enfant1 Parent P2 Parent P1 Figure III.6. Principe du croisement uniforme

151

Ensuite, l’enfant qui possède des valeurs de paramètre extérieures au domaine de définition est éliminé au profit des 2 autres. Sinon, celui conduisant à la plus faible évaluation sera supprimé.

Croisement heuristique

Un autre opérateur intéressant est le croisement heuristique [65]. Cet opérateur est unique car il est le seul des mécanismes de croisement qui utilise les valeurs de la fonction coût f pour déterminer la direction de recherche. L’opérateur construit le gène i d’un seul enfant

à partir du gène i des deux parents et selon la formule suivante :

où est un nombre aléatoire compris entre 0 et 1. Il est à noter que la relation (III.24) est définie sous l’hypothèse que , sinon est permuté avec . Il est possible que les valeurs créées ne soient pas des valeurs admissibles, il faut donc régénérer un autre nombre jusqu'à ce qu’une valeur admissible soit obtenue.

Combinaison de plusieurs types de croisement (Croisement hybride)

Enfin, on peut définir un opérateur de croisement hybride [60] qui utilise une combinaison des différents croisements présentés précédemment. Les enfants sont créés en passant par les étapes suivantes :

On choisit un gène Q au hasard. On calcule ensuite la nouvelle valeur de l’allèle correspondant au gène Q notée pour chacun des 2 enfants :

où est un nombre aléatoire compris entre 0 et 1.

Ensuite, chaque parent fournit à chaque enfant une partie de son information génétique placée respectivement en amont et en aval du gène Q produisant ainsi 2 nouveaux chromosomes enfants (figure III.7).

152 III.3.9.2 La mutation

L’opérateur de mutation est appliqué directement sur la population intermédiaire composée de l’ensemble des enfants ainsi obtenus par l’opérateur de croisement. C’est la seconde voie qui permet à l’AG d’explorer de nouveaux points. En effet, il permet de maintenir la diversité dans la population en évitant à l’AG de converger trop rapidement vers un minimum local. C’est essentiellement cet opérateur qui permet de sortir l’algorithme des minima locaux. En effet, la mutation confère donc aux AG une propriété importante qui est la propriété d’ergodicité, c'est-à-dire que l’AG sera susceptible d’atteindre tous les points de l’espace de recherche à tout moment.

Classiquement, la mutation modifie de manière purement aléatoire les gènes d’un ou plusieurs individus de la population pris au hasard. La plupart des algorithmes utilise un taux de probabilité Pm qui permet de fixer le nombre de mutations à appliquer à chaque génération. Celui-ci dépend à la fois de la taille de population Npop et du nombre de gènes. Elle est généralement fixée entre 0,001 et 0,05 [46, 66].

Par ailleurs, pour ne pas détériorer les performances de l’AG, il est recommandé d’utiliser un taux de mutation Pm faible.En effet, un grand taux de mutation peut conduire à la destruction systématique des informations utiles. L’AG se comporterait alors comme une méthode de recherche purement aléatoire.

III.3.9.2.1 Mutation binaire

La mutation en binaire consiste simplement à remplacer selon la probabilité la valeur d’un bit donnée de 0 à 1 ou vice versa. De façon concrète, on génère aléatoirement à chaque génération couples de points aléatoires, appelés points de mutation, représentant respectivement l’individu et le numéro du bit à muter. Un exemple de mutation est illustré dans la figure III.8 pour lequel le point de mutation tiré est (5,7).

Enfant2 Enfant1 Parent P2 Parent P1 Q=3

153 III.3.9.2.2 Mutation réel

Dans le cas d’un codage réel, la mutation consiste simplement à écraser l’allèle correspondant au gène à muter et générer aléatoirement une nouvelle valeur prise dans son intervalle de définition. On trouve dans la littérature 2 opérateurs distincts :

Mutation uniforme

La mutation uniforme reprend le principe de la mutation présenté pour le codage binaire (cf. paragraphe III.3.3.2.1). On définit de manière aléatoire couples de points de mutations représentant respectivement l’individu et le numéro du gène à muter. L’allèle correspondant sera remplacé par une nouvelle valeur prise aléatoirement dans le domaine de variation du paramètre concerné.

Un cas particulier de la mutation uniforme est la mutation aux bornes [65] où la valeur du gène peut exclusivement prendre la valeur correspondante à la borne inférieure ou à la borne supérieure du domaine de définition.

Mutation non uniforme

La mutation non uniforme [58] revient à effectuer un tirage de l’allèle dans un intervalle de plus en plus restreint (non uniforme). En effet, avec l’évolution des générations, la mutation non uniforme aura tendance à moins écarter les individus de la zone de convergence. Cette mutation offre un bon équilibre entre l’exploration de l’espace de recherche et l’affinement des individus. La mutation uniforme définit la nouvelle valeur pour le gène i sélectionné aléatoirement, par la formule suivante :

où est la génération courante, est un nombre aléatoire défini dans l’intervalle ,

et sont respectivement la borne inférieure et la borne supérieure de et est une fonction qui prend une valeur aléatoire dans l’intervalle de telle sorte que la probabilité peut prendre des valeurs maximales en début de l’algorithme permettant de balayer tout le domaine et se réduit au fur et à mesure des générations pour

1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 Point de mutation (5,7)

1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 1 Une mutation

individu I5 avant mutation

individu I5 après mutation

154 tendre vers 0 en fin de l’algorithme lorsque gen se rapproche de Gmax. Au cours des premières générations ( est petit), la propriété de permet à l’opérateur de balayer tout l’espace de façon uniforme puis de plus en plus localement dans les générations suivantes [67]. La fonction a été proposée par Michalewics [68] comme suit :

où un nombre aléatoire pris dans et généré selon une distribution uniforme,

est le nombre maximum de génération et un paramètre de l’opérateur qui détermine le degré de dépendance au nombre d’itérations (ou degré de non-uniformité).