Evolution of Aggression

Evolution of Aggression preview image

1 collaborator

Tags

biology 

Tagged by Francisco J. Romero-Campero over 12 years ago

evolution 

Tagged by Francisco J. Romero-Campero over 12 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.2 • Viewed 1069 times • Downloaded 57 times • Run 0 times
Download the 'Evolution of Aggression' modelDownload this modelEmbed this model

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.

  1. 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.

  2. 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.

  3. 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

  1. Set the SHOW-FITNESS? switch On to display the fitness associted with each individual or Off otherwise.
  2. Adjust the slider parameters (see below), or use the default settings.
  3. Press the SETUP button.
  4. Press the GO button to begin the simulation.
  5. 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.
  6. 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

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

Click to Run Model

;; 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.