The Slow Spread of Environmentally Friendly Action

The Slow Spread of Environmentally Friendly Action preview image

1 collaborator

Default-person Till K (Author)

Tags

complex contagions 

Tagged by Till K 12 months ago

scale-free 

Tagged by Till K 12 months ago

social networks 

Tagged by Till K 12 months ago

social tipping 

Tagged by Till K 12 months ago

stockholm universitetet 

Tagged by Till K 12 months ago

veganism 

Tagged by Till K 12 months ago

vegetarianism 

Tagged by Till K 12 months ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.3.0 • Viewed 101 times • Downloaded 12 times • Run 0 times
Download the 'The Slow Spread of Environmentally Friendly Action' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

The model tries to show the diffusion of a enviomental friendly complex contagion (green) againt a countervailing complex contagion (grey) in a scale-free network. It is part of a master thesis written by Till Kolligs. at Stockholm Universitetet. It makes use of the differentiation between weak and strong ties. Both colours can be seen as containers for a complex contagion. Green can be seen as a complex contagion that involves enviromental action, let it be taking the train instead of the train, sperating trash, buying ecological products etc. Can the green complex contagion diffuse in the whole network to the grey nodes? The grey nodes do not act enviromental friendly in the regards of the green nodes, they might have other perceptions of what needs to be done or are convinced of the "grey way". The "grey way" is also a complex contagion that can spead to the green.

HOW IT WORKS

Two scale-free networks are being created. One scale-free network consisting of grey agents and one consisting of green agents. The parameter "group openness" then defines how much overlap between the groups exist. If set to 0.00 no links between the grey and the green clusters should exist.

Since a complex contagion needs multiple reinforcements, a colour change is triggered if the number of weak-tie network neighbours with opposing colour exceed the procentual threshold. A random factor makes the transition less deterministing, as the threshold can vary up to 5 agents. If the threshold is set to 0.5 then the weak ties of different colour must make up more than half of all existing ties to change the nodes color + 0 to 4 agents (random for every model tick).

Strong ties, however only need "threshold-strong" + random factor (up to 3) to convince a node to change its colour. Strong and weak ties are defined by communities. Communities can be colored to be more visible by pressing the button "color communities". The model has to be reset afterwards.

First, the number of agents can be set, seperately for greys and greens. Then the number of degrees can be set. This defines how many links nodes have. If set to one, most nodes only have one edge/link. Since human networks have a tendency for transitivity, it is recommended to set this setting atleast to two to be more realistic.

Weak ties are defined as ties that are links between louvain-communities, strong ties are defined as links within louvain-communities.

New links that are generated have a 33% chance to be a strong tie, and 66% to be a weak tie, as they likely reach across communities.

HOW TO USE IT

By pressing setup, the two networks according to the settings are generated. The number of communities is shown, as well as the minimum amount of links a node has and the highest amount of links a node has (min degree, max degree). The degree distribution is also shown, but it is capped to 100. If max degree is > 100 the x-axis needs to be adapted.

The clustering coefficiant is also displayed, as well as the number of weak and strong ties and mean path lenghts.

Finally, the total green agents shows how many green nodes there are. The plot shows the change over time. The model stops running if the number of green agents equals 0 or all the existing turtles.

THINGS TO NOTICE

The max degree is reduced while the model is running as links are deleted and regenerated randomly. Therefore change can be suddenly if the model is allowed to run long enough. Smaller networks tend to have more grey hubs, larger networks tend to exist only with green hubs

THINGS TO TRY

The user can try out the model by adjusting all the sliders. The activation thresholds (weak and strong) are the only sliders that can be adjusted while the model is running. It is encouraged to try them out! All others have to be adjusted before setting up the model. Prop-Hard stets a proportion of agents that are stubborn and never change their color. The proportion is true for both green and grey agents.

EXTENDING THE MODEL

The switches do the following: *Moving Turns on/off that links are randomly deleted and generated

*Strong-ties -Turns on/off that strong ties influence agents

*log-threshold Turns on/off logarithmic influence of weak ties. Change color with the chance of the log function Log Function = 1/(1+e^-(weak ties - (activation-threshold x total amount of neighboring ties)) x 1) (The smaller the activation threshold, the larger the chance for color change). This allows every agent to have a small chance of changing colour even if the threshold has not been reached

*Countervailing contagion This turns off the possibility for the grey contagion to infect green agents making them become grey

In case of a powerful computer, settings can be adjusted before the set range by using the command center. For instance: set n-greys 1000, sets the amount of grey agents to 1000

NETLOGO FEATURES

Model can be adjusted so thresholds adjust during the simulations, or the proportion of hardliners varies.

To run large scale simulations, the NetLogo Behavioral Space can be used.

CREDITS AND REFERENCES

http://modelingcommons.org/browse/one_model/5216 - a complex contagion model https://ccl.northwestern.edu/netlogo/models/PreferentialAttachment - scale free networks

Laver, Michael. 2020. Agent-Based Models of Social Life: Fundamentals. 1st ed. Cambridge University Press.

Laver, Michael. 2020. Agent-Based Models of Polarization and Ethnocentrism. 1st ed. Cambridge University Press.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

; Using the network extention of Netlogo we will create two preferential-attachment networks and three different kinds of agents
;Green agents, grey agents, and hardliners that never change their opinion

;***************
; SETUP
;***************
extensions [nw]             ; start up the network extension


breed [AgentAs AgentA]                        ; the A breed are grey
breed [AgentBs AgentB]                        ; the B breed are green
breed [hardliners hardliner]

links-own [weight]
turtles-own [community clique]

to setup
  clear-all
  nw:generate-preferential-attachment AgentAs links n-greys k-degree [set color grey]                      ; set up a Agent group A (grey) in a preferential attachment network
  nw:generate-preferential-attachment AgentBs links n-greens k-degree [set color green]                    ; set up a Agent group B (green) in a preferential attachment network

    ask AgentBs [ if random-float 1 < group-openness [create-links-with AgentAs]]                         ; ask both networks to interconnect based on the chance of 1 < group-openness
    ask AgentAs [ if random-float 1 < group-openness [create-links-with AgentBs]]                         ; ask both networks to interconnect based on the chance of 1 < group-openness


 ask turtles [
    set size 1
    set shape "person"
    setxy random-xcor random-ycor                                                              ; move agents randomly around
  ]

  ask patches [set pcolor white]                                                             ; change to black for a black background

   ask n-of int(prop-hard * n-greys) AgentAs [set breed hardliners ]                              ; make "AgentAs" grey hardliners
   ask n-of int(prop-hard * n-greens) AgentBs [set breed hardliners ]                              ; make "AgentBs" green hardliners
   ask hardliners [set shape "person"]

  foreach nw:louvain-communities [ [comm] ->                                                      ;tell every turtle in what community they are
  ask comm [ set community comm ]
  foreach nw:maximal-cliques [ [cliq] ->                                                      ;tell every turtle in what community they are
  ask cliq [ set clique cliq ]
]
]

nw:set-context turtles links
weight-clusters nw:louvain-communities                                                           ;assign weights to links

reset-ticks
end 

;to find-biggest-cliques
  ;nw:set-context turtles links
  ;highlight-clusters nw:maximal-cliques
;end

to color-communities
  nw:set-context turtles links
  color-clusters nw:louvain-communities
end 

;***************
; DYNAMICS
;***************

to go
    if (all? turtles [color = green]) [stop]
    if (all? turtles [color = grey]) [stop]


  if moving [
  move
  ]
  ask turtles [interact]
  tick
end 

to move ;asks a random link to die with a 1% change. And creates a random(!) link from a random agent to any other agent with a 33% chance of it becoming a strong tie
    ask one-of links
  [ if random-float 100 < 1 [die]]
  ask one-of turtles [ if random-float 100 < 1 [create-link-with one-of other turtles [set weight random 3]]]
end 

to weight-clusters [ clusters ] ;gives links between clusters weight = 1 (weak tie) and links within clusters weight = 2 (strong tie). Clusters are defined by louvain-communities
  ask links [ set weight 1 ]
  let n length clusters
  let colors ifelse-value (n <= 12)
  [ n-of n remove gray remove white base-colors ]
  [ n-values n [ approximate-hsb (random 255) (255) (100 + random 100) ] ]
    (foreach clusters colors [ [cluster cluster-color] ->
      ask cluster [
        ask my-links [ if member? other-end cluster [ set weight 2 ] ]

      ]
    ])
if hub-weak [
let max-neighbors (Max [count link-neighbors] of turtles)
let hub turtles with [count link-neighbors > max-neighbors - 10]
if any? hub [
  ask hub [
    ask my-links [
      set weight 1
    ]
  ]
]
]
end 

to color-clusters [ clusters ]
  ;reset all colors
  ask turtles [ set color gray - 3 ]
  ask links [ set color gray - 3 ]
  let n length clusters
  let colors ifelse-value (n <= 12)
    [ n-of n remove gray remove white base-colors ] ;; choose base colors other than white and gray
    [ n-values n [ approximate-hsb (random 255) (255) (100 + random 100) ] ] ; too many colors - pick random ones

    ; loop through the clusters and colors zipped together
    (foreach clusters colors [ [cluster cluster-color] ->
      ask cluster [ ; for each node in the cluster
        ; give the node the color of its cluster
        set color cluster-color
      ; making links slightly darker
        ask my-links [ if member? other-end cluster [ set color cluster-color - 1 ] ]

      ]
    ])
end 

to interact ;aks two times, once to turn grey, once to turn green
     ask one-of turtles [
       let count-total 0
       let count-weak 0
       let count-strong 0

       set count-total count link-neighbors
       let strong (my-links) with [weight = 2]
    if any? strong [
       set count-strong count link-neighbors with [color != [color] of myself]]
       let weak (my-links) with [weight < 2]
    if any? weak [
      set count-weak count link-neighbors with [color != [color] of myself]]
    ifelse log-threshold [
       let activation-probability 1 / (1 + exp(-(count-weak - (activation-threshold * count-total)) * 5))
      if random-float 1 < activation-probability [
        if breed != hardliners [set color green]]
    ]
    [
        if count-weak >= (count-total * activation-threshold) + (random (6)) [                 ;if the agent is connected to weak ties with a different color they have to exceed the number of total links*tippingp and a random factor
       if breed != hardliners [set color green]]
    ]
     if strong-ties [   if count-strong >= threshold-strong + random 4 [                                          ;if the agent is connected to strong ties with a different color, 1 + random 4 (0-3) will result in a color change. 2 strong ties can be enough
      if breed != hardliners [set color green]]                                ;if not a hardliner change color
    ]
  ]
  if countervailing-contagion [
     ask one-of turtles [
      let count-total 0
      let count-weak 0
      let count-strong 0
      set count-total count link-neighbors
      let te (my-links) with [weight = 2]
    if any? te [
      set count-strong count link-neighbors with [color != [color] of myself]]
      let weak (my-links) with [weight < 2]
    if any? weak [
      set count-weak count link-neighbors with [color != [color] of myself]]
      ifelse log-threshold [
       let activation-probability 1 / (1 + exp(-(count-weak - (activation-threshold * count-total)) * 5))
       if random-float 1 < activation-probability [
       if breed != hardliners [set color grey]]
    ]
    [
        if count-weak >= (count-total * activation-threshold) + (random (6)) [                 ;if the agent is connected to weak ties with a different color they have to exceed the number of total links*tippingp and a random factor
        if breed != hardliners [set color grey]]
    ]
    if strong-ties [ if count-strong >= threshold-strong + random 4 [                                          ;if the agent is connected to strong ties with a different color, 1 + random 4 (0-3) will result in a color change. 2 strong ties can be enough
        if breed != hardliners [set color grey]]                                 ;if not a hardliner change color
    ]
  ]
  ]
end 

to report2
  ask one-of turtles [
   let te (link-neighbors with [color != [color] of myself])
    show sum te

  ]
end 

There are 2 versions of this model.

Uploaded by When Description Download
Till K 12 months ago Updated Info Download this version
Till K 12 months ago Initial upload Download this version

Attached files

File Type Description Last updated
The Slow Spread of Environmentally Friendly Action.png preview Preview for 'The Slow Spread of Environmentally Friendly Action' 12 months ago, by Till K Download

This model does not have any ancestors.

This model does not have any descendants.