Leadership Emergence in Teams
No preview image
Model was written in NetLogo 6.3.0
•
Viewed 108 times
•
Downloaded 7 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
turtles-own [lead_expect; how fitting the individual appears to be a leader in general or for the specific task (might change with task) lead_schem; how much person thinks of themself as leader (partly due to lead_schem) fol_schem; how much person thinks of themself as follower public_lead_hist private_lead_hist pen-color ; color variable: tutles own a color but don't display it; leader_duration; leader_stability ] globals [ burn-in succesfull_interactions observer_action ] links-own [LP_1 LP_2] to setup clear-all create-turtles number_of_people set-default-shape turtles "person" layout-circle turtles 14 set burn-in 0 set observer_action 0 set succesfull_interactions 0 let color-list [45 12 62 67 18 82 90 97 105 114 124 127 138 139 19 29 blue 49 57 44 14 87 133] ; this is the list with 30 possible colors ask turtles [ set lead_expect m - initial_range / 2 + random (initial_range) set lead_schem m - initial_range / 2 + random (initial_range) set fol_schem m set public_lead_hist 0 set private_lead_hist 0 ifelse not empty? color-list [ let ind one-of range length color-list ; randomly chooses an index set pen-color item ind color-list ; Have the turtle choose from color-list using that index set color-list remove-item ind color-list ; Remove indexed value from color-list, otherwise colors will repeat!! ] [ set pen-color gray ; Assign gray if all colors used (technically, should not happen, unless number of turtles > 30) ] set size (lead_expect / (.7 * m)) set color gray ; if this is commented out then turtles will appear in their assigned color ] reset-ticks end to go dyadic_interaction update tick end to dyadic_interaction ask one-of turtles [ if print_reasoning = true [print who] let target one-of other turtles ask target [ if print_reasoning = true [print who] ] ;establishing the link if not in-link-neighbor? target [ ; creates a link if there was none sofar create-link-with target [ set LP_1 0 set LP_2 0 ] ] let dyad_lead_hist_a 0 let dyad_lead_hist_b 0 ifelse who < [who] of target [ ; the link stores succesfull leadership and successfull followership which are now taken out set dyad_lead_hist_a [LP_1] of link (who) ([who] of target) set dyad_lead_hist_b [LP_2] of link (who) ([who] of target) ] [ set dyad_lead_hist_a [LP_2] of link (who) ([who] of target) set dyad_lead_hist_b [LP_1] of link (who) ([who] of target) ] ;claiming and granting let lead_perc_a (2 * rel_col_hist * public_lead_hist) + (2 * (1 - rel_col_hist) * dyad_lead_hist_a) + lead_expect ; what the individual thinks the other think about them let lead_perc_b (2 * rel_col_hist * [public_lead_hist] of target) + (2 * (1 - rel_col_hist) * dyad_lead_hist_b) + [lead_expect] of target ; what the individual thinks about the other let aclaim is_claiming (lead_schem + private_lead_hist) (fol_schem - private_lead_hist) lead_perc_a if print_reasoning = true [print word "A claimed" aclaim] let agrant is_granting lead_perc_b (fol_schem - private_lead_hist) let bclaim is_claiming ([lead_schem] of target + [private_lead_hist] of target) ([fol_schem] of target - [private_lead_hist] of target) lead_perc_b if print_reasoning = true [print word "B claimed" bclaim] let bgrant is_granting lead_perc_a ([fol_schem] of target - [private_lead_hist] of target) if lss = "hierarchical" [ if (aclaim = True) [set agrant False] if bclaim = True [set bgrant False] ] if lss = "hierarchical + status comparison" [ if (aclaim = True) and lead_perc_a > lead_perc_b [set agrant False] if bclaim = True and lead_perc_b > lead_perc_a [set bgrant False] ] if print_reasoning = true [print word "A granted" agrant] if print_reasoning = true [print word "B granted" bgrant] ;dyadic score changes ask link (who) ([who] of target) [ (ifelse (aclaim = True) and (bgrant = True) [ ifelse [who] of end2 = [who] of target [ ; a succesfull interaction stabilises their view on themselfes and the other set LP_1 LP_1 + .5 - .5 * abs (LP_1 / max_hist) ;set LP_2 LP_2 - .5 + .5 * abs (LP_2 / max_hist) ] [ set LP_2 LP_2 + .5 - .5 * abs (LP_2 / max_hist) ;set LP_1 LP_1 - .5 + .5 * abs (LP_1 / max_hist) ] set color green ](agrant = True) and (bclaim = True) [ ifelse [who] of end2 = [who] of target [ set LP_2 LP_2 + .5 - .5 * abs (LP_2 / max_hist) ;set LP_1 LP_1 - .5 + .5 * abs (LP_1 / max_hist) ] [ set LP_1 LP_1 + .5 - .5 * abs (LP_1 / max_hist) ;set LP_2 LP_2 - .5 + .5 * abs (LP_2 / max_hist) ] set color green ][ set color red ]) ] ; private and public score changes if (aclaim = True) and (bgrant = True) [ set private_lead_hist private_lead_hist + .5 - .5 * abs(private_lead_hist / max_hist) set public_lead_hist public_lead_hist + .5 - .5 * abs(public_lead_hist / max_hist) ask target [ set private_lead_hist private_lead_hist - .5 + .5 * abs(private_lead_hist / max_hist) set public_lead_hist public_lead_hist - .5 + .5 * abs(public_lead_hist / max_hist) ] set succesfull_interactions succesfull_interactions + 1 ] if (bclaim = True) and (agrant = True) [ set private_lead_hist private_lead_hist - .5 + .5 * abs(private_lead_hist / max_hist) set public_lead_hist public_lead_hist - .5 + .5 * abs (public_lead_hist / max_hist) ask target [ set private_lead_hist private_lead_hist + .5 - .5 * abs(private_lead_hist / max_hist) set public_lead_hist public_lead_hist + .5 - .5 * abs (public_lead_hist / max_hist) set succesfull_interactions succesfull_interactions + 1 ] ] if (aclaim = False) and (bgrant = False) [ set private_lead_hist private_lead_hist - .25 + .25 * abs(private_lead_hist / max_hist) ;set public_lead_hist public_lead_hist - .25 + .25 * abs (public_lead_hist / max_hist) ] if (bclaim = False) and (agrant = False) [ask target [ set private_lead_hist private_lead_hist - .25 + .25 * abs(private_lead_hist / max_hist) ;set public_lead_hist public_lead_hist - .25 + .25 * abs (public_lead_hist / max_hist) ]] ] end to update let n 1 foreach sort-on [(-(lead_expect + public_lead_hist))] turtles [ the-turtle -> ask the-turtle[ set label n set n n + 1 ] ] ask turtles [ ifelse label = 1 and burn-in > 0 [set shape "person business"] [set shape "person"] set public_lead_hist (1 - hist_decay) * public_lead_hist set private_lead_hist (1 - hist_decay) * private_lead_hist set size 1 + (lead_expect + public_lead_hist) / (m + max_hist) ] ask links [ set thickness (abs LP_1) / (1.0 * max_hist) set LP_1 (1 - hist_decay) * LP_1 set LP_2 (1 - hist_decay) * LP_2 ] if burn-in > 0 [ ask max-n-of 1 turtles [(lead_expect + public_lead_hist)] [ set leader_duration leader_duration + 1 set leader_stability leader_duration / (ticks - burn-in) ; percent ; ] ] if burn-in = 0 and (max [public_lead_hist] of turtles > .50 * max_hist) [ set burn-in ticks ] set observer_action observer_action - .5 end to-report is_claiming [li fi lp] let alpha (li + lp) * .05 let beta (fi) * .1 let prob_claim random-beta alpha beta if print_reasoning = true [print word "Probability of claiming " prob_claim] report random-float 1 > (1 - prob_claim) end to-report is_granting [lp_other fi] let alpha 0.05 * lp_other let beta 0.1 * (2 * m - fi) let prob_grant random-beta alpha beta if print_reasoning = true [print word "Probability of granting " prob_grant] report random-float 1 > (1 - prob_grant) end to scandal let leader-turtle max-one-of turtles [((lead_expect + public_lead_hist) / m)] ask links with [end1 = leader-turtle or end2 = leader-turtle] [ die ] ask max-n-of 1 turtles [((lead_expect + public_lead_hist) / m)] [ ; right now targets the "leader" based on size; can change to leader_schem set public_lead_hist 0 - max_hist ] set observer_action 1 end to kill ask max-n-of 1 turtles [((lead_expect + public_lead_hist) / m)] [ die ] set observer_action 1 end to task-change ask turtles [ let change random (m / 4) - m / 8 print(change) set lead_expect lead_expect + change set lead_schem lead_schem + change ] set observer_action 1 end to-report random-beta [ #alpha #beta ] if #alpha <= 0 [set #alpha 0.1] if #beta <= 0 [set #beta 0.1] let XX random-gamma #alpha 1 let YY random-gamma #beta 1 report XX / (XX + YY + .0001) end
There is only one version of this model, created about 1 year ago by Benjamin Jargow.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.