Urban Suite - Economic Disparity
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model explores residential land-usage patterns from an economic perspective, using the socio-economic status of the agents to determine their preferences for choosing a location to live. It models the growth of two populations, one rich and one poor, who settle based on three properties of the landscape: the perceived quality, the cost of living, and the proximity to services (large red dots). These same properties then change based on where the different populations settle.
The model ultimately shows the segregation of populations based on income, the clustering of services in more affluent areas, and how people's attitude can lead either to a cluster condition (emphasis on proximity), or a condition of sprawl (emphasis on cost or quality).
HOW IT WORKS
Job sites (shown as red circles on the map) are created and destroyed. People (shown as small blue and pink squares) move in and move out. These people want to live near to jobs, but also consider the price (cost of living) and quality of prospective locations. But let's get more specific.
When a new place of employment comes into the world, it randomly samples some number of locations (controlled by the NUMBER-OF-TESTS slider), and chooses the one with the highest price (i.e. land-value). This may seem irrational at first, but the assumption this model makes is that jobs move toward where the wealth is. If there is more money in a certain area, then there are more affluent people to spend that money on goods and services.
The validity of this assumption in a real-world setting is worthy of skepticism. For instance, companies also wish to pay less rent or property tax, and so alternatively one could argue that they would be seeking the least expensive piece of land to occupy. This seems particularly true for the industrial sector, which has no need for consumers to be nearby.
In any case, the reader is encouraged to carefully examine all assumptions, challenge them, and perhaps extend the model to incorporate assumptions that are more plausible in his/her view. A model's predictions are only as good as the assumptions that underlie them.
Each "tick" of the model, some number of new poor people (controlled by the POOR-PER-STEP slider) and new rich people (controlled by the RICH-PER-STEP slider) enter into the world. When people enter the world, they randomly sample some number of locations, and choose to inhabit the one that maximizes "utility" for them, which is given by a hedonistic utility function.
There are two fundamentally different types of people in this model -- "poor" people (shown in blue) and "rich" people (shown in pink), and they have differing priorities. Both types of people wish to be located close to a place of employment. However, rich people seek a location that has good quality, heedless of price, whereas poor people seek locations with low price, disregarding quality.
The last important rule of the model is the effect that agents have on the land they inhabit. Rich people moving into an area cause the land price and quality to increase, whereas poor people cause the land price and quality to decrease. Nearby land attributes are affected as well, with the effect diminishing over distance.
HOW TO USE IT
Click the SETUP button first, to set up the model. All land in the world has the same price and quality. One job location is placed in the middle of the world, and several rich and poor people are spread out nearby it, which immediately affect the quality and price of the land they inhabit, as well as nearby land.
Click the GO button to start the simulation. To step through the simulation one "tick" at a time, use the GO-ONCE button.
There are five view modes, which are controlled by the buttons VIEW PRICE, VIEW QUALITY, VIEW DIST., VIEW RICH-UTILITY, and VIEW-POOR-UTILITY
VIEW PRICE displays the land-price value of each location, with white being a high price, black being a low price, and the various shades of yellow are in between.
VIEW QUALITY displays the quality value of each location, with white being a high price, black being a low price, and the various shades of green are in between.
VIEW DIST. displays the distance from each location to a place of employment. Brighter colors demonstrate closeness.
VIEW RICH-UTILITY displays the utility that rich people assign to each location on the map. Lighter values designate better utility, and darker values designate worse utility. Note that the highest utility areas may still be vacant, since each agent only samples a small set of the patches in the world
VIEW-POOR-UTILITY displays the utility that poor people assign to each location on the map. Lighter values designate better utility, and darker values designate worse utility.
The NUMBER-OF-TESTS slider affects how many locations each agent looks at when choosing a location that optimizes the agent's utility.
The RESIDENTS-PER-JOB slider determines how often a new place of employment is created in the world. For every RESIDENTS-PER-JOB people, a new place of employment appears.
There is, however, a maximum number of places of employment, which is controlled by the MAX-JOBS slider.
Some number of poor people enter the world each time step, as determined by the POOR-PER-STEP slider. Likewise, some number of rich people (determined by the RICH-PER-STEP slider) enter the world.
Some number of poor people and rich people disappear from the world each turn, as well, which is determined by the DEATH-RATE slider. Although it is called "death rate", it should not be taken literally -- it merely represents the disappearance of agents from the world that is being considered by the model, which could be caused by a number of factors (such as emigration). If DEATH-RATE is set to 5, this means that both 5 rich people and 5 poor people disappear each time step. The agents removed are always those that have been in the world for the longest period of time.
The priorities of the poor people can be adjusted with the POOR-PRICE-PRIORITY slider. If this slider is set to -1, this means that poor people do not care about price at all, and are only interested in being close to employment. If this slider is set to 1, then poor people only care about price, and do not concern themselves with job locations. Setting the slider at 0 balances these two factors.
Similarly, the priorities of rich people can be adjusted with the RICH-QUALITY-PRIORITY slider. On this slider, -1 means that rich people care only about having a short commute to their jobs, and not about the quality of the land, whereas 1 means that they care only about quality, and are not concerned with distance to employment. Again, 0 represents an equal balance of these priorities.
The TRAVEL DISTANCE plot shows the average distance that poor and rich people must travel to reach the nearest point of employment. Apart from the interesting visual patterns that form in the view, this plot is the most important output of the model.
The # OF JOBS monitor tells how many places of employment are currently in the world.
The POPULATION monitor tells how many total people there are in the world, and the POOR POP and RICH POP monitors give the poor and rich population sizes respectively.
THINGS TO NOTICE
Do the VIEW PRICE mode and the VIEW QUALITY mode look very similar? Apart from the fact that one is green, and the other is yellow, they might be showing identical values? To test this, you can right click (or control-click on a Mac computer) on one of the patches in the view and choose "inspect patch XX YY". You can do this for several patches, and you will find that the price and quality are always the same. In this model, whenever quality goes up or down, price changes in direct proportion.
What if NUMBER-OF-TESTS is small? Is the population more or less densely centered around the jobs? What if NUMBER-OF-TESTS is large?
Change the viewing mode to distance-from-jobs, by clicking the VIEW DIST button. Watch the model run, and the lines that form where gradients from two different jobs come together and overlap. These shapes are related to Voronoi polygons. You can learn more about them by looking at the "Voronoi" model in the NetLogo model library.
Even if the DEATH-RATE is set such that more people are leaving the world than entering it, the model does not allow the population to die out entirely -- instead, the population will stay small. If you grow the population for a while, and then raise the DEATH-RATE to balance out rich and poor people entering the world, then you can hold the population constant. In this case, you might view the scenario as the same people relocating within the model, rather than new people entering and old people leaving.
THINGS TO TRY
After letting the model run for a while, try switching back and forth between the VIEW POOR-UTILITY and VIEW RICH-UTILITY display modes. How many places that are dark for rich are bright for poor? Is there usually an inverse relationship? Are there places which both rich and poor find desirable, and if so, where are they? What if you move both priority sliders to the left?
Try drastically changing the POOR-PRICE-PRIORITY and RICH-QUALITY-PRIORITY sliders. Do rich people always have the shorter distances to employment, or do poor people sometimes have the shorter distances?
EXTENDING THE MODEL
As noted above in the THINGS TO NOTICE section, in this model price and quality of land are locked together, always holding the same values. Extend this model so that this isn't always the case. For example, you might make it so that when new people move into an area of the model, they only affect the quality of nearby locations in a small radius, whereas they affect the price of a broader circle of cells.
NETLOGO FEATURES
This model makes use of NetLogo's breeds to differentiate rich agents, poor agents, and job agents.
Extensive use is also made of the SCALE-COLOR primitive, which allows for the three different view modes of the model.
RELATED MODELS
This model is related to all of the other models in the "Urban Suite". In particular, this model shows elements of the concept of positive feedback, which is demonstrated in the "Urban Suite - Positive Feedback" model.
It might also be interesting to compare it to the models "Wealth Distribution" and "Voronoi".
CREDITS AND REFERENCES
This model was loosely based on a model originally written by William Rand and Derek Robinson as part of the Sluce Project at the University of Michigan (http://www.cscs.umich.edu/sluce). For more about the original model (SOME) that was the basis for this model, please see:
Brown D.G., Robinson D.T., Nassauer J.I., An L., Page S.E., Low B., Rand W., Zellner M., and R. Riolo (In Press) "Exurbia from the Bottom-Up: Agent-Based Modeling and Empirical Requirements." Geoforum.
This model was developed during the Sprawl/Swarm Class at Illinois Institute of Technology in Fall 2006 under the supervision of Sarah Dunn and Martin Felsen, by the following group of students: Danil Nagy and Bridget Dodd. See http://www.sprawlcity.us/ for more details.
Further modifications and refinements were made by members of the Center for Connected Learning and Computer-Based Modeling before releasing it as an Urban Suite model.
The Urban Suite models were developed as part of the Procedural Modeling of Cities project, under the sponsorship of NSF ITR award 0326542, Electronic Arts & Maxis.
Please see the project web site ( http://ccl.northwestern.edu/cities/ ) for more information.
HOW TO CITE
If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:
- Felsen, M. and Wilensky, U. (2007). NetLogo Urban Suite - Economic Disparity model. http://ccl.northwestern.edu/netlogo/models/UrbanSuite-EconomicDisparity. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern Institute on Complex Systems, Northwestern University, Evanston, IL.
COPYRIGHT AND LICENSE
Copyright 2007 Uri Wilensky.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit http://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.
Comments and Questions
breed [ rich a-rich ] breed [ poor a-poor ] breed [ jobs job ] ;; jobs are places of employment held by many people rich-own [utilityr] poor-own [utilityp] jobs-own [utility] patches-own [quality price sddist] globals [counter view-mode min-poor-util max-poor-util min-rich-util max-rich-util ] ;; ;; Setup Procedures ;; to setup ca set view-mode "quality" setup-jobs setup-patches setup-rich setup-poor ask patches [ update-patch-color ] reset-ticks end to setup-jobs create-jobs 1 ask jobs [ set color red set shape "circle" set size 2 ] end to setup-patches ask patches [ set quality 40 set price 40 ] ask patches [ set sddist min [distance myself] of jobs ] end to setup-rich create-rich 5 ask rich [ set color 126 set shape "box" let radius 10 setxy ( ( radius / 2 ) - random-float ( radius * 1.0 ) ) ( ( radius / 2 ) - random-float ( radius * 1.0 ) ) raise-price raise-value ] end to setup-poor create-poor 5 ask poor [ set color 105 set shape "box" let radius 10 setxy ( ( radius / 2 ) - random-float ( radius * 1.0 ) ) ( ( radius / 2 ) - random-float ( radius * 1.0 ) ) decrease-price decrease-value ] end to decrease-value ask patch-here [ set quality ( quality * 0.95 ) ] ask patches in-radius 1 [ set quality ( quality * 0.96 ) ] ask patches in-radius 2 [ set quality ( quality * 0.97 ) ] ask patches in-radius 3 [ set quality ( quality * 0.98 ) ] ask patches in-radius 4 [ set quality ( quality * 0.99 ) if (quality < 1) [ set quality 1] ] end to raise-price ask patch-here [ set price ( price * 1.05 ) ] ask patches in-radius 1 [ set price ( price * 1.04 ) ] ask patches in-radius 2 [ set price ( price * 1.03 ) ] ask patches in-radius 3 [ set price ( price * 1.02 ) ] ask patches in-radius 4 [ set price ( price * 1.01 ) if price > 100 [ set price 100 ] ] end to raise-value ask patch-here [ set quality ( quality * 1.05 ) ] ask patches in-radius 1 [ set quality ( quality * 1.04 ) ] ask patches in-radius 2 [ set quality ( quality * 1.03 ) ] ask patches in-radius 3 [ set quality ( quality * 1.02 ) ] ask patches in-radius 4 [ set quality ( quality * 1.01 ) if quality > 100 [ set quality 100 ] ] end to decrease-price ask patch-here [ set price ( price * 0.95 ) ] ask patches in-radius 1 [ set price ( price * 0.96 ) ] ask patches in-radius 2 [ set price ( price * 0.97 ) ] ask patches in-radius 3 [ set price ( price * 0.98 ) ] ask patches in-radius 4 [ set price ( price * 0.99 ) if (price < 1) [ set price 1] ] end ;; ;; Runtime Procedures ;; to go locate-poor locate-rich if counter > residents-per-job [ locate-service set counter 0 ] if count (rich) >= 20 [kill-rich] if count (poor) >= 20 [kill-poor] if count (jobs) >= max-jobs [kill-service] update-view do-plots tick end to locate-poor set counter ( counter + poor-per-step ) create-poor poor-per-step [ set color 105 set shape "box" evaluate-poor decrease-value decrease-price ] end to locate-rich set counter ( counter + rich-per-step ) create-rich rich-per-step [ set color 126 set shape "box" evaluate-rich raise-price raise-value ] end to evaluate-poor let candidate-patches n-of number-of-tests patches set candidate-patches candidate-patches with [ not any? turtles-here ] if (not any? candidate-patches) [ stop ] ;; we use a hedonistic utility function for our agents, shown below ;; basically, poor people are looking for inexpensive real estate, close to jobs let best-candidate max-one-of candidate-patches [ patch-utility-for-poor ] move-to best-candidate set utilityp [ patch-utility-for-poor ] of best-candidate end to-report patch-utility-for-poor report ( ( 1 / (sddist / 100 + 0.1) ) ^ ( 1 - poor-price-priority ) ) * ( ( 1 / price ) ^ ( 1 + poor-price-priority ) ) end to evaluate-rich let candidate-patches n-of number-of-tests patches set candidate-patches candidate-patches with [ not any? turtles-here ] if (not any? candidate-patches) [ stop ] ;; we use a hedonistic utility function for our agents, shown below ;; basically, rich people are looking for good quality real estate, close to jobs let best-candidate max-one-of candidate-patches [ patch-utility-for-rich ] move-to best-candidate set utilityr [ patch-utility-for-rich ] of best-candidate end to-report patch-utility-for-rich report ( ( 1 / (sddist + 0.1) ) ^ ( 1 - rich-quality-priority ) ) * ( quality ^ ( 1 + rich-quality-priority) ) end to kill-poor repeat ( death-rate ) [ ;always kill the person that's been around the longest ask min-one-of poor [who] [ die ] ] end to kill-rich repeat ( death-rate) [ ;always kill the person that's been around the longest ask min-one-of rich [who] [ die ] ] end to kill-service ; always kill the oldest job ask min-one-of jobs [who] [ die ] ask patches [ set sddist min [distance myself + .01] of jobs ] end to locate-service let empty-patches patches with [ not any? turtles-here ] if any? empty-patches [ ask one-of empty-patches [ sprout-jobs 1 [ set color red set shape "circle" set size 2 evaluate-job ] ] ask patches [ set sddist min [distance myself + .01] of jobs ] ] end to evaluate-job let candidate-patches n-of number-of-tests patches set candidate-patches candidate-patches with [ not any? turtles-here ] if (not any? candidate-patches) [ stop ] ;; In this model, we assume that jobs move toward where the money is. ;; The validity of this assumption in a real-world setting is worthy of skepticism. ;; ;; However, it may not be entirely unreasonable. For instance, places with higher real ;; estate values are more likely to have affluent people nearby that will spend money ;; at retail commercial shops. ;; ;; On the other hand, companies would like to pay less rent, and so they may prefer to buy ;; land at low real-estate values ;; (particularly true for industrial sectors, which have no need for consumers neraby) let best-candidate max-one-of candidate-patches [ price ] move-to best-candidate set utility [ price ] of best-candidate end ;; ;; Visualization Procedures ;; to update-view if (view-mode = "poor-utility" or view-mode = "rich-utility") [ let poor-util-list [ patch-utility-for-poor ] of patches set min-poor-util min poor-util-list set max-poor-util max poor-util-list let rich-util-list [ patch-utility-for-rich ] of patches set min-rich-util min rich-util-list set max-rich-util max rich-util-list ] ask patches [ update-patch-color ] end to update-patch-color ;; the particular constants we use to scale the colors in the display ;; are mainly chosen for visual appeal ifelse view-mode = "quality" [ set pcolor scale-color green quality 1 100 ][ ifelse view-mode = "price" [ set pcolor scale-color yellow price 0 100 ][ ifelse view-mode = "dist" [ set pcolor scale-color blue sddist ( 0.45 * ( max-pxcor * 1.414 ) ) ( 0.05 * ( max-pxcor * 1.414 ) ) ][ ifelse view-mode = "poor-utility" [ ; use a logarithm for coloring, so we see better gradation set pcolor scale-color sky ln patch-utility-for-poor ln min-poor-util ln max-poor-util ][ if view-mode = "rich-utility" [ ; use a logarithm for coloring, so we see better gradation set pcolor scale-color pink ln patch-utility-for-rich ln min-rich-util ln max-rich-util ]]]]] end ;; ;; Plotting Procedure ;; to do-plots let rtotal 0 let ptotal 0 let step 0 let rtime 0 let ptime 0 set-current-plot "Travel Distance" set rtotal 0 set rtime 0 set ptotal 0 set ptime 0 set-current-plot-pen "rich" plot median [ min [distance myself] of jobs ] of rich set-current-plot-pen "poor" plot median [ min [distance myself] of jobs ] of poor end ; Copyright 2007 Uri Wilensky. ; See Info tab for full copyright and license.
There are 10 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Urban Suite - Economic Disparity.png | preview | Preview for 'Urban Suite - Economic Disparity' | over 11 years ago, by Uri Wilensky | Download |
This model does not have any ancestors.
This model does not have any descendants.