En faisant varier la quantite de memoire utilisee j’ai continue a faire des runs pour essayer de mieux comprendre ce qu’il se passe. Le probleme c’est que la composante aleatoire de l’experience rend l’interpretation des resultats difficile. Un coup ca a l’air de bien marche, un coup ca a l’air de trainer les pieds… Alors j’ai pris le taureau par les cornes et j’ai automatise une grosse serie de test pour ensuite calculer des moyennes en fonctions des variables. Precisement, j’ai fait ceci : sur l’experience de trackage de cible le long d’un axe d’une duree de 500.000 iterations, j’ai fait varier la quantite de memoire entre 1ko, 10ko, 500ko, 1mo, 3mo, et le nombre de variation du coefficient de deplacement (obligeant le mebius a se reconfigurer pour s’adapter) entre 0, 2, 4, 6, 8 et 10. En sortie j’ai recupere la moyenne de l’ecart a la cible sur tout le run, et la moyenne de l’ecart a la cible sur chaque deuxieme demi-periode entre deux variations de coefficient de deplacement (ca c’est pour mesurer la performance du mebius apres qu’il se soit reconfigure suite a un changement de coefficient en lui laissant le temps de se reconfigurer). Pour chaque combinaison memoire/nombre de variation de coeff de deplacement j’ai fait 10 run et ensuite calcule leur moyenne. Et roule ma poule !
Deja, ca fait un total de 150.000.000 d’iterations. Que ca ait tourne jusqu’au bout sans planter c’est plutot bon signe niveau stabilite du code. Ensuite j’ai aussi mesure le temps d’execution. Etant donne qu’il y a toute la partie simulation de l’environnement et calcul/stockage des resultats ca ne donne qu’une limite tres tres superieure a la vitesse d’execution des mebius seuls, mais on est a environ 20 microseconde par iteration (sur mon i3-2120 (3.30GHz × 4)). La aussi ca me satisfait pleinement. Au passage, a une telle vitesse d’execution, le rythme auquel j’impose une modification de son environnement est extremement eleve. S’il supporte ca je me dis qu’il serait largement capable d’encaisser d’importe quoi dans un systeme embarque lache dans le monde reel. Cote memoire c’est pareil ca semble peu gourmand a la vue des resultats qui suivent.
Et maintenant les resultats :
A part pour la quantite de memoire minimum qui est un peu au dessus de 0.1, on est toujours inferieur a un ecart de 0.1, c’est pas mal du tout. Avec 1ko le mebius a vraiment pas beaucoup d’espoir, ca correspond a une configuration ou il oublie quasi immediatement … Pour autant il s’en sort quand meme pas mal, surtout s’il est dans un environnement stable (coefficient de deplacement ne variant pas ou peu). Ca c’est grace a un mecanisme d’extrapolation qui lui permet de ne pas oublier completement meme quand il « oublie », mais je ne donnerai pas plus de details. Avec 10ko c’est mieux mais ca reste un peu short, donc logiquement les performances sont meilleures. Avec 500ko, 1mo et 3mo, on obtient des performances equivalentes qui diminuent lentement au fur et a mesure que l’environnement est de plus en plus instable. Ca n’apparait pas sur le graphique, mais les moyennes totales sont tres tres proches des moyennes sur les demi-periodes sur tout les runs, indiquant qu’a chaque fois le mebius s’est reconfigure tres rapidement apres un changement de coefficient de deplacement.
Conclusion, ca fonctionne de facon tres satisfaisante et je suis content. Passe une certaine quantite de memoire minimale necessaire pour faire son boulot (quelque part entre 10ko et 500ko sur ce cas de test) le mebius s’en sort tres bien (ecart moyen a la cible tres faible), independamment de la quantite de memoire dispo (ecart similaire quelque soit la quantite de memoire) et s’adapte visiblement avec succes a un environnement instable (ecart a la cible variant peu quand le nombre de modification du coeff de deplacement augmente).
Maintenant que j’ai confiance en mes mebius sur cet exemple je vais pouvoir me concentrer sur le deuxieme cas test, plus complexe, realiste et interressant. Juste avant ca je vais peut etre faire un petit truc pour le fun : comme pour les mebius de premiere generation, j’aimerai bien « visualiser » ce qu’il se passe « dans la tete » d’un mebius. J’ai eu une idee qui devrait donner un resultat esthetique pas degueu, alors je vais probablement prendre quelques heures pour la coder…