Table des matières - Gilles Daniel
Table des matières - Gilles Daniel Table des matières - Gilles Daniel
388 Modélisation et simulation multi-agents pour Sciences de l'Homme et de la Société. D’un point de vue technique, le déroulement d’une itération ne peut s’effectuer totalement en mode synchrone. Seule l’évaluation de la situation peut se faire dans ce mode : - création de la liste des habitations vacantes, non habitées [procédure CréerListeHabitationsLibres, liste ListeHabitationslibres] ; - chaque agent observe son voisinage, l’opération consiste à dénombrer le nombre d’étrangers dans un voisinage d’ordre 1 [procédure ObserveVoisinage] ; - chaque agent compare le seuil de tolérance à ses observations afin de décider si oui ou non il doit déménager [procédure Demenage ]. Si la réponse est oui, son nom vient s’ajouter à la liste des agents qui doivent partir [liste ListeInsatisfaits] ; Les déplacements ne peuvent s’exécuter en mode synchrone, car plusieurs habitants insatisfaits pourraient alors se déplacer sur une même cellule libre. Tout agent dans la liste ListeInsatisfaits sélectionne au hasard une habitation libre dans la liste ListeHabitationslibres et s’y rend. Il sort alors de la liste des insatisfaits, supprime sa nouvelle adresse de la liste des habitations libres et rajoute dans cette liste son ancienne adresse, qui est maintenant vacante. Lorsque la liste ListeInsatisfait est vide, l’itération est terminée, on répète la procédure. En mode asynchrone, la procédure est légèrement différente : - création de la liste des habitations vacantes, non habitées [procédure CréerListeHabitationsLibres, liste ListeHabitationslibres] ; - création de la liste de tous les agents présents dans l’univers [liste ListeAgents] ; - on répète les procédures suivantes jusqu’à ce que ListeAgents soit vide : • sélection au hasard d’un agent dans la liste, • il observe son voisinage [procédure ObserveVoisinage], • et en fonction de sa satisfaction reste ou part [procédure Demenage ]. La différence entre ces deux variantes est donc que dans la première, au cours d’une itération, seuls se déplacent les individus qui ne sont pas satisfaits, critère défini par une « image de la réalité » à un moment donné, identique pour tous. Dans la deuxième, en mode asynchrone, on traite tous les individus les uns après les autres, à des instants distincts, et l’évaluation de l’environnement se fait sur une « image de la réalité » à cet instant, valable pour l’individu sélectionné. C’est ce dernier mode qui a été choisi, les différentes procédures sont détaillées dans les paragraphes qui suivent 80 . 80 Les termes en gras représentent les primitives StarLogo, en « normal » les mots du langage auteur.
Comparaison de trois implémentations du modèle de Schelling. 389 La procédure ListeHabitationLibre permet de créer la liste complète des cellules qui ne sont pas habitées : to CréerListeHabitationsLibres set ListeHabitationslibres [ ] ; La liste est vide au départ ask-patches [ if count-turtles-here = 0 [ ; s’il n’y a pas d’habitant let [:k (((xcor + screen-half-height) * screen-width ) + (ycor + screen-half-width) )] ;on calcule le numéro de cellule set ListeHabitationslibres lput :k ListeHabitationslibres]] ] ; et on l’insère dans la liste end La procédure ObserveVoisinage permet à chaque agent de comptabiliser le nombre d’étrangers dans le voisinage, on utilise ici l’opérateur de voisinage présenté précédemment. To ObserveVoisinage set idem 0 ; remise à zéro en t pour ne pas cumuler avec (t – n) let [:a breed-at 0 1] ; on commence par observer au nord if (:a != breed) and ; si l’habitant n’est pas du même groupe (:a != 0) ; et qu’il y a un habitant [set diff diff + 1]] ; alors j’incrémente la variable d’état let [:a breed-at 1 1] ; même opération, pour la cellule au nord-est if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at 1 0] ; idem, pour la cellule à l’est if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at 1 -1] ;cellule au sud-est if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at 0 -1] ; cellule au sud if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at -1 -1] ; cellule au sud-ouest if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at -1 0] ; cellule à l’ouest if (:a != breed) and (:a != 0) [set diff diff + 1] ] let [:a breed-at -1 1] ; cellule au nord-ouest if (:a != breed) and (:a != 0) [set diff diff + 1] ] end La procédure Demenage détermine si l’agent doit quitter ou non la cellule en fonction du seuil de tolérance fixé. to Demenage if diff > ((Tolerance / 100) * 8) [ChoisirHabitation] end La procédure ChoisirHabitation est appelée par tout individu répondant « vrai » au test précédent (procédure Demenage). L’agent tire au hasard une cellule non habitée dans la liste des habitations libres, la supprime de la liste et y rajoute le
- Page 333 and 334: Approche conceptuelle de l’espace
- Page 335 and 336: Approche conceptuelle de l’espace
- Page 337 and 338: Approche conceptuelle de l’espace
- Page 339 and 340: Approche conceptuelle de l’espace
- Page 341 and 342: Approche conceptuelle de l’espace
- Page 343 and 344: Approche conceptuelle de l’espace
- Page 345 and 346: Approche conceptuelle de l’espace
- Page 347 and 348: Approche conceptuelle de l’espace
- Page 349 and 350: Chapitre 16 « A Monte Carlo approa
- Page 351 and 352: « A Monte Carlo approach to diffus
- Page 353 and 354: « A Monte Carlo approach to diffus
- Page 355 and 356: « A Monte Carlo approach to diffus
- Page 357 and 358: « A Monte Carlo approach to diffus
- Page 359 and 360: « A Monte Carlo approach to diffus
- Page 361 and 362: « A Monte Carlo approach to diffus
- Page 363 and 364: « A Monte Carlo approach to diffus
- Page 365 and 366: « A Monte Carlo approach to diffus
- Page 367 and 368: « A Monte Carlo approach to diffus
- Page 369 and 370: « A Monte Carlo approach to diffus
- Page 371 and 372: « A Monte Carlo approach to diffus
- Page 373: « A Monte Carlo approach to diffus
- Page 376 and 377: 380 Modélisation et simulation mul
- Page 378 and 379: 382 Modélisation et simulation mul
- Page 380 and 381: 384 Modélisation et simulation mul
- Page 382 and 383: 386 Modélisation et simulation mul
- Page 386 and 387: 390 Modélisation et simulation mul
- Page 388 and 389: 392 Modélisation et simulation mul
- Page 390 and 391: 394 Modélisation et simulation mul
- Page 392 and 393: 396 Modélisation et simulation mul
- Page 394 and 395: 398 Modélisation et simulation mul
- Page 396 and 397: 400 Modélisation et simulation mul
- Page 398 and 399: 402 Modélisation et simulation mul
- Page 400 and 401: 404 Modélisation et simulation mul
- Page 402 and 403: 406 Modélisation et simulation mul
- Page 404 and 405: 408 Modélisation et simulation mul
- Page 406 and 407: 410 Modélisation et simulation mul
- Page 408 and 409: 412 Modélisation et simulation mul
- Page 410: 414 Modélisation et simulation mul
388 Modélisation et simulation multi-agents pour Sciences de l'Homme et de la Société.<br />
D’un point de vue technique, le déroulement d’une itération ne peut s’effectuer<br />
totalement en mode synchrone. Seule l’évaluation de la situation peut se faire dans<br />
ce mode :<br />
- création de la liste <strong>des</strong> habitations vacantes, non habitées [procédure<br />
CréerListeHabitationsLibres, liste ListeHabitationslibres] ;<br />
- chaque agent observe son voisinage, l’opération consiste à dénombrer le<br />
nombre d’étrangers dans un voisinage d’ordre 1 [procédure ObserveVoisinage] ;<br />
- chaque agent compare le seuil de tolérance à ses observations afin de décider si<br />
oui ou non il doit déménager [procédure Demenage ]. Si la réponse est oui, son<br />
nom vient s’ajouter à la liste <strong>des</strong> agents qui doivent partir [liste ListeInsatisfaits] ;<br />
Les déplacements ne peuvent s’exécuter en mode synchrone, car plusieurs<br />
habitants insatisfaits pourraient alors se déplacer sur une même cellule libre. Tout<br />
agent dans la liste ListeInsatisfaits sélectionne au hasard une habitation libre dans la<br />
liste ListeHabitationslibres et s’y rend. Il sort alors de la liste <strong>des</strong> insatisfaits,<br />
supprime sa nouvelle adresse de la liste <strong>des</strong> habitations libres et rajoute dans cette<br />
liste son ancienne adresse, qui est maintenant vacante. Lorsque la liste<br />
ListeInsatisfait est vide, l’itération est terminée, on répète la procédure.<br />
En mode asynchrone, la procédure est légèrement différente :<br />
- création de la liste <strong>des</strong> habitations vacantes, non habitées [procédure<br />
CréerListeHabitationsLibres, liste ListeHabitationslibres] ;<br />
- création de la liste de tous les agents présents dans l’univers [liste<br />
ListeAgents] ;<br />
- on répète les procédures suivantes jusqu’à ce que ListeAgents soit vide :<br />
• sélection au hasard d’un agent dans la liste,<br />
• il observe son voisinage [procédure ObserveVoisinage],<br />
• et en fonction de sa satisfaction reste ou part [procédure Demenage ].<br />
La différence entre ces deux variantes est donc que dans la première, au cours<br />
d’une itération, seuls se déplacent les individus qui ne sont pas satisfaits, critère<br />
défini par une « image de la réalité » à un moment donné, identique pour tous. Dans<br />
la deuxième, en mode asynchrone, on traite tous les individus les uns après les<br />
autres, à <strong>des</strong> instants distincts, et l’évaluation de l’environnement se fait sur une<br />
« image de la réalité » à cet instant, valable pour l’individu sélectionné. C’est ce<br />
dernier mode qui a été choisi, les différentes procédures sont détaillées dans les<br />
paragraphes qui suivent 80 .<br />
80 Les termes en gras représentent les primitives StarLogo, en « normal » les mots du langage<br />
auteur.