Rappaport Model

Rappaport Model preview image

This model is seeking new collaborators — would you please help?

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.4.0 • Viewed 30 times • Downloaded 0 times • Run 0 times
Download the 'Rappaport Model' modelDownload this modelEmbed this model

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


Model Information

WHAT IS IT? This model simulates the dynamics between the human and pig populations in a community, inspired by anthropologist Roy Rappaport's studies on the Tsembaga-Maring. The model includes natural resource management, population growth, resource consumption, and rituals that affect both the pig and human populations. It also allows for alternating periods of high and low fertility, impacting resource regeneration.

HOW IT WORKS The model operates as follows:

Initialization (setup):

  • An initial number of humans and pigs are created according to user-set values via sliders.
  • Each patch of the world is assigned a random resource level.
  • The total available resources are calculated.
  • Initial values for the pig, human, and ritual counters are set.
  • Population graphs are initialized.
  • The resource increment rate is set based on the slider value.

Simulation (go): During each tick, the following actions are performed:

  • Resource Growth (grow-resources): Resources in each patch increase based on the fertility stage and the growth rate.
  • Fertility Stage Switching (switch-fertility-stages): If the agricultural cycles option is enabled, patches switch between high and low fertility every 50 ticks.
  • Human Population Growth (grow-humans): If the human population is less than 100, a new human is created.
  • Pig Population Growth (grow-pigs): If the pig population is less than 200, a new pig is created.
  • Resource Consumption (consume-resources): Humans and pigs consume resources from the patches. Each consumption reduces the resource level by 10 units.
  • Ritual Check and Performance (check-ritual): If available resources fall below the defined threshold (ritual-threshold), a ritual is performed where pigs are sacrificed, increasing the available resources. If resources are still insufficient after the ritual, the human population is reduced.
  • Rituals (perform-ritual): Half of the pig population is sacrificed, and the available resources increase by an amount equivalent to the number of pigs sacrificed.
  • Human Population Reduction (perform-human-death): If available resources are still insufficient after a ritual, the human population is reduced by one-fifth.

HOW TO USE IT

Initial Setup:

  • Adjust the sliders for init-humans, init-pigs, threshold-resources, and resource-growth-rate to set the initial number of humans, pigs, the resource threshold for performing rituals, and the resource growth rate, respectively.
  • Activate the agricultural-cycles switch to include agricultural cycles.

Running the Model:

  • Click the setup button to initialize the model with the configured values.
  • Click the go button to start the simulation. The go button should be set to run continuously.

Monitoring and Graphs:

  • Observe the monitors to see the pig and human counters.
  • Watch the graph to see the evolution of the pig and human populations over time.

THINGS TO NOTICE

  • Observe how the human and pig populations interact with the available resources.
  • Note how the performance of rituals affects population dynamics and resource availability.
  • Observe the conditions under which the human population is reduced and how this impacts system stability.

THINGS TO TRY

  • Adjust the initial values of humans and pigs to see how different configurations affect the model's dynamics.
  • Modify the resource threshold (ritual-threshold) to observe how changes in ritual frequency impact population and resources.
  • Experiment with turning agricultural cycles on and off to see how they affect resource availability and population dynamics.

EXTENDING THE MODEL

  • Introduce new factors affecting population growth, such as diseases or migrations.
  • Add variations in the resource growth rate to simulate different environmental conditions.
  • Include new species or different types of resources to increase the model's complexity.

CREDITS AND REFERENCES This model is based on ideas presented by Roy Rappaport in his book "Pigs for the Ancestors."

If you mention this model or the NetLogo software in a publication, please include the following citations:

  • For the model itself: Based on Rappaport, R. (1968). Pigs for the Ancestors: Ritual in the Ecology of a New Guinea People. Yale University Press.
  • Please cite the NetLogo software as: Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Comments and Questions

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

Click to Run Model

globals [
  resources        ;; natural resources available
  ritual-threshold ;; threshold to trigger rituals
  pig-count        ;; count of pigs
  human-count      ;; count of humans
  ritual-count     ;; count of rituals performed
  fertility-stage  ;; current fertility stage
  total-rituals    ;; total count of rituals performed
  rituals-per-tick ;; average rituals per tick
]

turtles-own [
  pig?             ;; indicates if the turtle is a pig
]

patches-own [
  resource-level   ;; resource level on each patch
]

to setup
  clear-all
  ;; Initial setup of agents and patches
  set-default-shape turtles "person"

  ;; Create the initial number of humans
  create-turtles init_humans [
    setxy random-xcor random-ycor
    set color black
    set pig? false
  ]
  ;; Create the initial number of pigs
  create-turtles init_pigs [
    setxy random-xcor random-ycor
    set color pink
    set shape "pig"
    set pig? true
  ]
  ;; Assign random resource levels to patches
  ask patches [
    set resource-level random 100
    patch-recolor
  ]
  ;; Calculate the total resources
  set resources sum [resource-level] of patches
  ;; Set the ritual threshold
  set ritual-threshold threshold_resources
  ;; Initial counts of pigs and humans
  set pig-count count turtles with [pig?]
  set human-count count turtles with [not pig?]
  ;; Reset the tick counter
  reset-ticks
  ;; Initialize the total ritual counter
  set total-rituals 0
  ;; Initialize population graphs
  initialize-population-plots
end 

to patch-recolor ;; patch procedure
  ;; Color patches based on the amount of resources they have
  set pcolor (green + 4.9 - (resource-level / 25))
end 

to go
  ;; Execute simulation steps
  if agricultural-cycles [
    switch-fertility-stages
  ]
  grow-resources
  grow-humans
  grow-pigs
  consume-resources
  check-ritual
  ;; Update pig and human counts
  set pig-count count turtles with [pig?]
  set human-count count turtles with [not pig?]
  ;; Recolor the patches
  ask patches [patch-recolor]
  ;; Calculate the average rituals per tick
  if ticks > 0 [
    set rituals-per-tick total-rituals / ticks
  ]
  ;; Advance one tick
  tick
  ;; Update population graphs
  update-population-plots
end 

to grow-resources
  ;; Increase resources on all patches based on fertility stage and growth rate
  ask patches [
    if agricultural-cycles [
      if fertility-stage = "high" [
        set resource-level resource-level + (2 * resource-growth-rate)
      ]
      if fertility-stage = "low" [
        set resource-level resource-level + (1 * resource-growth-rate)
      ]
    ]
    if not agricultural-cycles [
      set resource-level resource-level + resource-growth-rate
    ]
    ;; Ensure resources do not go below zero
    if resource-level < 0 [
      set resource-level 0
    ]
  ]
  ;; Recalculate total resources
  set resources sum [resource-level] of patches
end 

to switch-fertility-stages
  ;; Switch fertility stages every 50 ticks
  if ticks mod 50 = 0 [
    ask patches [
      ifelse fertility-stage = "high" [
        set fertility-stage "low"
      ] [
        set fertility-stage "high"
      ]
    ]
  ]
end 

to grow-humans
  ;; Grow the human population if it's below 100 (arbitrary limit)
  if (count turtles with [not pig?]) < 100 [
    create-turtles 1 [
      setxy random-xcor random-ycor
      set color black
      set pig? false
    ]
  ]
end 

to grow-pigs
  ;; Grow the pig population if it's below 200 (arbitrary limit)
  if (count turtles with [pig?]) < 200 [
    create-turtles 1 [
      setxy random-xcor random-ycor
      set color pink
      set shape "pig"
      set pig? true
    ]
  ]
end 

to consume-resources
  ;; Consume resources by all turtles
  ask turtles [
    if any? patches with [resource-level > 0] [
      let target-patch one-of patches with [resource-level > 0]
      ask target-patch [
        set resource-level max (list 0 (resource-level - 10))
        set resources resources - 10
      ]
    ]
  ]
end 

to check-ritual
  ;; Check if a ritual should be performed
  if resources < ritual-threshold [
    perform-ritual
  ]
end 

to perform-ritual
  ;; Perform a ritual
  let pigs-to-kill count turtles with [pig?] / 2
  set ritual-count ritual-count + 1
  set total-rituals total-rituals + 1
  ;; Sacrifice pigs
  ask n-of pigs-to-kill turtles with [pig?] [
    die
  ]
  ;; Increase resources due to the ritual
  set resources resources + pigs-to-kill
  ;; Check if the human population should decrease
  if resources < ritual-threshold [
    perform-human-death
  ]
end 

to perform-human-death
  ;; Decrease the human population (one-fifth of humans die if resources are below the threshold)
  let humans-to-kill count turtles with [not pig?] / 5
  ask n-of humans-to-kill turtles with [not pig?] [
    die
  ]
end 

to initialize-population-plots
  ;; Initialize population graphs
  set-current-plot "Population"
  clear-plot
  set-current-plot-pen "Humans"
  set-plot-pen-color blue
  set-current-plot-pen "Pigs"
  set-plot-pen-color red
end 

to update-population-plots
  ;; Update population graphs
  set-current-plot "Population"
  set-current-plot-pen "Humans"
  plot count turtles with [not pig?]
  set-current-plot-pen "Pigs"
  plot count turtles with [pig?]
end 

There are 2 versions of this model.

Uploaded by When Description Download
Jorge Eduardo Miceli 6 days ago Interface size modifications Download this version
Jorge Eduardo Miceli 6 days ago Initial upload Download this version

Attached files

File Type Description Last updated
Rappaport Model.png preview Preview for 'Rappaport Model' 6 days ago, by Jorge Eduardo Miceli Download

This model does not have any ancestors.

This model does not have any descendants.