creymond_Evolution-of-Trust/EvolutionOfTrust.nlogo
;author : Cyril Reymond
;university : Claude Bernard Lyon 1
;date : 03/31/2019

globals [
  reproduce-list ;contains the type of character to duplicate
  nb-to-reproduce ;number of characters to reproduce and kill
]

;variables of each turtles
turtles-own [
  utility ;the gain of the turtle
  cooperate? ;true if willing to cooperate, false otherwise
  always-cheat? ;true if will always cheat
  player-cooperate? ;true if the other player is cooperating false otherwise
  previous-player-cooperate? ;previous round behaviour
  character-type ;define the behaviour of the character
]

;main function of the model, launches everything needed for the simulation
to play
  repeat number-of-games [
    ask turtles [
      play-rounds
    ]
    set nb-to-reproduce (count turtles) / 4
    kill-losers nb-to-reproduce
    reproduce-winners nb-to-reproduce
    display-utility
    setup-links
    tick
  ]
  stop
end

;alternate function to run step by step the simulation
;the rest of functions are directly defined in the button on interface tab
to step-by-step
  repeat number-of-games [
    ask turtles [
      play-rounds
    ]
    set nb-to-reproduce (count turtles) / 4
  ]
end

;initialize the whole simulation data
to setup-game
  clear-all
  reset-ticks
  setup-patches
  setup-turtles
  setup-links
end

;initialize the specific turtles
;only to use in the first initialization
to setup-turtles
  setup-cheater nb-cheater
  setup-copycat nb-copycat
  setup-cooperator nb-cooperator
  setup-grudger nb-grudger
end

;initialize simple patches
to setup-patches
  ask patches [ set pcolor white ]
end

;create links between turtles and set them in a circle representation
to setup-links
  ask links [die]
  layout-circle sort-on [character-type] turtles 13
  ask turtles [
    create-links-with other turtles
    set utility 0
  ]
  ask links [
    set color sky
  ]
end

;create number of cheater character
to setup-cheater [number]
  create-turtles number [
    set shape "person"
    set utility 0
    set color red
    set size 2.5
    set cooperate? false
    set player-cooperate? false
    set always-cheat? true
    set previous-player-cooperate? false
    set character-type "cheater"
  ]
end

;create number of copycat character
to setup-copycat [number]
  create-turtles number [
    set shape "person"
    set utility 0
    set color green
    set size 2.5
    set cooperate? true
    set player-cooperate? false
    set always-cheat? false
    set previous-player-cooperate? false
    set character-type "copycat"
  ]
end

;create number of cooperator character
to setup-cooperator [number]
  create-turtles number [
    set shape "person"
    set utility 0
    set color 3
    set size 2.5
    set cooperate? true
    set player-cooperate? false
    set always-cheat? false
    set previous-player-cooperate? false
    set character-type "cooperator"
  ]
end

;create number of grudger character
to setup-grudger [number]
  create-turtles number [
    set shape "person"
    set utility 0
    set color blue
    set size 2.5
    set cooperate? true
    set player-cooperate? false
    set always-cheat? false
    set previous-player-cooperate? false
    set character-type "grudger"
  ]
end

;chose two players connected by a link and let them play together according
;their behaviours
to play-rounds
  let nb-links count my-links
  repeat nb-links [
    let player [other-end] of one-of my-links

    repeat number-of-rounds [
      if character-type = "copycat" and [character-type] of player = "copycat"[
      set cooperate? true
      ask player [set cooperate? true]
    ]
    if character-type = "copycat" and [character-type] of player = "grudger"[
      set cooperate? true
      ask player [set cooperate? true]
    ]
     set player-cooperate? [cooperate?] of player
     if always-cheat? [set cooperate? false]

      ;compute the utility of each players
      ifelse cooperate? and player-cooperate?[
        set utility (utility + gain-both-cooperate)
        ask player [
          set utility (utility + gain-both-cooperate)
        ]
        ][ifelse cooperate? and not player-cooperate?[
          set utility (utility + lose-other-cheat)
          ask player [
            set utility (utility + gain-cheat)
          ]
        ]
        [ifelse not cooperate? and player-cooperate?[
          set utility (utility + gain-cheat)
          ask player [
            set utility (utility + lose-other-cheat)
          ]
          ][if not cooperate? and not player-cooperate? [
            set utility utility + both-cheat
            ask player [
              set utility utility + both-cheat
            ]
          ]
          ]
        ]
      ]
      set label utility
      set label-color black
      ask player [
        set label utility
        set label-color black
      ]

      ;apply behaviour to players according of what the other one played
      ask player [
        ;if utility < 0 [set utility 0]
        set player-cooperate? [cooperate?] of myself
        set previous-player-cooperate? player-cooperate?
        run character-type
      ]
      ;if utility < 0 [set utility 0]
      set previous-player-cooperate? player-cooperate?
      run character-type
    ] ;end of the rounds
    ;killing the link between those two players from each side
    ask player [
      ask my-links with [other-end = myself] [die]
    ]
    ask my-links with [other-end = player] [die]

    reset-behaviours
    ask player [reset-behaviours]
  ]
end

;bahaviour of the cheater character
to cheater
  set cooperate? false
  set always-cheat? true
end

;bahaviour of the copycat character
;do the last thing that the other one did
to copycat
  ifelse not previous-player-cooperate? [
    random-seed new-seed
    let nb random 100
    ifelse nb <= probability-of-mistakes [
      set cooperate? true
    ][set cooperate? false]
  ][set cooperate? true]
  set always-cheat? false
end

;bahaviour of the cooperator character
to cooperator
  set cooperate? true
  set always-cheat? false
end

;bahaviour of the grudger character
;always cooperate until it being cheated, then always cheat
to grudger
  if not player-cooperate?[
    let nb random 100
    ifelse nb <= probability-of-mistakes [
      set cooperate? true
      set always-cheat? false
    ][set always-cheat? true
      set cooperate? false]
  ]
end

;picks the number best players and reproduce each of them
to reproduce-winners [number]
  let turtle-to-reproduce max-n-of number turtles [utility]
  set reproduce-list []

  ask turtle-to-reproduce [
    if character-type = "cheater" [
      set reproduce-list lput 1 reproduce-list
    ]
    if character-type = "cooperator" [
      set reproduce-list lput 2 reproduce-list
    ]
    if character-type = "copycat" [
      set reproduce-list lput 3 reproduce-list
    ]
    if character-type = "grudger" [
      set reproduce-list lput 4 reproduce-list
    ]
  ]
  foreach reproduce-list [
    n ->
    if n = 1 [
      setup-cheater 1
    ]
    if n = 2 [
      setup-cooperator 1
    ]
    if n = 3 [
      setup-copycat 1
    ]
    if n = 4 [
      setup-grudger 1
    ]
  ]
end

;picks the number lowest players and kill them
to kill-losers [number]
  let turtleToKill min-n-of number turtles [utility]
  show turtleToKill
  ask turtleToKill [die]
end

;shows utility gained at the turtle
to display-utility
  ask turtles [
    set label utility
    set label-color black
  ]
end

;set back to initial behaviours
to reset-behaviours
  if character-type = "cheater" [
    set cooperate? false
    set always-cheat? true
  ]
  if character-type = "copycat" [
    set cooperate? true
    set always-cheat? false
  ]
  if character-type = "cooperator" [
    set cooperate? true
    set always-cheat? false
  ]
  if character-type = "grudger" [
    set cooperate? true
    set always-cheat? false
  ]
end
@#$#@#$#@
GRAPHICS-WINDOW
387
17
890
521
-1
-1
15.0
1
15
1
1
1
0
0
0
1
-16
16
-16
16
0
0
1
ticks
30.0

BUTTON
39
384
124
427
Setup
setup-game
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1

BUTTON
278
382
364
429
Play
play
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
1

BUTTON
162
383
250
427
Step
step-by-step\ndisplay-utility\nwait 2\nkill-losers nb-to-reproduce\nwait 2\nreproduce-winners nb-to-reproduce\nwait 2\ndisplay-utility\nwait 2\nsetup-links\nwait 2\ntick
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1

SLIDER
19
19
206
52
nb-cheater
nb-cheater
0
10
2.0
1
1
NIL
HORIZONTAL

SLIDER
19
70
206
103
nb-copycat
nb-copycat
0
10
2.0
1
1
NIL
HORIZONTAL

SLIDER
20
125
208
158
nb-grudger
nb-grudger
0
10
0.0
1
1
NIL
HORIZONTAL

SLIDER
19
180
208
213
nb-cooperator
nb-cooperator
0
20
15.0
1
1
NIL
HORIZONTAL

SLIDER
121
326
293
359
number-of-games
number-of-games
1
100
10.0
1
1
NIL
HORIZONTAL

PLOT
921
17
1240
225
Population
game
Nb
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"copycat" 1.0 0 -14439633 true "" "plot count turtles with [character-type = \"copycat\"]"
"cheater" 1.0 0 -5298144 true "" "plot count turtles with [character-type = \"cheater\"]"
"cooperator" 1.0 0 -11053225 true "" "plot count turtles with [character-type = \"cooperator\"]"
"grudger" 1.0 0 -14070903 true "" "plot count turtles with [character-type = \"grudger\"]"

PLOT
923
263
1242
444
Evolution of Trust
game
Nb
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"cooperate" 1.0 0 -16777216 true "" "plot count turtles with [cooperate? = true]"

CHOOSER
222
18
380
63
gain-both-cooperate
gain-both-cooperate
0 1 2 3 4 5
2

CHOOSER
223
71
380
116
gain-cheat
gain-cheat
1 2 3 4 5
2

CHOOSER
223
126
380
171
lose-other-cheat
lose-other-cheat
0 -1 -2 -3 -4
1

SLIDER
121
284
293
317
number-of-rounds
number-of-rounds
1
20
10.0
1
1
NIL
HORIZONTAL

SLIDER
121
242
293
275
probability-of-mistakes
probability-of-mistakes
0
50
0.0
1
1
NIL
HORIZONTAL

CHOOSER
223
180
380
225
both-cheat
both-cheat
0 -1 -2 -3 -4 -5
0

@#$#@#$#@
## WHAT IS IT?

Que gagne t-on à faire confiance aux autres ? C'est une question que de nombreuses personnes se sont posés à travers l'histoire, et que ce modèle tente de répondre à l'aide de la théorie des jeux. 
Le jeu est simple. Deux joueurs possèdent chacun une pièce et une machine les séparent. Ils ont deux actions possibles : soit mettre la pièce dans la machine (coopérer), soit garder la pièce (tricher). Ils ne peuvent pas voir ce que l'autre joue. Les gains dépendront de leurs choix :
- les deux coopèrent : J1 et J2 gagnent la même valeur
- les deux trichent : J1 et J2 ne gagnent rien
- J1 coopère et J2 triche : J1 perd, J2 gagne
- J1 triche et J2 coopère :  J1 gagne, J2 perd

Un match est composé de n rounds entre deux joueurs. A chaque tour, tous les joueurs jouent contre tous les autres. Les joueurs sont différents et leurs comportements également. Le modèle contient quatre types de joueurs :
- cheater : triche tout le temps
- coopérator : coopère tout le temps
- copycat : commence par coopérer puis fait la même chose que l'autre joueur au tour précédent
- grudger : coopère jusqu'à que l'autre joueur triche une fois, si c'est le cas se met à tricher tout le temps

A l'issue des dix rounds, on élimine les n moins bons et on duplique les n meilleurs (avec n dépendant du nombre initial de participants). Cela à pour but de suivre l'évolution du principe de confiance en voyant quel type de joueur prend le dessus.
	  

## HOW IT WORKS

Un agent prendra la rôle d'un joueur avec un comportement particulier. Des liens sont crées entre chaque agent pour leur permettre de jouer. Leurs comportements va varié au cours du jeu en fonction de leurs parties et de leurs adversaires. 

## HOW TO USE IT

Le modèle est simple à utiliser. Il faut tout d'abord définir le nombre de joueurs de chaque type que l'on souhaite. Ensuite, on définit le nombre de parties que l'on veut, chacune étant composée de n rounds. Les gains sont à définir sur la page interface :
- gain-both-cooperate : valeur obtenue par les deux joueurs qui coopèrent simultanément
- gain-cheat : valeur obtenue par le joueur ayant tricher quand l'autre coopère
- lose-other-cheat : valeur perdue par le joueur lorsqu'il coopère contre un tricheur

Le bouton step permet de faire un seul match à dix rounds, permettant de suivre les évolutions petit à petit.


## THINGS TO NOTICE

Deux éléments sont à suivre lors du déroulement du jeu. 
La partie centrale avec les joueurs positionnés en cercle montre l'état du jeu avec les joueurs qui sont remplacés et leurs scores. 
Les deux graphiques représentant l'évolution de la population de chaque catégorie pour l'un, et l'autre retraçant l'évolution de la confiance.

## THINGS TO TRY

Il peut être intéressant de faire varier les différents paramètres pour modifier les conditions du jeu, et notamment les gains et pertes des joueurs. Ces paramètres permettent de créer des environnements précis afin de mettre en place différentes évolutions de la confiance. 

## EXTENDING THE MODEL

Une amélioration possible est de simplement ajouter des types de personnages supplémentaires afin d'avoir un panel plus large, permettant d'exploiter au maximum les résultats.

## NETLOGO FEATURES

Peut être des éléments que j'ai manqué, mais améliorer la gestion des liens entre les agents et pouvoir garder une trace des échanges.

## RELATED MODELS

## CREDITS AND REFERENCES

L'idée de ce modèle vient d'un site web - https://ncase.me/trust/ - et dont le principe a été appliqué ici. Ce modèle arrive à des résultats similaires pour les types de joueurs donnés.
@#$#@#$#@
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

cat
false
0
Line -7500403 true 285 240 210 240
Line -7500403 true 195 300 165 255
Line -7500403 true 15 240 90 240
Line -7500403 true 285 285 195 240
Line -7500403 true 105 300 135 255
Line -16777216 false 150 270 150 285
Line -16777216 false 15 75 15 120
Polygon -7500403 true true 300 15 285 30 255 30 225 75 195 60 255 15
Polygon -7500403 true true 285 135 210 135 180 150 180 45 285 90
Polygon -7500403 true true 120 45 120 210 180 210 180 45
Polygon -7500403 true true 180 195 165 300 240 285 255 225 285 195
Polygon -7500403 true true 180 225 195 285 165 300 150 300 150 255 165 225
Polygon -7500403 true true 195 195 195 165 225 150 255 135 285 135 285 195
Polygon -7500403 true true 15 135 90 135 120 150 120 45 15 90
Polygon -7500403 true true 120 195 135 300 60 285 45 225 15 195
Polygon -7500403 true true 120 225 105 285 135 300 150 300 150 255 135 225
Polygon -7500403 true true 105 195 105 165 75 150 45 135 15 135 15 195
Polygon -7500403 true true 285 120 270 90 285 15 300 15
Line -7500403 true 15 285 105 240
Polygon -7500403 true true 15 120 30 90 15 15 0 15
Polygon -7500403 true true 0 15 15 30 45 30 75 75 105 60 45 15
Line -16777216 false 164 262 209 262
Line -16777216 false 223 231 208 261
Line -16777216 false 136 262 91 262
Line -16777216 false 77 231 92 261

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

person business
false
0
Rectangle -1 true false 120 90 180 180
Polygon -13345367 true false 135 90 150 105 135 180 150 195 165 180 150 105 165 90
Polygon -7500403 true true 120 90 105 90 60 195 90 210 116 154 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 183 153 210 210 240 195 195 90 180 90 150 165
Circle -7500403 true true 110 5 80
Rectangle -7500403 true true 127 76 172 91
Line -16777216 false 172 90 161 94
Line -16777216 false 128 90 139 94
Polygon -13345367 true false 195 225 195 300 270 270 270 195
Rectangle -13791810 true false 180 225 195 300
Polygon -14835848 true false 180 226 195 226 270 196 255 196
Polygon -13345367 true false 209 202 209 216 244 202 243 188
Line -16777216 false 180 90 150 165
Line -16777216 false 120 90 150 165

person construction
false
0
Rectangle -7500403 true true 123 76 176 95
Polygon -1 true false 105 90 60 195 90 210 115 162 184 163 210 210 240 195 195 90
Polygon -13345367 true false 180 195 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285
Circle -7500403 true true 110 5 80
Line -16777216 false 148 143 150 196
Rectangle -16777216 true false 116 186 182 198
Circle -1 true false 152 143 9
Circle -1 true false 152 166 9
Rectangle -16777216 true false 179 164 183 186
Polygon -955883 true false 180 90 195 90 195 165 195 195 150 195 150 120 180 90
Polygon -955883 true false 120 90 105 90 105 165 105 195 150 195 150 120 120 90
Rectangle -16777216 true false 135 114 150 120
Rectangle -16777216 true false 135 144 150 150
Rectangle -16777216 true false 135 174 150 180
Polygon -955883 true false 105 42 111 16 128 2 149 0 178 6 190 18 192 28 220 29 216 34 201 39 167 35
Polygon -6459832 true false 54 253 54 238 219 73 227 78
Polygon -16777216 true false 15 285 15 255 30 225 45 225 75 255 75 270 45 285

person doctor
false
0
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
Polygon -13345367 true false 135 90 150 105 135 135 150 150 165 135 150 105 165 90
Polygon -7500403 true true 105 90 60 195 90 210 135 105
Polygon -7500403 true true 195 90 240 195 210 210 165 105
Circle -7500403 true true 110 5 80
Rectangle -7500403 true true 127 79 172 94
Polygon -1 true false 105 90 60 195 90 210 114 156 120 195 90 270 210 270 180 195 186 155 210 210 240 195 195 90 165 90 150 150 135 90
Line -16777216 false 150 148 150 270
Line -16777216 false 196 90 151 149
Line -16777216 false 104 90 149 149
Circle -1 true false 180 0 30
Line -16777216 false 180 15 120 15
Line -16777216 false 150 195 165 195
Line -16777216 false 150 240 165 240
Line -16777216 false 150 150 165 150

person farmer
false
0
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
Polygon -1 true false 60 195 90 210 114 154 120 195 180 195 187 157 210 210 240 195 195 90 165 90 150 105 150 150 135 90 105 90
Circle -7500403 true true 110 5 80
Rectangle -7500403 true true 127 79 172 94
Polygon -13345367 true false 120 90 120 180 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 180 90 172 89 165 135 135 135 127 90
Polygon -6459832 true false 116 4 113 21 71 33 71 40 109 48 117 34 144 27 180 26 188 36 224 23 222 14 178 16 167 0
Line -16777216 false 225 90 270 90
Line -16777216 false 225 15 225 90
Line -16777216 false 270 15 270 90
Line -16777216 false 247 15 247 90
Rectangle -6459832 true false 240 90 255 300

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

sheep
false
15
Circle -1 true true 203 65 88
Circle -1 true true 70 65 162
Circle -1 true true 150 105 120
Polygon -7500403 true false 218 120 240 165 255 165 278 120
Circle -7500403 true false 214 72 67
Rectangle -1 true true 164 223 179 298
Polygon -1 true true 45 285 30 285 30 240 15 195 45 210
Circle -1 true true 3 83 150
Rectangle -1 true true 65 221 80 296
Polygon -1 true true 195 285 210 285 210 240 240 210 195 210
Polygon -7500403 true false 276 85 285 105 302 99 294 83
Polygon -7500403 true false 219 85 210 105 193 99 201 83

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

wolf
false
0
Polygon -16777216 true false 253 133 245 131 245 133
Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105
Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113

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.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
@#$#@#$#@
0
@#$#@#$#@
