Tous les graphiques qui vont suivre ont été générés par le script suivant :
#!/bin/bash PLOTFILE="plotfile" echo "set xlabel \"Nombre d'itérations\"" > $PLOTFILE echo "set ylabel \"Score\" " >> $PLOTFILE echo "set term postscript" >> $PLOTFILE echo >> $PLOTFILE for fic in `ls testvalues*` do echo "set output \"$fic.ps\"" >> $PLOTFILE echo "plot \"$fic\" using 1 with lines" >> $PLOTFILE done gnuplot < $PLOTFILE for fic in `ls *.ps` do echo "Conversion en png de $fic" convert -rotate 90 $fic $fic.png done rm -f testvalues*ps echo "terminé"
Ce script permet de générer automatiquement, à partir de tous les fichiers
testvalues* (générés par la méthode Algogen.testValues()
),
les images des graphiques correspondants par appel aux logiciel
gnuplot et convert.
Tous les tests ont été réalisés avec la matrice fournie dans le sujet du projet.
Il nous est très vite apparu que le nombre d'itération était rapidement
suffisant : pour certains graphiques, le hasard faisait par exemple
que le score moyen maximal était atteint en une dizaine d'itérations :
Nous avons ensuite constaté, qu'avec un taux de mutation de 0.3 et un taux de mutation de 0.6, l'optimal était souvent atteint :
On a clairement mis en valeur ci-dessus qu'autour de 15/20 itérations la solution peut être déjà correcte.
Avec, entre autres, les exemples donnés ci-avant, nous avons remarqué (de façon empirique) que :
tuerles plus mal adaptés.
Voici donc les raisons pour lesquelles nous avons fixé les coefficients aux valeurs indiquées.
Le nombre d'itérations nécessaires pour trouver des solutions acceptables est heureusement assez bas pour ne pas craindre un temps de calcul trop long, même sur une machine peu puissante.
Nous avons fixé celui-ci à 100, soit environ le double de la moyenne nécessaire évaluée, ce afin de trouver les meilleures solution de façon plus sûre. Cette option reste de toute façon paramétrable par l'utilisateur avec l'option -nbIter.
brassagesuffisamment important des individus, il faut nécessairement que le coefficient de reproduction ne soit pas trop faible. Nous l'avons donc fixé à une valeur légèrement supérieure à la moitié (0.6).
Avec ces deux coefficients, il est intéressant de voir la forme de la courbe
avec un grand nombre d'itérations : on constate que le maximum
est atteint relativement rapidement puis, au fil des
reproductions-mutations-sélections successives on observe que la moyenne
stagne autour du maximum précédent, en s'améliorant parfois :
Page valide XHTML 1.0 Strict.