Bonjour à tous, ici Jonathan. aujourd'hui je vous montre un exemple de la facon de construire votre propre basique automate cellulaire. que je nommerai ECA dans cet exemple et sur NetLogo. Cette exercice va surtout nous demander de laisser murir un ECA asynchrone Ce qui se déroule assez naturellement, comme vous le verrez car NetLogo, par défaut, aime appeler des agents de maniere aléatoire. Allons y donc comme vous voyez sur cette unité l'ECA est à une dimension stimulé ligne par ligne une ligne à la fois la première étape est une stimulation sur la ligne supérieure la deuxième étape se joue sur la deuxième ligne la troisième itération sur la troisième ligne et ainsi de suite. Il nous incombe donc de régler les coordonnées de maniere a faciliter cette logique. Regardez la, je regle l'origine en haut de facon a ce que la premiere ligne ait une coordonnée de 0 et compte a rebours moins un, moins deux, moins trois et ainsi de suite a partir de la. Comme le point de départ se situe sur le coin superieur gauche la coordonnée px sera elle comptée en ordre croissant de zero a un, deux, trois, quatre..... ce qui sera pratique si vous decidez plus tard d'étendre la largeur des lignes. Voici maintenant la grande question Vous allez demander : quelles sont les principales caractéristiques du modele ECA Ils sont composés de cellules bien sur qui sont représentées sur NetLogo par des carrés dans l'ECA. Les propriétés principales de ces carrés/cellules sont leur état actuel, représenté par zéro ou un et la configuration de leur environnement, utilisée pour determiner l'état de la cellule suivante. Une autre caractéristique importante du modele en sont ses regles qui, comme vous le savez sont une liste qui décrit a la cellule quel environnement produit quel état. Comme nous l'avons vu dans les classes de Wolfram des regles différentes engendrent des comportement radicalement différents. Sur une longue échelle alors qu'une cellule peut avoir son propre état et connaitre des environnement différents, les regles ne sont pas spécifiques a la cellule mais plutot au modele en son entier. je le considere comme une variable globale. Nous n'allons pas non plus oublier les reglages Setup and Go, obligatoires pour que le modele se déroule en douceur. Je le fais donc de suite Pour le Setup, il est recommandé d'écrire d'abord "clear-all" car nous aurons besoin de changer les réglages de ces modeles et répliquer les résultats de facon indépendante. sans interférences des jeux précédents. De meme que je regle ce modele en reinitialisant les tic tac de comptage car cela va etre utile pour garder la trace et savoir a quelle étape en est on. Enfin, on veut que les carrés se placent par eux memes dans une configuration initiale aléatoire. Je vais donc demander aux carrés Même ceux avec un qualificatif spécifique Les carrés avec pycor eagl a zero, pour commencer, car, comme vous le savez, nous voulons les cellules sur la ligne supérieure , au debut. Maintenant il semble que les carres soient placés de maniere aléatoire. Souvenez vous que cahque cellule peut se trouver dans l'un de ces deux états : zéro ou un donc pour atteindre cette objectif nous avons besoin d'une variable choisie de maniere aléatoire avec une chance identique de renvoyer un état zéro ou un aux cellules. Je vais nommer celle la "tirage" parce que j'aime l'analogie avec le tirage de cartes meme si la nommer n'a aucune importance dans ce cas. Alors, laissons la variable temporaire, "tirage", flotter aléatoirement entre zéro et un et désigner n'importe quelle valeur située entre zéro et un que l'ordinateur peut concevoir. Donc pour ce "tirage" aléatoire, Nous pourrons dire que si un nombre choisi entre zéro et un est inférieur a 0,5, c'est a dire 50% de chance, alors cela induit un "état" zéro mais vous voulez aussi une condition "else" donc si la variable "tirage" se révele etre supérieure a 0,5 ce qui arrive les autres 50% de fois alors l'"état" est définie par 1. N'oubliez pas que "état" est une variable stockée dans le carré qui n'est pas visible par l'utilisateur humain. Nous allons le définir garce a une procedure fonctionelle nommée ChangeCouleur qui est assez directe. Donc, pour changer la couleur il sera pratique d'utiliser une autreligne de code "ifelse". si l'état de la cellule est égal a zéro, on a une couleur sinon, si c'est un état différent, c'est a dire un on a une autre couleur pour distinguer les cellules les unes des autres. Maintenant c'est bien sur histoire de gout pour définir les couleurs utilisées. Je vais donc dire que les cellules blanches sont les zéros c'est a dire, regler pcolor sur blanc si l'état du carré est zéro. Inversement, si l'état est un, alors colorons le en vert. Je prefere utiliser ces couleurs legeres surtout parce que cela aide a différencier les les rangées de cellules faites de celles, plus foncées, qui ne sont pas achevées. Ainsi nous achevons la procedure et vrifions que rien ne soit encore cassé. Je vais mettre quelques boutons en place juste pour tester le modele et verifier que l'on soit sur la bonne voie On a la touche Setup pour lancer la procedure de reglages et une touche Go La touche Go ne devrait encore rien declencher mais on en aura finalement besoin ici. Maintenant on regle le modele Voyons, nous avons maintenant une moitié de cellules et une autre moitié de cellules vertes dans la ligne de départ reflétant nos 50% de chances que les cellules deviennent blanches et 50% de cellules vertes en mode aléatoire Les conditions initiales sont reréglées de cette maniere a chaque fois, et, comme vous le voyez, de maniere completement aléatoire Mais, en moyenne vous aurez en gros 50% de blanches et 50% de vertes Go, pour l'instant, ne déclenche rien car je n'y ai encore rien mis. Autre chose, nous voulons que les cellules interagissent et repondent aux autres cellules autour et changent selon les regles spécifiées par la configuration de leur environnement N'est ce pas ? Je n'ai pas encore définiquelles sont ces regles. Donc pour pouvoir le mettre en action, je vais initialiser un modele des maintenant avec un des mes ensembles de regles favorites. C'est une de ces regles avec des propriétés intéréssantes entrainant un comportement chaotique bien qu'ordonné en une structure complexe. Avec cet ensemble de regles joué de maniere temporaire nous allons définir la touche Go Ou les regles de comportement sont mises en jeu. Rappelez vous que ces regles ordonnent les changements affectants les cellules suivant la configuration de leur environement immédiat et demande a chaque cellule de detecter l'état de leur deux voisins proches ainsi que leur propre état. en se référant a la configuration de depart nous verrons chaque cellule se mettre a jour et enregistrer la configuration du voisinage. C'est a dire les trois états que sont la cellule de gauche, celle de droite et son propre état. Comme le voisinage est défini par une combinaison d'états de cellules, vous allez créer une liste qui est un autre vecteur. Dans ce vecteur vous allez inclure comme premiere entrée l'état binaire de la cellule de gauche. Pour cela un peu de vocabulaire NetLogo pour vous. "Patch-at" renvoie au carre cellulaire dans une position relative a la cellule actuelle l'appelant. Le premier nombre est la distance x a droite ou a gauche. Le second nombre est la distance y vers le haut ou le bas. Donc patch-at- 1 0 renvoie a la cellule a gauche de la cellule actuelle. Maintenant ajoutez l'état de la cellule actuelle en appelant cette procédure qui est juste "state" par défaut et enfin l'état de la cellule droite patch-at 1 0 parce que nous regardons maintenant vers la droite. Avec cela nous avons un bloc de commande cohérent, que je termine ainsi. Houlaa, c'est mauvais, Donc, pour récapituler, Chaque cellule regarde a sa droite et a sa gauche et en elle meme les états actuels se remettant a jour a chaque étape. Les cellules ne font que stocker de l'information a chaque étape ne faisant rien avec si ce n'est changer d'état Alors que le comportement appernt du modele n'a pas encore changé comme vous pouvez le voir quand je clique ces touches, on a visiblement encore quelques données nécessaires pour que le modele marche correctement. Par exemple on ne peut pas voir l'apparence de l'état de la cellule sans une fonction ChangeColor Mais encore plus fondamental le modele manque encore d'une application des regles alors qu'il devrait diriger le comportement des cellules.