Tutorial 2 : Les Commandes

NetLogo 4.0.4   Manuel de l'utilisateur  

Dans le Tutoriel 1, vous avez eu l'occasion de voir quelques modèles NetLogo et avez achevé avec succès votre parcours à travers l'ouverture et la simulation des modèles en pressant des boutons, modifiant des valeurs à l'aide de curseurs et de commutateurs et en récoltant des données fournies par ces modèles à l'aide de graphes et de moniteurs. Dans cette section, l'accent sera mis au départ sur le passage de l'observation d'un modèle à la manipulation de ce modèle. Vous commencez à étudier le fonctionnement interne des modèles et serez alors capable de changer leurs apparences.

Exemple de modèle : Traffic Basic

Dans ce modèle, vous voyez une voiture rouge dans un flot de voitures bleues. Toutes les voitures vont dans la même direction. À intervalles assez réguliers, les voitures « s'entassent » et s'arrêtent. C'est une modélisation montrant comment des bouchons peuvent se former sans cause apparente telle qu'un accident, la rupture d'un pont ou le tête-à-queue d'un camion. Aucune « cause centralisée » n'est nécessaire pour qu'un bouchon se forme.

Modifiez certains réglages et observez quelques simulations pour bien comprendre le fonctionnement du modèle.

Au cours des simulations de Traffic Basic, avez-vous pensé à des compléments que vous aimeriez apporter à ce modèle ?

En observant le modèle Traffic Basic, vous avez pu constater que l'environnement est très simple : un arrière-plan noir avec une route claire sur laquelle circulent des voitures bleues et une voiture rouge. Les modifications pouvant être apportées au modèle comprennent : la modification de la couleur et de la forme des voitures, l'adjonction d'une maison ou d'un éclairage public, l'installation d'un feu rouge ou même la création d'une autre voie de circulation. Certaines de ces suggestions de modifications sont plutôt cosmétiques et ne feront qu'améliorer l'apparence du modèle alors que d'autres concernent avant tout le comportement du modèle. Au cours de la plus grande partie de ce tutoriel, nous nous concentrerons surtout sur les modifications « cosmétiques » ou les plus simples. (Le Tutoriel 3 entre bien plus en détail dans la modification des comportements, ce qui implique des modifications du code à faire dans le panneau "Procedures".)

Nous utiliserons le centre de commande (Command Center) pour apporter ces simples modifications.

Le Centre de commande (Command Center)

Le Centre de commande (Command Center), qui se trouve dans le panneau "Interface", permet d'entrer des commandes ou de donner des directives (des ordres) au modèle. Les commandes sont des instructions que vous pouvez donner aux agents de NetLogo : les tortues, les patches, les liens et l'observateur. (Référez-vous au Guide de l'interface pour une explication détaillée des différentes parties du Centre de commande.)

Dans le modèle Traffic Basic :

screen shot

Que s'est-il passé dans la Vue ?

Vous avez certainement remarqué que l'arrière-plan noir de la vue est devenu jaune et que la rue a disparu.

Pourquoi les voitures ne sont-elles pas, elles aussi, devenues jaunes ?

Revenons à la commande qui vous aviez donnée. Ce n'est qu'aux patches que nous avons demandé de changer de couleur. Dans ce modèle, les voitures sont représentées par un autre type d'agents, appelés « tortues » (turtles). C'est pourquoi les voitures n'ont pas reçu ces instructions et n'ont donc pas changé de couleur.

Que s'est-il passé dans le centre de commande ?

Vous devriez avoir remarqué que la commande que vous venez de taper est maintenant affichée dans la grande zone blanche au au-dessus de la Ligne de commandes, comme le montre l'illustration ci-dessous :

screen shot

screen shot

Le résultat correspond-il à ce que vous attendiez ?

La Vue devrait avoir un arrière-plan jaune avec une file de voitures brunes au milieu.

screen shot

Le monde de NetLogo est un monde à deux dimensions qui comprend des tortues, des patches et un observateur. Les patches forment le sol sur lequel les tortues peuvent se déplacer et l'observateur est un être qui observe d'en haut tout ce qui se passe dans le monde. (Pour une description détaillée de ce monde et de ses spécificités, référez-vous au Guide de programmation de NetLogo.)

Dans le Centre de commande, nous avons la possibilité de donner une commande à l'observateur (observer), une commande aux tortues (turtles) ou une commande aux patches. Nous pouvons choisir l'une de ces options en utilisant le menu situé dans le coin inférieur gauche du Centre de commande. Vous pouvez aussi utiliser la touche Tab du clavier pour passer d'une option à l'autre.

screen shot

Quel est maintenant l'aspect de la Vue ?

Avez-vous remarqué des différences entre ces deux commandes et les commandes passées auparavant à l'observateur ?

L'observateur regarde le monde d'en haut et peut donc donner une commande aux patches ou aux tortues en utilisant ask. Comme dans le premier exemple (observer> ask patches [set pcolor yellow]), l'observateur doit demander aux patches de donner à leur paramètre couleur pcolor la valeur yellow. Mais quand une commande est donnée directement à un groupe d'agents comme dans le second exemple (patches> set pcolor white), vous ne devez que donner la commande elle-même (puisque NetLogo sait à qui vous vous adressez).

Que s'est-il passé ?

Pourquoi la Vue est-elle repris son aspect d'origine, avec un arrière-plan noir et une route claire? En pressant le bouton "setup", le modèle se reconfigure lui-même en utilisant les réglages spécifiés par le code du modèle dans le panneau "Procedures". La Centre de commande n'est que très rarement utilisé pour modifier un modèle de manière permanente. Il est par contre plus souvent utilisé pour personnaliser le modèle courant et permettre de manipuler le monde NetLogo pour répondre à de questions du genre « Et si » qui pourraient surgir lorsque vous explorez les modèles. (Le panneau "Procedures" est expliqué dans le prochain tutoriel et dans le Guide de programmation.)

Maintenant que vous vous êtes familiarisés avec le Centre de commande, voyons quelques particularités concernant le fonctionnement des couleurs dans NetLogo.

Travailler avec les couleurs

Vous aurez certainement remarqué, dans la section précédente, que nous avons utilisé deux termes différents pour changer les couleurs : color et pcolor.

Quelle différence y a-t-il entre color et pcolor ?

Que se passe-t-il avec les voitures ?

Réfléchissez à ce que vous avez fait pour peindre les voitures en bleu et essayez de peindre les patches en rouge.

Si vous essayez de dire aux patches set color red, NetLogo affiche un message d'erreur disant :  Vous ne pouvez pas utiliser COLOR dans un contexte patch, car COLOR est réservé aux tortues.

screen shot

Nous disons que color et pcolor sont des variables. Certaines commandes et certaines variables sont spécifiques aux tortues alors que d'autres sont spécifiques aux patches. Par exemple, la variable color est une variable réservée aux tortues alors que la variable pcolor est réservée aux patches.

Allez de l'avant et exercez-vous en modifiant les couleurs des tortues et des patches au moyen de la commande set et de ces deux variables.

Afin d'avoir un plus grand choix de couleurs pour peindre les tortues et les patches (ou devrions-nous dire les voitures et l'arrière-plan), nous devons voir un peu plus en détail comment les couleurs sont gérées par NetLogo.

Pour NetLogo, toutes les couleurs sont désignées par une valeur numérique. Si, dans tous les exercices précédents, nous avons utilisé les noms des couleurs, c'est d'une part parce que c'est plus simple et d'autre part parce que NetLog connaît 16 couleurs par leur nom. Mais cela ne veux pas dire que NetLogo ne reconnaisse que 16 couleurs. De nombreuses nuances, situées entres ces 16 couleurs de base, peuvent aussi être utilisées. Voici une palette montrant tout l'espace de couleurs utilisable par NetLogo :

[color chart]

Pour obtenir une couleur qui n'a pas de nom, il suffit de s'y référer en utilisant son numéro, ou en additionnant ou en soustrayant un nombre d'un nom de couleur. Par exemple, quand vous écrivez set color red, cette commande fait la même chose que si vous aviez écrit set color 15. Et vous pouvez obtenir une version plus claire ou plus sombre de cette même couleur en utilisant un nombre qui est un peu plus petit ou un peu plus grand, comme le montrent les exemples suivants:

En soustrayant un nombre de red, vous obtenez un rouge plus sombre.

En ajoutant un nombre à red, vous obtenez un rouge plus clair.

Vous pouvez utiliser cette technique pour n'importe quelle couleur listée dans la palette.

Moniteurs d'agent et Agent Commanders

Dans l'activité précédente, nous avions utilisé la commande "set" pour modifier la couleur de toutes les voitures. Mais si vous vous en rappelez, il y avait dans le modèle original une voiture rouge au milieu des voitures bleues. Voyons comment changer la couleur d'une seule voiture.

Une fenêtre « moniteur tortue » pour la voiture rouge apparaît :

screen shot

En examinant ce moniteur tortue de plus près, nous pouvons voir toutes les variables qui appartiennent (qui définissent) la voiture rouge. Une variable est un emplacement (on pourrait dire un tiroir ou une boîte) qui contient une valeur qui peut être modifiée. Vous rappelez-vous qu'il a été dit que, dans les ordinateurs, toutes les couleurs sont représentées par des nombres? Il en va de même pour les agents. Par exemple, chaque tortue possède un numéro d'identification que nous appelons son "who number".

Examinons plus attentivement le moniteur tortue :

Quel est le numéro "who number" de cette tortue ?

Quelle est la couleur de cette tortue ?

Quelle est la forme de cette tortue ?

Ce moniteur tortue montre une tortue dont le numéro est 0, qui a une couleur 15 (rouge – voir la palette) et une forme "car" (voiture).

Il existe deux autres moyens d'ouvrir un moniteur tortue en plus du clic-droit (ou Ctrl-clic, en fonction du système d'opération). L'un de ces moyens consiste à sélectionner la commande "Turtle Monitor" dans le menu "Tools", d'écrire le numéro de la tortue que vous voulez examiner dans le champ "who" puis de pressez la touche Retour. L'autre moyen est d'écrire inspect turtle 0 (ou un autre numéro "who") dans le Centre de commande.

Vous fermez un moniteur tortue en cliquant le bouton de fermeture situé dans le coin supérieur gauche (Macintosh) ou dans le coin supérieur droit (les autres systèmes d'exploitation) de la fenêtre du moniteur.

Maintenant que nous connaissons mieux les Moniteurs d'agent, nous avons trois possibilités pour modifier la couleur d'une seule tortue.

L'une de ces possibilités est d'utiliser la boîte de texte appelée "Agent Commander" (Commandant d'agent) située à la base de la fenêtre Moniteur d'agent. Là, vous y inscrivez vos commandes tout comme dans le Centre de commande, mais les commandes que vous y donnez ne sont valables, et donc exécutées, que par cette tortue particulière.

Que se passe-t-il dans la Vue ?

Y a-t-il eu des modifications dans le Moniteur de tortue ?

Une autre manière de modifier la couleur d'une seule tortue est d'aller directement dans le champ "color" du Moniteur de tortue et d'y changer la valeur affichée.

Que se passe-t-il ?

La troisième méthode pour changer la couleur d'une tortue ou d'un patch particulier consiste à utiliser l'observateur (observer). En effet, puisque l'observateur domine le monde NetLogo, il peut donner des commandes qui affectent aussi bien des tortues individuellement que des groupes de tortues.

Que se passe-t-il ?

Tout comme il y a des Moniteurs tortue, il existe aussi des Moniteurs patch. Les Moniteurs patch fonctionnent, à quelques détails près, comme les Moniteurs tortue.

Pouvez-vous faire apparaître un Moniteur patch puis l'utiliser pour changer la couleur d'un seul patch ?

Si vous utilisez le Centre de commande avec la commande ask patch 0 [set pcolor blue], vous obtiendrez le message d'erreur suivant :  ERREUR: Attend ici un nombre plutôt qu'une liste ou un bloc.

screen shot

Pour demander à une tortue particulière de faire quelque chose, nous utilisons son numéro personnel. Mais comme les patches n'ont pas de numéro personnel, nous devons nous adresser à eux d'une autre manière.

Rappelez-vous, les patches sont disposés dans un système de coordonnées. Deux nombres sont nécessaires pour pouvoir dessiner un point dans un graphique à deux dimensions. Les positions des patches sont déterminées de la même manière que les positions des points dans un graphique.

screen shot

Le moniteur montre que, pour le patch de la figure ci-dessus, sa variable pxcor vaut -11 et sa variable pycor vaut -4. Si nous revenons à l'analogie avec les coordonnées du plan et que nous voulons dessiner ce point, il se trouvera dans le quadrant inférieur gauche où se situent les coordonnées x = -11 et y = -4.

Pour dire à ce patch particulier de changer de couleur, il faut utiliser ses coordonnées.

La commande donnée dans un Moniteur tortue ou patch ne concerne que cette tortue ou ce patch.

Vous pouvez aussi vous adresser à un seul patch via le Centre de commande :

Et ensuite ?

Arrivés à ce point, vous aurez très certainement envie de passer quelque temps à essayer ces techniques sur d'autres modèles de la Bibliothèque des modèles.

Dans le Tutoriel 3 : Les procédures vous pourrez apprendre comment modifier ou compléter des modèles existants ou même comment créer vos propres modèles.