Ants Benchmark
No preview image
Model was written in NetLogo 4.1pre9
•
Viewed 386 times
•
Downloaded 52 times
•
Run 4 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
globals [result] turtles-own [ carrying-food? drop-size ] patches-own [ chemical food nest? nest-scent food-source-number ] ;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; to setup ca setup-turtles setup-patches do-plotting end to benchmark random-seed 337 reset-timer setup repeat 800 [ go ] set result timer end to setup-turtles set-default-shape turtles "bug" cro ants [ set size 2 ;; easier to see this way rt random-float 360 set color red set carrying-food? false ] end to setup-patches ask patches [ set chemical 0 set food 0 set food-source-number -1 setup-nest setup-food update-display ] end to setup-nest ;; patch procedure ;; set nest? variable to true inside the nest set nest? ((distancexy 0 0) < 5) ;; spread a nest-scent over the whole screen -- stronger near the nest set nest-scent (200 - (distancexy 0 0)) end to setup-food ;; patch procedure ;; setup food source one on the right of screen if ((distancexy (0.6 * max-pxcor) 0) < 5) [ set food-source-number 1 ] ;; setup food source two on the lower-left of screen if ((distancexy (-0.6 * max-pxcor) (-0.6 * max-pycor)) < 5) [ set food-source-number 2 ] ;; setup food source three on the upper-left of screen if ((distancexy (-0.8 * max-pxcor) (0.8 * max-pycor)) < 5) [ set food-source-number 3 ] ;; set "food" at sources to either 1 or 2 if (food-source-number > 0) [ set food (1 + random 2) ] end to update-display ;; patch procedure ;; give color to nest and food sources ifelse nest? [ set pcolor violet ] [ ifelse (food > 0) [ if (food-source-number = 1) [ set pcolor cyan ] if (food-source-number = 2) [ set pcolor sky ] if (food-source-number = 3) [ set pcolor blue ] ] [ set pcolor scale-color green chemical 0.1 5 ] ;; scale color to show chemical concentration ] end ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Runtime Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;; to go ;; forever button ask turtles [ go-turtles ] diffuse chemical (diffusion-rate / 100) ask patches [ go-patches ] tick do-plotting end to go-turtles ;; turtle procedure if (who < ticks) ;; delay the initial departure of ants [ ifelse carrying-food? [set color orange + 1 return-to-nest ] ;; if ant finds food, it returns to the nest [set color red look-for-food ] ;; otherwise it keeps looking ] end to go-patches ;; patch procedure set chemical (chemical * (100 - evaporation-rate) / 100) ;;slowly evaporate chemical update-display ;; Refresh the Display end to return-to-nest ;; turtle procedure ifelse nest? ;; if ant is in the nest, it drops food and heads out again [ set carrying-food? false rt 180 fd 1 ] [ set chemical (chemical + drop-size) ;; drop some chemical, but the amount decreases each time set drop-size (drop-size - 1.5) if (drop-size < 1) [set drop-size 1] uphill-nest-scent ;; head toward the greatest value of nest-scent wiggle ;; which is toward the nest fd 1] end to look-for-food ;; turtle procedure if (food > 0) [ set carrying-food? true ;; pick up food set food (food - 1) ;; and reduce the food source set drop-size 60 rt 180 stop ;; and turn around ] ifelse (chemical > 2) [ fd 1 ] [ ifelse (chemical < 0.05) ;; go in the direction where the chemical smell is strongest [ wiggle fd 1] [ uphill-chemical fd 1] ] end to uphill-chemical ;; turtle procedure wiggle ;; sniff left and right, and go where the strongest smell is let scent-ahead [chemical] of patch-ahead 1 let scent-right chemical-scent 45 let scent-left chemical-scent -45 if ((scent-right > scent-ahead) or (scent-left > scent-ahead)) [ ifelse (scent-right > scent-left) [ rt 45 ] [ lt 45 ] ] end to uphill-nest-scent ;; turtle procedure wiggle ;; sniff left and right, and go where the strongest smell is let scent-ahead [nest-scent] of patch-ahead 1 let scent-right get-nest-scent 45 let scent-left get-nest-scent -45 if ((scent-right > scent-ahead) or (scent-left > scent-ahead)) [ ifelse (scent-right > scent-left) [ rt 45 ] [ lt 45 ] ] end to wiggle ;; turtle procedure rt random 40 - random 40 if not can-move? 1 [ rt 180 ] end to-report get-nest-scent [ angle ] let p patch-right-and-ahead angle 1 if p != nobody [ report [nest-scent] of p ] report 0 end to-report chemical-scent [ angle ] let p patch-right-and-ahead angle 1 if p != nobody [ report [chemical] of p ] report 0 end to do-plotting if not plot? [ stop ] set-current-plot "Food in each pile" set-current-plot-pen "food-in-pile1" plot count patches with [pcolor = cyan] set-current-plot-pen "food-in-pile2" plot count patches with [pcolor = sky] set-current-plot-pen "food-in-pile3" plot count patches with [pcolor = blue] end
There are 3 versions of this model.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.