Urban Suite - Path Dependence

Urban Suite - Path Dependence preview image

2 collaborators

Uri_dolphin3 Uri Wilensky (Author)
Default-person Bill Rand (Author)


(This model has yet to be categorized with any tags)
Model group CCL | Visible to everyone | Changeable by group members (CCL)
Model was written in NetLogo 5.0.4 • Viewed 202 times • Downloaded 17 times • Run 1 time
Download the 'Urban Suite - Path Dependence' modelDownload this modelEmbed this model

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


This model explores the concept of path dependence as explained by W. Brian Arthur in his paper, "Urban Systems and Path Dependence" and several other of his papers. Essentially firms walk around a landscape looking for a place to settle. Several mechanisms of how they decide where to locate can be simulated, and the results examined.


Each firm searches for a place to locate. They do this by taking the quality of the current location and the number of firms already located there. They use this to determine the probability of locating at the current location. They then generate a random number, if this number is less than the probability they settle down in the current location.


INITIAL-FIRMS - Controls the number of initial firms in the model

DISTRIBUTE? - Determines whether or not the initial firms are distributed to different locations

SETUP - Starts the model

GO - Runs the model

DISTURB - Tells all of the firms to look for a new location to settle

REGION-SIZE - This specifies how regional qualities influence the current location. At 1, only the current patch's quality is taken into account, as this number is increased the quality of more and more nearby patches is taken into account.

INCREASING-RETURNS - This controls the trade-off between quality and number of firms currently located. If it is set to 1.0 then the only thing that determines whether or not a firm settles in the current location is the number of other firms there. If it is set to 0.0 then the only thing that determines whether or not a firm settles there is the quality of the location.

ATTEMPTS - This specifies the number of patches a firm will visit each turn in determining whether or not to settle down.

BIRTH? - If this is set to true then new firms are created every turn.


If INCREASING-RETURNS is set high then the quality of the winning location may not be very high. If INCREASING-RETURNS is set low then the quality of the winning location will almost always be high. This can be seen in the monitor.

The patches are colored according to the quality of their location. Black patches are low quality, white patches are high quality and green patches are in the middle.

The size of the person shape on a patch indicates the number of firms located at that patch.


Try running the model with both low and high values of INCREASING-RETURNS. Try changing the value and then pressing DISTURB.

Try different sizes of regions and see how that affects the distribution of results.


The current function to determine the probability of settling is an additive function. Try implementing a multiplicative trade-off function.

In Arthur's original paper, his model had different types of firms; this implementation has only one type of firm. Expand the model to have different firm types and different qualities that would be useful for each firm type. In addition Arthur had different probabilities of different firm types being created. This would also make an interesting extension.


Arthur's original model used global knowledge of the state of the world to decide where each firm would settle, here we take advantage of the fact that firms only have local information and have them wander around the landscape.


This model is related to all of the other models in the "Urban Suite".

In particular, it is demonstrating the same concept as the "Urban Suite - Positive Feedback" model, although that model focuses on demonstrating the principle of increasing returns with utmost simplicity, whereas the current model is a little richer in content.

Also, the Segregation library model in NetLogo also explores how individuals decide where to locate but based on very different preferences.

For another urban settlement model, see the SOME model (created by the SLUCE project at University of Michigan), which explores residential settlements. http://www.cscs.umich.edu/sluce/education/sluce_ed.htm


This model is loosely based on the model presented in this paper: Arthur, W.B. (1988), "Urban systems and historical path dependence", in Ausubel, J.H., Herman, R. (Eds), Cities and their Vital Systems: Infrastructure, Past, Present and Future, National Academy Press, Washington, DC, pp.85-97.

Thanks to Bill Rand for his work on this 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.


If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software:


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

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

Click to Run Model

;; largest population of any of the areas
globals [ largest-population ]

;; All patches have a potential between 0 and 1.
patches-own [ quality ]

;; The moved-in? variable is true if the turtle is a resident of their current path
;; is it false if they are not a resident
turtles-own [ moved-in? ]

;; sets the model up

to setup
  ca reset-ticks

  ;; if we are distributing the firms make sure they are not on the same patches
  ifelse distribute? [
    ifelse initial-firms > count patches [
      repeat initial-firms [
        ask patches with [ not any? turtles-here ] [
          sprout 1 [ immigrate ]
      user-message "Can't distribute, fewer patches than people."

  ;; otherwise just create them randomly
    crt initial-firms [  immigrate setxy random-pxcor random-pycor ]

  ;; update the sizes of the firms on the basis of the other firms there

  ;; set up the patch qualities
  ask patches [ set quality random-float 1 set pcolor quality * 10 + green - 5]

  ;; initialize the plot

;; the main execution routine

to go

  ;; if birth is turned on, have a new firm immigrate
  if birth? [
    ask one-of turtles [
      hatch 1 [ immigrate ]

  ;; record the largest population
  set largest-population max [ population ] of patches

  ;; ask turtles who are moved in, if they want to move out now
  ask turtles with [ moved-in? ]
    [ if move-out? [ move-out ] ]

  ;; turtles look for a place to live, moving in if they find a good one
  ask turtles with [ not moved-in? ] [ search ]

  ;; update the sizes

  ;; advance clock

  ;; update the plot

;; sets the size of each firm to a relative indication of how many firms are located on that patch

to update-sizes
  set largest-population max [ population ] of patches
  ask turtles [
    let new-size population / largest-population
    ifelse new-size < 0.1 [
      set size 0.1
      set size new-size

;; turtles run this procedure when entering the city

to immigrate
  set moved-in? false
  set shape "person"
  set color red
  set heading random 4 * 90

;; turtles run this procedure when existing the city

to emigrate

;; move around and look for a new home

to search        ;; turtle procedure
 repeat attempts  [
 if ( move-in? ) [ move-in ]

;; reports the current population in the region

to-report population
  report count turtles in-radius region-size

;; the routine that determines the probability of settling in the current location

to-report suitability
  report ( quality * (1 - increasing-returns) ) + ( increasing-returns * ( population / largest-population ) )

;; return true if the turtle should move into the current patch

to-report move-in?    ;; turtle procedure
   report random-float 1 < suitability

;; return true if the turtle should move out of the current patch

to-report move-out?   ;; turtle procedure
;;  report false
  report random-float 1 > suitability

;; called when a turtle moves in

to move-in       ;; turtle procedure
  set moved-in? true

;; called when a turtle moves out

to move-out      ;; turtle procedure
  set moved-in? false

;; has the firm randomly wander

to wander        ;; turtle procedure
  rt random 2 * 90
  lt random 2 * 90
  fd 1

;; updates the plot

to do-plot
  set-current-plot "Residents"
  set-plot-x-range 0 1 + max [ count turtles-here ] of patches
  set-histogram-num-bars 10
  histogram [ count turtles-here ] of patches with [ any? turtles-here ]

; Copyright 2007 Uri Wilensky.
; See Info tab for full copyright and license.

There are 10 versions of this model.

Uploaded by When Description Download
Uri Wilensky about 5 years ago Updated to NetLogo 5.0.4 Download this version
Uri Wilensky over 5 years ago Updated version tag Download this version
Uri Wilensky over 5 years ago Updated to version from NetLogo 5.0.3 distribution Download this version
Uri Wilensky over 6 years ago Updated to NetLogo 5.0 Download this version
Uri Wilensky almost 8 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky almost 8 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky almost 8 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky almost 8 years ago Updated from NetLogo 4.1 Download this version
Uri Wilensky about 8 years ago Model from NetLogo distribution Download this version
Uri Wilensky about 8 years ago Urban Suite - Path Dependence Download this version

Attached files

File Type Description Last updated
Urban Suite - Path Dependence.png preview Preview for 'Urban Suite - Path Dependence' about 5 years ago, by Uri Wilensky Download

This model does not have any ancestors.

This model does not have any descendants.