Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Vie artificielle
# Automate de tesselation
Pour simuler l'automate de tesselation, j'ai utilisé NetLogo.
Pour différencier les composants j'ai utilisé les breeds de NetLogo. J'ai donc quatre composants (A, B, C, D)
et un composant "Detruit". Ce composant est invisible et permet de garder en mémoire la position d'un composant C qui sera désintégré.
Il y aura en quelque sorte une double membrane. Une membrane de composant C et une autre de composant Détruit qui avec
certaines conditions définiront le trou laissé par un composant C dans la membrane.
J'ai attribué à chaque composant une couleur :
- le composant A sera en rouge
- le composant B sera en bleu
- le composant C sera en blanc
- le composant D sera en vert
J'initialise les composants A en-dehors de la membrane. Les deux membranes sont créées grâce à la fonction layout-circle de NetLogo.
Puis j'ai créé 6 fonctions :
- supprimerTurtles : permet de supprimer les turtles qui sort de la zone d'affichage.
- bougerComposant : permet de déplacement les composants suivant leurs propriétés.
- AdevientB : permet de transformer deux composants A en composant B.
- BdevientC : permet de transformer un composant B en un composant C.
- CdevientD : permet de simuler la désintégration d'un composant C.
- creerComposantA : me permet de générer des composants A pendant la simulation.
### supprimerTurtles
Cette fonction récupère la valeur absolue des coordonnées max en x et y, test si les coordonnées de la turtles traité sont égale.
Si c'est le cas, la turtles est "tuée" grâce à la fonction "die".
### bougerComposant
Dans cette fonction, je test la turtle récupéré grâce à la fonction ask et test 2 cas :
Si la turtle est un composant A ou D alors je peux l'avancé de 1.
Si la turtle est un composant B alors récupère le composant C le plus proche dans un rayon de 1 et
je récupère le composant Detruit le plus proche dans un rayon de 0.5.
Si la turtle n'a pas de composant C et de composant Detruit autour d'elle alors je peux l'avancé de 1.
### AdevientB
Ici, je récupère que les composants A avec la fonction ask.
Puis je prends sur chaque composant A un voisin dans un rayon de 1 et test que ces deux composants
soient bien dans la membrane.
Si c'est le cas, alors je supprime un des deux composants et transformer l'autre en composant B grâce à la fonction "set breed".
### BdevientC
Cette fonction récupère les composants B. Puis pour chaque turtle je récupère le composant C le plus proche dans un rayon de 1
et récupère le composant Detruit le plus proche dans un rayon de 0.5.
Si le composant voisin Detruit existe alors la turtle traité deviens un composant C.
Sinon, Si le voisin est un composant C alors on fait rebondir la turtle traitée.
### creerComposantA
La fonction permet d'injecter dans pendant la simulation des composants A.
Dans la recherche voisin sur un composant B je test le composant C et le composant D sur deux rayon différents.
La différence de rayon permet de simuler l'accroche du composant B sur la membrane.