Summit-Sim ver. 3.0

Give the model a try!  Directions for use are listed below the applet, as well as, a summary of the rational behind the program.

A video overview of the model can be found on my YouTube Channel - Complxity Geek.

powered by NetLogo

A working copy of the model can be downloaded from My Google Drive.

WHAT IS IT?

SummitSim is a rule-based, multi-agent, discrete-event model with a 51X51 lattice structure, upon which a randomly distributed set of upwardly-mobile agents migrate to find their ideal residential location. SummitSim was designed to explore the link between residential migration patterns, Pareto distributions, Schelling segregation and health outcomes, based on our empirical study of Summit County and its 20 communities.

Three types of agents inhabit the world of SummitSim: rich agents (red), middle-class agents (blue) and poor agents (green)—the number of which is determined by the three population sliders on the left-side of the SummitSim dashboard. We used several factors from our study of Summit County to determine the population of agents we would study, including differences in household income (circa 1999/2000); education; the capacity to change residential location; and work type. Poor Agents represent those agents in Summit County who are financially struggling. In 2000, the median household income in Summit County was $42,000. Using Census data, poor agents represent roughly 58% of Summit County (with a household income range of $0 to $49,000). Poor agents are associate-level educated or less, work primarily low-level white collar or blue collar jobs or are unemployed. Despite differences, all poor agents have difficulty changing residential location given their financial situation. Middle class agents (31% of Summit County) make between $41,000 and $99,000, have some college education or higher, work skilled-blue collar, white-collar or professional jobs, and are moderately able to change residential location. Affluent agents (11% of Summit population) represent those households in Summit County making $100,000 or more, who are college educated, have professional-class jobs or lucrative blue-collar jobs, and are able to change easily residential location.

In terms of controls, three rules govern the discrete migration behavior of SummitSim agents. These rules are Preference, Preference-Degree, and Mobility. Preference is a modification of Schelling’s famous segregation rule (1978). Unlike the original Schelling model, however, wherein agents seek to live near their own kind, Preference concerns sprawling, upwardly mobile agents migrating to live near agents of a similar or higher status. While sprawl produces segregated neighborhood, it is not necessarily about agents migrating to live near similar agents. Sprawl is about agents migrating to live in better neighborhoods. For rich agents, better means neighborhoods with more rich agents. For middle agents, better also means living near more rich agents, or at least lots of middle-class agents. For poor agents, better means living near middle-class agents, if they can. Following this logic, in SummitSim, at each discrete point in time, (a) rich agents seek to live near rich agents; (b) middle-class agents seek to live near rich agents; if they cannot, they seek to live near other middle-class agents; if they find themselves in a neighborhood with 4 or more middle-agents, they stay; and (c) poor agents seek to live near middle-class agents; if they cannot, they stay where they are.

Preference-Degree determines the number of higher status agents around which agents prefer to live. In a 2-D lattice structure, “neighbors” is defined as the total number of spaces (squares) available around an individual agent, which range from 0 to 8. In SummitSim, preference ranges from 1 to 3. Our large tests of preference-degree find that anything beyond a preference of 3, the model breaks down, it cannot settle.
Movability is the capacity for an agent to migrate to the neighborhood in which they ultimately desire to live. Ranging from 1 to 6, mobility is defined as the number of spaces an agent can move per iteration. Following our empirical analysis of Summit County and the recent housing crisis in the United States, we set the movability of poor agents at 1, primarily because it is very difficult for these agents to buy homes, sell homes or rent a more expensive apartment in order to move. We set the movability for middle-class agents at 3, because they are moderately able to sell their homes or buy a new home or rent a more expensive apartment in order to change location. And, we set the movability at 6 for rich agents because they can move with little effort.

SummitSim is comprised of two major charts. The first chart is a unhappiness rating. At each iteration, agents are asked if they are happy. Happiness is defined as living in the type of neighborhood they seek. The Unhappiness Chart maps the percentage of affluent, middle-class and struggling agents unhappy at each iteration. The second chart is a healthiness rating. We used a rough indicator of community-health for our abbreviated version of SummitSim. If the 9X9 region in which an agent is living has three or more rich agents, they are healthy. The healthiness charts provide the overall percentage of agents in SummitSim who are healthy, followed by percentages for rich, middle and poor agents.

We explored two questions. First, do the sprawling migration patterns of the heterogeneous agents living in SummitSim result in the clustering and spatial segregation (distribution) of affluence we see in Summit County? The answer is yes. Running SummitSim with a preference rating of 3 for all agents results in such clustering. This rating means that, for each iteration of SummitSim, rich agents sought to live in a neighborhood with three or more rich agents; middle-class agents also sought to live in a neighborhood with three rich agents; if they could not migrate to such a neighborhood, they sought to live near other middle-class agents; if they found themselves in a neighborhood with four or more other middle-class agents, they stayed; finally, poor agents sought to live in neighborhoods with three or more middle-class agents if they could; if they could not, they stayed where they were. A preference rating of 3 leads to significant spatial clustering and to even more extreme patterns of segregation than the ones found in our analysis of Summit County. There are very tight clusters of rich agents, surrounded by a few middle-class agents; there are large, loose clusters of middle-class agents spread out in the same basic area, moving from the top-right corner of SummitSim to the bottom lower-left corner. Finally, there are tight clusters of poor agents, some of which are very large.

The second question we explored was: If the sprawling migration behaviors of our heterogeneous agents leads to spatial clustering, does this segregation of affluence result in community-level health inequalities, as seen in Summit County? The answer is also yes. From the start of the model to its completion, the unhealthiness of poor agents never droppes below roughly 41 percent. Meanwhile, the rich agents had near perfect health. These healthiness ratings fit with our analysis of Summit County; in particular, our comparison of the poorest clusters with the more affluent.

BACKGROUND

Two important principles governing upward social mobility are Pareto’s 80/20 rule and Schelling’s segregation threshold. Pareto shows that wealth follows a power law, where a few have the most. Schelling shows that neighborhood preference (beyond a certain threshold) leads to spatial segregation. The link between these two principles, however, remains undeveloped—particularly in relation to the current U.S. financial crisis (circa 2008). To explore this link, we created an agent-based, Pareto universe of rich, middle and poor agents. The rules for this universe follow Schelling, with a slight modification: while rich agents seek their own, middle and poor agents do not; instead (pursuing upward mobility), middle agents seek rich agents and poor agents seek middle agents. Congruent with the current U.S. financial crisis, our model finds that, in a log-normal wealth distribution with a power-tail, moderate upward social mobility produces spatial segregation, instability and, in particular, unhappiness on the part of middle-class and poor agents. We call this insight the upward social mobility rule (MR). Unexpectedly, the MR also provides a corrective: it appears that, at threshold, upward social mobility leads to integrated, stable neighborhoods with very high rates of happiness. The MR therefore suggests that the U.S. financial/housing crisis might be effectively addressed for the greater good of all if upward social mobility is controlled and regulated, even on the part of poor households.

HOW TO USE IT

1. Determine the number of red, blue and green agents. RED are rich agents; BLUE are middle-class agents; and GREEN are poor agents.

2. PARETO DISTRIBUTION: Use the sliders to determine population estimates. In a Pareto universe, RED agents are few (e.g., 90 to 100); BLUE agents are perhaps double in size or more (e.g., 300 to 320) and GREEN agents are the largest group (e.g., 700 to 750). You can try any Pareto estimate you want or try other arrangements, perhaps based on a log-normal distribution or Gaussian (bell shaped) distribution.

3. PREFERENCE DEGREE: Use the sliders to determine the number of higher status agents each color is seeking. In our model, A) RED seek other RED; B) BLUE seek other RED and C) GREEN seek other BLUE. The higher the preference-degree is for each agent type, the harder it will be for those agents to secure a position of upward mobility.

4. BLUE agents will also settle for a neighborhood containing a specified number of other BLUE agents if there are no RED agents in range.  This settle preference is controlled by the MIDDLE-SETTLE slider.

5. GREEN agents will not move if there are no BLUE agents in range.

6. MOVABILITY: Use the sliders to determine the movability of RED, BLUE and GREEN agents. Movability determines how many spaces an agent can mover per iteration. In the real world, RED agents have the greatest movability to move because of their wealth. Poor agents have the least movability to move because of their lack of wealth. Try different movability combinations to see what impact it has on mobility.

7. SETUP: Once you have completed the above four steps, hit SETUP and you are ready to go. All you need to do next is hit GO. When you want the model to stop hit GO again.

--------------------Click GO to start the simulation.---------------------------------

NETLOGO REFERENCES

Schelling, T. (1978). Micromotives and Macrobehavior. New York: Norton.
See also a recent Atlantic article: Rauch, J. (2002). Seeing Around Corners; The Atlantic Monthly; April 2002;Volume 289, No. 4; 35-48. http://www.theatlantic.com/issues/2002/04/rauch.htm

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.

Wilensky, U. (2005). NetLogo Wolf Sheep Predation (System Dynamics) model. http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation(SystemDynamics). Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

STUDY REFERENCES

1. Boccara, N. Modeling Complex Systems (Springer, New York, 2004).
2. Souma, W. Universal structure of the personal income distribution. Fractals-Complex Geometry Patterns and Scaling in Nature and Society 9, 463-470 (2001).
3. Coelho, R., Richmond, P., Barry, J. & Hutzler, S. Double power laws in income and wealth distributions. Physica A 387, 3847-3851 (2008).
4. Bruch, E. E. & Mare, R. D. Neighborhood choice and neighborhood change. AJS 112, 667-709 (2006).
5. Clark, W. A. V. Residential preferences and neighborhood racial segregation: A test of the Schelling segregation model. Demography 28, 1-19 (1991).
6. Schiller, R. J. Irrational Exuberance, 2nd edition. Princeton Univ Press, Princeton 2005).
7. Fujita, M., Krugman, P. & Venables, A.J. The Spatial Economy: Cities, Regions and International Trade. (MIT Press, Boston, 2001).
8. Surowiecki, J. Going for broke. New Yorker, The Financial page, 7 April 2008.
9. Soros, G. The New Paradigm for Financial Markets: The Credit Crisis of 2008 and What It Means (Public Affairs, New York, 2008.
10. Neckerman, K. M. & Torche F. Inequality: causes and consequences. Ann Rev of Soc 33, 335-357.
11. Krugman, P. The great wealth transfer. Rolling Stone, 30 Nov 2006 (accessed at: www.rollingstone. com/politics/ story/12699486/paul_krugman_on_the_great_wealth_ transfer/print.
12. Bowles, S., Durlauf, S. N. & Hoff K. Poverty Traps (Princeton University Press, Princeton, 2006).
13. Transit Cooperative Research Program. Costs of Sprawl 2000-TCRP Report 74. (National Academy Press, Washington D.C., 2002). (accessed at: onlinepubs.trb.org/Onlinepubs/ tcrp/tcrp_rpt_74-a.pdf).
14. Robert, S. Socioeconomic position and health: the independent contribution of community socioeconomic context. Ann Rev of Soc 25, 489-516.
15. Health inequalities and place: A theoretical conception of neighborhood. Soc Science & Med 65, 1839-1852.
16. Epstein, J. Generative Social Science: Studies in Agent-Based Computational Modeling (Princeton University Press, Princeton, 2007).
17. Wilensky, U. NetLogo. (accessed at: ccl.northwestern.edu/netlogo) (Center for Connected Learning and Computer-Based Modeling. Northwestern University, Evanston, IL, 1999).


PROCEDURES

;; Summit-Sim ver. 3.0

;; Changes from ver 2.5b - The code for checking the health state of the agents has been modified.  Agents now report whether they are healthy or unhealthy
;; based on the desired number of red agents in a 4 patch radius around them, instead of only checking immediate neighbors.  Graph plots have been updated
;; to reflect the changes made.

;; Changes from ver 2.4 - The movement behavior of the middle agents has been modified.  Middle agents seek rich.  If no rich are in their movability radius,
;; the agent checks to see if the desired number of middle agents (determined by the middle-settle slider) are in their movability radius.  If there are,
;; the agent remains where it is.  If the number of other middle agents is below the desired number, the agent will move toward the nearest middle agent in
;; it's movability radius. 

;; Changes from ver 2.3 - The movement behavior of the middle and poor agents has been modified.  If a middle agent does not have any of the desired
;; breed within their movabilty radius, they will move toward other middle agents that are within the movability radius.  If there are no middle
;; agents in the radius, then movement is random. If a poor agent does not have any of the desired breed within their movabilty radius, then the poor
;; agent does not move.

;; Changes from ver 2.2 - The movement of the agents is no longer random as they seek happiness.  If the agent sees other agents of the desired breed within
;; its movability radius, it will move toward the nearest agent of the desired type.  If there are no agents of the desired type with the radius, then
;; movement is random.
 
;; Changes from ver. 2.1 - The health check now reports 4 different levels of health based on the number of desired agents of a specific breed as neighbors.
;; Graph plots have been cleaned up and consolidated to better show outcome results.

breed [rich richperson] ;; Rich, middle and poor are breeds of turtle. 
breed [middle middleperson]
breed [poor poorperson]

globals [
  percent-unhappy ;; Percentage of all agents that are unhappy.
  unhappy-rich  ;; Percentage of all rich agents that are unhappy.
  unhappy-middle  ;; Percentage of all middle agents that are unhappy.
  unhappy-poor   ;; Percentage of all poor agents that are unhappy.
  unhealthy-rich  ;; Percentage of all rich agents that are unhealthy.
  unhealthy-middle  ;; Percentage of all middle agents that are unhealthy
  unhealthy-poor  ;; Percentage of all poor agents that are unhealthy
  percent-unhealthy  ;; Percentage of all agents that are unhealthy.
  ]
  
turtles-own [
  happy? ;; Indicates if happy with neighbors based on preference rate.
  healthy? ;; Indicates if agent has perfect health based on type/number of neighbors.
  preference-count ;; Counts how many preferred neighbors a breed has.
  movability ;; Controls the distance the turtles can move each iteration.
  health-count  ;; Counts how many neighbors for health check.
  rich-group  ;;Agent subset for middle seek.
  same-group  ;;Agent subset for rich seek.
  middle-group ;;Agent subset for poor seek.
  middle-settle-group  ;;Agent subset for middle with no rich nearby.
  middle-settle-count  ;;Counts number of turtles in middle-settle-group.
  nearest-same  ;;Nearest agent in the same-group.
  nearest-rich  ;;Nearest agent in the rich-group.
  nearest-middle  ;;Nearest agent in the middle-group.
  nearest-settle-middle  ;; Nearest agent in the middle-settle-group.
  ]


to setup ;; Clear previous run and setup initial agent locations.
  clear-all
  pop-check
  setup-agents
  initial-happy
  healthy-check
  update-globals
  do-plots
end

to go ;; Run the simulation.
  if all? turtles [happy?] [ stop ] ;; if all the turtles are happy then the model breaks out of the go loop.
  happy-check
  healthy-check 
  update-globals
  do-plots
  tick  
end



to pop-check  ;; Make sure total population does not exceed total number of patches.
  if initial-number-rich + initial-number-middle + initial-number-poor > count patches
    [ user-message (word "This Pareto Universe only has room for " count patches " agents.")
      stop ]
end

to setup-agents ;; Create the desired number of each breed on random patches.
  set-default-shape rich "person"
  set-default-shape middle "person"
  set-default-shape poor "person"
  
  ask n-of initial-number-rich patches
    [ sprout-rich 1
      [ set color red ] ]
      
  ask n-of initial-number-middle patches
    [ sprout-middle 1
      [ set color blue ] ]
      
  ask n-of initial-number-poor patches
    [ sprout-poor 1
      [ set color green ] ]
end

to happy-check ;; Test if agents are happy and move them if not.
  ask rich [
    set preference-count count (turtles-on neighbors) with [breed = rich ]
    set movability movability-rich
    set happy? preference-count >= number-of-rich-preferred-by-rich
    ]
    ask rich with [ not happy? ] 
      [ rich-find-new-spot ]
   
  ask middle [
    set preference-count count (turtles-on neighbors) with [breed = rich ]
    set movability movability-middle
    set happy? preference-count >= number-of-rich-preferred-by-middle
    ]
    ask middle with [ not happy? ] 
      [ middle-find-new-spot ]
  
  ask poor [
    set preference-count count (turtles-on neighbors) with [breed = middle ]
    set movability movability-poor
    set happy? preference-count >= number-of-middle-preferred-by-poor
    ]
    ask poor with [ not happy? ] 
      [ poor-find-new-spot ]
      
end   

to healthy-check  ;; Test if agents are healthy.
  ask turtles [
    set health-count count (turtles in-radius 4) with [breed = rich ]
    set healthy? health-count >= 3
    ]
    
end

to initial-happy  ;; Check the happiness state of all agents before the simulation begins.
  ask rich [
    set preference-count count (turtles-on neighbors) with [breed = rich ]
    set movability movability-rich
    set happy? preference-count >= number-of-rich-preferred-by-rich
    ]
     
  ask middle [
    set preference-count count (turtles-on neighbors) with [breed = rich ]
    set movability movability-middle
    set happy? preference-count >= number-of-rich-preferred-by-middle
    ]
  
  ask poor [
    set preference-count count (turtles-on neighbors) with [breed = middle ]
    set movability movability-poor
    set happy? preference-count >= number-of-middle-preferred-by-poor
    ]
end

to wander ;; Pick the patch the unhappy agent moves to if not actively seeking.
    rt random-float 360
    fd random-float movability
    move-to patch-here
    if any? other turtles-here
    [wander]
  
end

to rich-find-new-spot  ;;Seek routine for unhappy rich agents.
  seek-same
  ifelse any? same-group
  [move-toward-same]
  [wander]
end

to middle-find-new-spot  ;;Seek routine for unhappy middle agents.
  seek-rich
  settle-for-middle
  ifelse any? rich-group
  [move-toward-rich]
  [settle-check]
end

to poor-find-new-spot  ;;Seek routine for unhappy poor agents.
  seek-middle
  if any? middle-group
  [move-toward-middle]
end

to move-toward-same  ;;Move rich agent toward nearest rich agent.
  set nearest-same min-one-of same-group [distance myself]
  face nearest-same
  fd random-float distance nearest-same - 1
   move-to patch-here
  if any? other turtles-here
    [wander]
end

to move-toward-rich  ;;Move middle agent toward nearest rich agent.
  set nearest-rich min-one-of rich-group [distance myself]
  face nearest-rich
  fd random-float distance nearest-rich - 1
   move-to patch-here
  if any? other turtles-here
    [wander]
end

to move-toward-middle  ;;Move poor agent toward nearest middle agent.
  set nearest-middle min-one-of middle-group [distance myself]
  face nearest-middle
  fd random-float distance nearest-middle - 1
   move-to patch-here
  if any? other turtles-here
    [wander]
end

to settle-toward-middle  ;;Move middle agent toward nearest middle agent.
  set nearest-settle-middle min-one-of middle-settle-group [distance myself]
  face nearest-settle-middle
  fd random-float distance nearest-settle-middle - 1
   move-to patch-here
  if any? other turtles-here
    [wander]
end

to settle-check  ;;If middle agent has less than desired number of middle agents around it, have agent move toward nearest other middle agent.
  if middle-settle-count < middle-settle
  [settle-toward-middle]
end

to seek-same  ;;adds all rich in vision radius of rich to an agent subset for that agent.
  set same-group other rich in-radius (movability-rich + 1)
 
end

to seek-rich  ;;adds all rich in vision radius of rich to an agent subset for that agent.
  set rich-group rich in-radius (movability-middle + 1)
end

to seek-middle  ;;adds all middle in vision radius of poor to an agent subset for that agent.
  set middle-group middle in-radius (movability-poor + 1)
end

to settle-for-middle  ;;adds all middle in vision radius of middle to an agent subset for that agent.
  set middle-settle-group middle in-radius (movability-middle + 1)
  set middle-settle-count count (middle-settle-group)
end


to update-globals ;; Calculate agent states each tick.
  set percent-unhappy (count turtles with [not happy?]) / (count turtles) * 100
  set unhappy-rich (count rich with [not happy?]) / (count rich) * 100
  set unhappy-middle (count middle with [not happy?]) / (count middle) * 100
  set unhappy-poor (count poor with [not happy?]) / (count poor) * 100
  set unhealthy-rich (count rich with [not healthy?]) / (count turtles) * 100
  set unhealthy-middle (count middle with [not healthy?]) / (count turtles) * 100
  set unhealthy-poor (count poor with [not healthy?]) / (count turtles) * 100
  set percent-unhealthy (count turtles with [ not healthy?]) / (count turtles) * 100

end

to do-plots ;; Update graphs.
  set-current-plot "Percent Unhappy"
  set-current-plot-pen "Unhappy-Rich"
  plot unhappy-rich
  set-current-plot-pen "Unhappy-Middle"
  plot unhappy-middle
  set-current-plot-pen "Unhappy-Poor"
  plot unhappy-poor
  set-current-plot "Health Levels"
  set-current-plot-pen "Unhealthy-Rich"
  plot unhealthy-rich
  set-current-plot-pen "Unhealthy-Middle"
  plot unhealthy-middle
  set-current-plot-pen "Unhealthy-Poor"
  plot unhealthy-poor

end

; *** NetLogo 4.1 Model Copyright Notice ***
;
; Copyright 2010 by Dr. Brian Castellani, Michael D. Ball, & Kenneth Carvalho.  All rights reserved.
;
; Permission to use, modify or redistribute this model is hereby granted,
; provided that both of the following requirements are followed:
; a) this copyright notice is included.
; b) this model will not be redistributed for profit without permission
;    from Dr. Brian Castellani, Michael D. Ball, & Kenneth Carvalho.
; Contact Dr. Brian Castellani & Michael D. Ball for appropriate licenses for redistribution for
; profit.
;
; To refer to this model in academic publications, please use:
; Castellani, B., Ball, M., Carvalho, C. (2010).  Summit-Sim ver. 3.0.
; http://www.personal.kent.edu/~mdball/pareto_schelling_mobility.htm.
; KSUAC Center for Complexity in Health,
; Kent State University at Ashtabula, Ashtabula, OH.
;
; In other publications, please use:
; Copyright 2010 Dr. Brian Castellani, Michael D. Ball, & Kenneth Carvalho.  All rights reserved.
; See http://www.personal.kent.edu/~mdball/pareto_schelling_mobility.htm
; for terms of use.
;
; *** End of NetLogo 4.1 Model Copyright Notice ***