La Programmation Orientée Agent Les Agents Réactifs Emmanuel ADAM Université de Valenciennes et du Hainaut-Cambrésis UVHC/ISTV-LAMIH E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 1 / 29 Plan 1 Présentation des agents réactifs 2 Les automates cellulaires Présentation des automates cellulaires Le jeu de la Vie Programmation du jeu de la Vie Programmation Java du jeu de la Vie Programmation NetLogo du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Art cellulaire E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 2 / 29 Présentation des agents réactifs Présentation des agents réactifs 1/4 Description générale Les agents réactifs possèdent une représentations très limitée d’eux-mêmes, de leur environnement, des autres agents. Une organisation d’agents réactifs n’est pas définie a priori, elle résulte de leurs activités, de leurs rôles. émergence auto-organisation E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 3 / 29 Présentation des agents réactifs Présentation des agents réactifs 1/4 Description générale Les agents réactifs possèdent une représentations très limitée d’eux-mêmes, de leur environnement, des autres agents. Une organisation d’agents réactifs n’est pas définie a priori, elle résulte de leurs activités, de leurs rôles. émergence auto-organisation E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 3 / 29 Présentation des agents réactifs Présentation des agents réactifs 2/4 Description générale Les agents réactifs possèdent un fonctionnement simple : Stimulii-réponses, actions-réactions Réponse aux signaux de l’environnement Communication simple : Propagation de signaux Utilisation de l’environnement Pas de plan global partagé, de mémoire partagée E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 4 / 29 Présentation des agents réactifs Présentation des agents réactifs 2/4 Description générale Les agents réactifs possèdent un fonctionnement simple : Stimulii-réponses, actions-réactions Réponse aux signaux de l’environnement Communication simple : Propagation de signaux Utilisation de l’environnement Pas de plan global partagé, de mémoire partagée E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 4 / 29 Présentation des agents réactifs Présentation des agents réactifs 2/4 Description générale Les agents réactifs possèdent un fonctionnement simple : Stimulii-réponses, actions-réactions Réponse aux signaux de l’environnement Communication simple : Propagation de signaux Utilisation de l’environnement Pas de plan global partagé, de mémoire partagée E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 4 / 29 Présentation des agents réactifs Présentation des agents réactifs 3/4 Cadre d’applications Recherches inspirées de : Insectes sociaux fourmis, termites, abeilles, guêpes, . . . Eco-systèmes Phytosociologie Utilisation en : Simulation d’organisation Robots collecteur Résolution distribuée de problème Recherche du plus court chemin dans un réseau, . . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 5 / 29 Présentation des agents réactifs Présentation des agents réactifs 3/4 Cadre d’applications Recherches inspirées de : Insectes sociaux fourmis, termites, abeilles, guêpes, . . . Eco-systèmes Phytosociologie Utilisation en : Simulation d’organisation Robots collecteur Résolution distribuée de problème Recherche du plus court chemin dans un réseau, . . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 5 / 29 Présentation des agents réactifs Présentation des agents réactifs 4/4 Applications Simulations : d’écoulement de flux (de liquides, de gaz, . . .), de propriétés magnétiques, de développement urbain, trafic routier, de la propagation d’un feu de forêt, . . . Identification de comportements collectifs, . . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 6 / 29 Présentation des agents réactifs Présentation des agents réactifs 4/4 Applications Simulations : d’écoulement de flux (de liquides, de gaz, . . .), de propriétés magnétiques, de développement urbain, trafic routier, de la propagation d’un feu de forêt, . . . Identification de comportements collectifs, . . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 6 / 29 Les automates cellulaires Présentation des automates cellulaires Automate cellulaire Description générale Premières versions dans les années 1940. Les automates cellulaires sont des grilles dont les cellules possèdent des états. Les automates cellulaires peuvent produire des motifs stables, périodiques, chaotiques, complexes. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 7 / 29 Les automates cellulaires Présentation des automates cellulaires Automate cellulaire Description générale Premières versions dans les années 1940. Les automates cellulaires sont des grilles dont les cellules possèdent des états. Les automates cellulaires peuvent produire des motifs stables, périodiques, chaotiques, complexes. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 7 / 29 Les automates cellulaires Présentation des automates cellulaires Automate cellulaire Description générale Premières versions dans les années 1940. Les automates cellulaires sont des grilles dont les cellules possèdent des états. Les automates cellulaires peuvent produire des motifs stables, périodiques, chaotiques, complexes. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 7 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie Définition du jeu de la Vie (Conway 1969) Le Jeu de la vie consiste à faire évoluer sur un grille un ensemble cellules selon les règles suivantes : Si une cellule active est entourée de moins de 2 cellules : elle manque de contact et se désactive. Si une cellule active est entourée de plus de 3 cellules : elle est en milieu surpeuplé et se désactive. Si une cellule inactive est entourée de 3 cellules, alors elle s’active. Dans les autres cas, la cellule garde son état. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 8 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie Définition du jeu de la Vie (Conway 1969) Le Jeu de la vie consiste à faire évoluer sur un grille un ensemble cellules selon les règles suivantes : Si une cellule active est entourée de moins de 2 cellules : elle manque de contact et se désactive. Si une cellule active est entourée de plus de 3 cellules : elle est en milieu surpeuplé et se désactive. Si une cellule inactive est entourée de 3 cellules, alors elle s’active. Dans les autres cas, la cellule garde son état. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 8 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie Définition du jeu de la Vie (Conway 1969) Le Jeu de la vie consiste à faire évoluer sur un grille un ensemble cellules selon les règles suivantes : Si une cellule active est entourée de moins de 2 cellules : elle manque de contact et se désactive. Si une cellule active est entourée de plus de 3 cellules : elle est en milieu surpeuplé et se désactive. Si une cellule inactive est entourée de 3 cellules, alors elle s’active. Dans les autres cas, la cellule garde son état. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 8 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie Définition du jeu de la Vie (Conway 1969) Le Jeu de la vie consiste à faire évoluer sur un grille un ensemble cellules selon les règles suivantes : Si une cellule active est entourée de moins de 2 cellules : elle manque de contact et se désactive. Si une cellule active est entourée de plus de 3 cellules : elle est en milieu surpeuplé et se désactive. Si une cellule inactive est entourée de 3 cellules, alors elle s’active. Dans les autres cas, la cellule garde son état. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 8 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie Définition du jeu de la Vie (Conway 1969) Le Jeu de la vie consiste à faire évoluer sur un grille un ensemble cellules selon les règles suivantes : Si une cellule active est entourée de moins de 2 cellules : elle manque de contact et se désactive. Si une cellule active est entourée de plus de 3 cellules : elle est en milieu surpeuplé et se désactive. Si une cellule inactive est entourée de 3 cellules, alors elle s’active. Dans les autres cas, la cellule garde son état. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 8 / 29 Les automates cellulaires Le jeu de la Vie Jeu de la Vie : Exemple E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 9 / 29 Les automates cellulaires Programmation du jeu de la Vie Jeu de la Vie : Programmation Programmation du jeu de la Vie Un automate cellulaire se programme ”simplement” sur base d’un langage permettant une gestion rapide des tableaux (C, Java, . . .). Il est également possible de se baser sur une plateforme dédiée à la programmation d’agents réactifs (NetLogo, Madkit, Swarm, . . .). L’utilisation d’une plateforme permet l’utilisation de méthodes et d’outils dédiés à ce type de problème. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 10 / 29 Les automates cellulaires Programmation du jeu de la Vie Jeu de la Vie : Programmation Programmation du jeu de la Vie Un automate cellulaire se programme ”simplement” sur base d’un langage permettant une gestion rapide des tableaux (C, Java, . . .). Il est également possible de se baser sur une plateforme dédiée à la programmation d’agents réactifs (NetLogo, Madkit, Swarm, . . .). L’utilisation d’une plateforme permet l’utilisation de méthodes et d’outils dédiés à ce type de problème. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 10 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation Java du jeu de la Vie 1/3 Eléments nécessaires pour une programmation Java En java, il est nécessaire de développer entièrement au moins 2 classes : une représentation d’une cellule ; une représentation de la grille. PB : réutilisation pour d’autres problèmes possibles mais nécessite beaucoup de modifications. Pour exempe, deux squelettes de classes Java pour Jeu de la Vie. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 11 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation Java du jeu de la Vie 1/3 Eléments nécessaires pour une programmation Java En java, il est nécessaire de développer entièrement au moins 2 classes : une représentation d’une cellule ; une représentation de la grille. PB : réutilisation pour d’autres problèmes possibles mais nécessite beaucoup de modifications. Pour exempe, deux squelettes de classes Java pour Jeu de la Vie. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 11 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation Java du jeu de la Vie 1/3 Eléments nécessaires pour une programmation Java En java, il est nécessaire de développer entièrement au moins 2 classes : une représentation d’une cellule ; une représentation de la grille. PB : réutilisation pour d’autres problèmes possibles mais nécessite beaucoup de modifications. Pour exempe, deux squelettes de classes Java pour Jeu de la Vie. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 11 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation Java du jeu de la Vie c l a s s C e l l u l e implements C l o n e a b l e { /∗∗ n a t u r e de l a c e l l u l e ∗/ boolean v i v a n t e ; /∗∗ c o o r d o n n e e de l a int x , y ; c e l l u l e dans l a 2/3 /∗∗ r é f é r e n c e à l a g r i l l e Cellule [ ] [ ] grille ; d e s c e l l u l e ∗/ C e l l u l e (){ } Cellule ( Cellule [ ] [ ] grille , int x , int y , oolean v i v a n t e ) { } g r i l l eb∗/ /∗∗ s e u i l à p a r t i r d u q u e l l a c e l l u l e meurt de s o u s p o p u l a t i o n ∗/ static f i n a l int sousPopulation = 1; /∗∗ d é t e r m i n e l e p r o c h a i n é t a t de l a en f o n c t i o n d e s c e l l u l e s v o i s i n e s ∗/ void evoluer () { } cellule /∗∗ s u r c h a r g e de c l o n e , r e t o u r n e une c o p i e de l a c e l l u l e ∗/ p u b l i c Object clone () { Object o = n u l l ; /∗∗ s e u i l minimum à p a r t i r d u q u e l try { o = super . clone ( ) ; } l a c e l l u l e v i t ∗/ s t a t i c f i n a l int minPopRegeneratrice = 3; catch ( CloneNotSupportedException e ) { System . e r r . p r i n t l n ( e ) ; } /∗∗ s e u i l maximum à p a r t i r d u q u e l return o ; l a c e l l u l e v i t ∗/ } s t a t i c f i n a l i n t maxPopRegeneratrice = 3; } /∗∗ s e u i l à p a r t i r d u q u e l l a c e l l u l e meurt de s u r p o p u l a t i o n ∗/ static f i n a l int surPopulation = 4; E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 12 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation Java du jeu de la Vie c l a s s T a b l e a u G r a p h i q u e e x t e n d s JFrame { /∗∗ g r i l l e a l ’ i n s t a n t t ∗/ Cellule [ ] [ ] grille ; /∗∗ g r i l l e a l ’ i n s t a n t t−1∗/ Cellule [ ] [ ] grilleAncienne ; /∗∗ t a i l l e de l a g r i l l e ∗/ int t a i l l e ; /∗∗ nb c e l l u l e s v i v a n t e s i n i t i a l e m e n t ∗/ int n b C e l l u l e s I n i t i a l e s = 10; /∗∗ z o n e de d e s s i n ∗/ JPanel j p a n e l ; /∗∗ temps d ’ a t t e n t e e n t r e a f f i c h a g e s ∗/ d o u b l e tempo = 0 ; 3/3 /∗∗ i n i t i a l i s e l e s g r i l l e s à t e t t−1 : a j o u t de c e l l u l e s m o r t e s e t a p p e l de i n i t H a s a r d ∗/ v o i d i n i t G r i l l e (){} /∗∗ p l a c e au h a s a r d d e s c e l l u l e s d a n s l e s g r i l l e s ∗/ v o i d i n i t H a s a r d (){} vivantes /∗∗ d e s s i n de l a g r i l l e e t d e s c e l l u l e s ∗/ v o i d d e s s i n G r i l l e ( G r a p h i c s 2 D g2d ) {} /∗∗ c o p i e l a g r i l l e a l ’ i n s t a n t t d a n s l a g r i l l e a l ’ i n s t a n t t−1 ∗/ v o i d c o p i e G r i l l e s (){} /∗∗ demande a t o u t e s l e s c e l l u l e s /∗∗ c o n s t r u c t e u r i n i t i a l i s a n t l a t a i l l e , de l a g r i l l e t d ’ e v o l u e r , l e nombre de c e l l u l e s i n i t i a l e s , l e tempo ,a p p e l l e c o p i e G r i l l e s ∗/ a i n s i que l e s g r i l l e s à t e t t−1∗/ v o i d a n i m G r i l l e ( ) {} TableauGraphique ( i n t t a i l l e , i n t n b C e l l u l e s I n i t i a l e s , d o u b l e tempo ){} /∗∗ a p p e l du d e s s i n de d e s s i n G r i l l e , animGrille , attente , et /∗∗ i n i t i a l i s e l a f e n ê t r e : t a i l l e , demande de r e a f f i c h a g e ∗/ z o n e de d e s s i n , . . . A p p e l de i n i t G r i l l e ∗/p u b l i c v o i d p a i n t ( G r a p h i c s g ) {} v o i d i n i t (){} } E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 13 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 1/2 Utilisation d’une plateforme multi-agent réactifs : NetLogo Utilisation de types cellules (patches), agents (turtles) et grille. Possibilité d’utiliser des indicateurs dédiés aux états des cellules, agents (compteurs, graphiques) Cas particulier de NetLogo : programmation “à la Logo” et affichage 3D possible. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 14 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 1/2 Utilisation d’une plateforme multi-agent réactifs : NetLogo Utilisation de types cellules (patches), agents (turtles) et grille. Possibilité d’utiliser des indicateurs dédiés aux états des cellules, agents (compteurs, graphiques) Cas particulier de NetLogo : programmation “à la Logo” et affichage 3D possible. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 14 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 1/2 Utilisation d’une plateforme multi-agent réactifs : NetLogo Utilisation de types cellules (patches), agents (turtles) et grille. Possibilité d’utiliser des indicateurs dédiés aux états des cellules, agents (compteurs, graphiques) Cas particulier de NetLogo : programmation “à la Logo” et affichage 3D possible. . . E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 14 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 2/3 NetLogo pour le Jeu de la Vie Pas d’agent pour les automates cellulaires, utilisation de cellules (patches) uniquement. Une cellule possède un état (vivante) et le nombre de ses voisines vivantes Si une cellule est morte, elle prend la couleur du fond Quatre fonctions suffisent alors pour implémenter le jeu de la Vie. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 15 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 2/3 NetLogo pour le Jeu de la Vie Pas d’agent pour les automates cellulaires, utilisation de cellules (patches) uniquement. Une cellule possède un état (vivante) et le nombre de ses voisines vivantes Si une cellule est morte, elle prend la couleur du fond Quatre fonctions suffisent alors pour implémenter le jeu de la Vie. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 15 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 2/3 NetLogo pour le Jeu de la Vie Pas d’agent pour les automates cellulaires, utilisation de cellules (patches) uniquement. Une cellule possède un état (vivante) et le nombre de ses voisines vivantes Si une cellule est morte, elle prend la couleur du fond Quatre fonctions suffisent alors pour implémenter le jeu de la Vie. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 15 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 2/3 NetLogo pour le Jeu de la Vie Pas d’agent pour les automates cellulaires, utilisation de cellules (patches) uniquement. Une cellule possède un état (vivante) et le nombre de ses voisines vivantes Si une cellule est morte, elle prend la couleur du fond Quatre fonctions suffisent alors pour implémenter le jeu de la Vie. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 15 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 3/3 I ; ; a t t r i b u t s d ’ une c e l l u l e ; ; − i n d i c a t e u r de v i e ; ; − nb de v o i s i n e s v i v a n t s p a t c h e s −own [ vivante ? voisinesVivantes ] ; ; i n i t i a l i s a t i o n de l a g r i l l e ; ; i n i t i a l e m e n t une c e l l u l e a 35% de c h a n c e d ’ e t r e a c t i v e to i n i t H a s a r d ask p a t c h e s [ i f e l s e random−f l o a t 1 0 0 . 0 < 3 5 . 0 [ naissanceCell ] [ mortCell ] ] end E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 16 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 3/3 II ; ; n a i s s a n c e −> c o u l e u r de c e l l u l e to n a i s s a n c e C e l l set vivante ? true set pcolor c o u l e u r C e l l end ; ; mort −> c o u l e u r du f o n d to m o r t C e l l set vivante ? f a l s e set pcolor couleurFond end E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 17 / 29 Les automates cellulaires Programmation du jeu de la Vie Programmation NetLogo du jeu de la Vie 3/3 III ; ; f o n c t i o n n e m e n t de l ’ automate to go ; ; demande aux c e l l u l e s de c o m p t e r l e nb de v o i s i n s v i v a n t s ask p a t c h e s [ set v o i s i n e s V i v a n t e s count n e i g h b o r s with [ v i v a n t e ? ] ] ; ; demande aux c e l l u l e s de m o d i f i e r l e u r s e t a t s ask p a t c h e s [ ifelse voisinesVivantes = 3 [ naissanceCell ] [ i f v o i s i n e s V i v a n t e s != 2 [ mortCell ] ] ] end E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 18 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 1/7 Création de l’interface de dialogue NetLogo Au lancement, NetLogo présente une grille vide de 342 cases centrée. La cellule (-17,-17) se trouve en bas à gauche et la cellule (17,17) en haut à droite. Possibilité de créer des boutons, des ‘glisseurs’, des listes de choix, des zones d’affichage et des graphiques reportant des états de cellules ou d’agents, des zones de texte et des labels. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 19 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 1/7 Création de l’interface de dialogue NetLogo Au lancement, NetLogo présente une grille vide de 342 cases centrée. Possibilité de créer des boutons, des ‘glisseurs’, des listes de choix, des zones d’affichage et des graphiques reportant des états de cellules ou d’agents, des zones de texte et des labels. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 19 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 2/7 Ajout des boutons Pour créer un bouton : cliquer sur “Button” et cliquer sur l’endroit désiré. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 20 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 2/7 Ajout des boutons Dans “Commands” : indiquer la fonction à lancer ou le code à exécuter. Ici, la fonction est initVide Le texte par défaut du bouton est le nom de la fonction Le bouton est relatif à la grille (“Observer”) Dès la fin de l’action, la vue est réinitialisée (“Force view update after each run”) E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 20 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 2/7 Ajout des boutons Si la commande initVide n’existe pas dans l’onglet “Procedures”, un problème est détecté. En ré-éditant le bouton (clic droit puis “Edit”), la raison de l’erreur est présentée. La fonction sera donnée dans les transparents suivants. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 20 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 3/7 Autres boutons “classiques” du Jeu de la Vie Créer un bouton pour la fonction “initHasard”. Créer deux boutons poussoirs (Forever ) pour “ajoutCells”, “retraitCells”. Créer deux boutons liés à la méthode “go” : ‘”avancer” d’un pas’ : bouton classique ‘lancer ’ : bouton poussoir E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 21 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 3/7 Autres boutons “classiques” du Jeu de la Vie Créer un bouton pour la fonction “initHasard”. Créer deux boutons poussoirs (Forever ) pour “ajoutCells”, “retraitCells”. Créer deux boutons liés à la méthode “go” : ‘”avancer” d’un pas’ : bouton classique ‘lancer ’ : bouton poussoir E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 21 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 3/7 Autres boutons “classiques” du Jeu de la Vie Créer un bouton pour la fonction “initHasard”. Créer deux boutons poussoirs (Forever ) pour “ajoutCells”, “retraitCells”. Créer deux boutons liés à la méthode “go” : ‘”avancer” d’un pas’ : bouton classique ‘lancer ’ : bouton poussoir E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 21 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 3/7 Autres boutons “classiques” du Jeu de la Vie Créer un bouton pour la fonction “initHasard”. Créer deux boutons poussoirs (Forever ) pour “ajoutCells”, “retraitCells”. Créer deux boutons liés à la méthode “go” : ‘”avancer” d’un pas’ : bouton classique ‘lancer ’ : bouton poussoir E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 21 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 4/7 1/2 Créer un glisseur en positionnant un “Slider ”. Une fenêtre de dialogue apparaı̂t alors. Associer le glisseur à la variable globale “couleurCell”. Permettre de donner à la couleur une valeur allant de 0 à 140 et donner une valeur initiale de 65. Associer un autre glisseur à la variable globale “couleurFond” de valeur initiale 0. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 22 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 4/7 1/2 Créer un glisseur en positionnant un “Slider ”. Une fenêtre de dialogue apparaı̂t alors. Associer le glisseur à la variable globale “couleurCell”. Permettre de donner à la couleur une valeur allant de 0 à 140 et donner une valeur initiale de 65. Associer un autre glisseur à la variable globale “couleurFond” de valeur initiale 0. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 22 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 4/7 1/2 Créer un glisseur en positionnant un “Slider ”. Une fenêtre de dialogue apparaı̂t alors. Associer le glisseur à la variable globale “couleurCell”. Permettre de donner à la couleur une valeur allant de 0 à 140 et donner une valeur initiale de 65. Associer un autre glisseur à la variable globale “couleurFond” de valeur initiale 0. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 22 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 4/7 1/2 Créer un glisseur en positionnant un “Slider ”. Une fenêtre de dialogue apparaı̂t alors. Associer le glisseur à la variable globale “couleurCell”. Permettre de donner à la couleur une valeur allant de 0 à 140 et donner une valeur initiale de 65. Associer un autre glisseur à la variable globale “couleurFond” de valeur initiale 0. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 22 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 5/7 2/2 Créer un bouton nommé “recolorer ” associé aux cellules (“Patches”) Associer le bouton au code suivant : ifelse vivante ? [ set pcolor c o u l e u r C e l l ] [ set pcolor couleurFond ] E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 23 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie Gestion des couleurs par glisseurs 5/7 2/2 Créer un bouton nommé “recolorer ” associé aux cellules (“Patches”) Associer le bouton au code suivant : ifelse vivante ? [ set pcolor c o u l e u r C e l l ] [ set pcolor couleurFond ] E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 23 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 6/7 Ajout d’un moniteur Un moniteur permet de suivre les états des cellules et des agents. Il existe des moniteurs numériques et des moniteurs graphiques. Créer un moniteur en sélectionnant l’outil “monitor ” de nom ‘densité courante’ Dans la zone “reporter ”, placer le code comptant le pourcentage de cellules vivantes : ( c o u n t p a t c h e s w i t h [ v i v a n t e ? ] / c o u n t p a t c h e s ) ∗ 100 Le calcul est effectué à chaque pas. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 24 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 6/7 Ajout d’un moniteur Un moniteur permet de suivre les états des cellules et des agents. Il existe des moniteurs numériques et des moniteurs graphiques. Créer un moniteur en sélectionnant l’outil “monitor ” de nom ‘densité courante’ Dans la zone “reporter ”, placer le code comptant le pourcentage de cellules vivantes : ( c o u n t p a t c h e s w i t h [ v i v a n t e ? ] / c o u n t p a t c h e s ) ∗ 100 Le calcul est effectué à chaque pas. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 24 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 6/7 Ajout d’un moniteur Un moniteur permet de suivre les états des cellules et des agents. Il existe des moniteurs numériques et des moniteurs graphiques. Créer un moniteur en sélectionnant l’outil “monitor ” de nom ‘densité courante’ Dans la zone “reporter ”, placer le code comptant le pourcentage de cellules vivantes : ( c o u n t p a t c h e s w i t h [ v i v a n t e ? ] / c o u n t p a t c h e s ) ∗ 100 Le calcul est effectué à chaque pas. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 24 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 6/7 Ajout d’un moniteur Un moniteur permet de suivre les états des cellules et des agents. Il existe des moniteurs numériques et des moniteurs graphiques. Créer un moniteur en sélectionnant l’outil “monitor ” de nom ‘densité courante’ Dans la zone “reporter ”, placer le code comptant le pourcentage de cellules vivantes : ( c o u n t p a t c h e s w i t h [ v i v a n t e ? ] / c o u n t p a t c h e s ) ∗ 100 Le calcul est effectué à chaque pas. E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 24 / 29 Les automates cellulaires Programmation du jeu de la Vie Tutorial NetLogo : Jeu de la Vie 7/7 3 fonctions sont à ajouter à celles précédemment décrites : ; ; i n i t i a l i s a t i o n de l a g r i l l e a v e c d e s c e l l u l e s m o r t e s to i n i t V i d e ask p a t c h e s [ m o r t C e l l ] end ; ; a j o u t de c e l l u l e s p a r c l i c s o u r i s to a j o u t C e l l s w h i l e [ mouse−down ? ] [ ask p a t c h −a t mouse−x c o r mouse−y c o r [ n a i s s a n c e C e l l ] ] end ; ; r e t r a i t de c e l l u l e s p a r c l i c s o u r i s to r e t r a i t C e l l s w h i l e [ mouse−down ? ] [ ask p a t c h −a t mouse−x c o r mouse−y c o r [ m o r t C e l l ] ] end E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 25 / 29 Les automates cellulaires Art cellulaire Art Cellulaire Automate cellulaire à 1 dimension L’art cellulaire se base sur un automate cellulaire à une dimension : une ligne Le temps est représenté par la seconde dimension : la ligne i + 1 correspond à la ligne i au temps t + 1 Pour une cellule, selon son état et l’état de ses deux voisines, 16 règles de passage possibles. Dans : OOO, OOI, OIO, OII, IOO, IOI, IIO, III La cellule centrale devient active (I) ou inactive (O) E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 26 / 29 Les automates cellulaires Art cellulaire Art Cellulaire Automate cellulaire à 1 dimension L’art cellulaire se base sur un automate cellulaire à une dimension : une ligne Le temps est représenté par la seconde dimension : la ligne i + 1 correspond à la ligne i au temps t + 1 Pour une cellule, selon son état et l’état de ses deux voisines, 16 règles de passage possibles. Dans : OOO, OOI, OIO, OII, IOO, IOI, IIO, III La cellule centrale devient active (I) ou inactive (O) E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 26 / 29 Les automates cellulaires Art cellulaire Art Cellulaire Automate cellulaire à 1 dimension L’art cellulaire se base sur un automate cellulaire à une dimension : une ligne Le temps est représenté par la seconde dimension : la ligne i + 1 correspond à la ligne i au temps t + 1 Pour une cellule, selon son état et l’état de ses deux voisines, 16 règles de passage possibles. Dans : OOO, OOI, OIO, OII, IOO, IOI, IIO, III La cellule centrale devient active (I) ou inactive (O) E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 26 / 29 Les automates cellulaires Art cellulaire Art Cellulaire Automate cellulaire à 1 dimension L’art cellulaire se base sur un automate cellulaire à une dimension : une ligne Le temps est représenté par la seconde dimension : la ligne i + 1 correspond à la ligne i au temps t + 1 Pour une cellule, selon son état et l’état de ses deux voisines, 16 règles de passage possibles. Dans : OOO, OOI, OIO, OII, IOO, IOI, IIO, III La cellule centrale devient active (I) ou inactive (O) E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 26 / 29 Les automates cellulaires Art cellulaire Art Cellulaire : Exemple monochrome E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 27 / 29 Les automates cellulaires Art cellulaire Art Cellulaire coloré Automate cellulaire à 1 dimension coloré Il est possible d’introduire la couleur : La prochaine couleur d’une cellule dépend sa couleur actuelle et de celles de ses voisines. Introduction d’une variable de couleur C dans chaque cellule et calcul des composantes Rouge, V erte et Bleue. Exemple, avec des constantes et équations arbitraires : Ci ← (0, 2 × Ci−1 + 0, 3 × Ci + 0, 6 × Ci+1 ) mod 100 Ri ← Ci × sin(t × π/480) Vi ← (100 − Ci ) × sin(t × π/480) Bi ← 90 − 0, 8 × Ci E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 28 / 29 Les automates cellulaires Art cellulaire Art Cellulaire coloré Automate cellulaire à 1 dimension coloré Il est possible d’introduire la couleur : La prochaine couleur d’une cellule dépend sa couleur actuelle et de celles de ses voisines. Introduction d’une variable de couleur C dans chaque cellule et calcul des composantes Rouge, V erte et Bleue. Exemple, avec des constantes et équations arbitraires : Ci ← (0, 2 × Ci−1 + 0, 3 × Ci + 0, 6 × Ci+1 ) mod 100 Ri ← Ci × sin(t × π/480) Vi ← (100 − Ci ) × sin(t × π/480) Bi ← 90 − 0, 8 × Ci E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 28 / 29 Les automates cellulaires Art cellulaire Art Cellulaire coloré Automate cellulaire à 1 dimension coloré Il est possible d’introduire la couleur : La prochaine couleur d’une cellule dépend sa couleur actuelle et de celles de ses voisines. Introduction d’une variable de couleur C dans chaque cellule et calcul des composantes Rouge, V erte et Bleue. Exemple, avec des constantes et équations arbitraires : Ci ← (0, 2 × Ci−1 + 0, 3 × Ci + 0, 6 × Ci+1 ) mod 100 Ri ← Ci × sin(t × π/480) Vi ← (100 − Ci ) × sin(t × π/480) Bi ← 90 − 0, 8 × Ci E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 28 / 29 Les automates cellulaires Art cellulaire Art Cellulaire : Exemple coloré E. ADAM University of Valenciennes La Programmation Orientée Agent Les Agents RéactifsUVHC/ISTV-LAMIH 29 / 29