Segregation - dissimilar
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
OVERVIEW
This is a modification of the stock NetLogo simulation on Segregation, with an added slider for "%-dissimilar-wanted", for individuals who want to live near "others".
WHAT IS IT?
This project models the behavior of two types of agents in a neighborhood. The orange agents and blue agents get along with one another. But each agent wants to make sure that it lives near some of "its own." That is, each orange agent wants to live near at least some orange agents, and each blue agent wants to live near at least some blue agents. The simulation shows how these individual preferences ripple through the neighborhood, leading to large-scale patterns.
This project was inspired by Thomas Schelling's writings about social systems (such as housing patterns in cities).
HOW TO USE IT
Click the SETUP button to set up the agents. There are approximately equal numbers of orange and blue agents. The agents are set up so no patch has more than one agent. Click GO to start the simulation. If agents don't have enough same-color neighbors, they move to a nearby patch. (The topology is wrapping, so that patches on the bottom edge are neighbors with patches on the top and similar for left and right).
The DENSITY slider controls the occupancy density of the neighborhood (and thus the total number of agents). (It takes effect the next time you click SETUP.) The %-SIMILAR-WANTED slider controls the percentage of same-color agents that each agent wants among its neighbors. For example, if the slider is set at 30, each blue agent wants at least 30% of its neighbors to be blue agents.
The % SIMILAR monitor shows the average percentage of same-color neighbors for each agent. It starts at about 50%, since each agent starts (on average) with an equal number of orange and blue agents as neighbors. The NUM-UNHAPPY monitor shows the number of unhappy agents, and the % UNHAPPY monitor shows the percent of agents that have fewer same-color neighbors than they want (and thus want to move). The % SIMILAR and the NUM-UNHAPPY monitors are also plotted.
The VISUALIZATION chooser gives two options for visualizing the agents. The OLD option uses the visualization that was used by the segregation model in the past. The SQUARE-X option visualizes the agents as squares. Unhappy agents are visualized as Xs.
THINGS TO NOTICE
When you execute SETUP, the orange and blue agents are randomly distributed throughout the neighborhood. But many agents are "unhappy" since they don't have enough same-color neighbors. The unhappy agents move to new locations in the vicinity. But in the new locations, they might tip the balance of the local population, prompting other agents to leave. If a few agents move into an area, the local blue agents might leave. But when the blue agents move to a new area, they might prompt orange agents to leave that area.
Over time, the number of unhappy agents decreases. But the neighborhood becomes more segregated, with clusters of orange agents and clusters of blue agents.
In the case where each agent wants at least 30% same-color neighbors, the agents end up with (on average) 70% same-color neighbors. So relatively small individual preferences can lead to significant overall segregation.
THINGS TO TRY
Try different values for %-SIMILAR-WANTED. How does the overall degree of segregation change?
If each agent wants at least 40% same-color neighbors, what percentage (on average) do they end up with?
Try different values of DENSITY. How does the initial occupancy density affect the percentage of unhappy agents? How does it affect the time it takes for the model to finish?
Can you set sliders so that the model never finishes running, and agents keep looking for new locations?
EXTENDING THE MODEL
The find-new-spot
procedure has the agents move locally till they find a spot. Can you rewrite this procedure so the agents move directly to an appropriate new spot?
Incorporate social networks into this model. For instance, have unhappy agents decide on a new location based on information about what a neighborhood is like from other agents in their network.
Change the rules for agent happiness. One idea: suppose that the agents need some minimum threshold of "good neighbors" to be happy with their location. Suppose further that they don't always know if someone makes a good neighbor. When they do, they use that information. When they don't, they use color as a proxy -- i.e., they assume that agents of the same color make good neighbors.
The two different visualizations emphasize different aspects of the model. The SQUARE-X visualization shows whether an agent is happy or not. Can you design a different visualization that emphasizes different aspects?
NETLOGO FEATURES
sprout
is used to create agents while ensuring no patch has more than one agent on it.
When an agent moves, move-to
is used to move the agent to the center of the patch it eventually finds.
Note two different methods that can be used for find-new-spot, one of them (the one we use) is recursive.
CREDITS AND REFERENCES
Schelling, T. (1978). Micromotives and Macrobehavior. New York: Norton.
See also: Rauch, J. (2002). Seeing Around Corners; The Atlantic Monthly; April 2002;Volume 289, No. 4; 35-48. https://www.theatlantic.com/magazine/archive/2002/04/seeing-around-corners/302471/
HOW TO CITE
If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.
For the model itself:
- Wilensky, U. (1997). NetLogo Segregation model. http://ccl.northwestern.edu/netlogo/models/Segregation. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Please cite the NetLogo software as:
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
COPYRIGHT AND LICENSE
Copyright 1997 Uri Wilensky.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.
This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2001.
Comments and Questions
globals [ percent-similar ; on the average, what percent of a turtle's neighbors ; are the same color as that turtle? percent-unhappy ; what percent of the turtles are unhappy? ] turtles-own [ happy? ; for each turtle, indicates whether at least %-similar-wanted percent of ; that turtle's neighbors are the same color as the turtle similar-nearby ; how many neighboring patches have a turtle with my color? other-nearby ; how many have a turtle of another color? total-nearby ; sum of previous two variables ] to setup clear-all ; create turtles on random patches. ask patches [ set pcolor white if random 100 < density [ ; set the occupancy density sprout 1 [ ; 105 is the color number for "blue" ; 27 is the color number for "orange" set color one-of [105 27] set size 1 ] ] ] update-turtles update-globals reset-ticks end ; run the model for one tick to go if all? turtles [ happy? ] [ stop ] move-unhappy-turtles update-turtles update-globals tick end ; unhappy turtles try a new spot to move-unhappy-turtles ask turtles with [ not happy? ] [ find-new-spot ] end ; move until we find an unoccupied spot to find-new-spot rt random-float 360 fd random-float 10 if any? other turtles-here [ find-new-spot ] ; keep going until we find an unoccupied patch move-to patch-here ; move to center of patch end to update-turtles ask turtles [ ; in next two lines, we use "neighbors" to test the eight patches ; surrounding the current patch set similar-nearby count (turtles-on neighbors) with [ color = [ color ] of myself ] set other-nearby count (turtles-on neighbors) with [ color != [ color ] of myself ] set total-nearby similar-nearby + other-nearby set happy? (similar-nearby >= (%-similar-wanted * total-nearby / 100) and (similar-nearby) <= ((100 - %-dissimilar-wanted) * total-nearby / 100)) ; add visualization here if visualization = "old" [ set shape "default" set size 1.3 ] if visualization = "square-x" [ ifelse happy? [ set shape "square" ] [ set shape "X" ] ] ] end to update-globals let similar-neighbors sum [ similar-nearby ] of turtles let total-neighbors sum [ total-nearby ] of turtles set percent-similar (similar-neighbors / total-neighbors) * 100 set percent-unhappy (count turtles with [ not happy? ]) / (count turtles) * 100 end ; Copyright 1997 Uri Wilensky. ; See Info tab for full copyright and license.
There is only one version of this model, created over 3 years ago by Daniel Faulkenberry.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.