Regardons un exemple simple en détail :
Prenons une fonction simple f : x->x² à optimiser sur l'intervalle [0;31] , avec x entier.
1ère étape : Codage des données du problème
Chaque valeur de x peut être codée en base 2 sur 5 bits. Chacun de ces 5 bits correspond donc à un gène et les 5 bits ensemble seront le chromosome de x. Par exemple x=12 sera codé par le chromosome 01100.
Ici la fonction d'adaptation sera f.
2ème étape : Génération d'une population aléatoire
Dans cet exemple on se limite à une population de 4 individus.
Nous tirons aléatoirement les nombres (individus) 13, 24, 8 et 19.
Population initiale (génération 0) | ||||
|
x
|
Codage (gènes)
|
Fonction d'adaptation
|
% du total
|
1
|
13
|
01101
|
169
|
14.4
|
2
|
24
|
11000
|
576
|
49.2
|
3
|
8
|
01000
|
64
|
5.5
|
4
|
19
|
10011
|
361
|
30.9
|
Total
|
1170
|
3ème étape : Sélction et croisements (crossover)
A l'aide de la dernière colonne du tableau 1 nous contruisons la roulette de croisement qui permet de selectionner les individus qui participeront à la reproduction, proportionnellement à leur adaptation.
![]() |
|
Figure 1 : Roulette de croisement |
Cette roulette est lancée 4 fois afin de séléctionner les 4 individus qui participeront à la reproduction. Nous sélectionnons les individus numéros 1, 2, 2 et 4.
Pour chacun de ces individus on choisit un partenaire de manière aléatoire ainsi qu'on point de croisement des gènes.
Il ne reste alors plus qu'à effectuer les croisements en question en échangeant les parties gauche et droite des chromosomes de chaques partenaires.
Le résultat de cette étape est résumé dans le tableau suivant :
|
Population initiale
|
Partenaire
|
Point de croisement
|
Nouvelle population
|
Valeur de x
|
f(x)=x²
|
1
|
0110|1
|
2
|
4
|
01100
|
12
|
144
|
2
|
1100|0
|
1
|
4
|
11001
|
25
|
625
|
3
|
11|000
|
4
|
2
|
11011
|
27
|
729
|
4
|
10|011
|
3
|
2
|
10000
|
16
|
256
|
Nous observons :
La population après une génération est globalement plus adaptée que ses géniteurs avec quelques individus très forts (625 et 729 d'adaptation).
4ème étape : On recommence avec la génération obtenue, et ce jusqu'à ce qu'on atteigne une condition fixée par l'utilisateur (nombre maximum de générations, adaptation satisfaisante,...).
Voici un graphique des résultats obtenus sur 7 générations, avec un population de 50 individus :
![]() |
|
Figure 2 : Evolution de l'adaptation des générations. On a pris la fonction d'adaption F(x)=f(x)/31² afin de normaliser les résultats sur [0;1] |
Raffinements de la méthode :