on commence par générer une population d'individus de façon aléatoire. Pour passer d'une génération k à la génération k+1, les trois opérations suivantes sont répétées pour tous les éléments de la population k. Des couples de parents P1 et P2 sont sélectionnés en fonction de leurs adaptations. L'opérateur de croisement leur est appliqué avec une probabilité Pc (généralement autour de 0.6) et génère des couples d'enfants C1 et C2. D'autres éléments P sont sélectionnés en fonction de leur adaptation. L'opérateur de mutation leur est appliqué avec la probabilité Pm (Pm est généralement très inférieur à Pc) et génère des individus mutés P'. Le niveau d'adaptation des enfants (C1,C2) et des individus mutés P' sont ensuite évalués avant insertion dans la nouvelle population. Différents critères d'arrêt de l'algorithme peuvent être choisis :![]()
On peut étendre ce principe en découpant le chromosome non pas en 2 sous-chaînes mais en 3, 4, etc [BG91]. (voir figure 1.3).![]()
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 :![]()
|
ì í î |
|
|
ì í î |
|
Dans les problèmes continus, on procède un peu de la même manière en tirant aléatoirement un gène dans le chromosome, auquel on ajoute un bruit généralement gaussien. L'écart type de ce bruit est difficile à choisir a priori. Nous discutons ce problème de façon plus détaillée, en présentant une amorce de solution, dans la section 1.4.2.![]()
Pour éviter ce comportement, il existe d'autres modes de sélection (ranking) ainsi que des principes (scaling, sharing) qui empêchent les individus ``forts'' d'éliminer complètement les plus ``faibles''. On peut également modifier le processus de sélection en introduisant des tournois entre parents et enfants, basé sur une technique proche du recuit.![]()
| a= |
| ; | b= |
| . |
où n est la génération courante.![]()
| k= |
æ ç ç ç ç ç è |
tan
|
ö ÷ ÷ ÷ ÷ ÷ ø | p |
Ce dernier principe de scaling donne effectivement de meilleurs résultats sur nos problèmes que le scaling linéaire et sera donc systématiquement utilisé. Dans le cas des fonctions objectifs multi-modes présentant des optimaux quasi-équivalents, cette technique de scaling, en amplifiant les écarts de fitness en fin de convergence, va effectivement favoriser le mode dominant mais aussi masquer les modes sous-optimaux qui peuvent tout de même présenter un intérêt. Le scaling permet donc une bonne exploration de l'espace d'état mais ne favorise pas la répartition des individus sur les différents modes de la fonction objectif.![]()
| f'i = |
| ; | m'i = |
| S(d(xi,xj)) |
| S(d) = 1- |
æ ç ç ç è |
|
ö ÷ ÷ ÷ ø | a si d < s share |
Dans la pratique ce type de sharing donne effectivement de bons résultats mais au prix de N2 calculs de distances entre chromosomes à chaque génération pour une population de taille N. Or les algorithmes génétiques induisent une complexité en N sans sharing et le fait de passer en N2 peut être pénalisant, notamment pour N grand.![]()
| fi' = |
| ; | mi' = nc |
æ ç ç ç ç è | 1 - |
æ ç ç ç è |
|
ö ÷ ÷ ÷ ø |
|
ö ÷ ÷ ÷ ÷ ø | ; |
| P = e |
|
|
ì ï ï ï ï ï ï ï ï ï ï ï ï ï ï í ï ï ï ï ï ï ï ï ï ï ï ï ï ï î |
|
|
ì í î |
|
|
dH(Ei,Ej)=
|
|
|
|
|
|
|
|
|
ì ï ï ï í ï ï ï î |
|
| dmoy= |
|
|
ì ï ï ï ï í ï ï ï ï î |
|
Ensuite chaque processus fait évoluer sa population indépendamment jusqu'à ce qu'il décide (selon une probabilité fixée à l'avance) de rassembler ses meilleurs individus pour en transmettre une certaine quantité (proportionnelle à la taille de la population) à une autre machine de son choix. La machine réceptrice intègre alors ces nouveaux éléments dans sa propre population en éliminant les moins bons de ses individus. L'intérêt du parallélisme par îlotsest qu'il offre la possibilité de travailler sur de grandes populations (n0) tout en donnant des résultats dans un temps raisonnable puisque la durée nécessaire est à peu de choses près celle qu'il faudrait pour une population de taille![]()
| n0 |
| N |
Il ne faut s'attacher qu'à la forme générale de la courbe, dans la mesure où les charges locales des machines peuvent modifier de façon sensible les résultats. L'efficacité de la méthode est cependant largement mise en évidence.![]()
Il faut noter que ce mécanisme demande un grand nombre de communications pour envoyer les données et les évaluations. La méthode n'est donc intéressante que si le temps passé pour un calcul d'adaptation est grand devant le temps de communication, elle sera par conséquent utilisée pour des problèmes dont les évaluations de fitness prennent du temps, on pense essentiellement à des cas faisant appel à des réseaux de neurones ou à de gros calculs matriciels.![]()
| f(H) = |
|
| pi= |
|
| m(H,t+1)=m(H,t) . n . |
|
| = |
|
| m(H,t+1)=m(H,t) |
|
| f(H) | |||||
|
| ps³ 1-pc |
|
| m(H,t+1) ³ m(H,t) (1+ct(H)) (1-pc |
| ) |
| m(H,t+1) ³ m(H,t) (1+ct(H)) (1-pc |
| -o(H)pm) |
| Xk |
| Yk |
| Zk |
| Xk+1 |
|
| " x,yÎ E $ rÎ N P | [ | Xk+r=y| Xk=x | ] | >0 |
| µ (y)=lim |
| P | [ | Xk=y| X0=x | ] |
|
| S= | { | x=(x1,...,xN)Î EN : f(x1)=f(x2)=··· =f(xN) | } |
| " xÎ EN P |
é ê ê ê ë | $ xiÎ |
| $ K " k³ K Xkinfty =xi| X0infty =xini |
ù ú ú ú û | =1 |
| Xkl |
| Ukl |
| Vkl |
| Xk+1l |
|
| P | [ | Ukl=u| Xkl=x | ] | =pl(x1,u1)· pl(x2,u2)··· pl(xN,uN) |
| a (ik,ik+1)>0 |
| P | [ | Vkl=v| Ukl=u | ] | =ql | ( | (u1,u2)· (u3,u4)··· (uN-1,uN) | ) |
|
|
| P | [ | Xk+1l=x| Vkl=v | ] | = |
| U l(xr,vr) |
|
| Finfty | ( | k,f(x1),f(x2),··· ,f(xN) | ) | = |
|
| " y,zÎ EN lim |
| P | [ | Xk+1l=z| Xkl=y | ] | = P | [ | Xk+1infty =z| Xkinfty =y | ] |
| " y,zÎ EN lim |
| P | [ | Xk+1l=z| Xkl=y | ] | = P | [ | Xk+1infty =z| Xkinfty =y | ] |
|
|
| P |
é ê ê ë | Z |
| =i| Z |
| =j |
ù ú ú û |
| exp | - |
|
| " iÎ {1,...,r} W(i)= |
|
| V(a ,b ) |
| " iÎ {1,...,r} n |
| (i) |
| exp | - |
|
| Cste |
| e 2 |
| lim |
| lim |
| P |
é ê ê ê ë | X |
| Î V |
æ ç ç è |
| Ki |
ö ÷ ÷ ø | | X |
| =xini |
ù ú ú ú û | =1 |
| " xiniÎ EN lim |
| lim |
| P | [ | XklÎ W*| X0l=xini | ] | =1 |
| N*£ |
|
| l(k) |
|
|
| " xiniÎ EN P |
é ê ë | $ K " k³ K |
é ë | X |
|
ù û | Ì f*| X0=xini |
ù ú û | =1 |
| " xiniÎ EN P |
é ê ê ê ë | $ K " k³ K |
é ë | X |
|
ù û | Ì f* , |
| Ì f*| X0=xini |
ù ú ú ú û | =1 |
| K(x*)= |
ì í î | xiniÎ ÂN, t.q. pour xt solution de 1.7 ; |
| xt=x* |
ü ý þ |