La ségrégation selon Thomas Schelling

From OFSET Wiki

Jump to: navigation, search

Contents

[edit] Introduction

Ce travail a été réalisé dans le cadre du projet du module Intelligence Artificielle Distribuée du Master 1 Informatique de l'université de Caen, par Olivier Gonet et Frank Blais. Nous devions implémenter une simulation multi-agent et en analyser les résultats. Le sujet d'origine se trouve ici.

[edit] La ségrégation selon Thomas Schelling

Thomas Schelling cherche à mettre en valeur les processus de ségrégation entre plusieurs groupes d'individus. Pour cela, il pose une règle de déplacement des individus qui dépend de leur seuil de tolérance aux individus n'étant pas du même type : si un individus devient minoritaire, il migre. Même si ce modèle parait très simple, il permet de mettre en valeur plusieurs mécanismes que l'ont peut retrouver dans les interactions humaines.

[edit] L'implémentation sous Kedama

[edit] Généralités

Cette simulation a été réalisée sous la plateforme Kedama (réalisée à base d'EToys Squeak). Deux types d'agent évoluent dans le "monde", les bleus et les rouges. Ils suivent les règles du modèle de Schelling :

  • Si le pourcentage de voisin du même type est inférieur à sa préférence, l'agent migre vers une autre position.

Cependant, il existe quelques différences avec les simulations habituelles de ce modèle. En effet, généralement elle n'est pas réalisée de façon purement multi agents et les agents sont pris un par un (alors qu'ici ils sont gérés de façon totalement parallèle). La seconde différence est que dans notre simulation, les agents se déplacent aléatoirement sans savoir ou ils vont tomber, et cela peut déséquilibrer certaines situations stables. Nous verrons, dans la partie dédiée à l'analyse des résultats, que ces différences ont peu de répercutions sur le comportement général de la simulation.

Image:projet-iad1.jpg

La préférence représente le seuil de tolérance des agents, c'est-à-dire le pourcentage minimum de voisin de même type pour qu'un individu soit satisfait. Quand un individu est satisfait, il reste dans sa position. Bleu et Rouge représentent le nombre d'agent de chaque type, alors que Mécontents nous permet de voir le nombre d'agent non satisfait à tout moment de la simulation.

[edit] Structure de notre simulation

Nous avons utilisé deux types d'agents représentant des individus différents mais, pour le moment, avec un comportement identique (il est possible de modifier indépendamment le comportement des agents) : tortue1 (les rouges) et tortue2 (les bleus). Notre simulation repose sur l'utilisation de trois patchs :

  • les deux premiers (sol_rouge et sol_bleu) servent à calculer le nombre de voisin et savoir leur type. Chacun est attribué à un type d'agent pour qu'il puisse marquer sa position et diffuser la valeur (voir partie 2.3 pour le fonctionnement du script)
  • le 3eme sert à empêcher les agents d'aller à plusieurs sur une même case. Chaque agent marque sa position dessus sans diffuser la valeur, ce patch est donc commun aux deux types d'agents.

[edit] Le comportement de nos agents

Les agents sont ajoutés et initialisés par le script //Reset// du monde Kedama. Leurs variables sont mises à 0 et tous les agents sont considérés comme mécontents. Le modèle de Schelling ne prévoie pas que des agents se trouvent sur la même case, donc le script répartir est lancé sur chaque agent pour les replacer directement (il est donc impossible de mettre plus d'agent que de case).

Image:projet-iad2.jpg

Une fois les agents en place, le script run de Kedama est exécuté. Ce script commence par modifier les patchs associés aux agents :

  • Le contenu des patchs sol_rouge et sol_bleu est effacé.
  • Chaque agent place la valeur 9 dans la case correspondant à son patch.
  • Cette valeur est diffusée avec un diffuseRate de 1, et donc elle prend la valeur 1, ainsi que toutes les cases adjacentes. Si jamais deux agents de même type sont côte à côte, la diffusion ajoute leurs valeurs pour les cases en commun.
  • Le script principal de chaque agent (checkVoisin) est ensuite exécuté (il sera détaillé un peu plus tard).
  • Enfin, le nombre d'itérations est incrémenté (s'il y a encore des mécontents).

Image:projet-iad3.jpg

Le script checkVoisin détermine si un agent est satisfait ou pas et il modifie l'état et la position de l'agent en conséquence :

Image:projet-iad4.jpg

Dans un premier temps, l'agent calcule le nombre de voisin qu'il a, pour cela il ajoute la valeur présente dans sa case à partir des deux patchs sol_rouge et sol_bleu. En effet, grâce à la diffusion, la valeur d'une case sur un patch correspond au nombre d'agent du même type présent dans les cases adjacentes. Ce total doit être décrémenté de 1 pour ne pas que l'agent se prenne en compte. Ensuite l'agent détermine le pourcentage de voisins semblables à lui. Il lui suffit de prendre la valeur du patch attribué à l'autre type d'agent (sol_rouge pour les individus bleus par exemple), puis de le diviser par le total de voisin précédemment calculé. Ce pourcentage est ensuite comparé à la préférence des agents et deux cas sont alors possibles :

  • Si ce résultat est supérieur ou égal à la préférence, l'agent est alors satisfait et il ne bouge pas.
  • Si ce résultat est inférieur, l'agent devient mécontent et il se déplace.

Les autres tests présents dans le script servent à mettre à jour le compteur de mécontents. Quand un agent doit se déplacer, il efface sa position du patch détection et il utilise un script très simple : move.

Image:projet-iad5.jpg

Il commence par tirer une nouvelle position au hasard, puis il teste si cette position est déjà prise (la valeur de la case dans le patch détection n'est pas nulle) et si ce n'est pas le cas, il initialise detection à 1. Dans le cas contraire, le script se relance lui même pour tester une autre position jusqu'à ce qu'il en trouve une valide.

[edit] Comment utiliser notre simulation ?

Vous pouvez modifier le nombre d'agent rouge et le nombre d'agent bleu avant de lancer la simulation. Pour appliquer les réglages et remettre à 0, il suffit de cliquer sur KedamaWorld reset. Il ne faut jamais mettre plus d'agent que de case (soit moins de 10 000 agents) sinon l'application freeze en essayant de répartir les individus sur des cases différentes. Pour contrôler l'application, vous disposez de trois boutons :

  • Go : il lance la simulation
  • Stop : il met la simulation en pause (go relancera sans remettre a 0)
  • Step : il lance la simulation itération par itération

La préférence des agents peut être changée pendant le déroulement de la simulation grâce au slider ou en rentrant directement la valeur dans le champ.

[edit] Analyse de nos résultats

[edit] Vérification du comportement

Quand on fait varier la préférence de 0 a 100%, on peut remarquer que les agents bougent par palier. Il y a 22 pourcentages différents où des agents deviennent mécontents, et ils correspondent aux cas possibles de voisinage (en éliminant les redondants) : 1/2, 2/2, 1/3, 2/3...7/8. On peut donc en déduire que notre simulation réagit correctement par rapport à la règle du modèle de Schelling.

[edit] Faible occupation du monde

Nous avons d'abord commencé par mettre relativement peu d'agent pour que le vide entre en compte. Voici ce que l'on obtient avec 30% de l'espace occupé (soit 1500 agents de chaque type) :

Image:projet-iad6.jpg

On remarque que plus la préférence est grande, plus il y a de l'espace entre les groupes et les petits groupes ont presque tous disparus.

[edit] Forte occupation du monde

Visuellement, les résultats obtenus à partir d'une occupation du monde très forte sont beaucoup plus intéressants. voici ce que l'on obtient avec 96% de l'espace occupé (soit 4800 agents de chaque type) :

Image:projet-iad7.jpg

Les groupes d'agents sont beaucoup plus grands (seulement cinq groupes à la fin) que dans la partie 3.2.

[edit] Propriétés de la simulation

On remarque que la ségrégation commence vraiment à partir d'une préférence de 20%. En dessous, il n'existe que de très petits groupes totalement mélangés. Si on augmente la préférence, on remarque que les petits groupes disparaissent progressivement au profit des grands. Plus la population d'agent est grande, et plus cette propriété se vérifie (il ne reste que cinq groupes avec 96% d'occupation, alors que l'ont peu à peine les compter à 30% d'occupation).

On remarque aussi que plus il y a d'agents dans la simulation, plus on a besoin d'itération pour que le monde devienne stable. En effet les chances que l'arrivée de quelques individus perturbent un groupe en place est beaucoup plus grande (peu de place libre). On peut donc en déduire que la ségrégation dépend de deux facteurs :

  • Le pourcentage d'occupation de l'espace
  • La préférence des agents

[edit] Conclusion

Le modèle de Schelling met en évidence le résultat de décisions individuelles au sein d'un groupe. Même si chaque agent est relativement peu exigeant (une préférence de 30% par exemple), il se forme une ségrégation relativement importante au niveau macroscopique. Ce résultat est accentué si l'espace est saturé d'individus. Les décisions individuelles sont donc amplifiées par un effet de groupe

Même si les agents se comportent de façon peu rationnelle (possibilité de déplacement vers une zone pire par exemple), la simulation reproduit les mécanismes que l'ont peut observer en zone urbaine, notamment la formation des ghettos.

[edit] Téléchargements


Contact : Olivier Gonet | Frank Blais

Personal tools