Java StarLogo
2.0
english
`turtle`
turtles-own [ 
   sugar-holdings	; agent's current store of sugar
   sugar-metabolism	; rate at which agents use up their store of sugar
   vision-level 	; how far an agent can see
   ;; Variables used in finding best visible sugar neighbor
   max-so-far ; best sugar value found so far
   hd-of-max  ; heading of that best sugar value
   r-of-max   ; radius (distance) to that best sugar value
   r          ; dummy variable used to check at different radii
]

;; Agent Rules
to agent-move-M
  ;;move to-best-sugar-level...
  move-to-max
  ;; metabolize sugar
  setsugar-holdings sugar-holdings - sugar-metabolism
  if sugar-holdings <= 0 [die]
  ;; (if still alive) eat all the sugar at new location
  setsugar-holdings sugar-holdings + sugar-level-at 0 0
  setsugar-level 0
end

to  reproduce
   ;; reproduce if have enough sugar-holdings
   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
   ;; initialize variables used in finding and recording max
   setmax-so-far sugar-level
   sethd-of-max heading
   setr-of-max 0
   ;; start facing random direction - to prevent biased handling of ties
   seth (90 * random 4)
   setr vision-level 
   repeat vision-level [ ;; check at each distance
     repeat 4 [          ;; and in each of the four directions
	if  (;; unoccupied?
             ( (count-turtles-towards 0 r) < 1 )
		and                                
             ;; and better than best so far
	     ((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 
     ;check if better off than you are now?
   if (max-so-far > (sugar-level-at 0 0)) 
      ;; better off? then move to the new spot  
      [leap r-of-max]
end

;; Visualizations
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


`observer`
patches-own [
   sugar-level     ; amount of sugar currently at the patch
   sugar-capacity  ; upper limit on amount of sugar that can be at the patch
]

globals [colorscheme averagesugar averagevision averagemetabolism nowshown]

to setup
   ca
   setcolorscheme 0
   setaveragesugar 0
   setaveragevision 0
   setaveragemetabolism 0
   ;;Patches
   makecircles
   ;; Agents
   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
   clearplots
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]]
end

to growback
   ave-sugar ave-metabolism ave-vision
   ifelse alphinity = 0  
   [sugar-growback-Galpha]
   [sugar-growback-Ginfinity]
end

to makecircles  ;create the initial distribution
  ca
  crt 249
  ask-patches [setsugar-capacity 0]
  ask-turtles [ht   ;setup two groups of temporary turtles to draw the sugar   
               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 ;create the two circles 
               [setsugar-capacity (round sugar-holdings) 
                setsugar-holdings (sugar-holdings - (capacity-constant / 12))  
                fd 1
               ]
               ifelse ycor > 0   ;have the turtles create the connecting section
                 [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
   [
   ;; grow sugar by alpha up to level permitted by patch capacity
   setsugar-level sugar-level + (milli-alpha / 1000)
   if sugar-level > sugar-capacity [ setsugar-level sugar-capacity ]
   ]
   ;; color the patches appropriately 
   color-em
end

to sugar-growback-Ginfinity
  ask-patches
   [
   ;; grow sugar immediately to level permitted by patch capacity
   setsugar-level sugar-capacity
   ]
   ;; color the patches appropriately 
   color-em
end

to color-em
   ask-patches [scale-pc yellow sugar-level (black-is) (white-is)]
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


`information`
WHAT IS IT? ----------- 
This project explores an artificial society known as Sugarscape.  This society was conceived of by Joshua Epstein and Robert Axtell (http://www.brook.edu/SUGARSCAPE/) In this society, agents (red) wander around on a landscape consisting of two connected mounds of sugar (yellow).  As the agents move around on the landscape they metabolize some of their existing sugar.  The agents are constantly looking for new sugar, and when they find it they add it to their resources. If the agents ever eat all of their sugar, then they will die.  If they get enough sugar, then they can reproduce.  Each agent has a random value for its metabolism, initial quantity of sugar,  and vision level (that controls how far around it can look for  more sugar).  The sugar itself can grow back at different rates.  For a more thorough description of Sugarscape, check out the  Sugarscape web site (http://www.brook.edu/SUGARSCAPE/).  

HOW TO USE IT ------------- 
Click the SETUP button to setup the agents (red).  Click the GO button to start the simulation.  The N-AGENTS slider controls the initial number of agents. The HATCH-THRESHOLD slider sets the sugar level at which  the agents reproduce.  The CAPCITY-CONSTANT slider controls how much sugar there is initially.  The MILLI-ALPHA slider controls how fast the sugar grows back if it is not growing back instantly (controlled by the INSTANT-GROWBACK? slider).  The BLACK-IS and WHITE-IS sliders control the color coding of the sugar.  The BIRTH slider controls whether (1) or not (0) the  agents can give birth.   The SHOW SUGAR button colors the turtles based on how much sugar  they have. The SHOW VISION button colors the turtles based on how far their vision is. The SHOW METABOLISM button colors the turtles based on the value of their metabolism.  

THINGS TO NOTICE ---------------- 
Watch the COUNT-TURTLES monitor to see how the agent population changes over time. You can also watch the  AVERAGESUGAR, AVERAGEVISION and AVERAGEMETABOLISM monitors to see how the average values of these turtle traits change over time. The plot window graphs the total number of agents, as well as these average values, over time. The value of these traits can be influenced by the environmental conditions. Sometimes coniditions will strongly select for longer range  vision, or lower metabolism.  

EXPLORATIONS ------------- 
Under the current setting, the agents can survive and reproduce. Is the current Sugarscape capable of supporting an infinite number of agents, or is there a limit?  How is that limit determined? How does the growback rate affect turtle vision and metabolism? How are these two quantities related in the population of turtles and within individual turtles? There are many extensions of this model that are described in the Artificial Societies book.  Can you implement some of them?  

STARLOGO FEATURES ------------------- 
The turtles in Sugarscape are all called from an "ask-turtles" inside of an Observer procedure.  This keeps the turtles in sync with each other.  This also keeps them in sync with the patch  procedures that are growing back the sugar. The turtles also make use of the "leap" command. This command is like the jump command, except that turtles will not execute it unless there are no other turtles on the patch they are trying to get to. By calling leap within the recursive turtle procedure "relocate", it is ensured that no two turtles stay on the same patch.


`interface`
SLCanvas
top-left 10 233

SLSlider
top-left 16 101
width-height 121 25
name "capacity-constant"
variable "capacity-constant"
min-value 1
max-value 10
current-value 4
slider-number 1
show-name? false

SLSlider
top-left 55 5
width-height 107 25
name "slider2"
variable "hatch-threshold"
min-value 0
max-value 99
current-value 30
slider-number 2
show-name? false

SLSlider
top-left 53 127
width-height 94 25
name "slider3"
variable "milli-alpha"
min-value 0
max-value 2000
current-value 182
slider-number 3
show-name? false

SLSlider
top-left 16 12
width-height 82 25
name "slider0"
variable "n-agents"
min-value 1
max-value 400
current-value 200
slider-number 0
show-name? false

SLSlider
top-left 91 20
width-height 79 25
name "slider4"
variable "black-is"
min-value 1
max-value 10
current-value 1
slider-number 4
show-name? false

SLSlider
top-left 90 129
width-height 79 25
name "slider5"
variable "white-is"
min-value 1
max-value 10
current-value 4
slider-number 5
show-name? false

SLSlider
top-left 123 56
width-height 118 25
name "instant growback?"
variable "alphinity"
min-value 0
max-value 1
current-value 0
slider-number 6
show-name? true

SLSlider
top-left 155 82
width-height 62 25
name "slider8"
variable "birth?"
min-value 0
max-value 1
current-value 1
slider-number 7
show-name? false

SLMonitor
top-left 224 16
width-height 82 36
name "monitor1"
list-to-run "count-turtles"
digits 0
delay 0.5
monitor-number 2
show-name? false
whichip 24
onewhichip 25

SLMonitor
top-left 221 130
width-height 77 36
name "monitor2"
list-to-run "averagesugar"
digits 1
delay 0.5
monitor-number 3
show-name? false
whichip 26
onewhichip 27

SLMonitor
top-left 267 19
width-height 80 36
name "monitor3"
list-to-run "averagevision"
digits 2
delay 0.5
monitor-number 4
show-name? false
whichip 28
onewhichip 29

SLMonitor
top-left 264 130
width-height 78 36
name "monitor4"
list-to-run "averagemetabolism"
digits 2
delay 0.5
monitor-number 5
show-name? false
whichip 30
onewhichip 31

SLButton
turtle-or-observer? turtle
top-left 309 21
width-height 75 30
name "Show Sugar"
line-to-run "setcolorscheme 0 sugar-color"
forever? false
button-number 8
show-name? true
whichip 18

SLButton
turtle-or-observer? turtle
top-left 309 117
width-height 101 30
name "Show Vision"
line-to-run "setcolorscheme 2 vis-color"
forever? false
button-number 7
show-name? true
whichip 19

SLButton
turtle-or-observer? turtle
top-left 344 122
width-height 94 30
name "Show Metabolism"
line-to-run "setcolorscheme 1 metab-color"
forever? false
button-number 6
show-name? true
whichip 20

SLButton
turtle-or-observer? turtle
top-left 345 23
width-height 71 30
name "toggle-turtles"
line-to-run "ifelse shown? [ht] [st]"
forever? false
button-number 9
show-name? true
whichip 21

SLLineWidget
top-left 387 17
width-height 201 100
id 6
order 6
type 1
title "Agents, Sugar, Vision, Metabolism"
delay-string "1.0"
xlabel ""
ylabel ""
grid false
connected true
autoscaletrue
location 256 50
whichip 32
onewhichip 33
wizard-on true
lineset-id 1
lineset-name "Agents"
lineset-order 6
lineset-type 1
lineset-color -16777216
lineset-displayed? true
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 1
lineset-id 2
lineset-name "Sugar"
lineset-order 6
lineset-type 1
lineset-color -65536
lineset-displayed? true
lineset-instruction " (average-of-turtles [ sugar-holdings ] ) "
extrainfo-extra? true
extrainfo-instruction "average of"
extrainfo-breed "turtles"
extrainfo-var "sugar-holdings"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 2
lineset-id 3
lineset-name "Vision"
lineset-order 6
lineset-type 1
lineset-color -16776961
lineset-displayed? true
lineset-instruction " (average-of-turtles [ vision-level ] ) "
extrainfo-extra? true
extrainfo-instruction "average of"
extrainfo-breed "turtles"
extrainfo-var "vision-level"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 3
lineset-id 4
lineset-name "Metabolism"
lineset-order 6
lineset-type 1
lineset-color -8453889
lineset-displayed? true
lineset-instruction " (average-of-turtles [ sugar-metabolism ] ) "
extrainfo-extra? true
extrainfo-instruction "average of"
extrainfo-breed "turtles"
extrainfo-var "sugar-metabolism"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 4
lineset-id 5
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -11418368
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 5
lineset-id 6
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -16711936
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 6
lineset-id 7
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -16711738
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 7
lineset-id 8
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -16711681
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 8
lineset-id 9
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -16744449
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 9
lineset-id 10
lineset-name "<name>"
lineset-order 6
lineset-type 1
lineset-color -7434610
lineset-displayed? false
lineset-instruction "( count-turtles) "
extrainfo-extra? true
extrainfo-instruction "number of"
extrainfo-breed "turtles"
extrainfo-var "Xcor"
extrainfo-with false
extrainfo-xy? false
extrainfo-xval? false
lineset-end 10

SLButton
turtle-or-observer? observer
top-left 187 126
width-height 40 30
name "button2"
line-to-run "go"
forever? true
button-number 3
show-name? false
whichip 22

SLButton
turtle-or-observer? observer
top-left 188 58
width-height 40 30
name "button1"
line-to-run "setup"
forever? false
button-number 2
show-name? false
whichip 23


`turtle shapes`
[encoded data, 5200 characters]
DhUAABUO2Q==

`template`
null

`settings`
patch-size 8
num-shapes 256
screen-half-width 25
screen-half-height 25
interface-window-xcor 284
interface-window-ycor 46
interface-window-size 661 495
output-window-xcor 0
output-window-ycor 0
output-window-width 300
output-window-height 219
info-window-xcor 0
info-window-ycor 0
info-window-width 500
info-window-height 419
control-center-xcor 28
control-center-ycor 29
control-center-width 399
control-center-height 601
turtle-command-center-height 150
observer-command-center-height 151

`string table`
H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA==

`symbol table`
H4sIAAAAAAAAAGNgYGBkYCkpKk0FAJNWxWwKAAAAAAAACg==

`double table`
H4sIAAAAAAAAAGNgYOBzUGEAAweWh+7rRKoeOjAbg4GDAFScA0Lbf4DyGaD8B1C+
WwOEFoHyJaC0HpSOOQChoyA6ARxxi7l0AAAAAAAAdA==

`list table`
H4sIAAAAAAAAAJVT223DMAwkqUdSxwUKdIEC/c4GmaQTZO38ZYX8VbSO8tlNUTSA
QorknfiyiHyIyLu2vzgmUiArZIZP28mwh+6xk/tTj3Xh8RWYg4I2bO13afJBb9nu
yE4q9Jnzg30mPeStnTPhzXoebn8jDv3FpsAHxyYfcJ2f4J7ZFDUfgU8q6U68HGOk
e28D4/0s0t9l7qHb1l+p7hqS/LnnseAW3aX87OWfR9ZZbOYmC79eo752/4y3rb/t
+kuTX6jPc5yAj32ru1wq8h534qvEV1HbpGutnLf3qjT/aTffgr7PNJcM2yvtYpY1
xzFHWXsQszTSY67D53sk3W69X2MmB8Qk8CbqUfgy4QpmGL7ljnlGD2MnuI/xTWba
odN/MN/09reFQAQAAAAABEA=

`bytecodes`
H4sIAAAAAAAAANVYWXMaRxDuXY4FlhstQgJJWEeixME5nFN5SeklL9ZLXOXk0Qht
MGVgVbDY8Ut+YfKfMkfPTM+AUKqUKlW2apnd2e6vj+np7gHC19cf0niU3MTL1z/B
X/z6GwCOIbeM09Ute3wF+jpmt4fPHv40fHxWY4bMZXHMkbk8joGcC5AHKG4BvFM2
dLICFuAJzhdxLIFXz7Nb0YcATQ+fyzhWHJoqoanhWBdzXs+XtL2MGCHKo15VoxdX
8UTNB2Y+QL2s94JjTwPHprT57IirkBNeGyfs99LQ+4gXSDtt3MZ/pA9I/+IaevVd
lJtD+qwtx/qWs7/VMnr9DWaGYBYd/nDdBoHjo088KIwXyfvr4egtmz51LHlkS4WG
PoSz4dt4NFmMpvGS4R4bQrpFdPjmzXZRW6WVRfORxmMfogPwoh3iQn73yFwW55QR
bBv0lLyc/NZTMvLiXYSyNqyutx7n8+qKtiBpcYsZjBLK8wyOXu6QOLZMtlYFZXX0
tvOaHKdrtl5LYdTFN7VFDF7TyBXvLYLPfBGVURema6TSSsToI5T9C861cdxldF2C
10H8Jpnbk6mAQRif7iNdJOQYv3TNfP0IZfrCZB3KPvJHCquHflQp8YA9Kx8dIn2I
70eOz/rEZ08s+7XMjvLDMcE9cXBPHdwzgvvRZlzB/xvSfIzjuePPTzb481PtT/n+
1Im5z5CnTdZwQHz8TMeAoPnXfv7c8fMXxB9fOv74yvHHc+KPr+/x8zcE91sH9zsH
93uC+8NmXL6vVDoUWAHSX4DXUj750c4bIknlQV8iOWUgWq7Gw8VAJdHBz8Pp7Zuh
WCZ9+TLMdI7UIjyyDX1cAvWekeJVKtI8OfFstp9SPU9oAqM6X7atJmSh45owmf8+
mU/SD2DVQEuabcX9jspBYZRMk8UgnoFIMRZqZa3TMehOpePPO3kjTaDnoTh8Fw+E
HSB2OFA4AysaAit6GHzDM/AikkC7HRokUpT7eX+xR7N4XuLWZC0rcVXeTZaTZP7I
uhSgynWZxenwOplOlrNH1qcI5eE4nqeDWcLUugKeP/QVYCA42pma5aEGJjBMncoQ
Ol639zbnL6WlpiXtsarNrYBYWSQyFE8o84uwqATFRXy7SG5WoxhECdim/imQfds2
TtY0GeK4rBRtdajlu92l0qXV3YVQWMTTZDRMuXZk1yntRP/dMSEQsWLTBaOZ1taX
zZ6FXmadGV/INBnMhn+wL3+uC2iBARcVqrtx9SyTcZVMZ8VvnygaEJcVCE9RzguF
L82qiffnZvU86UoRTfsqxVZE5VNdlO6exCg7J6+lDjsNjETekRw6y9kE3UWJccfh
jRw/tIn+u8Sujpy3IpdFdbRnqpmY2yc8tEvoEX5FeyBpSSdkeFV56oPqfOROUAGg
1uMYMc6dYKhAKMuISPNgVQ43t2uh5hRrcnxWbr+oicBVFmU8gWng9RyxDdgA1aDI
svKDYepQkZUsXS1ScSKhpV7Fvc6bm45BzkHXTQc0567x1jbwqm91+5vqcvRRqgGt
y1WaJvOLfv/lm+R9/yUWzNKaD0Ryd5UVkpqwY4O8UqVuG0rdQWlBx0a5okVqG1LN
QdqBXY2UJuPxNCYrw85NEell2ZnPeI2/HxoPCbAIQg0m/itwz9OekS0Y85qxqhnV
fzk56wBtNI6gfZWw/ipZXPRHyYrVQ6NwGeUVTCixcgqnGeOJWsmR3d6Cl1vHEZO7
EGke1iMsWF1W3VNVn3fXNgbf01oVf4Mqnbthg7vhBOsesQJZdRP1EJX2t+Dep1MX
9l1eq5l6iF69e7Dv0+0Aqi8m87j/6+RmHKcXfXYsYkcsqc+zdV6++mdn63lN0JNz
Bs99/F+Sk3NCb4qxTR/cQa+it+jQl+6gDzf453CDfU//P3YJ8KN/AAXd6jXyFQAA
AAAV8g==

`observer world`
H4sIAAAAAAAAAD1OXQvCMAxMNz+GU9B3H/wdPvlT1s3QFrpmNHX9+6ZlLHCQu8sl
gftAI2NcMb446YTDB/Z6w2XxlLL7GkzCD3DyGEyy0j/hXLwFQx3ta3h3O8ER+ok8
RZ4szlinrlruaIP8MzoKV3DblNWxo7KqgccmzZj0SN7xLHILXaDMlnKoj5SsQNVE
hRI0rfR/7/ibL9MAAAAAAADT

`patch world`
[encoded data, 8970 characters]
h728+5HDXt79yGEv737krPd/h80fdAqXAQAAAZcK

`turtle world`
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
jn+L0VrjO7PK2x99AKEeOUyfQwAAAABDnw==

