Tondeuse Robotique

Enoncé

Projet de optimisation stochastique : optimisation évolutionnaire de FSM 1)

  • Tondre un terrain par un automate à états finis.
  • Terrain de 1024×768
  • Tondeuse de 10×10
  • Avance case par case
  • 20 arbres dans le terrain, répartis aléatoirement, de 10×10.
  • Position initiale aléatoire.
  • Détection de choc / détection de périmètre.
  • Détection de l'herbe coupée.

Trouver le meilleur algorithme par évolution artificielle. Fonction d'évaluation : % tondu (ou nb de cases restantes) après 100 000 pas. Evaluation de la qualité sur une moyenne de 30 runs.

Notre Réflexion

Représentation d'un automate

Le choix de la représentation de l'automate est primordiale pour plusieurs raisons : ça conditionne les possibilités de croisement et de mutation, et ça influence le fonctionnement de la fonction d'évaluation (fitness). Notre choix est porté sur une représentation très classique : chaque état est une table de réponses à chaque signal possible en entrée, la réponse étant composée d'un “voeu” de déplacement à l'indication de sa transition d'état (y compris “pas de changement”).

Etant donné que l'énoncé ne mentionne que trois sortes de détection (ou absence de détection), la liste des signaux possibles en entrée peut n'être que de huit (2*2*2). Cependant, pour éviter à l'automate de mémoriser sa dernière voeu de déplacement, nous le lui renvoyons, ce qui multiplie le nombre de cas possibles par neuf ({-1,0,1}x{-1,0,1}). Il est envisageable d'avoir plusieurs réponses possibles pour un même signal; nous n'avons pas pris cette option.

Initialisation

L'initialisation (“conception”) de chaque individu attribue à chacune des 72 signaux d'entrée possibles des chacun de ses états, des réponses choisies au hasard pour les voeux de déplacement horizontal, vertical, et changement d'état. Le changement d'état se spécifie non par “matricule” de l'état successeur, mais par décalage par rapport à l'état courant.

Chaque individu sera doté de sept états 2), dont certains pourront “s'atrophier” si transition vers eux se révèlent désavantageuse.

Fonction de Fitness

La fonction de fitness “exécute” chaque automate de la façon suivante, pour un jardin et emplacement de départ donnés3) :

  • initialisation :
    • calcul des signaux (périmètre, obstacle, herbe, vx, vy) pour le point de départ.
    • vx et vy sont aléatoires mais identique pour chaque individu (comme le point de départ),
    • l'état initial de l'automate aussi.
  • boucle (pour les 100k pas)
    • recherche dans les tables de l'automate de la réponse aux signaux
    • calcul de la réponse aux voeux
      • si faisable, exécution du déplacement (mémorisation du nouvel emplacement) et décompte de l'herbe coupé le cas échéant
      • calcul des nouveaux signaux :
        • périmètre ou pas,
        • obstacle (arbre) ou pas,
        • herbe coupé ou pas (le seuil pour que la réponse à “herbe coupé?” soit “vrai” sera plus de la moitié des case nouvellement occupées n'étaient pas tondues avant).
    • fin de boucle

Grande question (pour ne pas entrer un biais) : si elle se déplace en diagonale, elle va occuper 19 (potentiellement) nouvelles cases; est-ce qu'elle coupe les 19? Si oui, est-ce que ça compte un pas ou deux? Logiquement, on peut estimer que ça compte deux pas, ou plus généralement, qu'on compte un pas pour chaque 1 ou -1 dans un voeu. Mais cette règle du jeu n'est pas clairement définie.

Après discussion,

  • Admettons que les mouvements en diagonal ne se fassent pas par un mouvement directement en diagonal, mais par une succession (cyclique) de mouvements horizontaux et verticaux. Ainsi les mouvements en diagonal tondent 20 cases en deux pas.

Evolution

Il y a beaucoup de choix stratégiques dans ce domaine :

  • Nombre d'individus par génération (pour 30 générations)
  • Sélection pour croisement, nombre d'enfants
  • Type de croisement
  • Taux de mutation

Nous n'avons pas trouvé les réponses facilement, et expérimentons encore pour améliorer notre choix.

Croisements

  • Sélection des parents par tournoi
  • Tous les individus gardent sept états 4), dont certains peuvent “s'atrophier” si la sélection favorise des individus avec moins.

Mutations

Les possibilités :

  • pas de mutations
  • mutations dans les voeux de déplacement
  • mutations dans les transitions d'état
  • mutations dans les voeux de déplacement et dans les transitions d'état

Pour la première série de tests, pas de mutation. Si on constate une convergence trop rapide, on introduira des mutations.

Protocole

  • Démarrage: On prend n automates construits aléatoirement. Cf. représentation : initialisation 5)
  • Nombre de jardins pour évaluer une génération: Trois voir Cinq en fonction du temps d'exécution (un n'étant pas suffisant), ils sont construits aléatoirement au début du protocole et utilisés par tous les automates avec le même emplacement (et intention de déplacement) de démarrage afin d'avoir une évaluation sur les même conditions.
  • Les n individus sont évalués par un tournois pour le choix des reproducteurs;
  • on garde x% des individus de base avec les y% premiers et z% pris aléatoirement dans les restant (x,y, et z restent à définir suivant les tests avec y+z = x) → ce sont les reproducteurs
    • et on crée w% de fils avec des croisements (pour commencer)
    • on évalue ensuite toute la population et on garde ceux que l'on souhaite, les autres sont 'tués'

Réalisation

Notre choix pour le développement s'est porte sur EASEA, ce qui nous permet de concentrer nos efforts de développement sur les fonctions de fitness et de croisement (et représentation et initialisation, évidement).

Affichage

  • Les jardins sont représentés par des images, les bordures sont en noir, les arbres en bruns, l'herbe en vert (foncé ou clair en fonction de la tonte).

Résultats et Conclusions

En cours d'évaluation et mise au point.

1) finite states machine, automate à états finis
2) ce qui sera le nombre maximum effectif car nous ne prévoyons pas des changements de nombre d'états par croisement ni mutation
3) aléatoires, mais les mêmes pour tous les individus de chaque génération
4) on pourra jouer avec des nombres d'état variables entre individus
5) on peut se dire “selon leurs réactions : (entre 7 et 2 réactions différentes) ” si l'on entend par “réactions” des états comportementaux, ou “états” tout simplement. Mais ils ne sont pas produit par ingénierie, ils sont de construction aléatoire
 
java/tondeuse.txt · Dernière modification: 2010/05/13 22:29 par suitable
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki