globals [ max-snow ; maximum amount any patch can hold gini-index-reserve lorenz-points ;; create wealth by ability globals to use in histogram wealth-ability-1 wealth-ability-2 wealth-ability-3 ] patches-own [ snow-here ; the current amount of snow on this patch max-snow-here ; the maximum amount of snow this patch can hold ] turtles-own [ soreness ; how sore a turtle (skier) is, proportional to how long a skier has been skiing wealth ; the amount of fresh snow a skiier has skied energy ; maximum ticks a turtle can ski before they're tired and go home ability ; how fast a skier goes, and proportional to how much snow they destroy vision ; how many patches ahead a skier can see ] ;;; ;;; SETUP AND HELPERS ;;; to setup clear-all ;; set global variables to appropriate values set max-snow 100 ;; call other procedures to set up various parts of the world setup-patches setup-turtles update-lorenz-and-gini reset-ticks end ;; set up the initial amounts of snow each patch has to setup-patches ;; give some patches the highest amount of snow possible -- ;; these patches are the "best terrain" ask patches [ set max-snow-here 0 if (random-float 100.0) <= percent-best-land [ set max-snow-here max-snow set snow-here max-snow-here ] ] ;; spread that snow around the window a little and put a little back ;; into the patches that are the "best land" found above repeat 5 [ ask patches with [max-snow-here != 0] [ set snow-here max-snow-here ] diffuse snow-here 0.25 ] repeat 10 [ diffuse snow-here 0.25 ] ;; spread the snow around some more ask patches [ set snow-here floor snow-here ;; round snow levels to whole numbers set max-snow-here snow-here ;; initial snow level is also maximum recolor-patch ] end to recolor-patch ;; patch procedure -- use color to indicate snow level set pcolor scale-color white snow-here 0 max-snow end ;; set up the initial values for the turtle variables to setup-turtles set-default-shape turtles "person" create-turtles num-skiers [ move-to one-of patches ;; put turtles on patch centers set size 1.5 ;; easier to see set-initial-turtle-vars set soreness random energy ] recolor-turtles end to set-initial-turtle-vars set soreness 0 ;;face one-of neighbors4 set energy energy-min + random (energy-max - energy-min + 1) set ability 1 + random 3 ;;round ability set wealth 0.1 ;; everyone starts the day having skied 0 snow (0.1 to avoid division by zero) set vision 1 + random max-vision set label ability end ;; Set the class of the turtles -- if a turtle has less than a third ;; the wealth of the richest turtle, color it red. If between one ;; and two thirds, color it green. If over two thirds, color it blue. to recolor-turtles let max-wealth max [wealth] of turtles ask turtles [ ifelse (wealth <= max-wealth / 3) [ set color red ] [ ifelse (wealth <= (max-wealth * 2 / 3)) [ set color green ] [ set color blue ] ] ] end ;;; ;;; GO AND HELPERS ;;; to go ask turtles [ turn-towards-snow ] ;; choose direction holding most snow within the turtle's vision and downhill ski-forward ask turtles [ move-eat-soreness-die ] recolor-turtles ;; grow snow every snow-fall-interval clock ticks if ticks mod snow-fall-interval = 0 [ ask patches [ grow-snow ] ] update-lorenz-and-gini ask turtles [ update-wealth-ability ] ;; tracks the wealth for each ability level tick end ;; determine the direction which is most profitable for each turtle in ;; the surrounding patches within the turtles' vision ;; re-worked to make them only go across, diagonal, or straight down the hill to turn-towards-snow ;; turtle procedure set heading one-of (range 90 270) let best-direction 180 let best-amount snow-ahead set heading 90 if (snow-ahead > best-amount) [ set best-direction 90 set best-amount snow-ahead ] set heading 135 if (snow-ahead > best-amount) [ set best-direction 135 set best-amount snow-ahead ] set heading 180 if (snow-ahead > best-amount) [ set best-direction 180 set best-amount snow-ahead ] set heading 225 if (snow-ahead > best-amount) [ set best-direction 225 set best-amount snow-ahead ] set heading 270 if (snow-ahead > best-amount) [ set best-direction 270 set best-amount snow-ahead ] set heading best-direction end to-report snow-ahead ;; turtle procedure let total 0 let how-far 1 repeat vision [ set total total + [snow-here] of patch-ahead how-far set how-far how-far + 1 ] report total end to grow-snow ;; patch procedure ;; if a patch does not have it's maximum amount of snow, add ;; num-snow-fall to its snow amount if (snow-here < max-snow-here) [ set snow-here snow-here + num-snow-fall ;; if the new amount of snow on a patch is over its maximum ;; capacity, set it to its maximum if (snow-here > max-snow-here) [ set snow-here max-snow-here ] recolor-patch ] end ;; each turtle skis foward to the snow on its patch. if there are multiple ;; turtles on a patch, divide the snow evenly among the turtles to ski-forward ; have turtles ski the snow based on ability ask turtles [ set wealth floor (wealth + ((snow-here * ability ^ ability-advantage) / (count turtles-here))) ] ;; now that the snow has been skied, have the turtles make the ;; patches which they are on have less snow ask turtles ;; each skier removes some of the fresh snow ;; the amount removed increases based on ability and ability-advantage [ set snow-here (snow-here - (ability ^ ability-advantage) * 10) recolor-patch ] end to move-eat-soreness-die ;; turtle procedure ;; each skier moves fd ability ;; skiers tire faster and faster over time set wealth (wealth - soreness) ;; grow more tired set soreness (soreness + 1) ;; check for "death" conditions: if you have no more wealth or ;; you're more tired than you have energy to continue, ;; then you "die" and are "reborn" (in fact, your variables ;; are just reset to new random values) if (wealth < 0) or (soreness >= energy) [ set-initial-turtle-vars ] end ;; this procedure recomputes the value of gini-index-reserve ;; and the points in lorenz-points for the Lorenz and Gini-Index plots to update-lorenz-and-gini let sorted-wealths sort [wealth] of turtles let total-wealth sum sorted-wealths let wealth-sum-so-far 0 let index 0 set gini-index-reserve 0 set lorenz-points [] ;; now actually plot the Lorenz curve -- along the way, we also ;; calculate the Gini index. ;; (see the Info tab for a description of the curve and measure) repeat num-skiers [ set wealth-sum-so-far (wealth-sum-so-far + item index sorted-wealths) set lorenz-points lput ((wealth-sum-so-far / total-wealth) * 100) lorenz-points set index (index + 1) set gini-index-reserve gini-index-reserve + (index / num-skiers) - (wealth-sum-so-far / total-wealth) ] end to update-wealth-ability if (ability = 1) [set wealth-ability-1 (wealth-ability-1 + wealth)] if (ability = 2) [set wealth-ability-2 (wealth-ability-2 + wealth)] if (ability = 3) [set wealth-ability-3 (wealth-ability-3 + wealth)] end ; Copyright 1998 Uri Wilensky. ; See Info tab for full copyright and license. @#$#@#$#@ GRAPHICS-WINDOW 188 33 604 450 -1 -1 8.0 1 10 1 1 1 0 1 1 1 -25 25 -25 25 1 1 1 ticks 30.0 BUTTON 11 213 87 246 setup setup NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 33 257 151 290 go continuously go T 1 T OBSERVER NIL NIL NIL NIL 0 SLIDER 8 72 176 105 max-vision max-vision 1 15 15.0 1 1 NIL HORIZONTAL SLIDER 8 382 176 415 snow-fall-interval snow-fall-interval 1 10 1.0 1 1 NIL HORIZONTAL SLIDER 8 38 176 71 num-skiers num-skiers 1 300 99.0 1 1 NIL HORIZONTAL SLIDER 7 303 175 336 percent-best-land percent-best-land 5 100 100.0 1 1 % HORIZONTAL SLIDER 8 174 176 207 energy-max energy-max 1 100 100.0 1 1 NIL HORIZONTAL PLOT 3 454 255 634 Class Plot Time Turtles 0.0 50.0 0.0 80.0 true true "set-plot-y-range 0 num-skiers" "" PENS "low" 1.0 0 -2674135 true "" "plot count turtles with [color = red]" "mid" 1.0 0 -10899396 true "" "plot count turtles with [color = green]" "up" 1.0 0 -13345367 true "" "plot count turtles with [color = blue]" SLIDER 7 341 175 374 num-snow-fall num-snow-fall 0 10 0.0 1 1 NIL HORIZONTAL SLIDER 8 140 176 173 energy-min energy-min 10 100 10.0 1 1 NIL HORIZONTAL PLOT 257 454 469 634 Class Histogram Classes Turtles 0.0 3.0 0.0 250.0 false false "set-plot-y-range 0 num-skiers" "" PENS "default" 1.0 1 -2674135 true "" "plot-pen-reset\nset-plot-pen-color red\nplot count turtles with [color = red]\nset-plot-pen-color green\nplot count turtles with [color = green]\nset-plot-pen-color blue\nplot count turtles with [color = blue]" PLOT 471 454 672 634 Lorenz Curve Pop % Wealth % 0.0 100.0 0.0 100.0 true true "" "" PENS "lorenz" 1.0 0 -2674135 true "" "plot-pen-reset\nset-plot-pen-interval 100 / num-skiers\nplot 0\nforeach lorenz-points plot" "equal" 100.0 0 -16777216 true "plot 0\nplot 100" "" PLOT 674 454 908 634 Gini-Index v. Time Time Gini 0.0 50.0 0.0 1.0 true false "" "" PENS "default" 1.0 0 -13345367 true "" "plot (gini-index-reserve / num-skiers) / 0.5" BUTTON 103 213 178 246 go once go NIL 1 T OBSERVER NIL NIL NIL NIL 1 PLOT 619 34 819 184 Wealth by Ability Histogram Ability Wealth % 0.0 3.0 0.0 1.0 true false "" "" PENS "default" 1.0 1 -16777216 true "" "plot-pen-reset\nplot wealth-ability-1 / (wealth-ability-1 + wealth-ability-2 + wealth-ability-3)\nplot wealth-ability-2 / (wealth-ability-1 + wealth-ability-2 + wealth-ability-3)\nplot wealth-ability-3 / (wealth-ability-1 + wealth-ability-2 + wealth-ability-3)" PLOT 619 194 819 344 Distribution of Abilities NIL NIL 0.0 3.0 0.0 10.0 true false "" "" PENS "default" 1.0 1 -16777216 true "" "plot-pen-reset\nplot count turtles with [ability = 1]\nplot count turtles with [ability = 2]\nplot count turtles with [ability = 3]" SLIDER 8 106 180 139 ability-advantage ability-advantage 1 3 1.0 1 1 NIL HORIZONTAL @#$#@#$#@ ## WHAT IS IT? Skiers and snowboarders are fond of saying “There are no friends on a powder day”. This model simulates the use of new snow on a ski slope, and the amount of snow skied by skiers of varying abilities. With this model we approximate the distribution of “wealth” (how much snow each skier can ride over) under varying conditions. The distribution of “poor” red skiers, “middle class” green skiers, and “rich” blue skiers will demonstrate whether the Pareto principle holds true on the slopes, and the breakdown of overall wealth by ability level will show whether advanced skiers truly have an advantage over beginners. This model is adapted from Wilensky's Wealth Distribution model, which is in turn modeled on Epstein & Axtell's "Sugarscape" model. Key differences incorporated here include: • Each patch’s snow is only reduced, not totally consumed, when visited by one or more agents. • Agents do not have a ‘metabolism’, they simply collect wealth. Instead, they get sore incrementally over time. • Agents are split randomly among 3 ability levels to represent beginner, intermediate, and advanced skiers. Their ability level is proportional to the amount of snow they destroy and wealth they gain at each tick. • Agents only move across, diagonally downward, or straight down the hill. • Initial wealth is set at 0.1 for all skiers, reflecting that no one has yet enjoyed the hill at the start of that day. ## HOW IT WORKS We begin with an even breakdown of beginner, intermediate, and advanced skiers, who are spread evenly over the slope. They ski down, covering ground and pushing snow proportional to their respective ability level (labeled next to each skier). At each tick, every skier observes the patches ahead in five directions; right, down-and-right, straight down, down-and-left, and left. Skiers look out as far as their randomly assigned vision. They then move in the direction of the best snow they have seen, moving 3 patches if they are experts, 2 for intermediate skiers, and 1 for beginners. Skiers also have a randomly assigned level of energy and soreness, since even the best skiers may have partied at the ski lodge the night before. As time goes on skiers gain soreness, which is added equally among the ability levels. When a skier can no longer find enough snow to justify their soreness, or they are sorer than their initial energy level could accommodate, they ‘go home’ and are replaced by a new skier with randomly assigned attributes. To answer the question of relative wealth gained on a “pow day”, simply click setup and then go. You will see that NUM-SNOW-FALL is set to zero, meaning there is no new snow falling any more (as is the case when the fresh snow fell overnight and the sun comes out in the morning, commonly referred to as a “bluebird day”). This default setup also assumes that there is a 3:1 advantage in enjoyment for an expert skier over a beginner. With these settings, the model confirms that the Pareto principle holds. As with the Wealth model on which this is based, the Lorenz curve illustrates that after approximately 500 ticks all the wealth is isolated among just a couple of skiers, with the vast majority having no more snow to ski. Another perspective added in this model is the percent of wealth held by each group of skier abilities. If it is true that you, an expert, should abandon your beginner or intermediate friends on a day with lots of snow, then wealth held by the expert ability group should be drastically higher than that of the beginner or intermediate groups. We also track the relative numbers of beginner, intermediate, and expert skiers to ensure that their relative populations (which are random and should even out over time) aren’t accounting for the differences in the relative wealth of each ability group. ## HOW TO USE IT Use the NUM-SKIERS slider to adjust the number of skiers on the hill. The MAX-VISION slider adjusts the maximum amount of distance each skier can be assigned to see (the actual distance each can see is randomly assigned between 1 and MAX-VISION). The ABILITY-ADVANTAGE slider adjusts how much more snow a skier with higher ability (ranging from 1 to 3) can add to their wealth and remove from the hill. The wealth added at each patch is equal to: snow-here * ability ^ ability-advantage Since the ability is in the exponent, a value of 1 gives us a ratio of 3:2:1 across ability levels. This makes sense since skiers also move at a speed ratio of 3:2:1 (from expert to beginner). However, you could argue that with increased ability comes increased snow removed at each patch, so values of 2 and 3 can be selected to illustrate a more dramatic difference. ENERGY-MIN and ENERGY-MAX are the range of “endurances” for each skier, again randomly assigned. Taken together, the above values compose the attributes of our agents. PERCENT-BEST-LAND determines what percent of patches receive the best snow. The default is ‘total coverage’ at 100%, as is often the case after heavy snow on an open ski run. A lower setting might simulate a run later in the day, or perhaps partial tree coverage. NUM-SNOW-FALL is the amount of snow added per patch per SNOW-FALL-INTERVAL. Using these sliders together you can simulate heavier/lighter and faster/slower snowfalls. The default NUM-SNOW-FALL is zero, to simulate ‘bluebird’ conditions. With NUM-SNOW-FALL at zero, SNOW-FALL-INTERVAL has no effect. SETUP is used to set the initial values selected and should be used before increasing NUM-SKIERS to avoid an error. GO ONCE moves one tick ahead in time and GO CONTINUOUSLY moves ahead at the speed selected with the slider at the top. Use the CLASS PLOT to see the number of agents in the red (bottom third), green (middle third), and blue (upper third) of the wealth distribution. A CLASS HISTOGRAM gives a more easily interpreted relative class breakdown at each tick. The LORENZ CURVE, with the Wealth Distribution model on which this one is based, illustrates the Lorenz curve at each moment relative to the ‘ideal’ 45-degree line, and the GINI-INDEX V. TIME provides a longitudinal look at the same ratio, with 0 being ideal equality and 1 being total inequality. Additionally, the DISTRIBUTION OF ABILITIES provides an instantaneous look at the relative number of beginner, intermediate, and advanced skiers. This gives useful background for the WEALTH BY ABILITY HISTOGRAM which can help answer our question of whether advanced skiers really do get significantly more snow, and by how much under varying conditions. ## THINGS TO NOTICE Can we answer our key question: do some skiers really get significantly more snow? If so, by how much, and under which conditions? Importantly, is this inequality in wealth isolated among the more advanced and faster skiers, or are the wealthy chosen by chance alone? Under most conditions we will see that Pareto’s Law holds and, over time, a few skiers have all the wealth. The wealthy skiers are usually, but not always, advanced level, so there is some chance involved as well. Also important to our question is the ‘bluebird’ scenario; if no more snow is falling, the inequality is dramatic and is created very quickly. This means it’s important to get on that first chairlift! There is also a scenario where Pareto’s Law does not apply. When enough snow is falling, the number of skiers is low enough, and the ABILITY-ADVANTAGE is set to 1, a relatively equal wealth distribution can be found. Does this mean, if the snow is good and still falling, you should not abandon even your beginner friends?! ## THINGS TO TRY Experiment with different conditions, varying numbers of skiers, and adjust the ABILITY-ADVANTAGE to the level you think reflects the real world. How does this change the outcome? Check the weather report at your local resort before you go and try to simulate the expected conditions here. Does this help inform your plans? For a more in-depth analysis, take a look at the Code tab. Do you think the arbitrary wealth function in the ski-forward procedure accurately reflects the relative enjoyment of the various ability levels? You can also try setting energy and soreness levels by ability, since beginners often tire by lunch time while experts ski from the first to last chair. ## EXTENDING THE MODEL Add a plot of the wealth of each ability level over time. Add switches to tie energy, soreness, and vision to ability level. Fix Y index on Gini-Index v. Time. Lower limit should be 0,0 not -0.1, 0. This is likely due to adjusting the initial wealth to 0.1. Add Chooser for various wealth algorithms to simulate different ways of accounting for ability-advantage. Incorporate Poulhès and Miral values and algorithms wherever possible. ## NETLOGO FEATURES In addition to the scale-color reporter from Wilensky's Wealth Distribution model, this model includes the update-wealth-ability procedure to report the global values which break down accumulated wealth by ability. ## CREDITS AND REFERENCES This model is based on Wilensky's Wealth Distribution NetLogo model, which in turn is based on Epstein, J. & Axtell R. (1996). Growing Artificial Societies: Social Science from the Bottom Up. Washington, DC: Brookings Institution Press. The Pareto principal can be understood here: https://en.wikipedia.org/wiki/Pareto_principle The phrase “No Friends on a Powder Day” is colloquial, and is examined subjectively here: https://www.backcountry.com/explore/no-friends-on-a-powder-day-strategies-for-when-its-deep . Of particular interest is a rigorous Agent-based model of skiers in a ski area by Poulhès and Mirial (2017), which aims to “offer a decision-making tool for the operator and design engineering” of a ski resort: Alexis Poulhès, Paul Mirial, Dynaski, an Agent-based Model to Simulate Skiers in a Ski area, Procedia Computer Science, Volume 109, 2017, Pages 84-91, ISSN 1877-0509, https://doi.org/10.1016/j.procs.2017.05.298. (https://www.sciencedirect.com/science/article/pii/S1877050917309559) This model was created using the NetLogo software: • Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. ## RELATED MODELS • Wilensky, U. (1998). NetLogo Wealth Distribution model. http://ccl.northwestern.edu/netlogo/models/WealthDistribution. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. @#$#@#$#@ 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 6.1.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ 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 30 225 Line -7500403 true 150 150 270 225 @#$#@#$#@ 0 @#$#@#$#@