Alors pour faire court sur les derniers problemes, il s’agissait d’un bug dans la simulation de l’environnement, d’une erreur dans le fichier de configuration et un probleme de sequencement dans l’algorithme d’apprentissage. Avec tout ca ca risquait pas de donner les resultats esperes ! Mais maintenant c’est repare et ca marche :
Je rappelle la premiere experience de test : un segment sur lequel se deplacent le mebius et une cible, le mebius a un capteur de distance a la cible a droite et a gauche, et deux « muscles » lui permettant de se deplacer vers la droite ou vers la gauche. La cible se deplace aleatoirement vers la droite et la gauche a une vitesse maximum bornee. La puissance des « muscles » du mebius est representee en jaune sur le graphique. Toute les 20000 iterations je la modifie aleatoirement et repositionne le mebius aleatoirement. En rouge, la distance moyenne du mebius a la cible sur 50 iterations. En bleu, la distance max pendant ses 50 iterations. Le mebius a 2 cognits actors qui commandent les muscles et 4 cognits teachers configures pour que le mebius cherche a se tenir au plus pres de la cible. La precision des cognits est de 0.1. On observe tout d’abord que pour le 5e, 8e et 9e intervalle le mebius n’arrive pas a se maintenir a proximite de la cible. Cela vient de la puissance des muscles qui est telle que sur ses intervalles le mebius ne peut se deplacer aussi rapidement que la cible. Pour les autres intervalles, le mebius se maintient a une distance bien inferieure a sa precision, prouvant que les cognits on bien converge vers l’etat correspondant a ‘se maintenir au plus pres de la cible’. On constate qu’a chaque changement de la puissance des muscles les cognits se reconfigurent pour s’y adapter et converger vers le but fixer par les cognits teachers. On constate egalement que la distance moyenne evolue selon une courbe en U en fonction de la puissance des muscles. Plus le mebius est faible, moins il arrive a suivre la cible, plus la distance moyenne augmente. En prenant de la puissance il devient capable de suivre la cible plus precisement et la distance diminue. Finalement avec trop de puissance la distance augmentent a nouveau. Ca peut paraitre paradoxale a premiere vue mais l’explication est la suivante : Les valeurs en sortie du cognit etant discrete, plus la puissance est grande et plus l’ecart entre deux valeurs est grande, le cognit perd donc en precision. Il y a donc une puissance ideale, correspondant a une vitesse maximale du mebius un peu superieure a celle de la cible (4e intervalle du graphique). Si on fait un paralelle avec un animal, on peux imaginer que cette puissance correspond aux criteres physiques des parties du corps associees la fonction motrice, alors que les cognits sont le systeme nerveux commandant ces parties du corps et les organes sensoriels. Pour cette experience je pars de cognits actor vierges et de cognit teacher configures a la main, mais je pourrais aussi partir d’un groupe de mebius aux cognits tous vierges et par selection/reproduction/mutation attendre qu’ils convergent vers un mebius aux performances optimales. Contrairement a ce que j’ai ecrit dans un article precedent, je doute maintenant que meme avec ma nouvelle machine ca converge raisonnablement vite, mais je vais tout de meme essayer dans les prochains jours. Conclusion de ce premier graphique : ca converge, c’est stable, ca s’adapte… bref ca marche tres bien. Deuxieme graphique :
Meme experience, j’ai juste augmente la precision des cognits. On voit alors que l’influence de la puissance des muscles se reduit, et que les perfromances dans tout les cas s’ameliorent, c’est coherent. Troisieme graphique :
Ici pour illustrer ce que les mebius de deuxieme generation peuvent faire de mieux que les premiers je refais la meme experience avec le meme mebius mais en cours d’experience j’inverse artificiellement l’effet des deux muscles (celui de droite se met a pousser a gauche et inversement). Sur le graphique c’est l’intervalle ou la courbe jaune passe en negatif. On constate que meme dans ce cas les cognits arrivent a se reconfigurer et que l’evenement passe quasiment inappercu en terme de distance a la cible. D’un point de vue ingenierie je pense que ces trois graphiques illustrent bien l’interet des mebius. Quelque soient les valeurs des parametres externes, et quand bien meme ils evolueraient, le mebius s’adapte pour trouver une solution optimale. Si on imagine qu’on l’utilise dans un systeme de pilotage de vehicule par exemple, ca simplifie la mise en oeuvre car on peux se passer de chercher a parametrer un modele pour l’adapter au vehicule, et encore plus de chercher quel modele convient. Ensuite le mebius s’adapte en permanence donc si la reponse optimale a un signal d’entree evolue a cause de l’usure materiel du vehicule par ex, ou a cause d’une panne, il continuera a fonctionner « au mieux ». Enfin il peut reduire les problemes dus a des erreurs de mise en oeuvre : l’exemple du troisieme graphique correspondrait par exemple a une erreur au cablage/assemblage ou la commande pour tourner a droite a ete inversee avec celle pour tourner a gauche, et pourtant meme dans ce cas le mebius s’adapte et corrige.
Je vais maintenant faire d’autres exemples plus complexes pour illustrer toutes les possibilites des mebius, et je vais rajouter petit a petit quelques ameliorations que j’ai gardees sous le coude.