Ideology Difussion

Ideology Difussion preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 126 times • Downloaded 41 times • Run 0 times
Download the 'Ideology Difussion' 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 is trying to show how ideology diffusion works. Although the model simplifies many aspects (v.g. personality and demographics) influencing ideology choice, it shows a Matthew Effect behavior where ideologies with more followers eventually dominate over the rest. The model can be seen as a variant of Schelling's Seggregation model + variable neighborhood size and type and probability of change per agent (openness to change ideology).

HOW IT WORKS

Each patch represents a person located in a spatial environment with a COLOR indicating its ideology. Agents decide to change their ideology "color" based on their neighbors' ideologies and other parameters as: THRESHOLD indicating the degree of peer pressure (how many agents of given ideology are) required to adopt an ideology of their surroundings, PROBABILITY of changing ideology independently of their surroundings (is the agent willing to change his mindset?), NEIGHBORHOOD-TYPE and RADIUS representing how many neighbors and in which spatial configuration the agent counts its neighbors for deciding.

On every step each agent decides to change ideology according to a PROBABILITY, then if this is the case it counts how many neighbors of each color are within its neighborhood. Finally if the agent count of the most abundant neighbor color is higher than his THRESHOLD (% of total neighbors) multiplied by the total neighbor count, the agent changes to such color (ideology).

HOW TO USE IT

THRESHOLD and PROBABILITY are set randomnly within a range set by the sliders: min-threshold, max-threshold, min-probability, max-probability. There are controls for NEIGHBORHOOD-TYPE (i.e. Von Neumann and Moore) and RADIUS (size of neighborhood). Set the parameters and run. The graph indicates how the population of of each ideology develops with time.

THINGS TO NOTICE

Notice how with time the growth of the dominant ideology is exponential and follows preferential attachment pattern. It may happen that non dominant ideologies oscillate but they can hardly overcome the dominant ideology. This is also known as "Matthew Effect": "For unto every one that hath shall be given, and he shall have abundance: but from him that hath not shall be taken even that which he hath." (Matthew 25:29)

THINGS TO TRY

Try to experiment with different sizes/types of neighborhood (RADIUS) and ranges of PROBABILITY and THRESHOLD.

EXTENDING THE MODEL

The model can be extended by adding the following:

*Sliders for selecting a percentage of starting agents from each ideology. *Implement adaptive agents: Minorities reduce their probability and preserve their ideology regardless peer pressure (niche adaptation). *Use a network instead or together with spatial influence. *Mouse interaction for adding custom distributions of agents' ideologies.

NETLOGO FEATURES

An extension was required to implement different sizes of neighborhoods beyond the regular Von Neumann and Moore types. This extension was taken from the Moore & Von Neumann Example in the Models Library [1].

RELATED MODELS

*Schelling's Model of Segregation [3] *Fur (Turing's model for fur patterns) [2]

CREDITS AND REFERENCES

[1] https://github.com/NetLogo/models/blob/master/Code%20Examples/Moore%20%26%20Von%20Neumann%20Example.nlogo

[2] http://ccl.northwestern.edu/netlogo/models/Fur

[3] http://ccl.northwestern.edu/netlogo/models/Segregation

Comments and Questions

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

Click to Run Model

patches-own [probability threshold red-neighbors blue-neighbors yellow-neighbors orange-neighbors]
globals [nearby]

to setup
  clear-all
  reset-ticks

  ;; select neighborhood type
  ifelse neighborhood-type = "Von Neumann"
  [ set nearby von-neumann-offsets radius]
  [ set nearby moore-offsets radius]

  set-patches
end 

to go
  update-patches
  tick
end 

to set-patches
  ask patches [
    ;; set agent properties
    set pcolor one-of [red blue yellow orange]
    set probability (random-float (max-probability - min-probability)) + min-probability
    set threshold (random (max-threshold - min-threshold)) + min-threshold
  ]
end 

to update-patches

  ask patches[
    if random-float 1 < probability [ ;; each agent decides to change or not color based on probability
      ;; count neighbors surrounding each agent according to the selected boundary (Von Neumann or Moore)
      set red-neighbors count patches at-points nearby with [pcolor = red]
      set blue-neighbors count patches at-points nearby with [pcolor = blue]
      set yellow-neighbors count patches at-points nearby with [pcolor = yellow]
      set orange-neighbors count patches at-points nearby with [pcolor = orange]
      let neighbor-list (list red-neighbors blue-neighbors yellow-neighbors orange-neighbors) ;; create a list of neighbors by color
      let neighbor-max max neighbor-list ;; save the count of the most abundant color of neighbor

      ;; each agent decides to change color if agents of the most abundant color are higher than a threshold
      if neighbor-max > round threshold * (count neighbors)[
        ;; change color to the most abundant neighbor color
        if neighbor-max = red-neighbors [set pcolor red]
        if neighbor-max = blue-neighbors [set pcolor blue]
        if neighbor-max = yellow-neighbors [set pcolor yellow]
        if neighbor-max = orange-neighbors [set pcolor orange]
      ]
    ]
  ]
end 


;; Moore extended boundary where n (input) is the radius or visibility

to-report moore-offsets [n]
  let result [list pxcor pycor] of patches with [abs pxcor <= n and abs pycor <= n]
  report remove [0 0] result ;;removes itself from the neighbor list
end 

;; Moore extended boundary where n (input) is the radius or visibility

to-report von-neumann-offsets [n]
  let result [list pxcor pycor] of patches with [abs pxcor + abs pycor <= n]
  report remove [0 0] result ;;removes itself from the neighbor list
end 

There is only one version of this model, created 8 months ago by Santiago Rentería.

Attached files

File Type Description Last updated
Ideology Difussion.png preview Preview for 'Ideology Difussion' 8 months ago, by Santiago Rentería Download

This model does not have any ancestors.

This model does not have any descendants.