Heatbugs New Benchmark
No preview image
Model was written in NetLogo 4.0beta5
•
Viewed 191 times
•
Downloaded 26 times
•
Run 2 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
VERSION
$Id: Heatbugs New Benchmark.nlogo 37529 2008-01-03 20:38:02Z craig $
benchmark -- modeled on Repast version
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 [ ideal-temp output-heat unhappiness ] patches-own [ temp ] to benchmark random-seed 362 setup reset-timer ;; put it here because it's easier to imitate this in Repast repeat 300 [ go ] set result timer end to setup clear-all ;; creating the bugs the following way ensures that we won't ;; wind up with more than one bug on a patch ask n-of bug-count patches [ sprout 1 [ set color lime set size 1.75 ;; try to match look in Repast set ideal-temp min-ideal-temp + random abs (max-ideal-temp - min-ideal-temp ) set output-heat min-output-heat + random abs (max-output-heat - min-output-heat) set unhappiness abs (ideal-temp - temp) ] ] ;; plot the initial state of the system ;plot mean values-from turtles [unhappiness] end to go if not any? turtles [ stop ] ;; diffuse heat through world diffuse temp diffusion-rate ask turtles [ step ] recolor-patches tick ;plot mean values-from turtles [unhappiness] end to recolor-patches ask patches [ ;; the world retains a percentage of its heat each cycle set temp temp * (1 - evaporation-rate) ;; hotter patches will be red turning to white, cooler patches will be black set pcolor scale-color red temp 0 500 ] end to step ;; turtle procedure ;; my unhappiness is the magnitude or absolute value of the difference ;; between by ideal temperature and the temperature of this patch set unhappiness abs (ideal-temp - temp) ;; if unhappy and not at the hottest neighbor8 ;; then move to an open neighbor (trying random ones up to 10 times) ifelse unhappiness = 0 [ set temp temp + output-heat ] [ let target find-target if (patch-here != target) or (random-move-chance > random 100) [ bug-move target ] set temp temp + output-heat ] end ;; find the hottest or coolest location next to me to-report find-target ;; turtle procedure ifelse temp < ideal-temp [ report max-one-of neighbors [temp] ] [ report min-one-of neighbors [temp] ] end to bug-move [target] ;; turtle procedure let tries 0 ;; move to the hottest (or coolest location if I'm too hot) location next to me ;; if it is not occupied by another bug if not any? turtles-on target [ move-to target stop ] ;; If I can't get to the best spot, then I try the others randomly ;; I only try 9 times, since there are only nine spots around me. ;; Even then, I might try a spot more than once. while [tries <= 9] [ set tries tries + 1 set target one-of neighbors if not any? turtles-on target [ move-to target stop ] ] 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.