Urban Region Toy
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model demonstrates land use patterns that may arise as a result of land-use compatibilities stablished in urban development plans and conditions present in the territory where they apply.
HOW IT WORKS
The model begins by representing the surface of a territory of finite dimension through a grid and without any urbanization. Each cell in this grid starts with a potential value of 1 or -1 assigned randomly and with the interest in developing one of 7 possible land uses that is also assigned at random. At each step, the model updates the potential value of each cell according to the potential values of the neighboring cells and adjacent roads (roads increase the potential value of neighboring cells). If the new potential value passes a certain threshold, the cell becomes potentially developable. Next, the cell seeks that its interest in developing a land use is not incompatible with the surrounding land uses within a tolerance radius specified by the user. If it is not incompatible, the cell is urbanized with the intended land use. If not, the cell remains undeveloped and again its potential value is estimated successively in each generation of the model.
The following land uses are considered incompatible, so they must be at a distance equal to TOLERANCE-RADIUS to co-exist:
Residential and Industrial Residential and Commercial-Industrial Industrial and Tourism Industrial and Residential-Commercial Tourism and Commercial-Industrial Tourism and Equipment Residential-Commercial and Commercial-Industrial
HOW TO USE IT
Position the RESTRICTIONS? switch ON or OFF. If ON is chosen, the model will place natural restrictions on urbanization randomly over the territory. These can be interpreted as hills, bodies of water, protected natural areas, etc.
Select the tolerance radius of the land uses with the TOLERANCE-RADIUS slider. This is a distance after which the coexistence of two incompatible land uses is possible. The greater the value, the greater the distance between them so that they can coexist.
Assign % of projected land uses. Under the PROJECTED column, the planned percentages of each of the 7 land uses are entered. The total sum must be 100%.
(Optional) Paint roads and land use. Under the BRUSHES column, press the button for land use or road that you want to represent in the territory. While the active button is kept, hover the cursor with the left mouse button pressed on the territory to paint. When finished painting, deactivate the button before proceeding with the simulation.
Press the SETUP button. This will assign a random value of 1 or -1 to each of the cells.
Press the GROW button to start the simulation.
At any time during the simulation, the GROW button can be pressed to pause the simulation and paint land uses, roads or change the TOLERANCE-RADIUS value. Press again to resume the simulation.
THINGS TO NOTICE
At the beginning of the simulation, groups of land uses are formed, where the accommodation of each use with the rest will depend on its compatibility and tolerance radius. If there are roads, these will attract land uses forming urban corridors along with them and at their intersections.
The actual behavior of the percentage of projected land uses varies according to the relationship between the amount of the percentage, compatibilities, and tolerance radius among all uses. This can be verified under the % OF LAND USES column, where PROJECTED vs. REAL percentage are compared, and in the % OF LAND USES OVER TIME chart.
The resulting land-use patterns may be similar to those found in real urban regions.
THINGS TO TRY
Try the following options:
a) Start the simulation without roads. After clusters of urbanization are formed, pause the simulation and connect them with roads. Resume the simulation and observe how the land use pattern is modified by the attraction of the new roads. Pause the simulation again and connect the new clusters, and so on. Observe how road network and land-use patterns are formed as a result of this feedback process.
b) Draw land-use patterns before starting the simulation and observe how new urban growth adapts to it. Use land-use patterns of your neighborhood, city or region.
EXTENDING THE MODEL
The model can be extended including a self-regulation process, in which the growth of land uses beyond its projected growth is not allowed.
CREDITS AND REFERENCES
The simulation takes its growth algorithm from a model called "Structure from randomness 2" found in the Netlogo model library. This model in turn is based on another model found in the book "Cities and Complexity" by Michael Batty.
Comments and Questions
;::::::::::::::::::::::::::::::::::::::::U R B A N R E G I O N T O Y:::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::::::::::::::::Code: Dr. Javier Sadoval Felix::::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::::::::::::::::Contact: jarquisol@gmail.com::::::::::::::::::::::::::::::::::::::::::: extensions [rnd] patches-own [ potential new-potential interest urban? slope] globals [ %Residential %Commercial %Industrial %Tourism %R-C %C-I %Equipment probability-list fitness threshold ] to setup clear-all set threshold 4 ifelse Restrictions? [ask patches [ set potential one-of [1 -1] ] set probability-list (list (list "Residential" Residential) (list "Commercial" Commercial) (list "Industrial" Industrial) (list "Tourism" Tourism) (list "H-C" Residential-Commercial) (list "C-I" Commercial-Industrial) (list "Equipment" Equipment)) setup-patches set fitness ((max [slope] of patches) - (min [slope] of patches))] [ask patches [ set potential one-of [1 -1] ] set probability-list (list (list "Residential" Residential) (list "Commercial" Commercial) (list "Industrial" Industrial) (list "Tourism" Tourism) (list "H-C" Residential-Commercial) (list "C-I" Commercial-Industrial) (list "Equipment" Equipment)) ] reset-ticks end to go estimate-% if (Residential + Commercial + Industrial + Tourism + Residential-Commercial + Commercial-Industrial + Equipment) != 100 [user-message "Suma de porcentajes de uso no es igual a 100%" stop] ask patches with [pcolor = white] [ask neighbors [set potential (potential + one-of [1 -1])]] ask patches [ set new-potential (potential + sum [potential] of neighbors4) / 5 + one-of [1 -1] ] ask patches [ set potential new-potential if potential > threshold and urban? = 0 and slope >= ((min [slope] of patches) + (fitness / 2)) [set interest first rnd:weighted-one-of-list probability-list last] if interest = "Residential" and count patches in-radius Tolerance-radius with [interest = "Industrial" or interest = "C-I"] = 0 [set pcolor yellow set urban? 1] if interest = "Commercial" and (count patches in-radius Tolerance-radius with [interest = "Industrial"] = 0) [set pcolor red set urban? 1] if interest = "Industrial" and (count patches in-radius Tolerance-radius with [interest = "Residential" or interest = "H-C" = 0 or interest = "Tourism" or interest = "Commercial"] = 0) [set pcolor violet set urban? 1] if interest = "Tourism" and (count patches in-radius Tolerance-radius with [interest = "Industrial" or interest = "C-I" or interest = "Equipment"] = 0) [set pcolor pink set urban? 1] if interest = "H-C" and (count patches in-radius Tolerance-radius with [interest = "Industrial" or interest = "C-I"] = 0) [set pcolor orange set urban? 1] if interest = "C-I" and (count patches in-radius Tolerance-radius with [interest = "Residential" or interest = "Tourism" or interest = "H-C"] = 0) [set pcolor brown set urban? 1] if interest = "Equipment" and (count patches in-radius Tolerance-radius with [interest = "Tourism"] = 0) [set pcolor blue set urban? 1]] tick end to Hab if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor yellow set urban? 1 set interest "Residential"]] display end to Com if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor red set urban? 1 set interest "Commercial"]] display end to Ind if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor violet set urban? 1 set interest "Industrial"]] display end to Equi if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor blue set urban? 1 set interest "Equipment"]] end to Tur if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor pink set urban? 1 set interest "Tourism"]] display end to Hab-Com if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor orange set urban? 1 set interest "H-C"]] display end to Com-Ind if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor brown set urban? 1 set interest "C-I"]] display end to Road if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor white set urban? 1 set interest 0]] display end to No-urb if mouse-down? [ask patch mouse-xcor mouse-ycor [ set pcolor gray set urban? 1]] display end to setup-patches ask patches [set slope ( random 15 )] repeat 70 [diffuse slope 1] ask patches [set pcolor scale-color green slope 7 6] end to estimate-% if count patches with [pcolor = yellow] != 0 [set %Residential (count patches with [pcolor = yellow] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = red] != 0 [set %Commercial (count patches with [pcolor = red] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = violet] != 0 [set %Industrial (count patches with [pcolor = violet] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = pink] != 0 [set %Tourism (count patches with [pcolor = pink] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = orange] != 0 [set %R-C (count patches with [pcolor = orange] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = brown] != 0 [set %C-I (count patches with [pcolor = brown] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] if count patches with [pcolor = blue] != 0 [set %Equipment (count patches with [pcolor = blue] * 100) / (count patches with [pcolor = yellow or pcolor = red or pcolor = violet or pcolor = pink or pcolor = orange or pcolor = brown or pcolor = blue])] end
There is only one version of this model, created almost 6 years ago by Javier Sandoval.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Urban Region Toy.png | preview | Preview for 'Urban Region Toy' | almost 6 years ago, by Javier Sandoval | Download |
This model does not have any ancestors.
This model does not have any descendants.