;; HURLAB programmed by Marta Posada. University of Valladolid (Spain) ;; ODD protocol can be found at wwww.eii.uva.es/posada/HURLAB-v0 ;; contact: posada@eii.uva.es ;; 2015 breed [workers worker] breed [jobs job] globals [ number_of_new_workers ;-------at the begining:calculated each step index_of_first_new_worker ;-------at the begining:as consequence of number_of_jobs & number_of_workers list_team_who list_team_empty_jobs ;replace die workers by empty jobs list_team_new_workers ;replace empty jobs by new workers worker_aux job_aux ] workers-own ;; -----------------------workes' variables patches size is (-16,16). Therefore, 16+16+1=33 the maximun number of turtles is 33x33=1089. [ behaviour effort project_manager ] jobs-own ;---------------------------variables for each job [ job_project_manager ;; -------at the begining: set up from workers ] ;;****************************INTERFAZ to setup ;----------------------- clear-all ;random-seed 681279294 ask patches [set pcolor white] setup-jobs ;; to inicializate the jobs (job 0, ....job m-1) setup-workers team-size population ;; to create the workers: worker n, worker n+2,....worker m link-workers-TO-jobs ;; to assign jobs (level and wage) to workers and place workers on patches create-team set number_of_new_workers 0 set index_of_first_new_worker 2 * team-size reset-ticks ;; Resets the tick counter to zero end to go ;-------------------------- while [ticks < years] [go-once] end to go-once;--------------------------step by step ifelse ticks = years [stop] [ involuntary-turnover-decision staffing-requirements setup-workers number_of_new_workers new-employees ; to create new employees new-workers-on-empty-jobs update-effort tick ] end ;;****************************SET UP to setup-jobs ;-------------CREATING JOBS ;; to create the jobs: job 0, job 2,...job n-1 create-jobs team-size [ set shape "circle" set color gray ] ;-----star ask job 0 [set job_project_manager 1] let i 1 while [i < team-size] [ask job 0 [create-link-to job i] set i i + 1 ] layout-radial jobs links (job 0) ask links [hide-link] ; make invisible the links between jobs end to setup-workers [number effort-behavior] set-default-shape workers "person" ;; create-workers number ;; to create the workers: worker m+1, worker m+2, etc [ set behaviour effort-behavior set size 3 define-effort define-color ] end to define-effort ;--------------- effort 0=low (null effort=0) ; 100=high (high effort=4) ifelse behaviour = "null" [set effort random 10 ] [ifelse behaviour = "high" [set effort random 20 + 81] ;; generate a number between [0, 20], then [0 +81, 19 +81]. therefore, a number between [81, 100] [set effort random 101] ; SET UP: generate a number between [0,100] ] end to define-color ;-----------------------------color depending on the effort ; null effort=0-10 blue (105), 11-20 sky (95), 21-30 cyan (85), 31-40 turquoise (75), 41-50 lime (65) ; 51-60 green (55), 61-70 yellow (45), 71-80 brown (35), 81-90 orange (25), high effort=91-100 red (15) ifelse effort < 11 [set color 105] ;blue [ifelse effort < 21 [set color 95] ;sky [ifelse effort < 31 [set color 85] ; cyan [ifelse effort < 41 [set color 75]; turquoise [ifelse effort < 51 [set color 65] ;lime [ifelse effort < 61 [set color 55] ;green [ifelse effort < 71 [set color 45] ;yellow [ifelse effort < 81 [set color 35] ;brown [ifelse effort < 91 [set color 25] ; orange [set color 15] ;red ]]]]]]]] end to link-workers-TO-jobs let i 0 let j team-size while [i < team-size] [ask worker j [set project_manager [job_project_manager] of job i setxy ([xcor] of job i ) (5 + [ycor] of job i ) ; worker-coordinate=(x-job-coordinate, x-job-coordinate+2) create-link-to job i ] set i i + 1 set j j + 1] end to create-team set list_team_who [] ask workers with [project_manager = 0][set list_team_who sentence who list_team_who] ask workers with [project_manager = 1] [set list_team_who fput who list_team_who] team-star if team-leadership = "democratic" [team-whole] end to team-star let i 0 While [i < team-size] ;go over the list of workers in teams [let j i + 1 while [j < team-size] [ask worker item 0 list_team_who [create-link-to worker item j list_team_who] set j j + 1] set i i + 1] end to team-whole let i 1 While [i < team-size] ;go over the list of workers in teams [let j i + 1 while [j < team-size] [ask worker item i list_team_who [create-link-to worker item j list_team_who] set j j + 1] set i i + 1] end ;;****************************GO ONCE to involuntary-turnover-decision ;;--------------- when effort < firing-level, the employee is dismissed by the organization set list_team_empty_jobs list_team_who ask workers with [effort < firing-level] [set worker_aux who ; who is going to die? ask out-link-neighbors [ if breed = jobs [set job_aux who ]] ; to which job is linked this employee? (empty-job)heritage_&_replacement_from_die_workers_TO_empty_jobs let i 0 while [i < length list_team_empty_jobs ] [if worker_aux = item i list_team_empty_jobs [set list_team_empty_jobs replace-item i list_team_empty_jobs job_aux];replace worker_aux by job_aux set i i + 1] die] end to staffing-requirements set index_of_first_new_worker (index_of_first_new_worker + number_of_new_workers) ;;------needed to update-empty_jobs-with-new-workers set number_of_new_workers team-size - count workers end to new-workers-on-empty-jobs ;;----------- assign empty jobs (level and wage) to new workers and place workers on patches let i 0 set worker_aux index_of_first_new_worker set list_team_new_workers list_team_empty_jobs ;inizializate replacement ;---------- while [i < team-size ] [ask job i [ let choice one-of (workers with [out-link-neighbor? myself]) if choice = nobody ;; if job is empty, create a new link with a new worker [create-link-from worker worker_aux ;create link job-worker ask worker worker_aux [ set project_manager [job_project_manager] of job i setxy ([xcor] of job i ) (5 + [ycor] of job i ) ] ;-----replace empty JOB by NEW WORKER let j 0 while [j < length list_team_new_workers] ;go over the list of list [if i = item j list_team_new_workers [set list_team_new_workers replace-item j list_team_new_workers worker_aux] ;replace job i by worker worker_aux set j j + 1] set list_team_who list_team_new_workers ;********IMPORTANT: UPDATE THE LIST OF TEAMS set worker_aux worker_aux + 1 ]] set i i + 1] ;-----NEW LINKS ifelse team-leadership = "ego-centered" [links-new-&-old-workers-star][links-new-&-old-workers-whole] end to links-new-&-old-workers-star let k index_of_first_new_worker while [k <= worker_aux] ; for the new workers who are numerated from k to worker-aux [let i 0 while [i < length list_team_new_workers] ;go over the list of list: list_team_new_workers [if k = item i list_team_new_workers ;get the position of the new worker k [if i = 0 [let r i + 1;-----get the other workers on the right of the list (in order to create links to them) while [r < length list_team_new_workers] ;go over the team on the right [ask worker k [create-link-to worker item r list_team_new_workers] set r r + 1]] if i > 0 ;-------- get the first one worker on the left of the list (in order to create links from it) [ask worker k [create-link-from worker item 0 list_team_new_workers] ] ] set i i + 1] set k k + 1] end to links-new-&-old-workers-whole let k index_of_first_new_worker while [k <= worker_aux] ; for the new workers who are numerated from k to c [let i 0 while [i < length list_team_new_workers] ;go over the list of list: list_team_new_workers [if k = item i list_team_new_workers ;get the position of the new worker k [let r i + 1 ;-----get the other workers on the right of the list (in order to create links to them) while [r < length list_team_new_workers] ;go over the team on the right [ask worker k [create-link-to worker item r list_team_new_workers] set r r + 1] if i > 0 ;-----get the other workers on the left of the list (in order to create links from them) [let l i - 1 while [l >= 0] ;go over the team on the left, including the fist one (w>=0) [ask worker k [create-link-from worker item l list_team_new_workers] set l l - 1] ] ] set i i + 1] set k k + 1] end to update-effort ;;----update effort EXCEPT for behaviours 0 (null) and 4 (high) which always exerts the same effort update-effort-star if team-leadership = "democratic" [update-effort-whole] end to update-effort-star let j 1 while [j < length list_team_who] [ask worker item 0 list_team_who [ask worker item j list_team_who [change-effort [effort] of worker item j list_team_who [effort] of worker item 0 list_team_who] change-effort [effort] of worker item 0 list_team_who [effort] of worker item j list_team_who] set j j + 1] end to update-effort-whole let j 1 while [j < length list_team_who] [ask worker item j list_team_who [let r j + 1;-----get the other workers on the right of the list (in order to create links to them) while [r < length list_team_who] ;go over the team on the right [ask worker item r list_team_who [change-effort [effort] of worker item r list_team_who [effort] of worker item j list_team_who] change-effort [effort] of worker item j list_team_who [effort] of worker item r list_team_who set r r + 1]] set j j + 1] end to change-effort [own partner] ;********************************************linked-agent (j) changes its effort if behaviour = "shrinking" [set effort partner / 2];--------------------------- shrinking halves the effort provided by its last partner if behaviour = "replicator" [set effort partner];---------------------------replicator exerts the same effort its last partner if behaviour = "effort comparator" [;---------------------------effort comparator compares its EFFORT to its last partner's one ;j-agent increases (decreases) 10% its effort if it is lower (higher) than the effort's i-agent ifelse own < partner [set effort own * 1.1][set effort own * 0.9]] if behaviour = "averager" [set effort (partner + own) / 2] ;---------------------------averager averages its effort with last partner's effort if effort > 100 [set effort 100] define-color ;----change the color according to new effort value end @#$#@#$#@ GRAPHICS-WINDOW 175 32 423 301 25 25 4.67 1 10 1 1 1 0 0 0 1 -25 25 -25 25 0 0 1 ticks 30.0 BUTTON 432 33 491 70 setup setup NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 494 33 549 69 go go NIL 1 T OBSERVER NIL NIL NIL NIL 1 SLIDER 433 73 610 106 years years 1 15 8 1 1 NIL HORIZONTAL SLIDER 10 263 165 296 firing-level firing-level 0 100 10 10 1 NIL HORIZONTAL PLOT 629 111 824 303 effort evolution years NIL 0.0 1.0 0.0 100.0 true true "" "" PENS "effort" 1.0 0 -16777216 true "" "plot precision mean [effort] of workers 4" "max" 1.0 0 -7500403 true "" "plot max[effort]of workers" "min" 1.0 0 -7500403 true "" "plot min[effort]of workers" "firing" 1.0 0 -2674135 true "" "plot firing-level" TEXTBOX 14 127 156 157 EMPLOYEES' EFFORT BEHAVIOUR 12 0.0 1 CHOOSER 10 162 166 207 population population "null" "shrinking" "effort comparator" "averager" "replicator" "high" 3 TEXTBOX 11 13 128 41 TEAM 12 0.0 1 CHOOSER 9 70 164 115 team-leadership team-leadership "ego-centered" "democratic" 0 CHOOSER 9 211 165 256 new-employees new-employees "null" "shrinking" "effort comparator" "averager" "replicator" "high" 5 SLIDER 8 34 162 67 team-size team-size 3 10 10 1 1 NIL HORIZONTAL BUTTON 553 33 610 69 go-once go-once NIL 1 T OBSERVER NIL NIL NIL NIL 1 PLOT 433 112 623 303 effort distribution NIL workers 0.0 100.0 0.0 1.0 true true "" "clear-plot" PENS "effort10" 10.0 1 -13345367 true "" "plotxy 10 count workers with [(effort >= 0) and (effort <= 10)]" "effort20" 10.0 1 -13791810 true "" "plotxy 20 count workers with [(effort > 10) and (effort <= 20)]" "effort30" 10.0 1 -11221820 true "" "plotxy 30 count workers with [(effort > 20) and (effort <= 30)]" "effort40" 10.0 1 -14835848 true "" "plotxy 40 count workers with [(effort > 30) and (effort <= 40)]" "effort50" 10.0 1 -13840069 true "" "plotxy 50 count workers with [(effort > 40) and (effort <= 50)]" "effort60" 10.0 1 -10899396 true "" "plotxy 60 count workers with [(effort > 50) and (effort <= 60)]" "effort70" 10.0 1 -1184463 true "" "plotxy 70 count workers with [(effort > 60) and (effort <= 70)]" "effort80" 10.0 1 -6459832 true "" "plotxy 80 count workers with [(effort > 70) and (effort <= 80)]" "effort90" 10.0 1 -955883 true "" "plotxy 90 count workers with [(effort > 80) and (effort <= 90)]" "effort100" 10.0 1 -2674135 true "" "plotxy 100 count workers with [(effort > 90) and (effort <= 100)]" MONITOR 731 61 822 106 effort deviation precision standard-deviation [effort] of workers 4 17 1 11 MONITOR 632 61 727 106 effort average precision mean [effort] of workers 4 17 1 11 @#$#@#$#@ ## Propósito Analizar la emergencia de una cultura corporativa frente al esfuerzo en los equipos de trabajo con diferentes estilos de liderazgo (autoritario frente a democrático) y diferentes tipos de comportamiento frente al esfuerzo. ## Entidades, variables de estado y escalas Las variables globales definidas en la interface del modelo son: • team-size es el tamaño del equipo. Su valor se asigna desde la interface y varía entre 3 y 10. • team-leadership es el estilo de liderazgo del gestor del equipo que puede ser de dos tipos: autoritario o democrático. El estilo se establece desde la interface. • population es el tipo de comportamiento frente al esfuerzo que tendrán los empleados. Se configura desde la interface entre los definidos. • new-employees es el tipo de comportamiento frente al esfuerzo que tendrán los nuevos empleados. Se configura desde la interface entre los definidos. • firing-level es la intensidad mínima de esfuerzo establecido por la empresa para no ser despedido. Su valor se asigna desde la interface. Las variables globales definidas en la programación del modelo son: • number_of_new_workers es el número de nuevos trabajdores que entran en cada corrida del modelo. • index_of_first_new_worker es el número que identifica al primer nuevo trabajdor que se crea en cada corrida del modelo. • list_team_who es una lista que incluye los trabajadores del equipo en cada corrida. El tamaño de la lista es el tamaño del equipo (team-size) y su primer elemento es el trabajador que desempeña el papel del gestor del proyecto. • list_team_empty_jobs es una lista que incluye los trabajadores del equipo que no han sido despedidos y los puestos de trabajo que han quedado vacantes. • list_team_new_workers es una lista que incluye los trabajadores del equipo que no han sido despedidos y nuevos trabajadores que han ocupado los puestos de trabajo que quedaron vacantes. • worker-aux y job-aux son variables auxiliares utilizadas para almacenar un trabajador o un puesto de trabajo según corresponda El modelo incluye dos tipos de agentes: vínculos y tortugas. Así como dos clases de tortugas: puestos de trabajo (jobs) y trabajadores (workers). Las variables de estado de los jobs son: • job-project-manager es una variable booleana que indica si el puesto de trabajo lleva asociado la gestión del proyecto (true) o no (false). Es necesario definir esta variable asociada al puesto de trabajo y no al trabajador porque si el trabajador es despedido, otro trabajador debe realizar esa función. Las variables de estado de los workers son: • behaviour es el tipo de comportamiento frente al esfuerzo del trabajador. Es un string y toma su valor de las variables globales: population o new-employees • effort es la intensidad del esfuerzo realizado. Toma un valor entre 0 y 100 y cambia a lo largo de la simulación dependiendo de la intensidad del esfuerzo del resto de miembros del equipo con los que interactúa el agente y de su comportamiento frente al esfuerzo. Su valor condiciona que el trabajador sea o no despedido por la empresa. • Project-manager es una variable booleana que indica el rol que juega el trabajador en el proyecto. Este rol está asociado al puesto de trabajo (job) que ocupa el trabajador. Si es el gestor del proyecto será true y si es un miembro será false. El tamaño del grid no es relevante dado que la posición espacial de los agentes no influye en ya que las interacciones no se realizan por vecindad sino en base a los vínculos de los agentes. ## Proceso general y secuencia Al principio de la simulación, se inicializa el modelo en el orden indicado: 1. Se crean y se inicializan los puestos de trabajo (setup jobs). 2. Se crean y se inicializan los trabajadores (setup workers) 3. Se crean los vínculos entre los trabajadores y sus puestos de trabajo (link workers TO jobs). 4. Se crea el equipo de trabajo y se crean los vínculos entre trabajadores (create team). 5. Se inicializan las variables relacionadas con la creación de nuevos trabajadores. El tiempo trascurre de forma discreta por periodos. En cada periodo, las siguientes acciones son ejecutadas cíclicamente hasta el final de la simulación en el orden indicado. 1. La empresa despide a los trabajadores cuyo esfuerzo es menor que el nivel mínimo exigido (involuntary-turnover-decision). 2. La empresa calcula las necesidades de nuevos trabajadores (staffing-requirements) 3. Se crean y se inicializan los nuevos trabajadores (setup-workers) 4. La empresa asigna a los nuevos trabajadores a los puestos de trabajo vacíos (new-workers-on-empty-jobs). 5. Los trabajadores actualizan la intensidad del esfuerzo como consecuencia de las interacciones entre los miembros del equipo (update-effort). ## Conceptos de diseño • Principios básicos. Gestión de equipos y Teoría de redes. • Emergencia. Como consecuencia de la interacción entre los trabajadores emerge una cultura organizacional en relación al esfuerzo. • Adaptación. Los trabajadores adaptan la intensidad del esfuerzo en función de su tipo de comportamiento y del esfuerzo realizado por sus compañeros de equipo de trabajo. • Objetivos. No tienen ningún objetivo. • Aprendizaje. No aprenden. • Predicción. No hay predicción en el modelo. • Detección. Los trabajadores detectan la intensidad del esfuerzo realizado por sus compañeros de equipo. • Interacción. Los trabajadores interactúan a través de los vínculos establecidos en función del estilo de liderazgo del equipo. • Aleatoriedad. En la inicialización como se verá más adelante. • Colectivos. No hay organización de los agentes de más alto nivel que las tortugas. • Observación. Se observa la emergencia de una cultura corporativa en relación al esfuerzo. ## Inicialización Variables Rango de valores Periodos (years) [1-15] a través de la interface Tamaño del equipo (team-size) [3-10] a través de la interface Estilo de liderazgo (team-leadership) Star o democratic a través de la interface La intensidad del esfuerzo (effort) Aleatoria entre [0, 100] Tipo de comportamiento Null, high, shriking, averager, imitator, (population, new employees) replicator,comparator El resto de variables se inicializan, por defecto, con el valor 0. ## Datos de entrada Se asume que el estilo de liderazgo y el tipo de comportamiento permanece constante durante la simulación. ## Submodelos En esta sección sólo incluimos la descripción del procedimiento. La programación de estos procedimientos (o en su defecto, el pseudo-código) no ha incluido ya que ésta se detalla más adelante. setup jobs .Se crean y se inicializan los puestos de trabajo asignando o no a cada puesto la responsabilidad de gestionar el proyecto y situándolos en el mundo en forma de estrella, de forma que el puesto con responsabilidad se sitúa en el origen (centro del mundo). setup workers. Se crean y se inicializan los trabajadores asignándoles un tipo de comportamiento frente al esfuerzo (a elegir entre los siguientes null, high, shriking, averager imitator, replicator y comparator) y la intensidad del mismo. link workers TO Jobs. Se crean los vínculos entre los trabajadores y sus puestos de trabajo. De esta forma, los trabajadores heredan las características de responsabilidad y posición en el mundo. create team. Se crea el equipo de trabajo creando una lista llamada list-team-who y se crean los vínculos entre trabajadores en función del estilo de liderazgo del equipo, de forma que esta subrutina llama a otras dos subrutinas: team-star y team-whole. • La subrutina team-star crea un vínculo entre el gestor del proyecto y cada uno de los miembros del equipo. Esta subrutina se ejecuta siempre dado que siempre hay un vínculo entre el gestor de proyecto y los miembros del equipo. • La subrutina team-whole crea vínculos entre los miembros del equipo. Esta subrutina se ejecuta si el estilo de liderazgo es democrátic. involuntary-turnover-decision. La empresa despide a los trabajadores cuyo esfuerzo es menor que el nivel mínimo exigido. staffing-requirements. La empresa calcula las necesidades de nuevos trabajadores tras despedir a los trabajadores que no llegan al esfuerzo mínimo. new-workers-on-empty-jobs. La empresa asigna a los nuevos trabajadores a los puestos de trabajo vacío estableciendo un vínculo entre el trabajador y el puesto de trabajo, actualiza la lista list-team-who con los nuevos trabajadores y establece los vínculos entre los nuevos y los antiguos trabajadores en función del estilo de liderazgo llamando a dos subrutinas: links-new-&-old-workers-star y links-new-&-old-workers-whole. • La subrutina links-new-&-old-workers-star establece si el nuevo trabajador es el gestor o un miembro del equipo y establece un link del gestor al miembro del equipo. • La subrutina links-new-&-old-workers-whole establece vículos entre todos los miembros del equipo. update-effort Los trabajadores actualizan la intensidad del esfuerzo como consecuencia de las interacciones entre los miembros del equipo y, dado que estas interacciones están condicionadas por el estilo de liderazgo, esta subrutina llama a otras dos subrutinas: update-effort -star y update-effort -whole. • La subrutina update-effort -star establece combinaciones entre el gestor del proyecto y cada miembro del equipo y ambos cambian su esfuerzo llamando a la subrutina change-effort. La subrutina update-effort -star se ejecuta siempre dado que siempre hay un vínculo entre el gestor de proyecto y los miembros del equipo. • La subrutina update-effort -whole establece combinaciones entre dos miembros del equipo y ambos cambian su esfuerzo llamando a la subrutina change-effort. La subrutina update-effort -whole se ejecuta si el estilo de liderazgo es democrátic. • La subrutina change-effort incluye las reglas para el cambio de la intensidad del esfuerzo en relación al tipo de comportamiento de los trabajadores, a saber: o Tipo Null realiza un bajo esfuerzo (entre 0 y 10) independientemente del esfuerzo que realice su compañero. o Tipo High realiza un bajo esfuerzo (entre 0 y 10) independientemente del esfuerzo que realice su compañero. o Tipo shrinking realizan la mitad del esfuerzo de su último compañero. o Tipo replicator realizan el mismo esfuerzo que su último compañero o Tipo effort comparator aumentan un 10% su esfuerzo si su esfuerzo fue menor que el de su último compañero y lo disminuyen en la misma proporción si fue mayor. o Tipo averager realiza un esfuerzo medio entre su esfuerzo y el esfuerzo de su último compañero. @#$#@#$#@ 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 120 300 150 225 180 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 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 woman false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 195 90 180 195 195 300 165 300 150 225 135 300 105 300 120 195 105 90 Rectangle -7500403 true true 128 79 173 94 Polygon -7500403 true true 105 90 60 150 75 180 135 105 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 120 180 75 300 225 300 180 180 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.3.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ setup go ["years" = 8] precision mean [effort] of workers 4 precision standard-deviation [effort] of workers 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 @#$#@#$#@