breed [sugarmen sugarman] breed [grassmen grassman] breed [meatmen meatman] globals [sugar-die grass-die meat-die px py] turtles-own [energy] ;; for keeping track of when the turtle is ready to reproduce and when it will die to setup ;; setup procedure clear-all set-default-shape sugarmen "butterfly" set-default-shape grassmen "cow" set-default-shape meatmen "person" set sugar-die "0" set grass-die "0" set meat-die "0" setup-patches setup-breeds end to setup-patches ;;setups the starting resources according to the sliders ask n-of starting-sugar patches with [pcolor = black] [set pcolor blue] ask n-of starting-grass patches with [pcolor = black] [set pcolor green] ask n-of starting-meat patches with [pcolor = black] [set pcolor red] end to setup-breeds ;; setup the 3 enemy breeds in the world create-sugarmen number-sugarmen ;;sugarmen [ set color pink set size 1.5 ;; easier to see set energy birth-energy-sugarmen setxy random-xcor random-ycor ] create-grassmen number-grassmen ;;grassmen [ set color 117 set size 1.5 ;; easier to see set energy birth-energy-grassmen setxy random-xcor random-ycor ] create-meatmen number-meatmen ;;meatmen [ set color 46 set size 1.5 ;; easier to see set energy birth-energy-meatmen setxy random-xcor random-ycor ] display-labels end to go ;;the go procedure. This procedure treats each species in a series, which could in theory alter the dynamics observed. ;;;;; Future versions should treat this problem. ask sugarmen [ move sugar-kill sugar-eat reproduce-sugarmen death ] ask grassmen[ move grass-kill grass-eat reproduce-grassmen death] ask meatmen [ move meat-kill meat-eat reproduce-meatmen death] ifelse grow-resources-aggresive [grow-patches-aggr] [grow-patches] display-labels update-plot tick ;;;;;;;;;;;; This procedure here checks if any species are extinct and shows a message if so. ;;;;;;;;;;;; If all the species are extinct, then the storyline ends. if not any? sugarmen and sugar-die = "0" [set sugar-die "1" show word " Sugarmen death at " ticks] if not any? grassmen and grass-die = "0" [set grass-die "1" show word " Grassmen death at " ticks] if not any? meatmen and meat-die = "0" [set meat-die "1" show word " Meatmen death at " ticks] if not any? turtles and not any? patches with [pcolor = black][show word " End of storyline! :) at " ticks stop] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COMMON PROCEDURES to move ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; move procedure common for all agents if breed = sugarmen and hunt-resources [search-food-sugar] if breed = grassmen and hunt-resources [search-food-grass] if breed = meatmen and hunt-resources [search-food-meat] if not hunt-resources [ rt random 360 fd 1] set energy energy - 1 end to display-labels ;;;;;;;;;;;;;;;Display labels with the energy of each agent ask turtles [ set label round energy ] end to death if energy < 0 [die] end to grow-patches ;;;;;; This is the grow patches procedure. A little fault in this procedure ;;;; is that the series by which the if commands are executed are not random. ;;;;;;;;;This could be improved in future versions of the model if any? patches with [pcolor = black][ if random 100 < sugar-prob [ ask one-of patches with [pcolor = black] [set pcolor blue]] ] if any? patches with [pcolor = black][ if random 100 < meat-prob [ ask one-of patches with [pcolor = black] [set pcolor red]] ] if any? patches with [pcolor = black][ if random 100 < grass-prob [ ask one-of patches with [pcolor = black] [set pcolor green]] ] end to grow-patches-aggr ;;;;;;The aggresive pathes spawning function if random 100 < sugar-prob [ ask one-of patches [set pcolor blue]] if random 100 < meat-prob [ ask one-of patches [set pcolor red]] if random 100 < grass-prob [ ask one-of patches [set pcolor green]] end to update-plot ;;;;;;;;;;;;;;;;;;;;;;Update the plots set-current-plot "populations" set-current-plot-pen "sugarmen" plot count sugarmen set-current-plot-pen "grassmen" plot count grassmen set-current-plot-pen "meatmen" plot count meatmen set-current-plot "resources" set-current-plot-pen "sugar" plot count patches with [pcolor = blue] set-current-plot-pen "grass" plot count patches with [pcolor = green] set-current-plot-pen "meat" plot count patches with [pcolor = red] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;SUGARMEN PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to sugar-kill ;;the procedure that sugarmen use to kill if sugarmen-kill = "sugarmen"[ let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] ] if sugarmen-kill = "grassmen"[ let prey one-of grassmen-here if prey != nobody [ ask prey [ die ] ] ] if sugarmen-kill = "meatmen"[ let prey one-of meatmen-here if prey != nobody [ ask prey [ die ] ] ] if sugarmen-kill = "sugarmen-grassmen" [let prey one-of sugarmen-here let prey2 one-of grassmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if sugarmen-kill = "sugarmen-meatmen" [let prey one-of sugarmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if sugarmen-kill = "grassmen-meatmen" [let prey one-of grassmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if sugarmen-kill = "sugarmen-grassmen-meatmen" [let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] let prey2 one-of grassmen-here if prey2 != nobody [ ask prey2 [ die ] ] let prey3 one-of meatmen-here if prey3 != nobody [ ask prey3 [ die ] ] ] end to sugar-eat ;; sugarmen procedure ;; sugarmen eat sugar, turn patch black if pcolor = blue [ set pcolor black set energy energy + energy-from-sugar ;; sheep gain energy by eating ] end to reproduce-sugarmen if energy > (birth-energy-sugarmen * 2) [ set energy (energy - birth-energy-sugarmen) hatch 1 [ rt random-float 360 fd 1 ] ] end to search-food-sugar ;;;;;;;;;;That is the hunt-resource function, that makes agents act "smart" if any? patches in-cone vision vision-angle with [pcolor = blue] [ ask patches with [pcolor = blue] in-cone vision vision-angle with-min [distance myself] [set px pxcor set py pycor] set heading towardsxy px py ] fd 1 end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;GRASSMEN PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to grass-kill ;;the procedure that sugarmen use to kill if grassmen-kill = "sugarmen"[ let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] ] if grassmen-kill = "grassmen"[ let prey one-of grassmen-here if prey != nobody [ ask prey [ die ] ] ] if grassmen-kill = "meatmen"[ let prey one-of meatmen-here if prey != nobody [ ask prey [ die ] ] ] if grassmen-kill = "sugarmen-grassmen" [let prey one-of sugarmen-here let prey2 one-of grassmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if grassmen-kill = "sugarmen-meatmen" [let prey one-of sugarmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if grassmen-kill = "grassmen-meatmen" [let prey one-of grassmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if grassmen-kill = "sugarmen-grassmen-meatmen" [let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] let prey2 one-of grassmen-here if prey2 != nobody [ ask prey2 [ die ] ] let prey3 one-of meatmen-here if prey3 != nobody [ ask prey3 [ die ] ] ] end to grass-eat ;; sugarmen procedure ;; sugarmen eat sugar, turn patch black if pcolor = green [ set pcolor black set energy energy + energy-from-grass ;; cows gain energy by eating ] end to reproduce-grassmen if energy > (birth-energy-grassmen * 2) [ set energy (energy - birth-energy-grassmen) hatch 1 [ rt random-float 360 fd 1 ] ] end to search-food-grass ;;;;;;;;;;That is the hunt-resource function, that makes agents act "smart" if any? patches in-cone vision vision-angle with [pcolor = green] [ ask patches with [pcolor = green] in-cone vision vision-angle with-min [distance myself] [set px pxcor set py pycor] set heading towardsxy px py ] fd 1 end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to meat-kill ;;the procedure that sugarmen use to kill if meatmen-kill = "sugarmen"[ let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] ] if meatmen-kill = "grassmen"[ let prey one-of grassmen-here if prey != nobody [ ask prey [ die ] ] ] if meatmen-kill = "meatmen"[ let prey one-of meatmen-here if prey != nobody [ ask prey [ die ] ] ] if meatmen-kill = "sugarmen-grassmen" [let prey one-of sugarmen-here let prey2 one-of grassmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if meatmen-kill = "sugarmen-meatmen" [let prey one-of sugarmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if grassmen-kill = "grassmen-meatmen" [let prey one-of grassmen-here let prey2 one-of meatmen-here if prey != nobody [ ask prey [ die ] ] if prey2 != nobody [ ask prey2 [ die ] ] ] if meatmen-kill = "sugarmen-grassmen-meatmen" [let prey one-of sugarmen-here if prey != nobody [ ask prey [ die ] ] let prey2 one-of grassmen-here if prey2 != nobody [ ask prey2 [ die ] ] let prey3 one-of meatmen-here if prey3 != nobody [ ask prey3 [ die ] ] ] end to meat-eat ;; sugarmen procedure ;; sugarmen eat sugar, turn patch black if pcolor = red [ set pcolor black set energy energy + energy-from-meat ;; sheep gain energy by eating ] end to reproduce-meatmen if energy > (birth-energy-meatmen * 2) [ set energy (energy - birth-energy-meatmen) hatch 1 [ rt random-float 360 fd 1 ] ] end to search-food-meat ;;;;;;;;;;That is the hunt-resource function, that makes agents act "smart" if any? patches in-cone vision vision-angle with [pcolor = red] [ ask patches with [pcolor = red] in-cone vision vision-angle with-min [distance myself] [set px pxcor set py pycor] set heading towardsxy px py ] fd 1 end ; *** NetLogo 4.0.4 Code Example Copyright Notice *** ; ; (C) 2009 Stylianos Kampakis. All rights reserved. ; ; Permission to use, modify or redistribute this model is hereby granted, ; provided that both of the following requirements are followed: ; a) this copyright notice is included. ; b) this model will not be redistributed for profit without permission ; from Stylianos Kampakis ; ; ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ; OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; ; *** End of NetLogo 4.0.4 Code Example Copyright Notice *** @#$#@#$#@ GRAPHICS-WINDOW 653 10 1083 461 17 17 12.0 1 10 1 1 1 0 1 1 1 -17 17 -17 17 1 1 1 ticks CC-WINDOW 5 797 1131 892 Command Center 0 BUTTON 39 40 123 73 NIL setup NIL 1 T OBSERVER NIL NIL NIL NIL BUTTON 126 40 203 73 NIL go T 1 T OBSERVER NIL NIL NIL NIL MONITOR 26 443 128 488 NIL count sugarmen 3 1 11 SWITCH 29 255 230 288 grow-resources-aggresive grow-resources-aggresive 1 1 -1000 SLIDER 223 131 401 164 birth-energy-sugarmen birth-energy-sugarmen 0 100 100 1 1 NIL HORIZONTAL MONITOR 172 511 259 556 grass count patches with [pcolor = green] 3 1 11 PLOT 422 472 735 678 Populations time totals 0.0 10.0 0.0 10.0 true true PENS "Sugarmen" 1.0 0 -13345367 true "Grassmen" 1.0 0 -10899396 true "Meatmen" 1.0 0 -2674135 true SLIDER 36 131 208 164 number-sugarmen number-sugarmen 0 100 20 1 1 NIL HORIZONTAL SLIDER 35 170 207 203 number-grassmen number-grassmen 0 100 20 1 1 NIL HORIZONTAL SLIDER 36 213 208 246 number-meatmen number-meatmen 0 100 20 1 1 NIL HORIZONTAL SLIDER 223 171 400 204 birth-energy-grassmen birth-energy-grassmen 0 100 100 1 1 NIL HORIZONTAL SLIDER 222 214 396 247 birth-energy-meatmen birth-energy-meatmen 0 100 100 1 1 NIL HORIZONTAL SLIDER 421 131 593 164 energy-from-sugar energy-from-sugar 0 100 50 1 1 NIL HORIZONTAL SLIDER 419 174 591 207 energy-from-grass energy-from-grass 0 100 50 1 1 NIL HORIZONTAL SLIDER 418 217 590 250 energy-from-meat energy-from-meat 0 100 50 1 1 NIL HORIZONTAL MONITOR 20 513 115 558 sugar count patches with [pcolor = blue] 17 1 11 MONITOR 301 516 394 561 meat count patches with [pcolor = red] 17 1 11 MONITOR 303 442 401 487 NIL count meatmen 17 1 11 MONITOR 169 442 270 487 NIL count grassmen 17 1 11 SLIDER 48 340 220 373 starting-sugar starting-sugar 0 100 100 1 1 NIL HORIZONTAL SLIDER 234 341 406 374 starting-grass starting-grass 0 100 100 1 1 NIL HORIZONTAL SLIDER 433 340 605 373 starting-meat starting-meat 0 100 100 1 1 NIL HORIZONTAL SLIDER 47 398 219 431 sugar-prob sugar-prob 0 100 80 1 1 NIL HORIZONTAL SLIDER 235 398 407 431 grass-prob grass-prob 0 100 80 1 1 NIL HORIZONTAL SLIDER 434 398 606 431 meat-prob meat-prob 0 100 80 1 1 NIL HORIZONTAL CHOOSER 13 596 229 641 sugarmen-kill sugarmen-kill "sugarmen" "grassmen" "meatmen" "sugarmen-grassmen" "sugarmen-meatmen" "grassmen-meatmen" "sugarmen-grassmen-meatmen" "none" 1 CHOOSER 12 650 228 695 grassmen-kill grassmen-kill "sugarmen" "grassmen" "meatmen" "sugarmen-grassmen" "sugarmen-meatmen" "grassmen-meatmen" "sugarmen-grassmen-meatmen" "none" 2 CHOOSER 10 705 226 750 meatmen-kill meatmen-kill "sugarmen" "grassmen" "meatmen" "sugarmen-grassmen" "sugarmen-meatmen" "grassmen-meatmen" "sugarmen-grassmen-meatmen" "none" 0 PLOT 796 471 1122 679 resources time totals 0.0 10.0 0.0 10.0 true true PENS "Sugar" 1.0 0 -13345367 true "Grass" 1.0 0 -10899396 true "Meat" 1.0 0 -2674135 true SWITCH 243 257 367 290 hunt-resources hunt-resources 1 1 -1000 SLIDER 432 262 604 295 vision vision 0 100 3 1 1 NIL HORIZONTAL SLIDER 431 299 603 332 vision-angle vision-angle 0 360 60 1 1 NIL HORIZONTAL BUTTON 218 42 281 75 NIL go NIL 1 T OBSERVER NIL NIL NIL NIL TEXTBOX 425 699 735 783 Sugarmen = Butterflies\nGrassmen = Cows\nMeatmen = People 11 0.0 1 TEXTBOX 44 98 194 116 Initial number of species 11 0.0 1 TEXTBOX 234 95 384 113 Energy required to give birth 11 0.0 1 TEXTBOX 428 86 599 114 Energy that each species receives from its resource 11 0.0 1 TEXTBOX 33 291 183 319 Non-aggresive resources are spawned only on black patches 11 0.0 1 TEXTBOX 233 293 409 335 hunt-resources determines whether the agents act randomly or \"smart\" 11 0.0 1 TEXTBOX 243 596 372 670 These tabs determine which species attacks which species 11 0.0 1 @#$#@#$#@ WHAT IS IT? The 3 species model is an experimental model, done by Stylianos Kampakis to explore the possibilities of NetLogo. It is actually a very simple idealizied biological model, where 3 different species, with many parameters, fight for survival. HOW IT WORKS First of all, you have to see that there 3 species. Sugarmen, meatmen and grassmen. Sugarmen are butterflies and eat sugar, grassmen are cows and eat grass, meatmen are little people and eat meat. Sugar is blue, grass green and meat red. All 3 species have an energy rating which starts at 100. The lose 1 point of energy with each move, and gain energy when they eat. To eat, they have to step on a patch with the resource they consume. They eat the resource and then the patch turns black. When their energy levels get double the birth-energy variable, the spawn another identical creature with them. The creature has half the energy they have and their energy is halved as well. Each type of resource has a probability per round of being spawned on a single patch equal to the probabilities sliders. RULES The rules of the species for the initial configuration are the following: 1. Move at random one step in 360 degrees angle 2. If you are on a patch with an enemy creature kill it. 3. If you are on a patch with the resource you use, eat the patch, gain energy equal to the energy for the specified resources 4. If you have energy equal to birth-energy x 2, then hatch another creature of your species with half your energy, and then lose half your energy, too. 5. If your energy is lower than 0, die. In the initial configurations, resources are spawned non-aggresively. That is, they are spawned ONLY on black patches. Note also, that no matter whether the resources spawn aggresively or not, each resource, gets each round either 1 new patch (at most) or none at all. There is no configuration, for example, to spawn 10 new patches of meat at a round. In the initial configuration, also, agents have no vision and their behavior is random (hunt-resources is turned to off). This means, that they will hunt resources and kill enemies roaming at random. If the hunt-resources is on, then they hunt resources at a distance indicated by vision and and an angle indicated by the respective slider. THINGS TO NOTICE There are two sets of variables you can change: 1)The individual species variables 2)The general variables The individual variables are the following: starting number, birth energy, energy from food, starting resources, probability of each resource spawning each round and which species they attack. The general variables are these: aggresive resources and hunt resources The most important of all variables are by far the general variables. The changing of these variables produces the most interesting dynamics. If you turn both of these off, even though you'll see an interesting set of interactions, in the end the same state is achieved: total extinction. The model, under this configuration, has a strong stochastic component. Agents move randomly, and resources are spawned randomly each round and at random patches. When the agents do not hunt resources they can only survive if they fall on them during their random walks. What I witnessed by my experiments is that in the end remains only one species and in the end, it dies too. The reason is simple. If the resources are not aggresive, then each round there is a probability that a patch will spawn one of the three resources, or remain black. With all things equal, it is more probable, that the patch will grow the other resources, rather than remain black. Therefore, a species, that does not hunt resources, and with resources that do not spawn aggresively, is doomed to extinction. However, in case that a second species manage to survive for some time, then the two species can survive longer, since they produce an interesting set of dynamics, by allowing more black patches to appear, while the one species could kill the other in order to keep its numbers in track. Indeed, in this model, should a species numbers get too large, under any configuration, then they are instantly reduced. The limited space, cannot support an unlimited number of agents. The most interesting dynamics were observed under the hunt resources switch turned on. Even with non aggresive resources, the species could survive for many thousand rounds, each one's population curve following something that seemed like an sine oscillator. With aggresive resources on and hunt resources on as well, it is self-evident that at least one species could survive forever. SPECIAL NOTES Note that these observations were based on a limited set of runs I did myself. The correct procedure would be to make many runs with many configurations and pass them into mathematica via the MathematicaLink that netlogo provides, in order to draw more safe conclusions. However, this model is experimental and not highly specific and, also, in its first steps, so this was not deemed a priority. THINGS TO TRY Besides the most interesting cases described above, try playing around with each species seperately, changing which species it kills, how easy it reprodeces etc. and then notice how often it survives or dies. EXTENDING THE MODEL This model could be extended in two possible directions in my opinion. 1) Make the model more specific. That is, model some more specific procedure, perhaps by taking out some parameters and introducing others. The truth is that the model holds many parameters as I experimented with the possibilities NetLogo offered, but as the parameters get more, this could work in disadvantage of a specific model, making it highly complex. 2) Make the model even more complex, by adding more parameters that could be used in real situations. Even though this would get to complex to represent any real situation, it would be interesting to see the following additions: species getting energy by eating other species, species eating the same resource, species reproducing sexually (not asexually as in the current model) and agent mutations. NETLOGO FEATURES The construction of the model was higly helped by the cone primitive in NetLogo which was used to hunt resources. RELATED MODELS This model was inspired in part by the Tutorial 3 model and the Wolf Sheep Predation (docked) model. CREDITS AND REFERENCES (C) 2009 Stylianos Kampakis. All rights reserved. Permission to use, modify or redistribute this model is hereby granted, provided that both of the following requirements are followed: a) this copyright notice is included. b) this model will not be redistributed for profit without permission from Stylianos Kampakis Official Site: http://encefalus.com @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 airplane true 0 Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15 arrow true 0 Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box false 0 Polygon -7500403 true true 150 285 285 225 285 75 150 135 Polygon -7500403 true true 150 135 15 75 150 15 285 75 Polygon -7500403 true true 15 75 15 225 150 285 150 135 Line -16777216 false 150 285 150 135 Line -16777216 false 150 135 15 75 Line -16777216 false 150 135 285 75 bug true 0 Circle -7500403 true true 96 182 108 Circle -7500403 true true 110 127 80 Circle -7500403 true true 110 75 80 Line -7500403 true 150 100 80 30 Line -7500403 true 150 100 220 30 butterfly true 0 Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240 Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163 Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225 Circle -16777216 true false 135 90 30 Line -16777216 false 150 105 195 60 Line -16777216 false 150 105 105 60 car false 0 Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180 Circle -16777216 true false 180 180 90 Circle -16777216 true false 30 180 90 Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 0 0 300 circle 2 false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167 Polygon -7500403 true true 73 210 86 251 62 249 48 208 Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123 cylinder false 0 Circle -7500403 true true 0 0 300 dot false 0 Circle -7500403 true true 90 90 120 face happy false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240 face neutral false 0 Circle -7500403 true true 8 7 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Rectangle -16777216 true false 60 195 240 225 face sad false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183 fish false 0 Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166 Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165 Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60 Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166 Circle -16777216 true false 215 106 30 flag false 0 Rectangle -7500403 true true 60 15 75 300 Polygon -7500403 true true 90 150 270 90 90 30 Line -7500403 true 75 135 90 135 Line -7500403 true 75 45 90 45 flower false 0 Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135 Circle -7500403 true true 85 132 38 Circle -7500403 true true 130 147 38 Circle -7500403 true true 192 85 38 Circle -7500403 true true 85 40 38 Circle -7500403 true true 177 40 38 Circle -7500403 true true 177 132 38 Circle -7500403 true true 70 85 38 Circle -7500403 true true 130 25 38 Circle -7500403 true true 96 51 108 Circle -16777216 true false 113 68 74 Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218 Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240 house false 0 Rectangle -7500403 true true 45 120 255 285 Rectangle -16777216 true false 120 210 180 285 Polygon -7500403 true true 15 120 150 15 285 120 Line -16777216 false 30 120 270 120 leaf false 0 Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195 Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195 line true 0 Line -7500403 true 150 0 150 300 line half true 0 Line -7500403 true 150 0 150 150 pentagon false 0 Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120 person false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90 Rectangle -7500403 true true 127 79 172 94 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 105 90 60 150 75 180 135 105 plant false 0 Rectangle -7500403 true true 135 90 165 300 Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285 Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285 Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210 Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135 Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135 Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60 Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90 square false 0 Rectangle -7500403 true true 30 30 270 270 square 2 false 0 Rectangle -7500403 true true 30 30 270 270 Rectangle -16777216 true false 60 60 240 240 star false 0 Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108 target false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 Circle -7500403 true true 60 60 180 Circle -16777216 true false 90 90 120 Circle -7500403 true true 120 120 60 tree false 0 Circle -7500403 true true 118 3 94 Rectangle -6459832 true false 120 195 180 300 Circle -7500403 true true 65 21 108 Circle -7500403 true true 116 41 127 Circle -7500403 true true 45 90 120 Circle -7500403 true true 104 74 152 triangle false 0 Polygon -7500403 true true 150 30 15 255 285 255 triangle 2 false 0 Polygon -7500403 true true 150 30 15 255 285 255 Polygon -16777216 true false 151 99 225 223 75 224 truck false 0 Rectangle -7500403 true true 4 45 195 187 Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194 Rectangle -1 true false 195 60 195 105 Polygon -16777216 true false 238 112 252 141 219 141 218 112 Circle -16777216 true false 234 174 42 Rectangle -7500403 true true 181 185 214 194 Circle -16777216 true false 144 174 42 Circle -16777216 true false 24 174 42 Circle -7500403 false true 24 174 42 Circle -7500403 false true 144 174 42 Circle -7500403 false true 234 174 42 turtle true 0 Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210 Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105 Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99 wheel false 0 Circle -7500403 true true 3 3 294 Circle -16777216 true false 30 30 240 Line -7500403 true 150 285 150 15 Line -7500403 true 15 150 285 150 Circle -7500403 true true 120 120 60 Line -7500403 true 216 40 79 269 Line -7500403 true 40 84 269 221 Line -7500403 true 40 216 269 79 Line -7500403 true 84 40 221 269 x false 0 Polygon -7500403 true true 270 75 225 30 30 225 75 270 Polygon -7500403 true true 30 75 75 30 270 225 225 270 @#$#@#$#@ NetLogo 4.0.4 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 0 0.0 1.0 0.0 1 1.0 0.0 0.2 0 0.0 1.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@