HomelessEncampmentSearch

No preview image

1 collaborator

Krill_swarm_preview Shirley Bekins (Author)

Tags

homeless 

Tagged by Shirley Bekins over 1 year ago

informal encampments 

Tagged by Shirley Bekins over 1 year ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.2.2 • Viewed 140 times • Downloaded 7 times • Run 0 times
Download the 'HomelessEncampmentSearch' 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?

This model explores the following question: How do people who are homeless select locations to live unsheltered, given the large space of potential locations as well as constraints on mobility and other resources? The main mechanisms in this model focus on simple search strategies for agents with limited sensing distance and heterogeneous resource budgets, as well as mechanisms of clustering and dispersion. Users select the initial number of homeless agents, the proportion of the population who prefer to aggregate, and the probability of growth or decline in the homeless population and encampments. The model only focuses on the search process and does not include mobility for daily living such as working, obtaining services and amenities, or socialization.

If agents had no preferences to aggregate, we would expect to see spatial dispersion of homeless persons in cities. In real life, cities show aggregations of encampments as well as dynamic processes where encampments arise, grow, disband in a continual process over time. Like cities, encampments exhibit both positive and negative feedback effects to growth including overcrowding, unsanitary and unsafe conditions, interpersonal conflicts, and sometimes violence/crime. Encampments can also offer proximity to amenities, transportation, safety, community, and mutual aid.

Urban homeless encampments are places in cities where homeless persons live temporarily in places not meant for human habitation: on streets/sidewalks, in cars, recreational vehicles, parks and green spaces. Urban homeless encampments are phenomena occurring primarily in a few large US cities, with approximately half of all unsheltered persons living in California. While some encampments are formally organized by public officials, this model explores informal, self-organized encampments.

HOW IT WORKS

SETUP The model creates a world of random patches with blue patches representing residential areas in a city. These are clusters where homeless persons cannot live unsheltered permanently. The model also creates six clusters representing homeless encampments which are green patches. The rest of the environment has a background of white patches.

Turtles or homeless agents have a person shape. The user sets a slider to determine the number of turtles in the INTERFACE tab, from 1 to 500 persons. These turtles are located on random patches in the world.

Each turtle gets a resource budget which determines their ability to move. Ths resource budget is a random number between 0 and 249 units. This feature introduces heterogeneity and limits for turtles, as they do not have the same or unlimited resources. Also, turtles must EXIT the world when their resource budgets are less than zero.

As shown in the model world, turtles with a preference for aggregating are red and turtles who do not are turquoise or cyan.

In addition, turtles perceive if they have neighbors on any of their neighboring 8 patches. This is important because the turtles will cluster or repel each other during the GO stage. Turtles have limited sensing capabilities and only perceive their 8 local neighbors. Note that if turtles are clustered on the same patch, they are not defined as neighbors in this model.

GO: The model starts when the User hits the GO button. STOP: The model will stop when there are no remaining homeless encampments or turtles.

FIND-A-NEW-SPOT: Turtles examine their locations. If turtles are on a blue patch/residential area, they FIND-A-NEW-SPOT. FIND-A-NEW SPOT means to turn right a random amount between 0 and 359 degrees, then move forward 2 patches. This movement decreases the turtle's resource budget by two units. If there are any other turtles on the patch, the turtle keeps going until it finds an unoccupied spot in this procedure.

MOVE: MOVE means to move forward 1 patch and decrease the turtle's resource budget by 1 unit.

WANDER: If a turtle is red/aggregate, and finds itself in neither a residential area or a homeless encampment, it will WANDER. WANDER means to turn right in a random amount between 0 and 30 degrees, MOVE forward 1 patch/decrease resource budget by 1, and turn left by a random amount between 0 and 45 degrees.

If red/aggregate turtles don't have any neighboring turtles, they will continue to wander. Over time, you will see the red turtles aggregating in homeless encampments. This model allows turtles to occupy the same patch. You will also see the turquoise turtles moving away from other turtles.

The code includes a process of growth and decline of homeless encampments and the population. If a patch is not a residential area or an existing encampment, and has a neighboring patch that is an encampment, it will become an encampment according to probability slider from 0 to 10%, with an element of randomness.

CHECK-IF-EXIT: This code asks turtles to check their resource budgets. If the budget is less than zero, the turtle will EXIT.

EXIT: EXIT removes turtles from the model and uses the Netlogo primitive DIE to remove turtles.

DISPERSE-CAMP: This code asks green patches/camp patches to look at their neighbors, and if a random number is less than the PROBABILITY-GROWTH-DECLINE slider then the patch will turn yellow to represent a closed camp patch.

NEW-CAMP: This code asks turtles located on green/camp patches to look at neighboring patches. If any are white patches and if any are yellow patches, and if a random number is less than the PROBABILITY-GROWTH-DECLINE slider the patch will turn green to represent a new camp patch. The structure of this code means that new camp patches will always be adjacent to existing green patches and represents a percolation process where a property is spreading, like fire in a forest.

HOW TO USE IT

The model world is a grid lattice with 33 x 33 patches, or a total of 4,489 patches within a toroidal or wrapped topology. The world is a rough conceptual representation of a city. While cities are not torus-shaped, this model topology works better than a bounded world where cluster and dispersion behaviors lead to unrealistic outcomes.

The interface tab includes 3 tabs to set before the user pushes the SETUP and GO buttons. INITIAL-HOMELESS slider %-AGGREGATION slider PROBABILITY-GROWTH-DECLINE slider

The user selects the number of initial homeless persons, INITIAL-HOMELESS from 1 to 1,000.

The user selects the percentage of the population with a preference for aggregating, %-AGGREGATION, 0 to 100%.

Then the user selects the PROBABILITY-GROWTH-DECLINE for encampments and homeless population over time from 0 to 10%. Note that PROBABILITY-GROWTH-DECLINE is used to calculate the probability of increase or decrease.

The user then hits SETUP. If desired, the user can TRACK ONE PATH before hitting GO. This button will select a random turtle to draw its path using the pen-down command.

When the user hits GO the model will start running. It is also possible to hit TRACK ONE PATH after the model has started.

The interface tab outputs 3 monitors that report the total number of homeless and subtotals for homeless who aggregate or disperse. These numbers are also depicted in a plot, Homeless over Time.

The interface tab has a NEW-ENTRY? switch that will increase over time the number of homeless turtles according to the PROBABILITY-GROWTH-DECLINE slider with some randomness.

THINGS TO NOTICE

This model only focuses on a search for locations to live unsheltered. This is an important distinction as agents stop their action once they meet their goal or run out of resources and leave the model. The model does not represent the daily life paths of unsheltered homeless persons.

If the user selects a population that has a 100% probability of not aggregating, the model displays very little movement and no clustering. This population of non-aggregators will only move if their initial random location is on a blue residential patch. They will move only enough to locate off a blue patch and to remain dispersed from neighbors. In this case, the existing population conserves resources, remains relatively isolated from other homeless agents, and the population continues to grow exponentially over time. This outcome is not typically observed in real life.

Agents will cluster on the same patches but may not have any neighbors even though it appears that they do. This is a feature of the model size and scale.

THINGS TO TRY

Explore what happens when you have a very small number of homeless agents who prefer to aggregate. Because of the relatively large model space agents have great difficulty clustering with other agents (similar to the DLA model). Agents use up their resource budgets looking for other agents, and exit from the model quickly. Does the size of the model world affect this issue? Try changing the model size in SETTINGS on the Interface tab. If you reduce the size of the world, how do outcomes change?

What happens when there are a large number of aggregate agents? What happens when you have a small or large number of agents who do not aggregate? Explore what happens when you reduce or increase the model world.

Try changing the PROBABILITY-GROWTH-DECLINE slider to see what happens. What happens if you turn off the new-entry? switch, and no new agents enter the world?

EXTENDING THE MODEL

Modelers can add information exchange between agents to explore whether information and social ties might more realistically reflect patterns of encampments. Or they might add social influence interactions similar to Netlogo extensions of the Segregation Model ABM. How might agents influence each other and change their preferences?

Modelers could add more input variability by changing hard-coded properties. For example, they could change the code to establish the number of encampments by a slider rather than the hard-coded 6 settlement clusters.

This model could be extended to use real GIS data so the model depicts an actual city. For example, the City of Seattle now tracks verified homeless encampments. The link below shows a map of these verified encampments. It is interesting to note that almost half of all encampments are located in two neighborhoods: Downtown and SODO (south of downtown) industrial area. This GIS data could be combined with time geography and urban scaling theories discussed in Luis M.A. Bettencourt's Introduction to Urban Science. Could these theories help explain quantitatively how clusters of encampments enclose the daily paths of people living unsheltered and provide value to agents through aggregation and informal settlement?

https://experience.arcgis.com/experience/af548fd66fc94e98a5067b299b7d1209/

Network topology: Other potential extensions include changing the topology of the model to a network. Will a network topology reflect more realistically real-life encampment patterns?

Path dependence: Path dependence could be another extension where initial locations of homeless encampments might affect the future location of encampments or otherwise constrain the space of possibilities. In the current model, encampments grow and close with some probability and randomness. However, new encampments only arise adjacent or on old encampments. How might this reflect or not reflect real-life data?

Hysteresis: Another potential extension is to introduce more heterogeneity in agent properties, specifically hysteresis or "stickiness." In this case, some agents might exhibit hysteresis of their unsheltered state when they become housed and cycle in and out of living unsheltered.

RELATED MODELS

  • Fire Model
  • DLA Model
  • Path Dependence Model

CREDITS AND REFERENCES

Wilensky, U. (1997). Netlogo Fire model. http://ccl.northwestern.edu/netlogo/models/Fire. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Wilensky, U., Rand, W. (2006). Netlogo DLA Simple model. https://ccl.northwestern.edu/netlogo/models/DLASimple. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Rand, W. and Wilensky, U. (2007). Netlogo Urban Suite - Path Dependence model. http://ccl.northwestern.edu/netlogo/models/UrbanSuite-Path Dependence. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

This model is written in Netlogo 6.2.2. Wilensky, U. 1999. Netlogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Code syntax for clustering of residential and homeless encampments (lines 20-27 in Editor view on Code tab) from 3 lines of Mushroom Hunt demonstration code, p. 22, Railsback, Steven F. and Grimm, Volker, Agent-Based and Individual-Based Modeling, A Practical Introduction, Second Edition, 2019

Wilensky, U. and Rand, W. (2015) Introduction to Agent-based Modeling: Modeling Natural, Social and Engineered Complex Systems with Netlogo. Cambridge, MA. MIT Press.

This model will be available on github as a project of TEAM HOMER, a team from Complexity Weekend facilitated by Shirley Haruka Bekins exploring the complexity of homelessness.

Comments and Questions

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

Click to Run Model

globals [
  initial-camps ;; initial number of homeless camps
  time ;; time variable for plotting homeless population over time
  ]
patches-own [
  home-patches? ;; blue patches representing residential areas where homeless agents cannot permanently locate
  camp-patches? ;; green patches representing areas where homeless agents can temporarily locate
]
turtles-own [
  aggregate? ;; turtle who prefers to aggregate with other homeless
  neighbors? ;; a turtle or turtles are located on neighboring patches
  resource-budget ;; resources available to turtles to move, including time, mobility access, cash, etc
]

to setup
  clear-all ;; clears the model
  ask patches
  [ set pcolor white ] ;; the background is white

  ask n-of 8 patches ;; 8 randomly selected patches represent residential clusters
[
 ask n-of 60 patches in-radius 6 ;; 8 patches randomly select 60 patches less than or equal to radius of 6
     [ set pcolor blue ] ;; to turn blue
  ]
  ask n-of 6 patches ;; five randomly selected patches represent homeless encampments
  [ ask n-of 10 patches in-radius 2 ;; 5 patches randomly select 10 patches less than or equal to radius of 2
    [ set pcolor green ] ] ;; to turn green

  ask patches [
  ifelse pcolor = blue ;; each patch asks, Am I blue? If I am blue then
  [ set home-patches? true ] ;; I am home patch
  [ set home-patches? false ] ;; If I am not blue, I am not home patch

  ifelse pcolor = green ;; each patch asks, Am I green? If I am green then
  [ set camp-patches? true ] ;; I am camp patch
  [ set camp-patches? false ] ;; If I am not green, I am not camp patch
   ]

  set-default-shape turtles "person" ;; create homeless agents represented by human shape
  create-turtles initial-homeless ;;  creates homeless agents according to number slider
  set initial-camps count patches with [ pcolor = green ] ;; how many initial homeless camps

ask turtles [
    set size 1.7 ;; turtle size is set at 1.7
    setxy random-xcor random-ycor ;; homeless agents initialize randomly in world
    set resource-budget random-float 250 ;; homeless agents get resource budget determined by a random number between 0 and 249
    ifelse random-float 100 < %-aggregate ;; reports a random floating point number between 0 and 99, if the number is less than the %-aggregate slider,
    ;; the slider will establish an average percentage of homeless agents with preference for aggregating
    [ set color red ] ;; agent is red if it prefers aggregating
    [ set color cyan ];; agent is turquoise if it does not prefer aggregating

    ifelse color = red ;; if the turtle color is red then
    [ set aggregate? true ] ;; the turtle property is true for aggregate
    [ set aggregate? false ] ;; the turtle property is false for aggregate

   ifelse not any? turtles-on neighbors = true ;; if there are not any turtles located on neighboring patches then
    [ set neighbors? false ] ;; turtle has no neighbors
    [ set neighbors? true ] ;; turtle has neighbors
  ]
reset-ticks ;; reset time
end 

to go
  if not any? patches with [ pcolor = green ] ;; if no green patches or encampments, stop model
  [ stop ]
  if not any? turtles ;; if no turtles in model, stop model
  [ stop ]
ask turtles [
  if pcolor = blue ;; if patch blue, find new spot by
  [ find-new-spot ] ;; moving until find unoccupied patch

  if ( pcolor = white) and ( color = red ) ;; am I on a white patch and am I red? If true, wander
    [ wander ]

  if  ( color = cyan ) and ( any? turtles-on neighbors = true ) ;; am I turquoise and are any other turtles on eighboring patches? If true, wander
      [ wander ] ;; if both not true, do nothing

  if ( color = red ) and ( any? other turtles-on neighbors = false ) ;; am I red and if there are no other turtles on neighboring patches, wander
    [ wander ] ;; if not true, do nothing
  ]
  ask turtles [
  if (pcolor = white ) and (any? neighbors with [ pcolor = green ]) and ;; am I located on a white patch, do I have any green neighbor patches, and
    ( random-float 100 < probability-growth-decline ) ;; if a random floating point number between 0 and 99 is less than PROBABILITY-GROWTH-DECLINE slider, then
   [ set pcolor green ] ;; patch I'm located on turns green. This represents process of homeless encampment growth.
  ]
  ask turtles
  [ check-if-exit? ];; each turtle checks resource budget, must exit world if less than zero
  ask turtles ;;  homeless encampments close,
  [ disperse-camp ] ;; according to probability slider with some randomness
  ask turtles
  [ new-camp ] ;; creates new homeless camps according to probability slider with some randomness

  if ( new-entry? ) [ ;; if the new-entry switch is on
    ask turtles with [ resource-budget > 249] [ ;; (this number is set very high to avoid exponential growth) turtles with resource budget greater than 249 will,
   if random 100 < probability-growth-decline ;; if a random number between 0 and 100 is less than PROBABILITY-GROWTH-DECLINE slider,
   [ hatch 1  ;; create a new turtle, note - with same properties as original turtle
   [ move ];; move forward 1 patch
    ]]
]
tick ;; observer advance clock by one tick interval
end 

to move
  forward 1 ;; move forward 1 step
  set resource-budget resource-budget - 1 ;; with each move, resource budget is reduced by 1
end 

to find-new-spot ;; procedure to find new spot
  rt random-float 360 ;; turn right random amount between 0 and 359 degrees
  fd 2 ;; move forward 2 patches
  if any? other turtles-here [ find-new-spot ] ;; if any other turtles are on patch, keep going until turtle finds unoccupied patch
  move-to patch-here  ;; move to center of patch
  set resource-budget resource-budget - 2 ;; decrease resource budget by movement cost of 2 units
end 

to wander
  right random 30 ;; turn right random amount between 0 and 30 degrees
  move ;; move forward 1
  left random 45 ;; turn left random amount between 0 and 45 degrees
end 

to check-if-exit? ;; turtle checks if it must exit model
  if resource-budget < 0 [ ;; if resource budget is less than 0, leave model
    exit ]  ;;
end 

to exit ;; exit model
  die ;; DIE is netlogo primitive removing turtle from model
end 

to disperse-camp ;; homeless encampments close
  ask patches with [ pcolor = green ] ;; green patches
    [ ask neighbors4 with [ pcolor = green ] ;; look at four neighbors (von Neumann neighborhood used to decrease number of potential yellow patches)
    [ if random 100 < probability-growth-decline ;; if a random number between 0 and 100 is less than PROBABILITY-GROWTH-DECLINE slider, then
        [ set pcolor yellow ] ] ;; patch turns yellow representing closed camp patch
  ]
end 

to new-camp ;; procedure represents spontaneous creation of new homeless camps when existing camps close
  if any? neighbors with [ pcolor = white ] ;; if turtle has any neighboring patches that are not existing encampments (green patches) or residential patches (blue patches)
  and pcolor = yellow ;; and if turtle is located on yellow patch,
  and random 100 < probability-growth-decline ;; and if a random number between 0 and 100 is less than PROBABILITY-GROWTH-DECLINE slider, then
  [ set pcolor green ] ;; patch will turn green and become new homeless encampment
end 

There is only one version of this model, created over 1 year ago by Shirley Bekins.

Attached files

File Type Description Last updated
nathan-dumlao-i__uqGnARyI-unsplash.jpg jpeg preview image over 1 year ago, by Shirley Bekins Download

This model does not have any ancestors.

This model does not have any descendants.