Granovetter's threshold model of collective behaviour
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Granovetter's threshold model of collective behaviour
AUTHOR
Giangiacomo Bravo
WHAT IS IT?
This model reproduces Mark Granovetter's (1978) threshold model of collective behavior with different network structures.
HOW IT WORKS
Agents face a binary decision: to participate or not in a riot, following Granovetter's original example. They are represented as nodes in a network. Each agent holds a threshold representing the minimum proportion (in % terms) of its network neighbours that need to participate in the riot to be willing to enter the riot itself. In each round, agents check whether this condition is satisfied and, in case, begin to riot themselves.
HOW TO USE IT
The setup bottom sets up the agents and the network on the basis of the parameters below. Click it just once at the beginning of the simulation.
1) General parameters
- The number-of-agents slider allows to select the number of agents in the model.
- The network chooser allows to select the network type. Current possibilities are "random", "fully connected" and "small world". Note that the fully connected model may cause the model to run slowly if too many agents are selected.
- The threshold-distribution chooser allows to extract the agents' thresholds following different distributions. Current possibilities are the "uniform" and the "normal" distributions.
2) Network-related parameters
- The number-of-links parameter determines the degree of the network. It is only relevant for the random and small-world networks.
- The rewire-prop parameter determines the proportion of links that should be rewired in the small world network following the Watts and Strogatz's procedure.
3) Threshold distribution related parameters
- The min-threshold parameter determines the minimum possible value for the agents' thresholds in case the uniform distribution is selected.
- The maximum-threshold parameter determines the maximum possible value for the agents' thresholds in case the uniform distribution is selected.
- The mean-threshold parameter determines the mean of the threshold distribution in case the normal distribution is selected.
- The sd-threshold parameter determines the standard deviation of the threshold distribution in case the normal distribution is selected.
The go button makes the agents choose their behaviour in the current round. It can be clicked repeatedly in order to observe the progressive spreading of the riot.
THINGS TO NOTICE
How the riots spread under different threshold distributions and network shapes. Which are the conditions helping or hindering the spreading of the riots?
Comments and Questions
turtles-own [threshold riot?] to setup ca set-default-shape turtles "circle" if max-threshold < min-threshold [ print "min-threshold should be smaller than max-threshold" stop ] create-agents reset-ticks end to go ask turtles [ let prop-rioting 100 * count link-neighbors with [riot? = true] / count link-neighbors if prop-rioting >= threshold [ set riot? true set color red ] ] tick end to create-agents let min-threshold-n min-threshold * number-of-agents / 100 let max-threshold-n max-threshold * number-of-agents / 100 let mean-threshold-n mean-threshold * number-of-agents / 100 let sd-threshold-n sd-threshold * number-of-agents / 100 crt number-of-agents [ set riot? false set color blue if threshold-distribution = "uniform" [set threshold (min-threshold + random (max-threshold - min-threshold))] if threshold-distribution = "normal" [set threshold round (random-normal mean-threshold sd-threshold)] if threshold < 0 [set threshold 0] if threshold > 100 [set threshold 100] ] ;layout-circle (sort turtles) (max-pxcor - 1) arrange-turtles ; random network of grade 2 * number of links if network = "random" [ ask turtles [create-links-with n-of number-of-links other turtles with [link-with myself = nobody]] ] ; small-world network if network = "small-world" [ let max-who 1 + max [who] of turtles let sorted sort ([who] of turtles) foreach sorted[ [?1] -> ask turtle ?1 [ let i 1 repeat number-of-links [ create-link-with turtle ((?1 + i) mod max-who) set i i + 1 ] ] ] repeat round (rewire-prop * number-of-agents) [ ask one-of turtles [ ask one-of my-links [die] create-link-with one-of other turtles with [link-with myself = nobody] ] ] ] ; fully connected network if network = "fully connected" [ ask turtles [create-links-with other turtles with [link-with myself = nobody]] ] end to arrange-turtles ;similar to layout-circle (sort turtles) (max-pxcor - 1) let the-turtles sort [who] of turtles let angle 360 / number-of-agents let dist max-pxcor - 1 let i 0 foreach the-turtles [ [?1] -> ask turtle ?1 [ setxy (dist * cos (angle * i)) (dist * sin (angle * i)) ] set i i + 1 ] end
There are 4 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Granovetter's threshold model of collective behaviour.png | preview | Preview for 'Granovetter's threshold model of collective behaviour' | almost 9 years ago, by Giangiacomo Bravo | Download |
This model does not have any ancestors.
This model does not have any descendants.