Wolf Sheep Benchmark
No preview image
Model was written in NetLogo 4.0beta5
•
Viewed 189 times
•
Downloaded 15 times
•
Run 1 time
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
VERSION
$Id: Wolf Sheep Benchmark.nlogo 37529 2008-01-03 20:38:02Z craig $
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
globals [ result ] breed [ sheep a-sheep ] breed [ wolves wolf ] turtles-own [ energy prey ] patches-own [ countdown ] to benchmark random-seed 579 setup reset-timer repeat 400 [ go ] set result timer end to setup ca ask patches [ set pcolor green ] if grass? [ ;; indicates whether the grass switch is on ;; if it is true, then grass grows and the sheep eat it ;; if it false, then the sheep don't need to eat ask patches [ set countdown random grass-delay ;; initialize grass grow clocks randomly if (random 2) = 0 ;;half the patches start out with grass [ set pcolor brown ] ] ] create-ordered-sheep init-sheep ;; create the sheep, then initialize their variables ask sheep [ set color white set energy random-float (2 * sheep-metabolism) set shape "sheep" setxy random world-width random world-height ] create-ordered-wolves init-wolves ;; create the wolves, then initialize their variables ask wolves [ set color black set energy random-float (2 * wolf-metabolism) set shape "wolf" setxy random world-width random world-height ] if plot? [ graph ] end to go ask sheep [ move if grass? [ set energy energy - 1 ;; deduct energy for sheep only if grass? switch is on eat-grass ] reproduce-sheep death ] ask wolves [ move set energy energy - 1 ;; wolves lose energy as they move catch-sheep reproduce-wolves death ] if grass? [ ask patches [ grow-grass ] ] if plot? [ graph ] ;; plot populations tick if (count turtles = 0) [ stop ] end to move ;; turtle procedure rt random 50 - random 50 fd 1 end to eat-grass ;; sheep procedure ;; sheep eat grass, turn the patch brown if pcolor = green [ set pcolor brown set energy energy + sheep-metabolism ;; sheep gain energy by eating ] end to reproduce-sheep ;; sheep procedure if random-float 100 < sheep-reproduce [ ;; throw "dice" to see if you will reproduce set energy round (energy / 2 ) ;; divide energy between parent and offspring hatch 1 [ rt random 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to reproduce-wolves ;; wolf procedure if random-float 100 < wolf-reproduce [ ;; throw "dice" to see if you will reproduce set energy round (energy / 2 ) ;; divide energy between parent and offspring hatch 1 [ rt random 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to catch-sheep ;; wolf procedure set prey one-of sheep-here ;;set prey to ID of one of the sheep in your patch if (prey != nobody) [ ;;check if prey represents a sheep (there is no sheep with ID = -1) ask prey [ set energy -1 ] ;; sheep will then die on next tick set energy energy + wolf-metabolism ;;get energy from sheep ] end to death ;; turtle procedure ;; when energy dips below zero, die if energy < 0 [ die ] end to grow-grass ;; patch procedure ;; countdown on brown patches, if reach 0, grow some grass if pcolor = brown [ ifelse countdown <= 0 [ set pcolor green set countdown grass-delay ] [ set countdown (countdown - 1) ] ] end to graph set-current-plot-pen "sheep" plot count sheep set-current-plot-pen "wolves" plot count wolves if grass? [ set-current-plot-pen "grass / 4" plot count patches with [ pcolor = green ] / 4 ;; divide by four to keep it within similar ;; range as wolf and sheep populations ] end
There are 2 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.