15.6.06

Introduction à Netlogo, 2

Il existe deux moyens de travailler en Netlogo. La manière la plus classique consiste à rédiger des programmes et à la commander à l’aide de boutons créés à cet effet. Mais il est aussi possible de travailler en mode interactif, de donner des ordres à ses tortues qui seront exécutés en temps réel. Nous choisirons cette méthode pour entrer en douceur dans Netlogo. Commençons donc par entrer dans le " command center " et inscrivons-y quelques instructions..Ouvrez donc Netlogo, puis, au bas de l’écran, à côté de la mention " observer " écrivez
crt 100
Apparaît un point coloré au centre de l’écran. vous venez en fait de créer 100 tortues, mais elles sont toutes situées au même endroit, les unes sur les autres.... Séparons les en entrant
Ask turtles [fd 50]
Et validez par Entrée.. Joli, non ?Vous venez de faire votre premier dessin sous Netlogo, un magnifique petit cercle. Remarquez que toutes les tortues pointent, par défaut, vers l’extérieur, dans une direction unique et spécifique.. En fait, chaque tortue a avancé de 10 " pas " dans la direction vers laquelle elle pointe (fd est une abréviation de l’anglais " forward ", qui signifie " avancer ")Introduisons un peu de désordre dans ce magnifique ensemble!Changeons d’abord la direction de nos tortues
ask turtles [set heading random 360]
Traduisons : nous demandons aux tortues de changer la direction vers laquelle elles pointent, en leur faisant éxécuter une rotation aléatoire entre 1 et 360 degrés.Apres avoir validé cette instruction, vos tortues sont toujours disposées en cercle, mais pointent dans des directions choisies aléatoirement.Reste alors à écrire :
ask turtles [fd random 10]
Ici encore, nous demandons aux tortues d’avancer. mais cette fois ci, le résultat ne sera pas une figure géométrique harmonieuse, car elles pointent maintenant dans une direction aléatoire. De plus nous n’avons pas simplement spécifié " 10 " comme dans le premier cas, mais " random 10 " (random signifie " hasard ") ce qui veut dire que chacune d’entre elles est libre d’avancer d’un nombre de pas situé entre zéro et 10...Vous trouvez sans doute agaçant de devoir écrire à chaque fois " ask turtles ". Quel intérêt ? n’y a t il pas moyen de se débarrasser de cette commande ?En fait, c’est tout à fait possible, et même conseillé. Mais pour ce faire, il va falloir avancer un peu dans la compréhension de Netlogo.Dans la première partie j’ai mentionné l’existence de deux types de créatures dans le minimonde de Netlogo : les tortues et les " patches ". en fait il en existe une troisième. Celle-ci, c’est Dieu, ou au moins une espèce de démiurge à vos ordres et capable de gérer les paramètres globaux de l’univers artificiel : c’est " l’observateur ". Hors, depuis le début de la session, vous êtes en train de discuter avec cet " observateur ". Pour preuve le mot " observer " placé en tête de la ligne de commande. C’est à l’observateur que nous ordonnons donc de " demander aux tortues " (ask turtles ) de se déplacer. Il est possible de procéder plus directement.Pour ce faire, recommençons la séquence d’instructions. Pour ce faire, tapez
ca(pour " clear all ")
et validez. Votre minimonde est redevenu un pur carré noir exempt de toute vie. Ecrivez ensuite à nouveau
crt 100
puis cliquez sur le mot " observer " à votre gauche. Apparaît alors un menu avec trois entrées. Sélectionnez " turtles ". Entrez alors :
fd 10, puis :
set heading random 360, etc.
Il n’est plus besoin de demander " ask turtles ". Le sujet de l’action est implicite, puisque vous vous trouvez en mode " tortues ". Toujours dans ce mode, essayez maintenant d’entrer " ca " ou " crt ". Le programme vous envoie alors un message d’erreur. En effet ce n’est pas aux tortues d’effacer l’écran, ou de créer de nouveaux exemplaires de leur semblables : c’est hors de leurs possibilités. Il faut, pour cela réinvoquer " l’observateur ".
Restent les patches. Il n’existe pas d’instruction pour créer ces derniers, et pour cause : ils sont déjà là, ils constituent la " matière " du minimonde. Pour visualiser différentes ressources, il suffit de leur attribuer certaines couleurs. Pour ce faire, on peut, au choix, écrire, depuis le mode observateur :
ask patches [set pcolor green]
Ou choisir, dans le menu du command center, le mode " patches " et saisir plus simplement :
set pcolor green
Colorier tous les patches en vert est peut être sympathique sur le plan esthétique, mais cela ne sert pas à grand chose !Pour créer un paysage avec diverses ressources il est bon de différencier les patches en leur attribuant des couleurs différentes. C’’est comme ça qu’on génère une " géographie " en Netlogo. Créons par exemple une mer au milieu de cette " pelouse ".En mode patch, on écrit :
if ((pxcor > 0) and (pycor > 0) ) [set pcolor blue]
Ce qui crée un carré bleu dans le coin supérieur droit de l’écran.pxcor et pycor indiquent les coordonnées spatiales d’un patch. Remarquez que, contrairement à la plupart des systèmes graphiques traditionnels, les coordonnées, (0,0) indiquent le centre de l’écran et non l’angle supérieur gauche.Prochaine leçon, la création d’un premier programme !

Introduction à Netlogo, première partie

Commence à partir d'aujourd'hui une présentation en plusieurs parties du langage Netlogo, outil précieux pour comprendre les phénomènes d'émergence et les systèmes collectifs. Je rappelle que les phénomènes " émergents " sont des caractéristiques apparaissant de manière inattendue (le terme consacré est " contre-intuitive ") au sein de systèmes complexes composés de nombreux éléments. La pensée, la conscience, se manifestant par l'interconnexion de milliards de neurones est un phénomène émergent. Un vol d'oiseaux, des centaines de lucioles synchronisant leur éclat, l'apparition brusque de la pauvreté au sein d'un marché libre qui devrait en théorie répartir également les richesses, en sont d'autres exemples. L'urbanisme n'est pas non plus avare en bizarreries émergentes : par exemple, lorsqu'une ville est encombrée, le bon sens dicte d'ajouter des voies perpendiculaires pour dégager les grosses artères. Ce que firent les urbanistes de Stuttgart, qui constatèrent, à leur grande surprise, un résultat exactement inverse ! Autre étrangeté, il suffit apparemment de placer un feu rouge au bout milieu d'une route toute droite pour fluidifier la circulation.Ce caractère difficilement compréhensible du phénomène d'émergence pourrait être acceptable si, en fait, nous ne baignions pas constamment au sein de ces " systèmes complexes " : la vie, la pensée, la société appartiennent à ce domaine. En fait, nos sciences exactes, comme le physique, n'explorent qu'une petite partie de l'univers, assez réduite et éloignée de notre quotidien. L'émergence ressemble à de la magie. C'est du reste pour cela, que dans les " utopies posthumaines" j'associe le renouveau des pratiques occultes à l'explosion de la complexité dans nos vies !D'accord pour parler de " magie ", donc, si par là on entend de l'inattendu, du surprenant, de l'inexpliqué. Mais pas de magie, bien sûr, au sens de l'intervention de forces surnaturelles, inconnues, inexplicables ! Dans l'émergence aussi, il y a truc, le lapin sort d'un double fond, et il n'y a pas lieu d'abandonner notre méthode scientifique..Ce qu'il nous faut, c'est avoir les moyens de comprendre comment fonctionne cette " émergence ", pourvoir démonter et remonter les systèmes complexes avec la même facilité qu'on le ferait avec le moteur d'une moto, bref, disposer d'une nouvelle catégorie d'outils intellectuels et matériels qui nous permettent d'appréhender cette réalité extraordinaire. Si vous êtes en train de lire ces lignes, cet outil, vous le possédez déjà, et vous êtes justement en train de fixer votre regard dessus. Elle est pas belle la vie ? Donc, vous allez pouvoir utiliser votre ordinateur pour entrer dans le monde complexe de... la complexité. Pour cela, il faudra utiliser des programmes particuliers, les " langages de programmation multi-agents ". Si les mots " langage de programmation " vous donnent des boutons, pas de panique ! C'est vrai qu'il faudra acquérir une syntaxe particulière, entrer des commandes.. Mais rien de bien difficile. Pour tout dire, Mitchel Resnick, du MIT, créa le premier de cette classse d'outils, Starlogo, à destination des enfants. Du reste, le mot " logo " accolé au programme dit tout sur son origine : il s'agit d'une variante du langage logo de Seymour Papert, créé dans les années 80 pour initier les plus jeunes à l'informatique. Resnick, ayant en effet constaté l'incapacité dans laquelle nos contemporains se trouvaient de comprendre les systèmes collectifs et décentralisés avait conclu à la nécessité de créer un système leur permettant de " toucher du doigt "une réalité aussi abstraite. Naturellement les jeunes générations etaient les premières visées par son projet, car plus tôt on apprend à comprendre ces concepts difficiles, plus on sera capable de les manier arrivé l'âge adulte. Donc vous l'avez compris : ces " langages de modélisation " des jouets ! des jouets pas simples, d'accord, plutôt réservés au gamin surdoué à lunettes, mais des jouets tout de même ! Resnick, qui après Starlogo, s'est dirigé vers la création de " briques programmables " qui inspirèrent la gamme Lego Mindstorms, s'est d'ailleurs spécialisé en matière ludique. Mais ces jouets ne sont pas pour autant limités : on peut faire avec eux des choses très, très compliquées. Du reste, leur usage est maintenant surtout cantonné dans les universités et les grandes écoles. Une recherche Google sur les pages françaises mentionnant Starlogo affiche surtout des sites appartenant à l'enseignement supérieur ou aux institutions de recherche. Que cela ne vous impressionne pas ! Starlogo est bel et bien réservé à chacun d'entre nous. En créant un tel programme, Resnick a aussi déclenché une petite révolution : il a inventé la notion d'outil philosophique. Jusqu'ici, la pensée s'exprimait essentiellement par l'écriture, ou par la parole. Elle va maintenant pouvoir s'incarner dans un programme. Car un code Starlogo n'a pas pour but de produire une " application " qui doit être utilisée, mais à aider à penser, à découvrir, voire à convaincre. Dans la foulée, Resnick a inventé une nouvelle sorte d'écriture : " l'essai actif ". Il s'agit d'un mélange de texte écrit et de programmes informatiques (par exemple une page web dans laquelle sont inscrites des applets java) permettant au lecteur de tester et comprendre les idées exprimées en jouant de manière interactive avec les programmes.

Pourquoi Netlogo
Puisque Starlogo est le premier langage du genre, pourquoi se consacrer plutôt à Netlogo ? Lorsque Resnick a crée son outil, dans les années 90 et qu'il a sorti son manuel de base, Turtles,Termites and Traffic Jams, Starlogo ne fonctionnait que sur des machines très puissantes dites " parallèles " (parce que capable d'effectuer de nombreuses opérations simultanément) les " connection machines " A noter que le créateur des connexions machines, Danny Hillis, s'est par la suite associé à Stewart Brand et Brian Eno pour devenir le maître d'œuvre de cette fameuse " horloge du long maintenant ", censée sonner tous les millénaires !Finalement, Starlogo est passé sous Macintosh, puis est enfin devenu accessible pour toutes les machiens grâce à sa version java. Starlogo est gratuit, et peut être téléchargé ici : Mais au fur et à mesure que Starlogo devenait plus accessible, les versions évoluaient et du coup, bon nombre des instructions données dans le livre de Resnick furent modifies, rendant son " turtles, termites... " quasi inutilisable. Face à Starlogo, à la Northwestern University, on créa également un clone, le Netlogo, possédant lui aussi son set spécifique d'instructions, modifié par rapport au starlogo originel mais pas tellement plus que celui de son épigone direct.A l'époque ou je me suis intéressé à ces langages, il m'a semble que Netlogo etait un peu plus avancé que son cousin (il intègre par exemple la possibilité de creer des mondes en 3D). Il a également la réputation d'être un peu plus rapide et plus stable, mais franchement, je n'ai pas fait les tests. Pour simplifier, je dirais que j'ai choisi Netlogo parce qu'il me fallait bien en choisir un ! et je ne suis pas le genre de " bête en informatique " capable d'assimiler simultanément en un temps record deux langages différents, surtout s'ils font la même chose !

Démarrer avec Netlogo
Netlogo est bien entendu, gratuit ! rendez-vous donc ici, puis choisissez la dernière version en cours. Nous en sommes aujourd'hui à la 3.1. Les utilisateurs de Mac devront se connecter d'une version plus ancienne. Vous pouvez entrer votre adresse mail et exprimer votre souhait de vous inscrire à la liste de discussion, mais ce n'est pas nécessaire. Vous pouvez rester totalement anonyme si vous le souhaitez.Cliquez sur le bouton download, puis choisissez, parmi les versions proposées, celle qui inclue la machine virtuelle Java. Elle est plus lourde, mais beaucoup plus facile à installer. Sauf, si bien sûr, vous savez parfaitement ce que vous faites. Téléchargez le programme et installez-le. Pas de difficultés majeures ici. Sélectionnez juste " Install a java vm specifically for this application ", du moins si le langage Java n'est pas votre langue maternelle. Vous éviterez ainsi beaucoup de soucis de configuration par la suite.Démarrez ensuite NetLogo. Vous êtes prêts à faire tourner votre premier programme. Rendez vous dans le menu file, puis cliquez sur " Models Library ". Allez dans la section, biology puis choisissez " wolf sheep predation ". C'est un simple écosystème dans lequel les loups cherchent à manger les agneaux. Appuyez sur le bouton " setup ", puis sur le bouton go. Dans la fenêtre de gauche, vous verrez se multiplier loups et agneaux, puis tout tourne à la catastrophe : parfois les loups disparaissent, sursaturant l'environnement ; ou, au contraire, les loups dévorent toutes leur proies, pour mourir de faim quelques secondes plus tard. Vous pouvez arrêter la simulation à tout instant en recliquant sur le bouton Go.Maintenant, mettez le paramètre " herbe " (grass) sur " on ". Désormais, les agneaux disposent d'une quantité limitée d'herbe pour se nourrir. A nouveau setup, puis " Go " ! Cette fois, le milieu est bien plus stable, loups et agneaux s'équilibrent.Vous pouvez manipuler bien entendu la multitude de paramètres offerts par la simulation, comme le nombre de loups ou d'agneaux au départ, l'énergie nécessaire pour se reproduire... N'hésitez pas à jouer avec les curseurs, vous ne casserez rien. Lorsque vous en aurez terminé avec ce programme, promenez-vous dans la " Models Library ". Vous serez surpris de la variété des problèmes abordés par Netlogo : biologie, mais aussi sciences sociales, informatique, géologie, mathématiques, physiques. Et il existe même une section jeux avec un petit Pacman !

Tortues et patches
Qu'est ce qui est à l'oeuvre dans un programmes Netlogo ? On rencontre d'abord ce qu'on appelle des " agents ", c'est à dire des " acteurs ". en Starlogo et en Netlogo, on les appelle des " tortues ". Ce nom vient du vieux logo de Soymour Papert, où la tortue représentait un curseur graphique auquel les enfants donnaient des ordres pour le déplacer ou lui faire dessiner quelque chose. Des langages comme Netlogo sont en fait des " Logo " faisant travailler une multitude de tortues simultanémentIl peut exister plusieurs " races " de tortues : par exemple les loups et les agneaux. A l'intérieur d'une race, chaque tortue possède les mêmes caractéristiques générales, mais dispose de paramètres particuliers. Par exemple, toutes les tortues d'une race donnée possèdent un paramètre " point de vie " qui lui donne son espérance de longévité. Mais certaines tortues auront 20 points de vie, d'autres 'en posséderont que 5. Toutes les tortues d'une même race possèdent également le même code informatique : autrement dit, elles auront le même comportement face à une situation analogue, en tenant compte, bien sur de la différence de valeurs de leurs paramètres : Par exemple, toutes les tortues de la race des " renards " ont pour mission de poursuivre un " poulet " passant dans leur champ de visibilité, mais chaque renard possédera sa propre vitesse et son propre champ de vision. En plus des tortues, on trouve un autre type d'habitants dans les micromondes Netlogo : le " patch ".Celui-ci ne se déplace pas ,n'affecte aucun comportement: il correspond à un ensemble de paramètres qui peuvent varier. Les patches sont essentiellement utilisés pour représenter des ressources propres à l'environnement de la simulation, comme l'herbe, le pétrole, etc. on peut aussi les utiliser pour décrire une géographie, par exemple pour faire des murs, ou pour symboliser des hauteurs sur une carte. L'ensemble d'un monde Netlogo est le produit de l'interaction entre les différentes races de tortues et éventuellement les patches. En revanche, une chose fondamentale est absente : il n'y a pas de chef d'orchestre, personne pour dire aux différentes tortues comment se comporter. Autrement dit, Netlogo décrit un système décentralisé, comme l'est notre système nerveux, le marché financier ou un écosystème forestier. C'est précisément cette caractéristique, la décentralisation, que Netlogo est censé nous faire comprendre.Dans la prochaine leçon, nous attaquerons nos premières instructions !