Bonjour,

J'ai programmer un algorithme génétique en java, afin de minimiser la fonction fitness f suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<img src="http://miscws.developpez.com/latex2pngcache.php?latex=U-DlStOo0FSwVYhJSk3PzKsuy00sKcqsqFWIKUtNrg6tVdBViCkuzY2vzrQ1rI2rzqtVqIjPVIgpycxNLYaoCQOqTc1LQejk5QIA" alt="Formule mathématique" title="Formule mathématique" />
Voici mon algo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Population initiale -> N individus (par exemple N=1000)
Evaluation selon fonction fitness
Selection par rang:
    Tri croissant des individus selon leur fitness.
    On Garde les M meilleurs (i.e les premiers de la liste puisque on veut celui qui minimise f)
Croisement:
    On tire au hasard un paire d'individus dans les M meilleurs
    On effectue le croisement, deux nouveaux individus seront créer
    On répète l'opération de croisement selon le taux de croisement (ex: 60% alors sur mille on aura 600 individus issus du croisement)
Mutation:
    On choisi au hasard des individus à muter dans M meilleurs
    On fait les mutations

Génération suivante(taille N) = M meilleurs + individus croiser + mutants
On refait toutes ces opérations jusqu'à trouver l'individu avec un fitness proche de 0
Je voudrais juste votre avis en ce qui concerne les croisements et mutations.

Merci.