Schelling's Tipping Model of Segregation In the 1970's Thomas C. Schelling created a simple model to show how segregation might "emerge" despite the good intensions of all the actors. This model is described in his book ``Micromotives and Macrobehavior'' (Norton, NY, 1978), and in a paper in volume 1 of Math Sociology. This model is now considered the classic example of an Agent-Based Model (ABM)---one which, despite its extreme simplicity, exhibits many of the characteristics of complex adaptive systems (emergence, effects of heterogeneity, path dependence). Note that Schelling "ran" the model by moving dimes and pennies around *by hand* on a checker board! This model, its genesis and importance is described in The New Yorker (June 3 1996) and in a subsequent book with the same title, "The Tipping Point," both by Malcolm Gladwell. Jonathan Rauch also wrote an article, "Seeing Around Corners" about Schelling (and about other agent-based models and modelers, including Rob Axtell and others at Brookings) in The Atlantic Monthy (April 2002) ( http://www.theatlantic.com/issues/2002/04/rauch ). The basic Schelling model There are two types of Agents -- Red (type 1) and Green (type 2). Each agent has a threshold for whether or not it is happy where it is. An agent is happy if the fraction of its neighbors of its own type is >= its threshold. An agent's neighbors are agents in the cells immediately surrounding it (i.e., in its "Moore" neighborhood). So if an Red agent has a threshold of 0.30 and it has 2 Red neighbors and 4 Green neighbors, the fraction of neighbors of the same type (0.33) is >= its threshold, so it will be happy where it is. However, if it has only 1 Red neighbor, the fraction of neighbors will be 0.20, less than its threshold, so it will want to move. Note this is a bounded world, so agents at edges and in corners have different number of potential neighbors. Note also that agents don't count themselves when calculating the fraction of same type in their neighborhood. In general, an Agent-Based Model (ABM) is defined by specifying: 1. The Agents - chracteristics (e.g., age, wealth, preferences,...) - memory (e.g., recent interactions) - location: social (individual connections); spatial - capabilities: what it can do (move, sense, trade, ...) - decision rules (heuristics): how to choose what to do - learning mechanisms 2. The Non-Agent environment - Physical world - Institutional world. 3. A "Schedule of Activation" - Which agents get a chance to act next? - Non-agent enviromental dynamics (erosion, growth, ...) For Schelling's model, the specifications are *very* simple: 1. Agents Characteristics: type (R=1 or G=2), threshold in [0,1] Location: location in 2-d cellular world Capabilities: Sense neighborhood density of types Move ( to random open cell ) 2. Environment: 2-D world, bounded. Max of 1 agent per cell. 3. Schedule of activation -- repeat: Pick an unhappy agent at random, let it move That's it!! Particular Example run: - 20x20 world - 300 agents, 1/2 red, 1/2 green - threshold set to 0.30 for all - move to random open spot if unhappy - World display (in oneMoveMode): white(3) = red who wants to move next blue(6) = green who wants to move next - several graphs to track degree of segregation (eg numFullySegregated Green and Red) To run it enter this at a terminal session prompt: /users/rlr/SwarmStuff/CSCS-Demos/Tipping2-swarm2.1.1/tipping \ -Dosm=1 -Dtr=0.3 -Dtg=0.3 -Dseed=3858937777 & Note: the backslash ( \ ) at the end of that tells unix: the command continues on the next line and the amphersand ( & ) at the end tells unix to run the command "in the background" i.e., allow the user to continue to enter commands to the terminal session. Initialize the world: next - note the agent who wants to move next - note open spaces - note graphs (minimize all but one) Then run for a bit... Notes: - Much higher degree of segregation *even though* no agent wants to be segregated, and in fact all agents were will to live as a minority!! - In this case it eventually reaches a stable point, where all agents are happy with their neighborhoods. - What if we have agents very occassionally make random moves, whether they are happy or not? Question: Will the degree of segregation go up or down? Why? E.g., one plausible prediction is that it will go down, because the degree of segregation is now quite high, so random moves will more likely move agents out of segregated neighborhoods into non-segregated ones. set randomMoveProb 0.001 oneStepMode 0 Run for a while.... and what do we see? Why ?? Many variations and complications of this model possible: - heterogenous thresholds - different move rules (only move to acceptable...) - different neighborhood rules social neighborhoods (vs only spatial) - other constraints (income, ...)