Shenzhen Urban Village Simulation

Shenzhen Urban Village Simulation preview image

1 collaborator

Default-person Tong Wu (Author)

Tags

深圳城中村 

Tagged by 陈 小 about 2 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.4 • Viewed 320 times • Downloaded 17 times • Run 0 times
Download the 'Shenzhen Urban Village Simulation' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

The model simulates the spatial development of housing stock and relocation of residents in a city with Urban Villages like Shenzhen. Urban villages are more crowded with densely built low-rise blocks but providing affordable housing for new migrants to the city, while formal gated communities (common housing type in China) are higher rises with higher rents but better living conditions.

There are two scenarios considered: 1) urban villages can be redeveloped into formal gated community to provide more housing for increasing population; 2) urban villages are preserved by government and not allowed to redevelop, while housing demand keeps increasing with growing population.

For both scenarios, the model is trying to determine how housing rents (prices) would change based on changing demand and how residents will have to relocate or be priced out of the city based on their financial capacities.

From a planning perspective, a model like this can contribute to producing strategies to provide affordable housing for increaeing population but also keeps thie identities of the city (like villages)

The model succeeds because the emergent conforms to our expectation about the model.

HOW IT WORKS

Here are the rules.

1.We assume 60% blocks are formal communities and the rest are villages. The residents are located on village patches or formal patches based on the defined occupancy rate. The maximum occupancy of a Village patch is 1, while that of a Formal patch is 3.

The rent value of patches are calculated according to the multipliers of CBD and key transit lines. Rent value of formal patches are assumed 2 times of villages patches holding other factors constant.

Then the financial capacity of residents are assumed correlated with the rent value there, and calculated by the financial multipliers.

2.If redevelopment is allowed, it always happens in the urban village with the highest rent value. When a village is redeveloped, the patches of the block will become a formal community. Housing stock of the block will increase from 25 (5x5x1) to 48 (16x3).

3.If redevelopment is happening. The residents in the urban villages which are redeveloped will need to find an affordable patch that is available (where the occupants are fewer than 1 if it is a village or fewer than 3 if it is formal settlement). Affordable means the rent value of the patch should be no larger than the financial capacity of those residents. If such an affordable patch exists, those village residents will relocate to the nearest affordable patch otherwise they will be priced out of the city (move to patch 30 30, dead).

4.In the meantime, for each running time, new residents will be added to sandbox randomly based on the growth rate. It is assumed that they can afford the housing there, so their financial capacity will be calculated based on rent-value there.

5.Rent value will then be updated according to the demand and supply relationship (the changing ratio of population and housing stock here)

6.When rent value changes, residents in the sandbox may thus be impacted. If the financial capacity of residents is no smaller than the new rent value of their patch, they will stay at the same place. Otherwise, they will need to move to an affordable patch or they will be priced out (dead) if no affordable patch available.

HOW TO USE IT

BEFORE SETUP: parameters can be specified by slider bars 1. Initial Rent Value Calculation: adjust CBD and Transit Multipliers as you like. 2. Initial Occupancy Rate: adjust occupancy slider 3. Initial inancial Capacity: adjust Financial-Multiplier to change financial capacity as n-times of rent-value here 4. Population Growth Rate: change Increase Rate Multiplier

TO SET UP click on "SET UP": now you have the city and renters

TO RUN SCENARIO 1: VILLAGE REDEVELOPMENT click on "GO: DEVELOP VILLAGES FOR MORE HOUSING" urban village block will be redeveloped into formal community, the process will continue until you reclick the button.

TO RUN SCENARIO 2: NO VILLAGE REDEVELOPMENT click on: "GO: NO VILLAGE DEVELOPMENT" no urban village will be redeveloped but new residents still move in and rent value changes every round, the process will continue until you reclick the button.

TO SHOW VALUE click "SHOW RENT VALUE", "SHOW FINANCIAL CAPACITY" AND "SHOW DENSITY" to observe such attributes on sandbox

(IT IS HIGHLY RECOMMENDED TO RUN SCENARIO 1, STOP AND RUN SCENARIO 2 WITHIN ONE SETUP TO SEE THE EMMERGENT PHENOMENON OF THE GOVERNMENT RESTRICTION ON VILLAGE DEMOLITION)

THINGS TO NOTICE

For SCENARIO 1, village residents will be relocated to surrounding affordable patches, while new residents will move in. Then more residents would be impacted to relocate to more affordable space. As the process goes on, there will be residents priced out as no more affordable patches can be found. It can notice in the plot, the rent value of urban villages will increase much faster than formal communities (the affordable housing stock in village is decreasing)

For SCENARIO 2, new residents move in, rent value goes up but no relocation happenes at the beginning. Then many more rensidents would be impacted to relocate to more affordable housing or be priced out of the area. The plot shows the rent value of formal communities are increasing at a similar speed to village rents.

For both SCENARIOS, as demand reaches a threshold value, the rent value increases to a level that most residents cannot afford, leading to a large amount of relocation. Then the surviving population would stop increasing or even decreasing, and rent would slightly reduce. This reflects a clear supply-demand relationship.

WARNING: changing parameter sliders can change the phenomenon (happening sooner or later), especially financial capacity and increase_rate

THINGS TO TRY

CHANGE PARAMETERS TO SEE CHANGES IN PHENOMENONS 1.You can change CBD and Transit multipliers to change the spatial distribution of rent values before any redevelopment happens. 2.You can change “occupancy” to change the initial occupancy of formal communities and urban villages (the initial number of turtles in the sandbox). 3.You can change “financial capacity” and “increase rate” to change financial capacity of residents and the growth rate of residents. This will lead to different phenomenons

PLOT check the plots to see the rent value trends, population change and count of relocation and priced out turtles (dead turtles)

EXTENDING THE MODEL

SHORTCOMINGS: First, our model assumes all residents are renters and we did not take housing ownership into consideration. Second, the initial rent value is a function of distance to CBD districts and key transit lines, but it doesn’t include any other factors which may also influence rent value. Third, the real situation of urban villages are more complicated than this, as the village dwelling are more flexible in density and can accommodate much more population when needed.

GENERALIZABLE?: The model is generalizable for similar urban context like in Chinese cities like Guangzhou, because urban villages are a major habitat for citizens in these cities and renters takes up most of the population. However, it may not be applicable for other cities where urban villages play a less important role for the city.

THEORY: The theory of urban villages here is focusing on reflecting the market. It is good that we have tried to take as many factors into account as possible and complicate the model to make it more realistic. However, the social aspect of urban villages are not examined much. For example, urban villages are best and most affordable options for new migrants, where they form social bond with each other, which would affect the relocation decision.

Also, we assumed land capacity is fixed unless the rban village is redeveloped into formal community. Considering that people may choose to live in shared apartments for cheaper price, We can set land capacity to grow (supply) to improve the model. For instance, as simulation goes, a village patch can hold more than one turtle as villagers may share rooms or increase the floors of village buildings to accommodate more residents.

BOTTOM-UP APPROACH: AGENT BASED MODELING

The bottom-up approach here is effective for modeling this phenomenon of urban villages redevelopment. Since urban villages are a very complicated including a lot of agents, rules and behaviours, using agent-based modeling, compared to top-down models, can clearly demonstrate the process and the evolvement of urban villagers in cities. It is very intriguing to observe those changes and trends in the model.

However, the model here is slightly oversimplified compared with reality considering the time given. It should be improved by adding more factors. It would be great if the GIS plug-in or better agent-based modeling tools can be utilized for the modeling to demonstrate the real geographical conditions.

Last, for most urban problems, planners should still use the combination of top-down and bottom-up approaches. For example, it would probably be better for the initial housing rent value and capacity to be predicted by regression model, when the model is put in a real urban context.

NETLOGO FEATURES

output and plot functions are used

RELATED MODELS

The setup code is based on Ken Steif's sandbox. The rest of code is all originally written.

CREDITS AND REFERENCES

Special thanks to Ken, who has helped us complete the model.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals [affordable-patches affordable-for-formals affordable-for-villagers]

breed [formals formal]      ;a breed for formal community residents (high affordabilituy)
breed [villagers villager]   ; a breed for village residents (low financial-capacity)
breed [new_vs new_v]
breed [new_fs new_f]
breed [deads dead]

patches-own
[
  street                   ; the patch a street or not
  key-transit              ; major transportation line
  rent-value               ; a measure of proximity to transit and thypes of residence
  Parcel                   ; village, formal or park
  block                    ; block identity, center parcel to define parcels with in a block, 1 or o
  block_type               ; formal or village
  landuse                  ; what is built on a patch
  CBD_Dist                 ; measure and scale distance
  CBD_Metric               ; metric for CBD distance
  Transit_Dist             ; mesure of distance to key transit line
  Transit_Metric           ; metric of transit distance
  Density
]

Villagers-own
[financial-capacity]             ; place holder for renters

Formals-own
[financial-capacity]             ; place holder for renters

to setup
  ca
;????proportion of block are formal gated communities

;set up streets and key transit lines
  ask patches with [pxcor != 0 and pycor != 0 or pycor = 1 ]
  [
    if abs pxcor mod 6 = 0 or pycor mod 6 = 0
    [set pcolor 7 set street 1]
    ask patches with [pxcor = 0 or pycor = 0 ]
    [set pcolor 6 set street 1 set key-transit 1]
  ]

;set up blocks
  ask patches with [abs pxcor mod 6 = 3 and pycor mod 6 = 3]
      [set block 1]


;set up formal blocks--
  ask n-of (count patches with [block = 1]* .60) patches with [block = 1]
      [set block_type "formal"]
  ask patches with [street = 0 and
                   count patches with [block_type = "formal"] in-radius 3 = 1 and
                   count patches with [street = 1] in-radius 1 > 0]
      [set parcel "formal"]
  ask patches with [parcel = 0 and count patches with [block_type = "formal"] in-radius 2 = 1]
      [set parcel "park"]


;set up village blocks
 ask patches with [block = 1 and
                   block_type = 0]
      [set block_type "village"]
 ask patches with [street = 0 and
                   count patches with [block_type = "village"] in-radius 3 = 1]
      [set parcel "village"]


;set up color
  ask patches with [parcel = "formal"] [set pcolor 135]
  ask patches with [parcel = "park"] [set pcolor 8]
  ask patches with [parcel = "village"] [set pcolor 137]
  ask patches with [parcel ="formal" or parcel = "village"] [set landuse "residential"]
end 

to create-renter-points ;with financial-capacity reflected from current rent value
; sprout formal renters with financial-capacity (formal patch: capacity 3)
 Ask n-of (count patches with [parcel = "formal"] * occupancy) patches with [parcel = "formal"] [sprout-formals 3]

 Ask formals
  [
   Set color white
   Set shape "circle"
   Set size .7
  ]

;sprout village renters with financial-capacity (village patch capacity 1)
 Ask n-of (count patches with [parcel = "village"] * occupancy) patches with [parcel = "village"] [sprout-villagers 1]
 Ask villagers
  [
   Set color white
   Set shape "x"
   Set size .7
  ]


;density
 ask patches
  [set density count turtles-here]
end 

to calculate-rent-value

  ask patches with [parcel = "formal" or parcel = "village"]
  [
    ;access to CBD
    set CBD_Dist distance patch 0 0
    ;acces to key transit
    set Transit_Dist distance min-one-of patches with [key-transit = 1] [distance myself]
  ]

  ;CBD and transit Metric for formal
let a sort [CBD_Dist] of patches with [parcel = "formal"]
  let nlist length a print nlist
  ask patches with [parcel = "formal" and CBD_Dist <= item (0.1 * (nlist + 1)) a] [set CBD_Metric 20]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.1 * (nlist + 1)) a and CBD_Dist <= item (0.2 * (nlist + 1)) a] [set CBD_Metric 18]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.2 * (nlist + 1)) a and CBD_Dist <= item (0.3 * (nlist + 1)) a] [set CBD_Metric 16]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.3 * (nlist + 1)) a and CBD_Dist <= item (0.4 * (nlist + 1)) a] [set CBD_Metric 14]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.4 * (nlist + 1)) a and CBD_Dist <= item (0.5 * (nlist + 1)) a] [set CBD_Metric 12]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.5 * (nlist + 1)) a and CBD_Dist <= item (0.6 * (nlist + 1)) a] [set CBD_Metric 10]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.6 * (nlist + 1)) a and CBD_Dist <= item (0.7 * (nlist + 1)) a] [set CBD_Metric 8]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.7 * (nlist + 1)) a and CBD_Dist <= item (0.8 * (nlist + 1)) a] [set CBD_Metric 6]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.8 * (nlist + 1)) a and CBD_Dist <= item (0.9 * (nlist + 1)) a] [set CBD_Metric 4]
  ask patches with [parcel = "formal" and CBD_Dist > item (0.9 * (nlist + 1)) a] [set CBD_Metric 2]

let b sort [transit_Dist] of patches with [parcel = "formal"]
  let nlist2 length b
  ask patches with [parcel = "formal" and transit_Dist <= item (0.1 * (nlist2 + 1)) b] [set transit_Metric 20]
  ask patches with [parcel = "formal" and transit_Dist > item (0.1 * (nlist2 + 1)) b and transit_Dist <= item (0.2 * (nlist2 + 1)) b] [set transit_Metric 18]
  ask patches with [parcel = "formal" and transit_Dist > item (0.2 * (nlist2 + 1)) b and transit_Dist <= item (0.3 * (nlist2 + 1)) b] [set transit_Metric 16]
  ask patches with [parcel = "formal" and transit_Dist > item (0.3 * (nlist2 + 1)) b and transit_Dist <= item (0.4 * (nlist2 + 1)) b] [set transit_Metric 14]
  ask patches with [parcel = "formal" and transit_Dist > item (0.4 * (nlist2 + 1)) b and transit_Dist <= item (0.5 * (nlist2 + 1)) b] [set transit_Metric 12]
  ask patches with [parcel = "formal" and transit_Dist > item (0.5 * (nlist2 + 1)) b and transit_Dist <= item (0.6 * (nlist2 + 1)) b] [set transit_Metric 10]
  ask patches with [parcel = "formal" and transit_Dist > item (0.6 * (nlist2 + 1)) b and transit_Dist <= item (0.7 * (nlist2 + 1)) b] [set transit_Metric 8]
  ask patches with [parcel = "formal" and transit_Dist > item (0.7 * (nlist2 + 1)) b and transit_Dist <= item (0.8 * (nlist2 + 1)) b] [set transit_Metric 6]
  ask patches with [parcel = "formal" and transit_Dist > item (0.8 * (nlist2 + 1)) b and transit_Dist <= item (0.9 * (nlist2 + 1)) b] [set transit_Metric 4]
  ask patches with [parcel = "formal" and transit_Dist > item (0.9 * (nlist2 + 1)) b] [set transit_Metric 2]



 ;CND and transit Metric for village
let c sort [CBD_Dist] of patches with [parcel = "village"]
  let nlist3 length c print nlist3
  ask patches with [parcel = "village" and CBD_Dist <= item (0.1 * (nlist3 + 1)) c] [set CBD_Metric 10]
  ask patches with [parcel = "village" and CBD_Dist > item (0.1 * (nlist3 + 1)) c and CBD_Dist <= item (0.2 * (nlist3 + 1)) c] [set CBD_Metric 9]
  ask patches with [parcel = "village" and CBD_Dist > item (0.2 * (nlist3 + 1)) c and CBD_Dist <= item (0.3 * (nlist3 + 1)) c] [set CBD_Metric 8]
  ask patches with [parcel = "village" and CBD_Dist > item (0.3 * (nlist3 + 1)) c and CBD_Dist <= item (0.4 * (nlist3 + 1)) c] [set CBD_Metric 7]
  ask patches with [parcel = "village" and CBD_Dist > item (0.4 * (nlist3 + 1)) c and CBD_Dist <= item (0.5 * (nlist3 + 1)) c] [set CBD_Metric 6]
  ask patches with [parcel = "village" and CBD_Dist > item (0.5 * (nlist3 + 1)) c and CBD_Dist <= item (0.6 * (nlist3 + 1)) c] [set CBD_Metric 5]
  ask patches with [parcel = "village" and CBD_Dist > item (0.6 * (nlist3 + 1)) c and CBD_Dist <= item (0.7 * (nlist3 + 1)) c] [set CBD_Metric 4]
  ask patches with [parcel = "village" and CBD_Dist > item (0.7 * (nlist3 + 1)) c and CBD_Dist <= item (0.8 * (nlist3 + 1)) c] [set CBD_Metric 3]
  ask patches with [parcel = "village" and CBD_Dist > item (0.8 * (nlist3 + 1)) c and CBD_Dist <= item (0.9 * (nlist3 + 1)) c] [set CBD_Metric 2]
  ask patches with [parcel = "village" and CBD_Dist > item (0.9 * (nlist3 + 1)) c] [set CBD_Metric 1]

let d sort [transit_Dist] of patches with [parcel = "village"]
  let nlist4 length d
  ask patches with [parcel = "village" and transit_Dist <= item (0.1 * (nlist4 + 1)) d] [set transit_Metric 10]
  ask patches with [parcel = "village" and transit_Dist > item (0.1 * (nlist4 + 1)) d and transit_Dist <= item (0.2 * (nlist4 + 1)) d] [set transit_Metric 9]
  ask patches with [parcel = "village" and transit_Dist > item (0.2 * (nlist4 + 1)) d and transit_Dist <= item (0.3 * (nlist4 + 1)) d] [set transit_Metric 8]
  ask patches with [parcel = "village" and transit_Dist > item (0.3 * (nlist4 + 1)) d and transit_Dist <= item (0.4 * (nlist4 + 1)) d] [set transit_Metric 7]
  ask patches with [parcel = "village" and transit_Dist > item (0.4 * (nlist4 + 1)) d and transit_Dist <= item (0.5 * (nlist4 + 1)) d] [set transit_Metric 6]
  ask patches with [parcel = "village" and transit_Dist > item (0.5 * (nlist4 + 1)) d and transit_Dist <= item (0.6 * (nlist4 + 1)) d] [set transit_Metric 5]
  ask patches with [parcel = "village" and transit_Dist > item (0.6 * (nlist4 + 1)) d and transit_Dist <= item (0.7 * (nlist4 + 1)) d] [set transit_Metric 4]
  ask patches with [parcel = "village" and transit_Dist > item (0.7 * (nlist4 + 1)) d and transit_Dist <= item (0.8 * (nlist4 + 1)) d] [set transit_Metric 3]
  ask patches with [parcel = "village" and transit_Dist > item (0.8 * (nlist4 + 1)) d and transit_Dist <= item (0.9 * (nlist4 + 1)) d] [set transit_Metric 2]
  ask patches with [parcel = "village" and transit_Dist > item (0.9 * (nlist4 + 1)) d] [set transit_Metric 1]

;


; calculate rent value
ask patches with [parcel = "formal" or parcel = "village"]
  [
    set rent-value (CBD_Metric * CBD_Multiplier)+(transit_Metric * transit_Multiplier)
  ]
end 

to update-rent-value
;calculate-new-rent
  ask patches with [parcel = "village"]
  [ set rent-value
    count turtles-on patches with [parcel = "village"] / count patches with [parcel = "village"]/ occupancy * rent-value
  ]

  ask patches with [parcel = "formal"]
  [ set rent-value
    count turtles-on patches with [parcel = "formal"] / (count patches with [parcel = "formal"] * 3 )/ occupancy * rent-value
  ]
end 

to calculate-financial-capacity

  ask formals [set financial-capacity [rent-value] of patch-here * financial-multiplier]
  ask villagers[set financial-capacity [rent-value] of patch-here * financial-multiplier]

 ;20% village renters can afford higher rents
  ask n-of (count villagers * 0.2) villagers
     [set financial-capacity [rent-value] of patch-here * 1.5]
end 

to develop

;develop a village
 let development-point max-one-of patches with [block_type = "village"] [rent-value]

 ask patches with [parcel = "village" and
                   distance development-point < 4 and
                   count patches with [street = 1] in-radius 1 > 0]
      [set parcel "formal" set rent-value rent-value * 2 set pcolor 84]

 ask patches with [parcel = "village" and
                   distance development-point < 4]
    [set parcel "park" set landuse 0 set rent-value 0 set pcolor 8 ]

 ask development-point [set block_type "formal"]



;displaced villagers
ask villagers with [distance development-point < 4]

  [
      set affordable-patches patches with
         [landuse = "residential" and
          count villagers-here < 1 and
          count formals-here < 3 and
          rent-value < [financial-capacity] of myself ]

    ifelse any? affordable-patches
        [
          move-to min-one-of affordable-patches [distance myself]
           ifelse [parcel] of patch-here  = "formal"
               [set breed formals set color 87 set shape "circle"]
               [set breed villagers set color 87 set shape "x"]
        ]
        [move-to patch 30 30 set color red set breed deads] ;die
 ]
end 

to grow ;new comers and update financial-capacity

;new comers

;new formal residents
  ifelse (count patches with [parcel = "formal"] * 3 - count formals-on patches with [landuse = "residential"]) >= (increase_rate * count formals * 0.4)
       [ ask patch -30 -30
          [sprout-new_fs (increase_rate * count formals * 0.4)]
         ask new_fs [
                      move-to one-of patches with
                          [parcel = "formal" and count formals-here < 3]
                     ]
       ]
       [ ask patches with [parcel = "formal"]  ;no enough housing available: rent increases
            [set rent-value rent-value * 1.05]

         if any? patches with [parcel = "formal" and count formals-here < 3]
           [ask patch -30 -30
               [sprout-new_fs (count patches with [parcel = "formal"] * 3 - count formals-on patches with [landuse = "residential"])]
            ask new_fs [
                          move-to one-of patches with
                           [parcel = "formal" and count formals-here < 3]
                        ]
             ]
       ]
  ask new_fs
     [
      Set color yellow
      Set size .7
      set breed formals
      set shape "circle"
      set financial-capacity [rent-value] of patch-here * financial-multiplier
     ]



;new villagers
  ifelse count patches with [parcel = "village" and count villagers-here = 0] >= (increase_rate * count villagers * 0.6)
        [
            ask n-of (increase_rate * count villagers * 0.6) patches with
              [parcel = "village" and count villagers-here = 0]
                  [sprout-new_vs 1]
        ]
        [ ask patches with [parcel = "village"]   ;if not enough space available, rent increses)
            [set rent-value rent-value * 1.05]
          if any? patches with [parcel = "village" and count villagers-here = 0]
          [ask patches with [parcel = "village" and count villagers-here = 0]
               [sprout-new_vs 1]
          ]
        ]

  ask new_vs
  [
   Set color yellow
   Set size .7
   set breed villagers
    set shape "x"
    set financial-capacity [rent-value] of patch-here * financial-multiplier
  ]
end 

to impact-relocation  ;if rent value here becomes larger than financial-capacity, turtle would relocate or die

update-rent-value

; capacity update
ask formals [set financial-capacity financial-capacity * 1.1]
ask villagers [set financial-capacity financial-capacity * 1.1]


; impacted villagers

 ask villagers
  [
    set affordable-for-villagers patches with
         [landuse = "residential" and
          count villagers-here < 1 and
          count formals-here < 3 and
          rent-value < [financial-capacity] of myself ]

    if [financial-capacity] of self < [rent-value] of patch-here

        [ifelse any? affordable-for-villagers
          [
            move-to min-one-of affordable-for-villagers [distance myself]
              ifelse [parcel] of patch-here  = "formal"
               [set breed formals set color 87 set shape "circle"]
               [set breed villagers set color 87 set shape "x"]
          ]
          [move-to patch 30 30 set color red set breed deads] ;die
         ]
   ]

;impacted formal residents
ask formals
  [
    set affordable-for-formals patches with
    [landuse = "residential" and
      count villagers-here < 1 and
      count formals-here < 3 and
      rent-value < [financial-capacity] of myself]

    if [financial-capacity] of self < [rent-value] of patch-here

        [ifelse any? affordable-for-formals
          [
            move-to min-one-of affordable-for-formals [distance myself]
              ifelse [parcel] of patch-here  = "formal"
               [set breed formals set color 87 set shape "circle"]
               [set breed villagers set color 87 set shape "x"]
          ]
          [move-to patch 30 30 set color red set breed deads] ;die
         ]

 ]

;density
  ask patches
  [set density count turtles-here]
end 

to show-rent-value
  ask patches
    [
      set pcolor scale-color 116 rent-value min [rent-value] of patches  max [rent-value] of patches
    ]
end 

to show-financial-capacity
ask turtles-on patches with [landuse = "residential"]
    [
        set color scale-color 116 financial-capacity
        min [financial-capacity] of turtles-on patches with [landuse = "residential"]
        max [financial-capacity] of turtles-on patches with [landuse = "residential"]
    ]
end 

to show-density
  ask patches with [landuse = "residential"]
    [
      set pcolor scale-color grey count turtles-here 0 3
    ]
end 

to output-death
output-print count turtles-on patch 30 30
end 

to setup-plot
 setup-plots
end 

to plot-result
update-plots
end 

There is only one version of this model, created over 5 years ago by Tong Wu.

Attached files

File Type Description Last updated
Shenzhen Urban Village Simulation.png preview Preview for 'Shenzhen Urban Village Simulation' over 5 years ago, by Tong Wu Download

This model does not have any ancestors.

This model does not have any descendants.