Evolution of Aggression
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 evolution of aggresion in a system consisting of animals fighting for a resource necessary for reproduction. Three different strategies are considered: doves, hawks and retaliators.
Doves are not aggresive, they start displaying and retreat at once if their opponent is aggresive. When both opponents display one of them eventually gives up the reward to the other one but both pay a cost for wasting time.
Hawks are aggresive and fight with opponents that do not retreat until one of them is seriously injured and the other one gets the reward.
Retaliators start displaying but become aggresive when their opponents are aggresive. They behave as doves when confronted with a dove or another retaliator and as a hawk when they fight a hawk.
This project explores if any of the three strategies is an ESS (Evolutionary Stable Strategy), a strategy that when adopted by most of the individuals in the population cannot be invaded by another strategy.
HOW TO USE IT
- Set the SHOW-FITNESS? switch On to display the fitness associted with each individual or Off otherwise.
- Adjust the slider parameters (see below), or use the default settings.
- Press the SETUP button.
- Press the GO button to begin the simulation.
- Look at the POPULATIONS, FITNESS and RATIO plots to watch the population sizes, their fitness and the ratio of each individual type in the population fluctuate over time.
- Look at the monitors to see the current subpopulation sizes, their fitness and ratio.
Parameters:
SHOW-FITNESS?: Whether or not to show the fitness associate with each individual
TIME-TO-REPRODUCE: Expected time to elpase before an individual reproduces
INITIAL-NUMBER-DOVES: The initial size of the dove population
INITIAL-NUMBER-HAWKS: The initial size of the hawk population
INITIAL-NUMBER-RETALIATORS: The initial size of the retaliator population
INITIAL-FITNESS: The initial fitness associated with each individual
REWARD: Value added to an individual fitness after winning a fight
COST-INJURE: Value substracted from an individual fitness after being injured during a fight
COST-WASTED-TIME: Value substracted from an individual fitness after dove or retaliator fitness
THINGS TO NOTICE
None of these strategy is an ESS with the default settings.
Note that a population of hawks can be invaded by a population of doves and viceversa.
Note that a population of retaliators cannot be invaded by a population of hawks but tolerates a subpopulation of doves.
Note that a population of retaliators is driven extinct when both doves and hawks are introduced.
THINGS TO TRY
Try adjusting the parameters under various settings. Can you find any parameters that make one of these strategy an ESS?
REFERENCES
Smith, J.M. (1982). Evolution and the Theory of Games. Cambridge University Press
COPYRIGHT NOTICE
Copyright 2011 Francisco J. Romero-Campero. All rights reserved.
Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed:
a) this copyright notice is included.
b) this model will not be redistributed for profit without permission from Francisco J. Romero-Campero.
This model was created as part of the projects: COMPUTATIONAL MODELLING AND SIMULATION IN SYSTEMS BIOLOGY (grant number P08-TIC-04200) and CELLULAR COMPUTING; APPLICATIONS TO SYSTEMS AND SYNTHETIC BIOLOGY (grant number TIN2009-13192).These projects gratefully acknowledge the support of the Spanish Ministry of Science and Innovation and the Andalusian Agency for Economy, Innovation and Science.
Comments and Questions
;; Hawks, doves and retaliators are breeds of turtle. breed [hawks hawk] breed [doves dove] breed [retaliators retaliator] ;; Hawks, doves and retaliators have a fitness, a reproduction time and an engaged flag turtles-own [fitness reproduction-time engaged ] ;; Initialisation of the system to setup ;; Remove all previous turtles ;; (for this model to work with NetLogo's new plotting features, ;; __clear-all-and-reset-ticks should be replaced with clear-all at ;; the beginning of your setup procedure and reset-ticks at the end ;; of the procedure.) __clear-all-and-reset-ticks ;; Create doves and initialise their variables set-default-shape doves "default" create-doves initial-number-doves [ ;; Doves are blue set color blue ;; Labels are white set label-color white ;; The fitness is set to the intial value set fitness initial-fitness ;; The reproduction time is generated according to a normal distribution set reproduction-time round (random-normal time-to-reproduce (time-to-reproduce / 5)) ;; Initially each dove is not engaged in a fight set engaged 0 ;; Located at random position setxy random-xcor random-ycor ] ;; Create hawks and initialise their variables set-default-shape hawks "default" create-hawks initial-number-hawks [ ;; Hawks are red set color red ;; Labels are white set label-color white ;; The fitness is set to the intial value set fitness initial-fitness ;; The reproduction time is generated according to a normal distribution set reproduction-time round (random-normal time-to-reproduce (time-to-reproduce / 5)) ;; Initially each hawk is not engaged in a fight set engaged 0 ;; Located at random position setxy random-xcor random-ycor ] ;; Create retaliators and initialise their variables set-default-shape retaliators "default" create-retaliators initial-number-retaliators [ ;; Retaliators are green set color green ;; Labels are white set label-color white ;; The fitness is set to the intial value set fitness initial-fitness ;; The reproduction time is generated according to a normal distribution set reproduction-time round (random-normal time-to-reproduce (time-to-reproduce / 5)) ;; Initially each retaliator is not engaged in a fight set engaged 0 ;; Located at random position setxy random-xcor random-ycor ] display-labels update-plot end to go ;; simulation stops if there are no turtles if not any? turtles [ stop ] ;; All breeds move, decrease their time to reproduction, fight, ;; set their engaged flag to 0, die and reproduce ask doves [ move set reproduction-time reproduction-time - 1 fight-as-dove set engaged 0 death reproduce ] ask hawks [ move set reproduction-time reproduction-time - 1 fight-as-hawk set engaged 0 death reproduce ] ask retaliators [ move set reproduction-time reproduction-time - 1 fight-as-retaliator set engaged 0 death reproduce ] ;; advance the time and update the plots tick update-plot display-labels end ;; Procedure for all breeds to move rt (30 - (random-float 60)) ;;(random-float 180) fd 1 ;;2 end to fight-as-dove ;; Only not engaged dove can start a fight if engaged = 0 [ ;; Checking if there are available opponents in the patch to ;; start a fight let opponent one-of other turtles-here with [ engaged = 0 ] if opponent != nobody [ ;;If there is a free oponent both get engaged in a fight set engaged 1 ask opponent [ set engaged 1 ] ifelse is-hawk? opponent [ ;; If opponent is a hawk, doves flee and hawks get the reward ask opponent [ set fitness ([fitness] of opponent + reward) ] ] [ ;; If opponent is a dove or retaliator, doves pose for some time ;; which produces a penalty for wasting time. The probability of ;; eventually getting the reward is 0.5 ifelse (random 10) < 5 [ set fitness (fitness - cost-wasted-time) ask opponent [ set fitness ([fitness] of opponent + reward - cost-wasted-time) ] ] [ set fitness (fitness + reward - cost-wasted-time) ask opponent [ set fitness ([fitness] of opponent - cost-wasted-time) ] ] ] ] ] end to fight-as-hawk ;; Only not engaged hawks can start a fight if engaged = 0 [ ;; Checking if there are available opponents in the patch to ;; start a fight let opponent one-of other turtles-here with [ engaged = 0 ] if opponent != nobody [ ;;If there is a free oponent both get engaged in a fight set engaged 1 ask opponent [ set engaged 1 ] ifelse is-dove? opponent ;; If opponent is a dove, hawks get the reward and doves flee [ set fitness (fitness + reward) ] ;; If opponent is a hawk or a retaliator, they fight until one of them gets seriously injured [ ifelse (random 10) < 5 [ set fitness (fitness - cost-injure) ask opponent [ set fitness ([fitness] of opponent + reward) ] ] [ set fitness (fitness + reward) ask opponent [ set fitness ([fitness] of opponent - cost-injure) ] ] ] ] ] end to fight-as-retaliator ;; Only not engaged retaliators can start a fight if engaged = 0 [ ;; Checking if there are available opponents in the patch to ;; start a fight let opponent one-of other turtles-here with [ engaged = 0 ] if opponent != nobody [ ;;If there is a free oponent both get engaged in a fight set engaged 1 ask opponent [ set engaged 1 ] ifelse is-hawk? opponent ;; Retaliator behaves as a hawk against a hawk [ ifelse (random 10) < 5 [ set fitness (fitness - cost-injure) ask opponent [ set fitness ([fitness] of opponent + reward) ] ] [ set fitness (fitness + reward) ask opponent [ set fitness ([fitness] of opponent - cost-injure) ] ] ] ;; Retaliator behaves as a dove agains another retaliator or a dove [ ifelse (random 10) < 5 [ set fitness (fitness - cost-wasted-time) ask opponent [ set fitness ([fitness] of opponent + reward - cost-wasted-time) ] ] [ set fitness (fitness + reward - cost-wasted-time) ask opponent [ set fitness ([fitness] of opponent - cost-wasted-time) ] ] ] ] ] end to reproduce ;; turtle procedure ;; when reproduction time equals zero breeds reproduce if reproduction-time = 0 [ hatch 2 [ rt random-float 360 fd 2 set fitness initial-fitness set reproduction-time round (random-normal time-to-reproduce (time-to-reproduce / 5)) ] die ] end to death ;; turtle procedure ;when fitness dips below zero, die if fitness < 0 [ die ] end to update-plot set-current-plot "populations" set-current-plot-pen "doves" plot count doves set-current-plot-pen "hawks" plot count hawks set-current-plot-pen "retaliators" plot count retaliators set-current-plot "fitness" set-current-plot-pen "dove-fitness" if any? doves [ plot mean [fitness] of doves ] set-current-plot-pen "hawk-fitness" if any? hawks [ plot mean [fitness] of hawks ] set-current-plot-pen "retaliator-fitness" if any? retaliators [ plot mean [fitness] of retaliators ] set-current-plot-pen "average-fitness" plot mean [fitness] of turtles set-current-plot "ratio" set-current-plot-pen "doves" if any? turtles [ plot count doves / count turtles ] set-current-plot-pen "hawks" if any? turtles [ plot count hawks / count turtles ] set-current-plot-pen "retaliators" if any? turtles [ plot count retaliators / count turtles ] end to display-labels ask turtles [ set label "" ] if show-fitness? [ ask hawks [ set label fitness ] ask doves [ set label fitness ] ask retaliators [ set label fitness ] ] end ; Copyright 2011 Francisco J. Romero-Campero. ; http://www.cs.us.es/~fran/
There is only one version of this model, created over 12 years ago by Francisco J. Romero-Campero.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Evolution of Aggression.png | preview | Preview for 'Evolution of Aggression' | over 12 years ago, by Francisco J. Romero-Campero | Download |
This model does not have any ancestors.
This model does not have any descendants.