turtles-own [ sugar-holdings sugar-metabolism vision-level
max-so-far hd-of-max r-of-max r ]
to agent-move-M
move-to-max
setsugar-holdings sugar-holdings - sugar-metabolism
if sugar-holdings <= 0 [die]
setsugar-holdings sugar-holdings + sugar-level-at 0 0
setsugar-level 0
end
to reproduce
if sugar-holdings > hatch-threshold
[setsugar-holdings (sugar-holdings / 2)
hatch [relocate move-to-max] ]
end
to relocate
seth random 360 leap 1
if count-turtles-here > 1 [relocate]
end
to move-to-max
setmax-so-far sugar-level
sethd-of-max heading
setr-of-max 0
seth (90 * random 4)
setr vision-level
repeat vision-level [repeat 4
[if ( ( (count-turtles-towards 0 r) < 1)
and ((sugar-level-towards 0 r ) > max-so-far))
[setmax-so-far sugar-level-towards 0 r
sethd-of-max heading setr-of-max r ] rt 90 ] setr r - 1 ]
seth hd-of-max
if (max-so-far > (sugar-level-at xcor ycor)) [leap r-of-max]
end
to sugar-color
scale-color red (sugar-holdings) 0 (hatch-threshold + 5)
end
to metab-color
scale-color purple (sugar-metabolism) 1 4
end
to vis-color
scale-color blue vision-level 1 4
end
to color-turtles
ifelse (colorscheme = 0) [sugar-color]
[ifelse (colorscheme = 1) [metab-color] [vis-color]]
end
|
patches-own [sugar-level sugar capacity]
globals [colorscheme averagesugar averagevision averagemetabolism
nowshown]
to setup
ca
setcolorscheme 0 setaveragesugar 0
setaveragevision 0 setaveragemetabolism 0
makecircles
crt n-agents
ask-turtles [ setvision-level (1 + random 4)
setsugar-metabolism (1 + random 4) setsugar-holdings 10
setxy random screen-width random screen-height
sugar-color ]
ave-sugar
ave-metabolism
ave-vision
setnowshown true
setupgraph
end
to go
ask-turtles [agent-move-M color-turtles]
ave-sugar ave-metabolism ave-vision
ifelse alphinity = 0 [sugar-growback-Galpha]
[sugar-growback-Ginfinity]
if birth? = 1 [ask-turtles [reproduce]]
graph-it
end
to growback
ave-sugar ave-metabolism ave-vision
ifelse alphinity = 0 [sugar-growback-Galpha]
[sugar-growback-Ginfinity]
graph-it
end
to makecircles
ca crt 249 ask-patches [setsugar-capacity 0]
ask-turtles [ht
ifelse (int (who / 2)) = (who / 2)
[setxy screen-half-width / 2 screen-half-height / 2]
[setxy (0 - screen-half-width) / 2 (0 - screen-half-height
/ 2)] setsugar-holdings capacity-constant
repeat 12 [setsugar-capacity (round sugar-holdings)
setsugar-holdings (sugar-holdings - (capacity-constant /
12)) fd 1 ]
ifelse ycor > 0
[setsugar-holdings ( 1 - abs (225 - heading) / 45)
if xcor > (screen-half-width) / 2
or ycor > (screen-half-height / 2) [die]
hatch [setx xcor - .5 seth 225
repeat 16 [setsugar-capacity round (sugar-holdings) fd 1]
die]
seth 225
repeat 16 [setsugar-capacity round (sugar-holdings) fd 1]
die ]
[setsugar-holdings ( 1 - abs (45 - heading) / 45)
if xcor < (0 - screen-half-width) / 2
or ycor < (0 - screen-half-height / 2) [die]
hatch [setx xcor - .5 seth 45
repeat 16 [setsugar-capacity round (sugar-holdings) fd 1]
die] seth 45
repeat 16 [setsugar-capacity round (sugar-holdings) fd 1]
die]]
ask-patches [setsugar-level sugar-capacity]
color-em
end
to sugar-growback-Galpha
ask-patches [ setsugar-level sugar-level + (milli-alpha
/ 1000)
if sugar-level > sugar-capacity [setsugar-level sugar-capacity]]
color-em
end
to sugar-growback-Ginfinity
ask-patches [ setsugar-level sugar-capacity ] color-em
end
to color-em
ask-patches [scale-pc yellow sugar-level (black-is) (white-is)]
end
to setupgraph
pp1 ppreset setppc black ppd
pp2 ppreset setppc red ppd
pp3 ppreset setppc blue ppd
pp4 ppreset setppc purple ppd
setplot-xmax 100 setplot-ymax 50
setplot-title "Agents (brown) Metab (green) Sugar (blue)"
end
to graph-it
pp1 plot count-turtles
pp2 plot averagesugar * 10
pp3 plot averagevision * 10
pp4 plot averagemetabolism * 10
end
to ave-sugar
setaveragesugar 0
ask-turtles[setaveragesugar (averagesugar + sugar-holdings)]
setaveragesugar (averagesugar / count-turtles)
end
to ave-vision
setaveragevision 0
ask-turtles[setaveragevision (averagevision + vision-level)]
setaveragevision (averagevision / count-turtles)
end
to ave-metabolism
setaveragemetabolism 0
ask-turtles[setaveragemetabolism
(averagemetabolism + sugar-metabolism)]
setaveragemetabolism (averagemetabolism / count-turtles)
end
|