Turtles and Patches
Create Turtles
Tout passe par la commande crt, celle-ci prend un nombre en paramètre et une série de commande entre [...] qui permettent d'initialiser ses caractéristiques.
Les tortues ont toutes des attributs par défaut :
Il est possible d'ajouter d'autres attributs possible à nos tortues avec le bloc spécial turtles-own :
Comme toutes les autres variables de tortues, il est possible de changer la valeur en utilisant le mot-clef set, à l'initialisation ou dans un bloc ask.
Exercice
Essayer de trouver et d'écrire avec l'aide du dictionnaire Netlogo les commandes qui permettent de fixer des coordonnées xcor et ycor aléatoire (ou en anglais random).
Ces attributs peuvent contenir ce que l'on veut, du texte, des chiffres, une liste, un ou des agents, un ou des patchs. Par exemple, on attribue un patch au hasard à chaque tortue.
turtles-own [
my-favorite-patch
]
ask turtles [
set my-favorite-patch one-of patches
show my-favorite-patch
]
Exercice
Essayer de trouver et d'écrire avec l'aide du dictionnaire Netlogo comment attribuer plusieurs patchs à une tortue ? Il faut regarder du côté des commandes opérant sur des sets
Create Patches
On ne créé par les patchs, ils preexistent simplement à des coordonnées qui sont dépendantes de la taille de l'espace.
Asking Turtles and/or Patches
ask est un des mot-clefs les plus importants et les plus courant dans Netlogo.
Vous allez demander à une ou à un ensemble de tortues d'executer l'ensemble des commandes situés entre les crochets [ ... ]. L'ordre dans lequel les tortues applique cet ensemble de commande est aléatoire. Autrement dit,a chaque fois qu'un bloc ask est appelé, l'ordre dans lequel les tortues applique les commandes change.
Lorsque vous vous écrivez du code entre les crochets d'une commande ask, vous passez d'un contexte d'observateur à un contexte propre aux tortues.
Toutes les tortues vont avoir une valeur energy entre 0 et 100.
Querying using with
Il est possible de faire des requêtes beaucoup plus ciblées, en utilisant le mot clef with
Il y a deux blocs ici :
- le premier bloc with permet de selectionner - ou filtrer - en fonction d'un prédicat qui sera appliqué à tout le groupe de tortues. Si ce prédicat renvoie vrai, alors ...
- le deuxième bloc est executé pour cette tortue donnée
Il est possible d'appeler directement une tortue, soit par son numéro, soit plus directement en sortie de requête ou via une variable qui contient une ou plusieurs tortues :
C'est exactement le même fonctionnement pour les patches, seulement au lieu de les appeler par leur numéro, on peut les appeler par leur coordonnées xy :
Collect them all
Les Turtle ou les Patch font partie de collection que l'on appele respectivement des Agentset ou des Patchset.
Les commandes (turtle-set _<value1> <value 2> <..._>) et patch-set <value1> <value2> <...> peuvent être utilisé pour créer manuellement des AgentSet
Toutefois, c'est assez rare que l'on utilise ces fonctions directement, et la plupart du temps on travaille sur des AgentSet qui nous sont renvoyés lors des principales requêtes, dès lors qu'elles renvoient plus d'une Turtle/Patch. On peut consulter ces fonctions dans le dictionnaires, dans la catégorie AgentSet
Turtles never dies
Les tortues peuvent mourir de plusieurs façon :
- avec la commande die, qui demande à la tortue appelante de disparaitre
- avec la commande clear-all, qui remet à zéro toute la simulation
Turtles with Patches
Les tortues peuvent demander à d'autres tortues ou patchs de réaliser des actions, autrement dit, il est possible d'écrire des blocs ask [ ... ] à l'intérieur d'autres blocs ask [ ... ], c'est ce que nous verrons plus en détail dans la partie contexte du cours.
Un exemple assez courant est de communiquer avec le patch sous la tortue interrogée. Par exemple, ici nous demandons à chacune des tortues de demander au patch présent en dessous d'elle (patch-here) de se colorer en vert. L'inverse existe aussi avec turtles-here), qui renvoie pour chaque patch les tortues présente sur ce dernier.
Exercice
Essayer de reprendre l'exercice précédent avec l'attribution d'un ou plusieurs patch à chaque tortue. Demander à ce que la tortue colore les patches en question en fonction de sa couleur.