globals [ land-patches ;; a subset of all patches, that we consider to be land-plots num-of-deals-made ;; counts the number of land deals done so far in the current period num-of-lands-traded ;; counts the number of land plots that changed owners during the current jubilee num-of-deals-canceled ;; counts the number of land deals canceled so far in the current Jubilee period-past-jubilee ;; number of period, relative to the previous jubilee landless-percent ;; percent of citizens with no land deals-canceled-percent ;; percent of lands returned to their original owner ;; time series for regression: time-series landless-percent-time-series log-time-series log-landless-time-series lin-slope-series lin-constant-series log-slope-series log-constant-series deals-made-series deals-canceled-series ;; flags: stop-simulation reset-world-before-next-year-zero no-landless ] turtles-own [ lands ;; list of lands (=patches) currently owned by this turtle original-lands ;; list of lands (=patches) owned by this turtle at the beginning of the current Jubilee cycle. is-levite ;; boolean: true if this turtle is a levite (who is not entitled to a land-plot) ] patches-own [ owner ;; citizen (=turtle) that ownes this land. original-owner ;; citizen (=turtle) that owned this land at the beginning of the current Jubilee cycle. ] ;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all set-default-shape turtles "person" create-turtles num-of-citizens [ set is-levite false set color (10 * random 10 + 4) ] set land-patches n-of num-of-lands patches let num-of-levites fraction-of-levites * num-of-citizens ask n-of num-of-levites turtles [set is-levite true] set time-series [] set landless-percent-time-series [] set lin-slope-series [] set lin-constant-series [] set log-slope-series [] set log-constant-series [] set deals-canceled-series [] set stop-simulation false set no-landless false reset-world end to reset-world ask patches [ set owner nobody set original-owner nobody ] ask turtles [ set lands [] ] run initial-land-division ask turtles [ move-to-owned-land ] layout set period-past-jubilee 0 check-landless-and-deals ;; move the plot pen to x=0, to create a scatter plot ;; print "move to 0 0" set-current-plot "landless" set-current-plot-pen "default" ;;plotxy 0 0 set reset-world-before-next-year-zero false reset-ticks end ;;;;;;;;;;;;;;;;;;;;;; ;;; Main Procedure ;;; ;;;;;;;;;;;;;;;;;;;;;; to go if reset-world-before-next-year-zero [reset-world] if period-past-jubilee = 0 [ go-year-zero ;; here, the records are initialized, and the number of landless is recorded ] go-year if ticks >= last-period or stop-simulation [ ;;show sentence "Permanent deals" map [100 - ?] deals-canceled-series ;; show stats "deals canceled" deals-canceled-series plot-theoretic-num-of-landless print join "\t" map [? * num-of-citizens / 100] landless-percent-time-series stop ] end ;; Procedure for initializing records at the start of the count towards the Jubilee: to go-year-zero ;; initialize the land records at the start of the next period: ask land-patches [ set original-owner owner ask original-owner [ setxy [pxcor] of myself [pycor] of myself ] ] ask turtles [ set original-lands lands ] ask links [die] set num-of-deals-made 0 set num-of-deals-canceled 0 set time-series lput ticks time-series set landless-percent-time-series lput landless-percent landless-percent-time-series if (no-landless = false and landless-percent = 0) [ ;; show word "no landless at " ticks ;; show landless-percent-time-series set no-landless true ;; set stop-simulation true ] end to go-year set period-past-jubilee period-past-jubilee + 1 citizens-trade-lands if period-past-jubilee >= periods-per-jubilee [ set num-of-lands-traded count land-patches with [original-owner != owner] ;; in the Jubilee year, some lands return to original owners: run jubilee-procedure set period-past-jubilee 0 ] check-landless-and-deals layout tick end ;; Check the proportion of citizens without land to check-landless-and-deals set landless-percent count turtles with [not is-levite and empty? lands] / count turtles * 100 ;;set deals-canceled-percent ifelse-value (num-of-lands-traded > 0) [num-of-deals-canceled / num-of-lands-traded * 100] [0] set deals-canceled-percent ifelse-value (num-of-deals-made > 0) [num-of-deals-canceled / num-of-deals-made * 100] [0] set deals-canceled-series lput deals-canceled-percent deals-canceled-series end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Initial land division procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; give each land to a random citizen to random-land-division ask land-patches [ assign-land self one-of turtles ] end ;; give a single land to each non-levite citizen in turn to equal-land-division let sorted-turtles sort turtles with [not is-levite] let index 0 ask land-patches [ ;;"ask" calls land-patches in random order assign-land self item (index mod length sorted-turtles) sorted-turtles set index index + 1 ] end to land-division-to-n-citizens [n] let sorted-turtles sort n-of n turtles let index 0 ask land-patches [ ;;"ask" calls land-patches in random order ;;print (word "assign-land " self item index sorted-turtles) assign-land self item index sorted-turtles set index (index + 1) mod n ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Land trade procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to citizens-trade-lands ask land-patches [ if random-float 1.0 < probability-of-deal-per-period [ sell-land self one-of turtles ] ] end to sell-land [the-land new-owner] assign-land the-land new-owner set num-of-deals-made num-of-deals-made + 1 end to return-land [the-land new-owner] assign-land the-land new-owner set num-of-deals-canceled num-of-deals-canceled + 1 end ;; Assign the given land (=patch) to the given owner (=turtle): to assign-land [the-land new-owner] let current-owner [owner] of the-land if current-owner = new-owner [stop] if current-owner != nobody [ ask current-owner [ set lands remove the-land lands move-to-owned-land ] ] ask the-land [ set owner new-owner if original-owner != nobody [ let my-original-owner original-owner let lands-of-original-owner count land-patches with [original-owner = my-original-owner] if lands-of-original-owner > 1 and reduced-uncertainty [ set original-owner new-owner ] ask original-owner [ if out-link-to current-owner != nobody [ ask out-link-to current-owner [die] ] if self != new-owner [ ;; cannot create a link from turtle to itself create-link-to new-owner ] ] ] set pcolor [color + 2] of new-owner ;; lands have lighter colors. ] ask new-owner [ if not member? the-land lands [ set lands lput the-land lands move-to-owned-land ] ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Jubilee procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; This procedure is used to check what happens if there is no Jubilee. to no-jubilee end ;; This procedure returns lands only to citizens that have no land during the Jubilee, ;; and does so iteratively until no more returns are possible. to jubilee-to-landless let change? true while [change?] [ ;; if anything was changed in previous iteration, do it again: set change? false let landless-citizens turtles with [empty? lands and not is-levite] ask landless-citizens [ let my-original-lands land-patches with [original-owner = myself] let returned-land one-of my-original-lands ;; to each landless citizen, return one of the lands he originally owned: if returned-land != nobody [ return-land returned-land self set change? true ] ] ] end ;; This procedure returns lands only from citizens that have more than one land during the Jubilee, ;; and does so iteratively until no more returns are possible. to jubilee-from-landowners let change? true while [change?] [ ;; if anything was changed in previous iteration, do it again: set change? false let citizens-with-many-lands turtles with [length lands > 1] ask citizens-with-many-lands [ let this-citizen self let lands-to-return filter [ [original-owner] of ? != nobody and [original-owner] of ? != this-citizen] lands if length lands-to-return = length lands [ set lands-to-return n-of (length lands - 1) lands-to-return ] ;;show lands-to-return if length lands-to-return > 0 [ foreach lands-to-return [ return-land ? [original-owner] of ? ] set change? true ] ] ] end ;; This procedure returns lands only if the original owner has no land, AND the current owner has more than one land. ;; It does so iteratively until no more returns are possible. to jubilee-to-landless-from-landowners ;;show "jubilee-to-landless-from-landowners" let change? true while [change?] [ ;; if anything was changed in previous iteration, do it again: set change? false let landless-citizens turtles with [empty? lands and not is-levite] ask landless-citizens [ let my-original-lands land-patches with [original-owner = myself] let returned-land nobody ;;show my-original-lands ask my-original-lands [ let my-original-land self let its-current-holder [owner] of my-original-land let lands-of-current-holder [length lands] of its-current-holder if lands-of-current-holder > 1 [ set returned-land my-original-land ] ] if returned-land != nobody [ return-land returned-land self set change? true ] ] ] end ;; This procedure returns lands only from citizens that have more than one land during the Jubilee, ;; to citizens that have no land during the Jubilee; ;; and does so iteratively until no more returns are possible. to jubilee-from-landowners-old let landless-citizens turtles with [empty? lands] let change? false ask landless-citizens [ let my-original-lands land-patches with [original-owner = myself] let returned-land nobody ;;print (sentence "citizen" self "had" count my-original-lands "lands") ask my-original-lands [ let current-owner-of-my-land [owner] of self let current-lands-of-current-owner [length lands] of current-owner-of-my-land ;;print (sentence "current owner of" self "is" current-owner-of-my-land "and has" current-lands-of-current-owner "lands") if [length lands] of current-owner-of-my-land > 1 [ set returned-land self ] ] if returned-land != nobody [ return-land returned-land self set change? true ] ] ;; if anything was changed in this iteration, do it again: if change? [jubilee-from-landowners] end ;; This procedure returns all lands to their original owners, whether they currently own land or not. to jubilee-for-all ask turtles [ let returned-lands land-patches with [original-owner = myself and owner != myself] ;; show returned-lands ask returned-lands [ return-land self myself ] ] end ;;;;;;;;;;;;;; ;;; Layout ;;; ;;;;;;;;;;;;;; ;; turtle procedure: move to one of the lands owned by me to move-to-owned-land let target-land nobody ifelse length lands = 0 [ set target-land one-of patches with [owner = nobody] ] [ set target-land one-of lands ] setxy [pxcor] of target-land [pycor] of target-land end to layout if not layout? [ stop ] ;; the number 10 here is arbitrary; more repetitions slows down the ;; model, but too few gives poor layouts repeat 10 [ do-layout display ;; so we get smooth animation ] end to do-layout layout-spring (turtles) links 0.4 6 1 ;; layout-circle turtles max-pxcor - 1 end ;;;;;;;;;;;;;; ;;; test ;;; ;;;;;;;;;;;;;; to test-deals-canceled foreach n-values (num-of-citizens / 10 + 2) [? * 9 + 1] [ let initial-land-owner-count ? print word "======= N-M=" (?) foreach [1] [ ;;n-values 11 [? * 0.1] [ set probability-of-deal-per-period ? let M_t [] let M_t_plus_1 [] let Q_t [] let Y_t [] setup repeat 10 [ land-division-to-n-citizens initial-land-owner-count update-plots check-landless-and-deals set M_t lput count turtles with [empty? lands] M_t go-year-zero citizens-trade-lands jubilee-to-landless check-landless-and-deals set M_t_plus_1 lput count turtles with [empty? lands] M_t_plus_1 set Q_t lput num-of-deals-made Q_t set Y_t lput (num-of-deals-made - num-of-deals-canceled) Y_t ;;print (word precision M_t 2 "\t" precision M_t_plus_1 2 "\t" Q_t "\t" Y_t) ] let M mean M_t let M_plus_1 mean M_t_plus_1 let Q mean Q_t let Y mean Y_t print (word precision probability-of-deal-per-period 2 "\t" precision (Q - Y) 2 "\t" precision (probability-of-deal-per-period * num-of-citizens - Y) 2) ] ] end to test-mt-mtplus1 foreach n-values num-of-citizens [? + 1] [ let initial-land-owner-count ? setup ;;repeat 100 [ land-division-to-n-citizens initial-land-owner-count update-plots check-landless-and-deals let M_t count turtles with [empty? lands] go-year-zero citizens-trade-lands jubilee-to-landless check-landless-and-deals let M_t_plus_1 count turtles with [empty? lands] print (word precision M_t 2 "\t" precision M_t_plus_1 2) ;;] ] end to test-landless-percent-by-deal-probability let experiment-count 10 foreach [1.0 0.8 0.6 0.4 0.2] [ set probability-of-deal-per-period ? type probability-of-deal-per-period type "\n" let landless-percent-time-series-acc n-values last-period [0] repeat experiment-count [ setup repeat last-period [go] set landless-percent-time-series-acc (map + landless-percent-time-series-acc landless-percent-time-series) ] print join "\t" map [? / experiment-count * num-of-citizens / 100] landless-percent-time-series-acc ] end to test test-landless-percent-by-deal-probability end ;; report the number of turtles that had land and now have no land to-report land-loss-count report count turtles with [length original-lands > 0 and length lands = 0] end ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;; Utils ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;; to-report percent-to-time [percent slope constant] report (percent / (exp constant)) ^ (1 / slope) end to-report time-to-percent [time slope constant] report (exp constant) * time ^ slope end ;; Join the list's elements to-report join [the-glue the-list] report reduce [(word ?1 the-glue ?2)] the-list end to plot-regression-line [the-regression-results the-plot-name the-color the-reporter] let A item 1 item 0 the-regression-results let B item 0 item 0 the-regression-results set-current-plot the-plot-name let name (word "regression-line" the-color) create-temporary-plot-pen name set-current-plot-pen name set-plot-pen-color the-color foreach time-series [ plotxy ? (runresult the-reporter A B ?) ] plot-pen-up end ;; Report the stats of a normal variable series - mean and std: to-report stats [title series] report (word title ": " length series " " mean series "+-" standard-deviation series) end ;; Report the stats of a bernouli variable series - mean and std: to-report stats-proportion [title series-of-percents] let p mean series-of-percents let n length series-of-percents let err 1.645 * sqrt (p * (100 - p) / n) report (word title ": " n " " p " +- " err) end ;; calculate the next number of landless, using the theoretic approximation formula to-report next-num-of-landless [current-num-of-landless] report ifelse-value (current-num-of-landless = 0) [current-num-of-landless] [current-num-of-landless / (1 + (1 / (e - 1) + ((sqrt (num-of-citizens / current-num-of-landless) - 1) / sqrt(2))) ^ -1)] end to plot-theoretic-num-of-landless run initial-land-division check-landless-and-deals set-current-plot-pen "theoretic" plot-pen-up plotxy 0 landless-percent plot-pen-down let M num-of-citizens * landless-percent / 100 repeat last-period [ set M next-num-of-landless M plot M * 100 / num-of-citizens ] end ; Copyright 2012 Erel Segal Halevi. ; See Info tab for full copyright and license. @#$#@#$#@ GRAPHICS-WINDOW 525 56 924 476 25 25 7.63 1 10 1 1 1 0 0 0 1 -25 25 -25 25 1 1 1 ticks 30.0 BUTTON 603 10 666 43 setup setup NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 756 12 819 45 go go T 1 T OBSERVER NIL NIL NIL NIL 0 SLIDER 15 12 252 45 num-of-citizens num-of-citizens 10 1000 100 10 1 NIL HORIZONTAL BUTTON 670 11 751 44 go once go NIL 1 T OBSERVER NIL NIL NIL NIL 0 SWITCH 528 603 660 636 layout? layout? 1 1 -1000 PLOT 17 399 246 572 land distribution number of lands owned number of citizens 0.0 10.0 0.0 10.0 true false "set-plot-pen-mode 1" "" PENS "default" 1.0 0 -16777216 true "" "histogram [length lands] of turtles" PLOT 18 202 244 389 landless time % without land 0.0 50.0 0.0 10.0 true false "" "" PENS "default" 1.0 0 -16777216 true "set-plot-x-range 0 last-period\nset-plot-y-range 0 100" "plot landless-percent" "theoretic" 1.0 2 -2674135 true "" "" PLOT 273 204 502 390 deals canceled time % canceled 0.0 100.0 0.0 100.0 true false "" "set-plot-x-range 0 last-period\nset-plot-y-range 0 100" PENS "default" 1.0 0 -16777216 true "" "if ticks > 0 [plot deals-canceled-percent]" CHOOSER 259 110 514 155 jubilee-procedure jubilee-procedure "no-jubilee" "jubilee-to-landless" "jubilee-from-landowners" "jubilee-to-landless-from-landowners" "jubilee-for-all" 1 SLIDER 264 62 421 95 periods-per-jubilee periods-per-jubilee 1 100 50 1 1 NIL HORIZONTAL SLIDER 12 122 250 155 probability-of-deal-per-period probability-of-deal-per-period 0 1 0.01 0.01 1 NIL HORIZONTAL MONITOR 432 62 491 107 period# period-past-jubilee 17 1 11 SWITCH 259 159 514 192 reduced-uncertainty reduced-uncertainty 1 1 -1000 SLIDER 13 158 248 191 last-period last-period 0 5000 1000 10 1 NIL HORIZONTAL BUTTON 831 13 894 46 NIL test NIL 1 T OBSERVER NIL NIL NIL NIL 1 CHOOSER 260 10 502 55 initial-land-division initial-land-division "random-land-division" "equal-land-division" "land-division-to-n-citizens 1" 2 SLIDER 529 564 765 597 fraction-of-levites fraction-of-levites 0 1 0 0.01 1 NIL HORIZONTAL SLIDER 14 49 253 82 num-of-lands num-of-lands 0 2000 100 10 1 NIL HORIZONTAL TEXTBOX 531 538 681 556 For future research: 12 0.0 1 @#$#@#$#@ ## WHAT IS IT? Freedom, in Biblical economy, means that every citizen owns a land-plot. Originally, this was achieved by two means: * Initially, all land was divided into equal plots, and each citizen got a plot; * Once in 50 years, in the year of Jubilee, all lands returned to the original owners. This model checks whether it is possible to achieve the goal of Freedom (meaning, every citizen owns a land) even when the initial division is not equal. ## HOW IT WORKS There are **num-of-citizens** citizens, and **num-of-lands** land-plots. By default they are equal, but this can be changed. Initially, land is divided in a way defined by the **initial-land-division** menu. There are several options: * random land division - each land goes to a citizen selected at random. This means that some citizens will have no land, while others will have many plots. * equal land division - each citizen gets a single land plot in turn, until there are no more lands left. * give all lands to a single citizen (n citizens, where n=1). At each period, each land has some probability of being sold: the **probability-of-deal-per-period** slider. If a land is sold, it is transferred to a citizen picked at random. After 50 periods (or a different number, set by the **periods-per-jubilee** slider), a Jubilee procedure is performed, as defined by the **jubilee-procedure** menu. There are several options: * no-jubilee - nothing is done; * jubilee-to-landless - each citizen with no land picks one of the lands that he had in the previous Jubilee (if any), and gets it back. * jubilee-from-landowners - each citizen with more than one land picks one of the lands that he wants to keep, and returns all other lands to their owners in the previous Jubilee. * jubilee-to-landless-from-landowners - each land, whose current owner has more than oen land, and whose previous owner has no land, is returned from the current owner to the previous owner. * jubilee-for-all - each citizen gets all lands that he had in the previous Jubilee. The Jubilee procedures involve some uncertainty, as the buyer does not know in advance whether the seller will be entitled to claim his land back at the Jubilee. The **reduced-uncertainty** switch allows to reduce this uncertainty in some cases: if the buyer had no other land at the initial period, and the seller had other lands, then the deal can be made permanent right now, without affecting the properties of the Jubilee algorithm. After the Jubilee, the trade goes on as before. The simulation stops after **last-period** periods. ## HOW TO USE IT Choose the number of citizens, the number of lands, the probability of deal per period, the number of periods per Jubilee, the total number of periods, the initial division procedure, and the Jubilee procedure. Then click **setup**. Pressing the **go once** button will run a single period. Some lands will be sold to new owners. A directed link points from the original owners to the new owner. The color of the land will change to that of the new owner. The land distribution is shown in the **land distribution** histogram and the **landless** plot. As the model runs, there are more and more links. But at the Jubilee year, some or all lands return to their original owner, so some or all links are removed. The number of deals canceled is shown in the **deals canceled** plot. ## THINGS TO NOTICE When the Jubilee procedure is **jubilee-to-landless** or **jubilee-from-landowners**, the number of landless citizens decreases in each Jubilee, relative to the previous Jubilee. Over time, all citizens will have land. The land distribution approaches the state where all citizens have land (as long as the number of lands is not less than the number of citizens). To see this more clearly, set the periods-per-jubilee to 1. This apparently does not happen for **no-jubilee** or **jubilee-for-all**. When the Jubilee procedure is **jubilee-to-landless-from-landowners**, the number of landless citizens initially decreases, but then stops decreasing and begins fluctuating. This procedure does NOT guarantee that the number of landless will not increase! ## THINGS TO TRY How many Jubilees it takes until each citizen has a land? How does the answer depends on the probability-of-deal? How does the answer depends on the num-of-lands? Try setting **periods-per-jubilee** to 1 and **probability-of-deal** to 1.0, and see how the number of landless decreases. How does the number of deals canceled change, as more and more citizens have land? If originally ALL citizens have land, is it still possible that some deals will NOT be canceled in the Jubilee year? What is required for this to happen? (hint: look for cycles in the graph at period 0). ## EXTENDING THE MODEL Right now the probability of any land being sold is identical. Can you think of more realistic models? Perhaps the model should also include wealth; wealthy citizens are more likely to buy lands, while poor citizens are more likely to sell lands. Perhaps the model should also include subjective prerefences: some citizens prefer to live in the east, while others prefer to live in the west. etc. ## NETLOGO FEATURES Citizens are turtles. Land-plots are patches. However, since there are usually more patches then turtles, only some of the patches are considered for the model. They are called 'land-patches' in the code, and are colored in the same color as their current owner. Links are used to link the original owner of a land with its current owner. A cycle, in that graph, means that the relevant owners switched their lands. ## HOW TO CITE If you mention this model in a publication, we ask that you include these citations for the model itself and for the NetLogo software: - Segal-the-Levite Erel (2012). NetLogo Land-Random model. http://ccl.northwestern.edu/netlogo/models/community/land-random. - Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. ## COPYRIGHT AND LICENSE Copyright 2012 Erel Segal the Levite. ![CC BY-SA 3.0](http://i.creativecommons.org/l/by-sa/3.0/88x31.png) This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. @#$#@#$#@ 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 5.0.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 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@