globals [ distancef ; distanza tra imprese factories-group ; gruppo di patchesin cui sono localizzate le imprese tot-pollution ; somma dell'inquinamento di tutte le imprese tot-production ; somma della produzione di tutte le imprese tot-permits ; somma di tutti i permessi distribuiti varmark ; iindice di andamento del mercato years ; anni passati up ; congiuntura favorevole down ; congiuntura sfavorevole permits-value ; numero di permessi per coprire un'unità di inquinamento expiration ; tra quanti anni si riduce il valore di abbattimento di ogni permesso permits-group ; gruppo dei permessi in eccesso ad ogni ciclo sold-permits ; gruppo permessi venduti ad ogni ciclo totexcesspermits ; somma di tutti permessi in excess di anno in anno ] turtles-own [ excess? domandat ; memoria della domanda che decide di soddisfare sogliat ; memoria della soglia di vendita dell'impresa da cui proviene xcorcasa ; memoria della coordinata dell'impresa proprietaria xcoracquista ; memoria della coordinata dell'impresa acquirente contapassi] ; tiene memoria del movimento della turtle patches-own [ production ; livello di production valore esogeno tra 50 e 100 techlevel ; livello tecnologico valore esogeno tra 5 e 45 capumano ; livello capitale umano valore esogeno tra 1 e 20 pollution ; valore inquinamento prodotto cosmarab ; costo marginale di abbattimento profitto ricavi costi costofisso ; costo fisso funzione della dimensione (livello di production iniziale) cassa numpermessi ; permessi detenuti dall'impresa excess ; permessi detenuti oltre il bisogno domanda ; limite sup di domanda per comprare permessi soglia ; limite inf richiesto per vendere permessi turtlesel ; contatore turtle da selezionare ] ;------------------------------------------------------ to setup-plots set-current-plot "Total Pollution" set-plot-y-range int(tot-pollution - 30) int(tot-pollution + 30) set-current-plot "Trend of the market" set-plot-y-range 0.8 1.2 set-current-plot "Negotiates permits" set-plot-y-range 0 tot-permits set-current-plot "Excess ngotiable permits deviation" set-plot-y-range 0 10 set-current-plot "Permits abatement power" set-plot-y-range 0 1.001 end ;------------------------------------------------------ to update-plots set-current-plot "Negotiates permits" set-current-plot-pen "permessi in eccesso" plot totexcesspermits set-current-plot-pen "permessi scambiati" plot count sold-permits set-current-plot "Excess ngotiable permits deviation" set-current-plot-pen "Deviation" plot totexcesspermits - count sold-permits set-current-plot "Permits abatement power" set-current-plot-pen "permits-value" plot permits-value set-current-plot "Total Pollution" set-current-plot-pen "tot-pollution" plot tot-pollution set-current-plot "Trend of the market" set-current-plot-pen "Index of market" plot varmark set-current-plot-pen "null" plot 1 set-current-plot "Production" set-current-plot-pen "tot-production" plot tot-production end ;------------------------------------------------------ to setup ca setup-variabili-evoluzione ; setup delle vaariabili necessarie all'evoluzione delle imprese setup-crea-imprese ; creazione del gruppo delle patches dove sono localizzate le imprese setup-differenziazione-imprese ; differenzia fra loro le imprese settando le caratteristiche di ognuna setup-calcolo-permessi ; calcola l'inquinamento prodotto e il numero di permessi assegnati inizialmente ad ogni impresa setup-crea-permessi ; crea tante turtles quanti sono la somma di tutti i permessi assegnati ad ogni impresa setup-colloca-permessi ; fa posizionare le turtles sulle imprese in base ai permessi assegnati ad ognuna selezione-permessi ; seleziona i permessi in eccesso ask turtles [incolonna] ; incolonna i permessi sopra le imprese ragguppandole secondo togroupof setup-plots end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-crea-imprese ; creazione del gruppo delle patches dove sono localizzate le imprese set distancef floor (screen-size-x / number-factories) ask patches [ if (((screen-size-x + pxcor) mod distancef = 0) and (pycor = 0) and (floor((screen-edge-x - pxcor) / distancef ) < number-factories) ) [set pcolor red]] set factories-group patches with [pcolor = red] end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-differenziazione-imprese ; differenzia fra loro le imprese settando le caratteristiche di ognuna ask factories-group [ set production ((random 50) + 50) ; setta la produziione set techlevel ((random 45) + 5) ; setta il livello tecnologico set capumano ((random 19) + 1) ; setta il capitale umano set costofisso production * 0.1 ; setta il costofisso calc-costi ; calcola i costi calc-ricavi ; calcola i ricavi calc-profitto ; calcola i profitti set cassa 0 ; setta la cassa calc-pollution ; calcola l'inquinamento calc-cosmarab] ; calcola il costo marginale di abbattimento end ;------------------------------------------------------------------------------------------------------------------------------------------- to calc-ricavi set ricavi (production * varmark) end ;------------------------------------------------------------------------------------------------------------------------------------------- to calc-costi set costi prod-weight-on-cost * production + costofisso end ;------------------------------------------------------------------------------------------------------------------------------------------- to calc-profitto set profitto ricavi - costi end ;------------------------------------------------------------------------------------------------------------------------------------------- to calc-pollution ifelse ((prod-weight-on-pollution * production - techlev-weight-on-pollution * techlevel) < 0) [set pollution 1] [set pollution (prod-weight-on-pollution * production - techlev-weight-on-pollution * techlevel)] end ;------------------------------------------------------------------------------------------------------------------------------------------- to calc-cosmarab set cosmarab 100 / (pollution + capumano) end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-calcolo-permessi ; calcola l'inquinamento prodotto ;e il numero di permessi assegnati inizialmente ad ogni impresa set tot-pollution sum values-from factories-group [pollution] set tot-production sum values-from factories-group [production] ask factories-group[ set numpermessi (tot-pollution * (production / tot-production)) ; assegna un numero di permessi ponderato alla produzione set numpermessi int numpermessi ; tronca i permessi all'unità set plabel numpermessi set plabel-color blue] set tot-permits sum values-from factories-group [numpermessi] end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-crea-permessi ; crea tante turtles quanti sono la somma di tutti i permessi assegnati ad ogni impresa set tot-permits sum values-from factories-group [numpermessi] set-default-shape turtles "factory" cct tot-permits [ set color white set size 1.5 set heading 90 ; allinea la direzione di marcia parallela all'asse x set ycor 0 set xcor -2] end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-colloca-permessi ; fa posizionare le turtles sulle imprese in base ai permessi assegnati ad ognuna ask turtles[ set contapassi 0 muovi-su-impresa ; se esiste una impresa che ha bisogno di permessi muove la tartle su di essa set contapassi 0 ; risetta a zero gli spostamenti una volta che la turtle si è posizionata ] end ;------------------------------------------------------------------------------------------------------------------------------------------- to muovi-su-impresa ; procedura turtles ifelse (pcolor != red ) ; se non è un impresa [ fd 1 set contapassi contapassi + 1 if slow? [ wait 0.1 ] muovi-su-impresa ] [ifelse (contapassi < (screen-size-x * 20)) ; se oramai ha provato tutte le possibilità torna da dove è venuta [if (count turtles-here > (numpermessi )) ; se arriva in un'impresa già satura di permessi va oltre [fd 1 ; necesario per non bloccare il sistema if slow? [ wait 0.1 ] set contapassi contapassi + 1 muovi-su-impresa] ] [fd (-1 * contapassi)] ; se non ci sono imprese libere torna da dove è venuta ] end ;------------------------------------------------------------------------------------------------------------------------------------------- to selezione-permessi ask factories-group [set turtlesel numpermessi] ask turtles [ set ycor 0 set color white ifelse (turtlesel >= pollution) [set turtlesel turtlesel - 1 set excess? 1 set color red ] [set turtlesel turtlesel - 1 set excess? 0 ] ] set permits-group turtles with [color = red] set totexcesspermits count permits-group end ;------------------------------------------------------------------------------------------------------------------------------------------- to incolonna ; procedura per turtles set heading 0 ; gira verso l'alto le turtles fd 2 set contapassi contapassi + 2 ; le allontana dalle imprese if slow? [ wait 0.1 ] to-group ; le to-group visivamente secondo lo slider to-group per dimensione end to dimensione ; procedura per turtles ifelse (count turtles-here < togroupof) [set size 1][set size 1.5] ; se il gruppo finale è minore di togroupof riduce la dimensione end ;------------------------------------------------------------------------------------------------------------------------------------------- to to-group ; procedura per turtles if (count other-turtles-here > (togroupof - 1)) [fd 2 set contapassi contapassi + 2 if slow? [ wait 0.1 ] if (count turtles-here > togroupof) [to-group ] ] end ;------------------------------------------------------------------------------------------------------------------------------------------- to setup-variabili-evoluzione set varmark 1 set years 0 set permits-value 1 set up 1.01 set down (1 / up) set expiration limit end ;------------------------------------------------------------------------------------------------------------------------------------------- to go exchange step if (tot-pollution < 10) [stop] end to exchange set years (years + 1) calc-excess ; calcolo permessi situazione permessi <0 necessito >0 sovrabbondo domanda-soglia ; calcolo a seconda della situazione dei limiti di compravendita dei permessi scendi-permessi-excess ; fa spostare a y=0 tutti i permessi in excess contrattazione politica-industriale ; se non ho permessi sufficenti riduco la mia production set tot-pollution sum values-from factories-group [pollution] ; calcolo pollution totale effettivo dell'anno set tot-production sum values-from factories-group [production] update-plots end to step crescita ; evoluzione delle imprese di ciclo in ciclo secondo la crescita del livello tecnologico e di varmark if (variablemarket) [calc-varmark] ; evoluzione dell'andamento complessivo del mercato calc-permits-value ; politica di riduzione del valore dei permessi ogni tot anni selezione-permessi ; seleziona i permessi in eccesso ask turtles [incolonna] end ;------------------------------------------------------------------------------------------------------------------------------------------- to crescita ask factories-group [ calc-profitto ; calcolo profitto effettivo dopo politica industriale set cassa cassa + profitto ; aggiorno la cassa set techlevel techlevel * 1.03 set production (ricavi + 0.01 * techlevel + 0.01 * capumano) calc-ricavi ; ponderato con varmark calc-costi calc-profitto ; calcolo profitto potenziale se riesco ad avere permessi sufficienti calc-pollution] ; calcolo inquinamento potenziale end to calc-excess ask factories-group [ set excess (numpermessi * permits-value - pollution) set excess ceiling excess ] end to calc-varmark ; andamento mercato con memoria storica tramite evoluzione a catena ifelse (random-float 1 <= 0.5) [set varmark varmark * up] [set varmark varmark * down] end to calc-permits-value ; controlla se è l'anno di ridurre il valore dei permessi set expiration expiration - 1 if (expiration = 0)[ set permits-value (permits-value * (1 - percentagevariation / 100)) set expiration limit] end to politica-industriale ; se ho meno permessi di quanti sono necessari riduco la produzione ask factories-group[ if ((numpermessi * permits-value) < pollution)[ set production (production - ((pollution - (numpermessi * permits-value)) / prod-weight-on-pollution)) calc-pollution ] ] end ;------------------------------------------------------------------------------------------------------------------------------------------- to domanda-soglia ask factories-group [ ifelse (excess = 0) [] [ifelse (excess < 0) [calc-domanda] [calc-soglia] ] ] end to calc-domanda ; procedura per patches set domanda (cosmarab) end to calc-soglia ; patches procedure set soglia (0) end to scendi-permessi-excess ask permits-group [ set ycor 0 set color green ] ask turtles [dimensione] end to contrattazione ask permits-group[ set heading 90 set sogliat soglia set xcorcasa pxcor set contapassi 0 trova-acquirente ; ti posiziona su una impresa che ha bisogno di permessi if (xcorcasa = pxcor) [incolonna] ; reincolonna se non hanno trovato acquirente ] set sold-permits turtles with [ycor = 0] ask sold-permits[ set xcor xcorcasa ; salta all'impresa proprietaria set cassa (cassa + domandat) ; aggiorna la cassa set numpermessi (numpermessi - 1) ; aggiorna il numero permessi detenuti set xcor xcoracquista ; salta all'impresa acquirente set cassa (cassa - domandat) ; aggiorna cassa acquirente set numpermessi (numpermessi + 1) ; aggiiorna il numero permessi detenuti dall'acquirente incolonna ] ask factories-group[ set plabel numpermessi set plabel-color blue] end to trova-acquirente fd 1 set contapassi contapassi + 1 if slow? [ wait 0.1 ] ifelse (contapassi < (screen-size-x * 20)) [ifelse(pcolor != red ) ; se non giri a vuoto controlla di essere su un'impresa [trova-acquirente] ; se non sei su una impresa cercala [ifelse (((count turtles-here + numpermessi)* permits-value) <= pollution) ; se sei su una impresa controlla se sei di troppo [ifelse (domanda > sogliat) ; se non sei di troppo controlla se la domanda è > della soglia [set domandat domanda ; se la domanda è più alta della soglia set xcoracquista pxcor] ; memorizza la posizione dell'impresa acquirente [trova-acquirente] ; se la domanda non è più alta della soglia cerca un altro acquirente ] [trova-acquirente] ; se sei di troppo cerca un'altra impresa ] ] [fd -1 * contapassi ; se giri a vuoto torni da dove sei partito if slow? [ wait 0.1 ] ] end @#$#@#$#@ GRAPHICS-WINDOW 201 29 716 692 20 25 12.32 1 10 1 1 1 0 1 1 1 CC-WINDOW 5 953 1006 1048 Command Center 0 MONITOR 11 33 90 82 NIL screen-size-x 3 1 MONITOR 90 33 170 82 NIL screen-edge-x 3 1 SLIDER 725 225 837 258 number-factories number-factories 0 10 10 1 1 NIL BUTTON 10 258 101 291 NIL setup NIL 1 T OBSERVER T NIL SLIDER 723 29 912 62 prod-weight-on-pollution prod-weight-on-pollution 0 1 0.7 0.05 1 NIL SLIDER 724 64 913 97 techlev-weight-on-pollution techlev-weight-on-pollution 0 1 0.3 0.05 1 NIL SLIDER 724 98 914 131 prod-weight-on-cost prod-weight-on-cost 0 1 0.8 0.1 1 NIL MONITOR 12 140 100 189 NIL tot-pollution 3 1 MONITOR 12 90 109 139 NIL tot-production 3 1 MONITOR 12 190 100 239 NIL tot-permits\n 3 1 SWITCH 11 297 102 330 slow? slow? 1 1 -1000 SLIDER 725 149 914 182 togroupof togroupof 0 100 10 10 1 NIL MONITOR 13 644 142 693 Trend of the market varmark 3 1 BUTTON 12 343 99 391 NIL go T 1 T OBSERVER T NIL CHOOSER 725 273 863 318 limit limit 1 2 5 10 2 CHOOSER 869 272 984 317 percentagevariation percentagevariation 1 3 5 10 1 TEXTBOX 729 323 863 400 ogni quanti anni si riduce il valore di abbattimento di ogni permesso TEXTBOX 875 322 997 402 quanto si riduce in percentuale il valore di abbattimento di ogni permesso MONITOR 730 414 799 463 NIL expiration 0 1 MONITOR 874 414 962 463 NIL permits-value 3 1 MONITOR 86 731 229 780 number of excess permits totexcesspermits 0 1 MONITOR 86 785 229 834 Sold permits count sold-permits 0 1 BUTTON 104 396 170 429 NIL step NIL 1 T OBSERVER T NIL BUTTON 13 396 100 429 NIL exchange NIL 1 T OBSERVER T NIL PLOT 729 670 974 806 Total Pollution anni inquinamentotot 0.0 10.0 0.0 10.0 true false PENS "tot-pollution" 1.0 0 -16777216 true PLOT 13 494 246 636 Trend of the market NIL NIL 0.0 10.0 0.0 10.0 true false PENS "Index of market" 1.0 0 -16777216 true "null" 1.0 0 -5825686 true MONITOR 105 342 169 391 NIL years 3 1 PLOT 258 494 717 762 Negotiates permits years permits 0.0 10.0 0.0 10.0 true false PENS "Permessi scambiati" 1.0 0 -13345367 true "Permessi in eccesso" 1.0 0 -2674135 true PLOT 258 778 717 939 Excess ngotiable permits deviation years deviation 0.0 10.0 0.0 10.0 true false PENS "Deviation" 1.0 0 -10899396 true PLOT 729 815 975 937 Permits abatement power NIL NIL 0.0 10.0 0.0 10.0 true false PENS "permits-value" 1.0 0 -16777216 true PLOT 729 469 973 657 Production NIL NIL 0.0 10.0 0.0 10.0 true false PENS "tot-production" 1.0 0 -16777216 true SWITCH 13 437 163 470 variablemarket variablemarket 0 1 -1000 TEXTBOX 8 836 257 917 2005 (C)\nE. Faletti - edoardofaletti@hotmail.com\nG. Messina - giovanni.m@fastwebnet.it\nM. tolini - marcotolini@tin.it @#$#@#$#@ WHAT IS IT? ----------- This project deals with environmental and pollution topics as an externality. The Legislator, who doesn’t know the pollution pulling down costs of every factory, decides to create a tradable pollution market. This solution permits to minimize the total costs of the manufacturing system. HOW IT WORKS ------------ We represents the companies with red patches and the tradable permits with turtles characterized by factory shape. The permits are vertically drew up in columns on their own companies. The factories have different colours: White -> the necessary amount of permits to cover the produced pollution Red -> extra permits compared to the amount of pollution Green -> extra permits offered to the market. HOW TO USE IT ------------- 1) Before to play the SETUP it is possible to modify the following parameters with the appropriate sliders: PROD-WEIGHT-ON-POLLUTION: production weight on pollution level TECHLEV-WEIGHT-ON-POLLUTION: technical level weight on pollution PROD-WEIGHT-ON-COST: production weight on costs level TOGROUPOF: the amount of permits which are grouped in coloums NUMBER-FACTORIES: the number of companies which are simulated LIMIT: time to depreciate the value of permits PERCENTAGEVARIATION: percentage variation of the permits abatement power SLOW: if it is “on” slows down the turtles movements VARIABLEMARKET: if it is “on” makes the trend of the market variable 2) Playing SETUP we create the factories the initial distribution of the permits and the first cycle of the production. 3) Playing GO the companies produce, exchange the permits while years pass. 3.b) Alternatively it’s possible to play EXCHANGE and STEP: the first one makes possible to exchange the permits, the second one updates the variables at the end of every year. THINGS TO TRY ------------- It’s interesting to modify the values of the sliders in order to compare the different behaviours of the factories regarding production and permits trade. EXTENDING THE MODEL ------------------- The model can be improved in different ways in order to show in a more accurate and realistic manner the market and the factories. In particular, companies use different strategies in different contests and competitors. It could be interesting to change the algorithm which improve the technical skills, from exogenous to endogenous RELATED MODELS -------------- Graphically this simulation is inspired from "Ospedali" by Professor Pietro Terna University of Turin. CREDITS AND REFERENCES ---------------------- This simulation was created during the course “Informatica e Simulazione per l'Economia” (2004 – 2005) by Professor Pietro Terna, University of Turin. The autors of the model are Edoardo Faletti (edoardofaletti@hotmail.com), Giovanni Messina (giovanni.m@fastwebnet.it), Marco Tolini (marcotolini@tin.it), with the supervision of Professor Pietro Terna, who we thanks heartily. @#$#@#$#@ 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 arrow true 0 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 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 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 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 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 30 30 240 circle 2 false 0 Circle -7500403 true true 16 16 270 Circle -16777216 true false 46 46 210 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 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 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 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 factory false 0 Rectangle -7500403 true true 76 194 285 270 Rectangle -7500403 true true 36 95 59 231 Rectangle -16777216 true false 90 210 270 240 Line -7500403 true 90 195 90 255 Line -7500403 true 120 195 120 255 Line -7500403 true 150 195 150 240 Line -7500403 true 180 195 180 255 Line -7500403 true 210 210 210 240 Line -7500403 true 240 210 240 240 Line -7500403 true 90 225 270 225 Circle -1 true false 37 73 32 Circle -1 true false 55 38 54 Circle -1 true false 96 21 42 Circle -1 true false 105 40 32 Circle -1 true false 129 19 42 Rectangle -7500403 true true 14 228 78 270 fish false 0 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 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 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 135 195 135 240 120 255 105 255 105 285 135 285 line true 0 Line -7500403 true 150 0 150 300 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 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 60 270 150 0 240 270 15 105 285 105 Polygon -7500403 true true 75 120 105 210 195 210 225 120 150 75 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 105 90 75 75 55 75 40 89 31 108 39 124 60 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 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 3.0 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@