Ant-Based Stochastic Search-and-Reset Strategy
Model was written in NetLogo 6.2.0
•
Viewed 220 times
•
Downloaded 12 times
•
Run 0 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
patches-own [ chemical ;; amount of chemical on this patch food ;; amount of food on this patch (0, 1, or 2) nest? ;; true on nest patches, false elsewhere nest-scent ;; number that is higher closer to the nest food-source-number ;; number (1, 2, or 3) to identify the food sources xc ;; unwrapped xcor yc ;; unwrapped ycor dist ;; turtle distance from origin ] globals [ total-time ;; total number of ticks since initiation nest-mark ;; marks the nest ] ;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all set-default-shape turtles "bug" create-turtles population [ set size 1 ;; easier to see set color red ] ;; red = not carrying food setup-patches reset-ticks end to setup-patches ask patches [ setup-nest setup-food recolor-patch ] end to setup-nest ;; patch procedure ;; set nest? variable to true inside the nest, false elsewhere set nest? (distancexy 0 0) < 1 ;; spread a nest-scent over the whole world -- stronger near the nest ;set nest-scent 200 - distancexy 0 0 end to setup-food ;; patch procedure ;; setup food source one if (distancexy food-x-coordinate food-y-coordinate) < 1 [ set food-source-number 1 ] ;; setup food source two on the lower-left ;if (distancexy (-0.6 * max-pxcor) (-0.6 * max-pycor)) < 1 ;[ set food-source-number 2 ] ;; setup food source three on the upper-left ;if (distancexy (-0.8 * max-pxcor) (0.8 * max-pycor)) < 1 ;[ set food-source-number 3 ] ;; set "food" at sources to either 1 or 2, randomly if food-source-number > 0 [ set food 1 ] end to recolor-patch ;; patch procedure ;; give color to nest and food sources ifelse nest? [ set pcolor violet ] [ ifelse food > 0 [ if food-source-number = 1 [ set pcolor green ] if food-source-number = 2 [ set pcolor green + 3 ] if food-source-number = 3 [ set pcolor green - 3 ] ] ;; scale color to show chemical concentration [ set pcolor scale-color green chemical 0.1 5 ] ] end ;;;;;;;;;;;;;;;;;;;;; ;;; Go procedures ;;; ;;;;;;;;;;;;;;;;;;;;; to go ;; forever button ifelse ticks < reset-time ;; if time is less than reset time [ ask turtles [ if food > 0;; stop tracking ants that find food [ set nest-mark 1 ;; mark nest die ] wiggle fd 1]] ;; move [ ask turtles ;; time is more than reset time [ setxy 0 0 ;; send turtles back to origin if nest-mark > 0 ;; if nest is marked, stop tracking ants [ die ]] reset-ticks ] ;; reset ticks if count turtles = 0 [stop] ;; stop when all ants have found food set total-time total-time + 1 ;; time increment tick ;diffuse chemical (diffusion-rate / 100) ;ask patches ;[ set chemical chemical * (100 - evaporation-rate) / 100 ;; slowly evaporate chemical ; recolor-patch ] end to look-for-food ;; turtle procedure if food > 0 [set nest-mark 1 die ] ;[ set color orange + 1 ;; pick up food ; rt 180 ;; and turn around ; stop ] ;; go in the direction where the chemical smell is strongest ;if (chemical >= 0.05) and (chemical < 2) ;[ uphill-chemical ] end to return-to-nest ;; turtle procedure ;; drop food and head out again ; set color red ; rt 180 ] ;[ set chemical chemical + 60 ;; drop some chemical ; uphill-nest-scent ] ;; head toward the greatest value of nest-scent end ;; sniff left and right, and go where the strongest smell is to uphill-chemical ;; turtle procedure ;let scent-ahead chemical-scent-at-angle 0 ;let scent-right chemical-scent-at-angle 45 ;let scent-left chemical-scent-at-angle -45 ;if (scent-right > scent-ahead) or (scent-left > scent-ahead) ;[ ifelse scent-right > scent-left ; [ rt 45 ] ; [ lt 45 ] ] end ;; sniff left and right, and go where the strongest smell is to uphill-nest-scent ;; turtle procedure ;let scent-ahead nest-scent-at-angle 0 ;let scent-right nest-scent-at-angle 45 ;let scent-left nest-scent-at-angle -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-float 360 lt random-float 360 ifelse not can-move? 1 [ hide-turtle ] [ show-turtle ] set dist xcor * xcor + ycor * ycor end to-report nest-scent-at-angle [angle] ;let p patch-right-and-ahead angle 1 ;if p = nobody [ report 0 ] ;report [nest-scent] of p end to-report chemical-scent-at-angle [angle] ;let p patch-right-and-ahead angle 1 ;if p = nobody [ report 0 ] ;report [chemical] of p end to-report replace-all [target replacement str] ;; screeshot button setup let acc str while [position target acc != false] [ set acc (replace-item (position target acc) acc replacement) ] report acc end ; Copyright 1997 Uri Wilensky. ; See Info tab for full copyright and license.
There is only one version of this model, created almost 3 years ago by Ayaan Dutt.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Ant-Based Stochastic Search-and-Reset Strategy.png | preview | Preview for 'Ant-Based Stochastic Search-and-Reset Strategy' | almost 3 years ago, by Ayaan Dutt | Download |
This model does not have any ancestors.
This model does not have any descendants.