Projet de génie logiciel Interprêteur de règles du jeu de la vie, Simulation d'un automate cellulaire par Guillain Merle Jeudi 15 mai 2008
Plan de la présentation Rappel sur les automates Objectif du projet Architecture du système Interprêtation de règles Exemple d'utilisation Conclusion
Rappel sur les automates Un automate a un état et une fonction de transition faisant passer l'automate à un nouvel état Etat Fonction de transition Un automate cellulaire est un cas particulier où l'état est une grille de sous-états. Nous parlerons d'algorithme d'évolution plutôt que de fonction de transition Algorithme d'évolution
Objectif du projet 1 – Simuler un automate cellulaire inspiré du Jeu de la Vie de Conway 2 – Flexibilité et généricité Plusieurs populations de cellules Algorithme d'évolution personnalisable 3 – Souplesse d'utilisation Interface graphique intuitive en Java Grille aléatoire ou personnalisée
Architecture du système Architecture modulaire et structurée Jeu de la Vie Automate cellulaire Interface graphique Algorithme d'évolution Menus Corps de fenêtre Grille de cellules Algorithme de dessin utilisateur
Diagramme de classes Regroupement logique par modules Elements indépendants assemblés dans la fenêtre gui evolution MainFrame EvolveAlgorithm Menu Canvas ConwayEvolveA RuleListEvolveA draw util state Drawable Grid<Cell> Cell GridDrawer Population
Interprêtation de règles 1 – Lecture d'un fichier de règles Fichier de règles populations={a,b,c,d} 1 [a = 3] → naissance(a) 1 [a != 2 & a != 3] → mort(a) 1 [b > 1 & c = 1] → naissance(d) 1 [a = 2] → survie(a) Liste de règles Analyseur de fichiers de règles a[1] = 3 → naissance(a) a[1] != 2,3 → mort(a) ... ... 2 – Utilisation dans l'algorithme d'évolution a Liste de règles Algorithme d'évolution a[1] = 3 → naissance(a) a a[1] != 2,3 → mort(a) a a ... ... survie(a)
Exemple d'utilisation + Une particule radioactive État initial Fichier de règles populations={a,r} 1 [a > 0] → naissance(r) 1 [r >= 2] → naissance(r) 0 [r < 1] → mort(r) +
Conclusion Synthèse Synthèse Critiques Simulateur d'automates cellulaires générique Grande flexibilité et expressivité Simplicité d'utilisation Critiques Plus flexible que les logiciels concurrents Compétitivité certaine dans le domaine Portabilité élevée grace à Java
Conclusion Déroulement du projet Evolutivité Spécifications en fev-mars. Approche globale Conception en mars-avril. Approche down-top Développement en avril-mai. Assemblage Evolutivité Conçu pour être évolutif Limité que par le langage et l'interface Possibilité d'extension du langage