4
1 Netlogo pour la modélisation & la simulation à base d’agents Guillaume Hutzler IBISC (Informatique Biologie Intégrative et Systèmes Complexes) LIS (Langage Interaction et Simulation) [email protected] http://www.ibisc.univ-evry.fr/~hutzler/Cours/GBI_MSA Modélisation à base d’agents Modélisation entité-centrée Modélisation discrète d’un ensemble d’entités Modélisation « comportementale » description des actions locales de ces entités description des interactions locales entre les entités description des interactions locales entre les entités et leur environnement Modélisation orientée-espace Modélisation spatiale de l’environnement des entités Modélisation « géométrique » description des propriétés spatiales de l’environnement support du déplacement des entités support des relations de voisinage entre les entités Modélisation « comportementale » description de la dynamique propre de l’environnement support de la diusion de traces déposées par les entités Modélisation comportementale Logo & les tortues langage créé en 1967 par W. Feurzeig et S. Papert objectif éducatif simplicité du langage feedback visuel permettant le débuggage tortue robotisée (Irving) to square repeat 4 [forward 50 right 90 ] end to spiral :size :angle if :size > 100 [stop] forward :size right :angle spiral :size + 2 :angle end to flower repeat 36 [right 10 square] end Modélisation géométrique Automates cellulaires développés dans les anneés 40 par S. M. Ulam : constructions graphiques engendrées à partir de règles simples J. von Neumann : conception d’une machine auto-réplicatrice, le kinématon Propriétés Discrétisation spatiale : espace décomposé en une grille de cellules temporelle : évolution par pas de temps discrets Parallélisme les cellules évoluent simultanément et de manière indépendante Localité chaque cellule évolue en fonction de son propre état et de celui d’un ensemble fini de cellules voisines Homogénéité la topologie des cellules est régulière la relation de voisinage est uniforme les règles de transition sont identiques pour toutes les cellules Modélisation géométrique Automate à 1 dimension Caractéristiques tableau de cellules à une dimension chaque cellule prend ses valeurs dans l’ensemble {0, 1} le voisinage d’une cellule se réduit aux deux cellules adjacentes règles de transition simples l’automate progresse par générations successives l’état d’une cellule à la génération suivante est fonction de son état et de l’état de ses voisines à la génération courante toutes les cellules changent d’état de manière synchrone Exemple – f(111)=0 f(110)=0 – f(101)=0 f(100)=1 – f(011)=0 f(010)=0 – f(001)=1 f(000)=0 modélise un processus de diusion simple [Meinhardt & Klingler 1987] Modélisation géométrique Automate à 2 dimensions Modèle de réaction-diusion développé par A. Turing (début des années 50) proposé comme cause de diérents patterns liés à l'embryogenèse Combinaison de une réaction dans chaque cellule entre des substances chimiques qui se comportent comme des activateurs et des inhibiteurs la diusion des substances entre cellules voisines Modèle de formation de patterns périodiques [Meinhardt] "a "t = #a 2 h $ μ a a + D a " 2 a "x 2 + # 0 "h "t = #' a 2 $ μ h h + D h " 2 h "x 2

Modélisation à base d’agents - Laboratoire IBISC[IBISC]hutzler/Cours/GBI_MSA/Netlogo.pdf · NetLogo (ccl.northwestern.edu/netlogo) « Environnement de modélisation programmable

  • Upload
    donhu

  • View
    215

  • Download
    1

Embed Size (px)

Citation preview

1

Netlogo pour la modélisation & lasimulation à base d’agents

Guillaume HutzlerIBISC (Informatique Biologie Intégrative et Systèmes Complexes)LIS (Langage Interaction et Simulation)[email protected]://www.ibisc.univ-evry.fr/~hutzler/Cours/GBI_MSA

Modélisation à base d’agents

Modélisation entité-centréeModélisation discrète d’un ensemble d’entitésModélisation « comportementale »

– description des actions locales de ces entités– description des interactions locales entre les entités– description des interactions locales entre les entités et leur environnement

Modélisation orientée-espaceModélisation spatiale de l’environnement des entitésModélisation « géométrique »

– description des propriétés spatiales de l’environnement– support du déplacement des entités– support des relations de voisinage entre les entités

Modélisation « comportementale »– description de la dynamique propre de l’environnement– support de la diffusion de traces déposées par les entités

Modélisation comportementale

Logo & les tortueslangage créé en 1967 par W. Feurzeig et S. Papertobjectif éducatif

– simplicité du langage– feedback visuel permettant le débuggage– tortue robotisée (Irving)

to square repeat 4 [forward 50 right 90 ]end

to spiral :size :angle if :size > 100 [stop] forward :size right :angle spiral :size + 2 :angleend

to flower repeat 36 [right 10 square]end

Modélisation géométrique

Automates cellulairesdéveloppés dans les anneés 40 par

– S. M. Ulam : constructions graphiques engendrées à partir de règles simples‒ J. von Neumann : conception d’une machine auto-réplicatrice, le kinématon

PropriétésDiscrétisation

– spatiale : espace décomposé en une grille de cellules– temporelle : évolution par pas de temps discrets

Parallélisme– les cellules évoluent simultanément et de manière indépendante

Localité– chaque cellule évolue en fonction de son propre état et de celui d’un ensemble

fini de cellules voisinesHomogénéité

– la topologie des cellules est régulière– la relation de voisinage est uniforme– les règles de transition sont identiques pour toutes les cellules

Modélisation géométriqueAutomate à 1 dimension

Caractéristiquestableau de cellules à une dimensionchaque cellule prend ses valeurs dans l’ensemble {0, 1}le voisinage d’une cellule se réduit aux deux cellules adjacentesrègles de transition simples

– l’automate progresse par générations successives– l’état d’une cellule à la génération suivante est fonction de son état et de l’état

de ses voisines à la génération courante– toutes les cellules changent d’état de manière synchrone

Exemple– f(111)=0 f(110)=0

– f(101)=0 f(100)=1

– f(011)=0 f(010)=0

– f(001)=1 f(000)=0modélise un processus de diffusion simple

[Meinhardt & Klingler 1987]

Modélisation géométriqueAutomate à 2 dimensions

Modèle de réaction-diffusiondéveloppé par A. Turing (début des années 50)proposé comme cause de différents patterns liés à l'embryogenèse

Combinaison deune réaction dans chaque cellule entre des substances chimiques qui secomportent comme des activateurs et des inhibiteursla diffusion des substances entre cellules voisines

Modèle de formation de patterns périodiques[Meinhardt]

!

"a

"t=#a2

h$µ

aa + D

a

"2a

"x 2+ #

0

!

"h

"t= #'a2 $µ

hh + D

h

"2h

"x 2

2

NetLogo(ccl.northwestern.edu/netlogo)

« Environnement de modélisation programmable pour lasimulation de phénomènes naturels et sociaux »

permet le prototypage rapide de modèles de systèmes complexes

Extension du langage Logosupport des agents et de la concurrencetrès large répertoire de primitives prédéfinies

Caractéristiques de la plate-formeconstructeur d’interfacesvisualisation en 2D et/ou 3Dtracé de graphesinspection des agentséditeur de formescalibrageimport et exportsimulations participatives en réseautrès grande librairie de modèles

NetLogo : les entités du modèle

Des cellules (patchs)réparties selon une grille carrée fixe : pxcor, pycor, pzcorsupport de diffusion de signaux vers les cellules voisines : diffuse,neighbors

Des agents (turtles)localisés dans l’environnement : xcor, ycor, zcorvisibles : color, shape, size, labelmobiles : forward (fd), back (bk), left (lt), right (rt)de différentes espèces : breedsensibles à l’environnement : uphill, downhill, patch-atsensibles aux autres agents : turtles-here, turtles-atcapacités d’action : stamp

Un ordonnanceur (observer)contrôle le déroulement de la simulationgère l’activation des cellules et des agents

NetLogo : la modélisation de l’espace et du temps

Modélisation discrète de l’espacequadrillage de cellules carrées

Modélisation discrète du tempsdéroulement de la simulation par itérations successivesla procédure setup initialise le modèlela procédure go appelée de manière répétitive exécute la simulation

;; déclaration de variablesglobals [ row ]patches-own [ on? ]

;; initialisation - procédure d’observerto setup clear-all ;; réinitialise l’affichage set row max-pycor ;; initialise la ligne courante ask patches with [pycor = row] ;; initialise la première ligne de cellules [ set on? (random 2 = 0) ;; initialise l’état de la cellule color-patch ;; peint la cellule en noir ou en blanc ]end

;; mise à jour de la couleur des patchs - procédure de patchto color-patch ifelse on? ;; si la cellule est allumée [ set pcolor white ] ;; colorie la cellule en blanc [ set pcolor black ] ;; sinon colorie la cellule en noirend

Retour sur l’automate 1D (1/2)

;; exécute une itération de la simulation - procédure d’observerto go ask patches with [ pycor = row ] ;; applique la règle sur la ligne courante [ let left-on? on?-of patch-at -1 0 ;; la cellule gauche est-elle allumée ? let right-on? on?-of patch-at 1 0 ;; la cellule droite est-elle allumée ?

;; met à jour la cellule du dessous en fonction de l’état de la cellule ;; et de ses deux voisines set on?-of patch-at 0 -1 ( left-on? and (not on?) and (not right-on?)) or ((not left-on?) and (not on?) and right-on?) ] ;; passe à la ligne suivante set row (row - 1) ;; met à jour la couleur des cellules qui viennent de changer d’état ask patches with [ pycor = row ] [ color-patch ]end

Retour sur l’automate 1D (2/2) Retour sur l’automate 2D (1/2)

;; déclaration de variablespatches-own [a h si]

;; initialisationto setup ca ask patches [ set a 1 ;; initialise l’activateur set h 1 ;; initialise l’inhibiteur set si RA * (0.99 + random-float 0.02) ;; un peu d’hétérogénéité color-patch ;; colorie les patchs ]end

;; colorie les patchs en fonction de la concentration en activateur ou;; inhibiteurto color-patch ifelse (a?) [ set pcolor scale-color green a 0 10 ] ;; affiche l’activateur [ set pcolor scale-color red h 0 10 ] ;; affiche l’inhibiteurend

3

Retour sur l’automate 2D (2/2)

;; exécute une itération de la simulationto go ;; demande à chaque patch de mettre à jour les quantités ;; d’activateur et d’inhibiteur en appliquant les équa. diffs. ask patches [ set a a + si * (a * a + BA) / h - RA * a set h h + si * a * a - RB * h ] ;; diffusion aux patchs voisins diffuse a diff_a ;; de l’activateur diffuse h diff_h ;; de l’inhibiteur

;; recolorie les patchs ask patches [ color-patch ]end

Un modèle plus complexe : proies et prédateurs

Le modèle de Lotka et Volterra [1926]

Problèmesbesoin de tester les modèles et théories manipulées dans le domainebesoin de représenter des niveaux différentsbesoin de représenter les comportements des entités du système et passeulement le résultat de ces comportementsbesoin d'expliquer l'émergence de structures spatio-temporellesbesoin d’enrichir les modèles de manière incrémentale

Comparaison modèle discret / modèle continu

Des interactions localisées ou un calcul global peuventconduire à des dynamiques qualitativement différentes

« Dans des conditions où les équations continues prédisent l’extinction dela population, les individus s’auto-organisent en zones adaptativesspatio-temporellement localisées, ce qui assure leur survie et leurdéveloppement » [Shnerb et al., PNAS 2000]

Modèle agent : des loups et des moutons

Déclarations de variables

;; déclaration d’une nouvelle espèce « moutons »breed [ sheep a-sheep ];; déclaration d’une nouvelle espèce « loups »breed [ wolves wolf ]turtles-own [ energy ];; pour éviter que deux loups n’attrapent le même moutonsheep-own [ grabbed? ];; compte à rebours avant la repousse de l’herbepatches-own [ countdown ]

turtles

sheep wolves

energy

grabbed?

Initialisation

to setup ca ask patches [ set countdown random grass-regrowth-time ifelse (random 2) = 0 [ set pcolor brown ][ set pcolor green ] ]

set-default-shape sheep "sheep » ;; création & initialisation d’agents moutons create-custom-sheep initial-number-sheep [ set energy random (2 * sheep-gain-from-food) setxy random-xcor random-ycor set grabbed? false ]

;; création & initialisation d’agents loups set-default-shape wolves "wolf" create-custom-wolves initial-number-wolves [ set energy random (2 * wolf-gain-from-food) setxy random-xcor random-ycor ]

do-plotend

4

Boucle générale

to go ;; teste si fin de la simulation if not any? turtles [ stop ] ;; activation des moutons ask sheep [ move set energy energy - 1 eat-grass reproduce sheep-reproduce death ] ;; activation des loups ask wolves [ move set energy energy - 1 catch-sheep reproduce wolf-reproduce death ] ;; activation de l’herbe ask patches [ grow-grass ] do-plotend

Comportements génériques

;; tourne d’un angle compris entre -50 et +50° puis avanceto move rt random-float 50 - random-float 50 fd 1end

;; essaye de se reproduireto reproduce [ reproduce-rate ] ;; tirage aléatoire if random-float 100 < reproduce-rate [ ;; partage de l’énergie avec le descendant set energy (energy / 2) ;; création d’un clone hatch 1 [ rt random-float 360 fd 1 ] ]end

;; meurt quand l’énergie devient nulleto death if energy < 0 [ die ]end

Broutage et repousse de l’herbe

;; broutageto eat-grass ;; s’il y a de l’herbe (patch vert) if pcolor = green [ ;; colore le patch en brun set pcolor brown ;; gagne de l’énergie set energy energy + sheep-gain-from-food ]end

;; repousse de l’herbeto grow-grass ;; si le patch est brun if pcolor = brown [ ;; si le compteur arrive à 0 ifelse countdown <= 0 [ set pcolor green ;; l’herbe repousse set countdown grass-regrowth-time ] ;; le compteur est réinitialisé [ set countdown (countdown - 1) ] ;; décrémente le compteur ]end

Prédation

;; comportement de prédationto catch-sheep ;; choisit un mouton au hasard sur le patch courant parmi ceux qui ne sont ;; pas déjà attrapés let prey one-of (sheep-here with [not grabbed?]) ;; si le loup en a attrapé un... if prey != nobody [ ;; il se le réserve, set grabbed?-of prey true ;; il demande (poliment) au mouton de mourir... ask prey [ die ] ;; et il en retire plein de glucides, de lipides et de protéines set energy energy + wolf-gain-from-food ]end

Affichage de courbes

;; procédure d’affichageto do-plot ;; sélectionne le graphique set-current-plot "populations » ;; sélectionne le tracé set-current-plot-pen "sheep" ;; affiche un nouveau point plot count sheep ;; sélectionne le tracé set-current-plot-pen "wolves" ;; affiche un nouveau point plot count wolves ;; sélectionne le tracé set-current-plot-pen "grass / 4" ;; affiche un nouveau point plot count patches with [ pcolor = green ] / 4end