Rappaport 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
, andresource-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. Thego
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
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.
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.