Tuskless elephants
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model is trying to explore how heavy poaching affects elephant population in Africa. This is an evolutionary biology model. The inspiration for this model is the work of Joyce Poole on Gorongosa elephants.
"Ivory hunting was rampant in Gorongosa over the 15 years of Mozambique’s civil war, which ended in 1992. The war has reshaped Gorongosa’s elephant population in surprising ways, in what might be called an example of rapid natural (or unnatural) selection.
While virtually no male elephants are tuskless (they need tusks to fight), about 2 percent of female elephants are naturally tuskless. Among female elephants in Gorongosa who were adults during the civil war, however, half are tuskless—the others were simply killed. But tusklessness is an inheritable trait. That means that, even though poaching levels have fallen, a third of Gorongosa’s young female population is tuskless today."
More details and a video can be found here: http://nautil.us/issue/41/selection/how-an-elephant-loses-its-tusks
So our environment is elephants’ habitat, Gorongosa, Mozambique.
HOW IT WORKS
Model implements one type of agent: Elephants.
Agents have 3 properties.
AGE: Age of an elephant used for determining maturation level of an elephant. It’s crucial for giving birth or being hunted for ivory.
GENDER: Male or female. Only female elephants can be tuskless.
TUSK?: True for tusky elephants and false for tuskless ones.
Female agents can give birth and depending on mother’s TUSK? property, the offspring can be tusky or tuskless.
Agents get one year older at every tick.
Some of tusky mature elephants get killed based on KILL-RATE.
Agents die because of old age when they reach a certain age.
Model starts with the initial elephant population, INITIAL-TUSKLESSNESS (initial natural tuskless elephant rate), KILL-RATE (how many elephants killed every year for ivory), FEMALE-MATURATION-AGE (being able to give birth) and TUSK-MATURATION-AGE (being grown enough to be killed for ivory).
Every tick is one year. Every year births and deaths calculated according to mentioned variables. Females with tusks never give birth to tuskless offspring and tuskless females have 50 percent chance of giving birth to tuskless offspring, since males always have tusks. Model also considers dying of old age.
SETUP creates randomly distributed population according to initial variables.
Every tick is a year. Every year following events occur:
• Mature females give birth in every 6 years. New born’s properties determined by parent’s properties. • Elephants get 1 year older. • Mature tusky elephants get killed (Based on kill-rate.) • Old elephants (over a certain age) die naturally.
If no male or female elephant left alive (Extinction) model stops execution.
HOW TO USE IT
Model comes with default input values. For a quick start, just hit SETUP and then hit GO.
Inputs are as follows:
INITIAL-TUSKLESSNESS: Naturally 2% of elaphants are tuskless. This variable represents natural tusklessness ratio.
TOTAL-POPULATION: Starting population of elephants.
KILL-RATE: Effect of poaching. How many elephants being killed every year as a percentage of population.
FEMALE-MATURATION-AGE: At what age females can give birth.
TUSK-MATURATION-AGE: At what age elephants grow big enough tusks to be hunted.
MAX-ALLOWED-POPULATION: Upper limit of elephant population. Say, all other factors (such as vegetation, climate) embedded in this variable. You can think of it as "carrying capacity." Carrying capacity creates another evolutionary pressure over population besides poaching.
SETUP button prepares the environment and distributes initial population. Since ticks considered as years, to have a better control on passage of time I suggest to use GO FOR 50 TICKS button instead of GO. Hit GO FOR 50 TICKS a few times. After that, you can tweak input values. For instance you can lower KILL-RATE (indicates less poaching) and then hit GO FOR 50 TICKS again.
After tweaking, you can use RESET TO DEFAULTS button to go back to predetermined initial values.
Model automatically stops when no male or female elephant remains.
In the middle, we have the world as our main output medium. After setup, you will see our elephants distributed randomly. Elephants are represented as circles. Green ones are male, red ones are female and blue ones are tuskless elephants. As model executes, you will see elephants appear, grow and die. Circle size depends on age. So bigger circles indicate older elephants.
There are six plots on the screen as outputs.
MEAN-AGE plots: First one plots average age tusky and tuskless elephants. Second one show average ages based on gender.
TUSKLESSNESS-RATIO plot: You can observe groving of tuskless population here. Blue line indicates INITIAL-TUSKLESSNESS. Black line shows tuskless elephant percentage in all population and the red line shows tuskless percentage of female elephants.
TUSKLESS & TOTAL FEMALES: This plot shows tuskless vs all female population by actual numbers.
MALES VS FEMALES: This plot shows male and female population by actual numbers.
POPULATION: This plot show all elephant population by numbers.
THINGS TO NOTICE
Size of the circles indicates age. Notice the size of blue circles and compare with others. You can see how fast big blue circles start to dominate view. Also you may check MEAN AGE plots.
Also notice, tusklessness won't grow forever, settless after a while. Notice how settling level related to MAX-ALLOWED-POPULATION (carrying capacity).
If you set MAX-ALLOWED-POPULATION too low, you should notice tusklessness ratio rises very strongly.
THINGS TO TRY
Try to set KILL-RATE to 0. See how would be the natural state of elephant population.
Also try to set INITIAL-TUSKLESSNESS to 0 and see what would happen if elephants haven't had this mutation.
Try to tweak maturation sliders to see the relation between the two.
Finally, try to rise KILL-RATE all the way up to 100%, meaning poachers kill every mature elephant with tusk and witness the power of this surviving strategy.
Try going for 100 - 200 ticks with high (such as 15%) KILL-RATE and then going for another 100 with lower KILL-RATE (maybe 7%). See the long term effect of an era of heavy poaching.
Try to rise MAX-ALLOWED-POPULATION all the way up to 100,000 to simulate no upper bound case. See the results.
EXTENDING THE MODEL
In the end, this is somewhat naive implementation of real phenomena. Real-life population and poaching data can be integrated into the model. Reproduction behaviour also may have nuances. Other causes of natural deaths can be considered.
NETLOGO FEATURES
Model built with basic tools provided by NetLogo. TO-REPORT command was helpful to avoid runtime errors.
RELATED MODELS
Model seems to stand between "Peppered Moths" and "Wolf Sheep Predation".
CREDITS AND REFERENCES
2016, humbleai.com Ugur
No animals were harmed in the making of this model.
You can use model as you like. No restrictions whatsoever.
This model built as a Final Project for Introduction to Agent-Based Modeling MOOC. Check it out: https://www.complexityexplorer.org/courses/23-introduction-to-agent-based-modeling
Comments and Questions
globals [ max-age circle-size] turtles-own [ age gender tusk? ] to setup ca set max-age 60 ;; agents can live up to max-age set circle-size 10 ;; bigger means smaller circles ask patches [ set pcolor brown + 4.9 ] crt total-population [ ;; some initial values for every agent. set gender "male" set color red set shape "circle" set xcor random-xcor set ycor random-ycor set tusk? true set age random max-age set size age / circle-size ;; circle size grows with age. ;; initial gender distribution is 50%. ;; So we make half of the agents female. ;; Some of females are tuskless. if random 2 = 1 [ set gender "female" set color green if random 100 < ( initial-tusklessness * 2 ) [ set tusk? false set color blue ] ;; only females can be tuskless ] ] ;; check if we have any tuskless elephants if count turtles with [ tusk? = false ] < 1 and initial-tusklessness > 0 [ setup ] reset-ticks end to go ask turtles [ ;; give birth in every 6 years after certain age if count turtles < max-allowed-population and gender = "female" and age > female-maturation-age and age mod 6 = 0 [ ;; some default values let offspring-gender "male" let offspring-color red let offspring-tusk true if random 2 = 1 ;; initial gender distribution is 50% [ set offspring-gender "female" set offspring-color green ;; if mother is tuskless, child's chance of being tuskless is 50%. ;; because father is tusky. if tusk? = false and random 2 = 1 [ set offspring-tusk false set offspring-color blue ] ] ;; hello world hatch 1 [ set age 1 set xcor random-xcor set ycor random-ycor set tusk? offspring-tusk set gender offspring-gender set color offspring-color ] ;; /hatch ] ;; / if ] ;; / give birth ;; increase age and adjust size accordingly ask turtles [ set age age + 1 set size age / circle-size ] ;; grown ones will be hunted for tusks ask turtles [ if tusk? and age >= tusk-maturation-age and ( random 100 <= kill-rate ) [ die ] ] ;; die naturally from old age ask turtles [ if age > max-age [ die ] ] tick ;; stop execution. extinction case. if count turtles with [ gender = "male" ] = 0 or count turtles with [ gender = "female" ] = 0 [ stop ] end ;; Reset to initial values to reset-to-defaults set initial-tusklessness 2 set total-population 500 set kill-rate 15 set female-maturation-age 16 set tusk-maturation-age 18 set max-allowed-population 1000 end ;; for plotting. checks against errors such as division by zero. to-report mean-age-tusky ifelse count turtles with [ tusk? ] > 0 [ report mean [ age ] of turtles with [ tusk? ] ] [ report 0 ] end to-report mean-age-tuskless ifelse count turtles with [ tusk? = false ] > 0 [ report mean [ age ] of turtles with [ tusk? = false ] ] [ report 0 ] end to-report mean-age-females ifelse count turtles with [ gender = "female" ] > 0 [ report mean [ age ] of turtles with [ gender = "female" ] ] [ report 0 ] end to-report mean-age-males ifelse count turtles with [ gender = "male" ] > 0 [ report mean [ age ] of turtles with [ gender = "male" ] ] [ report 0 ] end to-report tusklessness-ratio ifelse count turtles with [ tusk? = false ] > 0 [ report count turtles with [ tusk? = false ] / count turtles * 100 ] [ report 0 ] end to-report tusklessness-ratio-female-only ifelse count turtles with [ tusk? = false ] > 0 [ report count turtles with [ tusk? = false ] / count turtles with [ gender = "female" ] * 100 ] [ report 0 ] end to-report count-tuskless ifelse count turtles with [ tusk? = false ] > 0 [ report count turtles with [ tusk? = false ] ] [ report 0 ] end to-report count-females ifelse count turtles with [ gender = "female" ] > 0 [ report count turtles with [ gender = "female" ] ] [ report 0 ] end to-report count-males ifelse count turtles with [ gender = "male" ] > 0 [ report count turtles with [ gender = "male" ] ] [ report 0 ] end
There are 2 versions of this model.
This model does not have any ancestors.
This model does not have any descendants.