modélisation à base d’agents - laboratoire ibisc[ibisc]hutzler/cours/gbi_msa/netlogo.pdf ·...
TRANSCRIPT
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